--- id: P-REINFORCE-AUTO-809D81 category: "10_Wiki/πŸ’‘ Topics/Graphics & Performance" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - Fragment Shading" --- # [[Fragment Shading|Fragment Shading]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > ν”„λž˜κ·Έλ¨ΌνŠΈ 셰이딩(Fragment Shading)은 λ Œλ”λ§ νŒŒμ΄ν”„λΌμΈ ν›„λ°˜λΆ€μ—μ„œ ν”½μ…€ λ‹¨μœ„μ˜ λ Œλ”λ§ 계산(퍼 ν”½μ…€ μ‘°λͺ… μ—°μ‚° λ“±)을 μˆ˜ν–‰ν•˜μ—¬ μ΅œμ’… 색상 값을 κ²°μ •ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€μ΄λ‹€ [1, 2]. λ‹€μˆ˜μ˜ ν…μŠ€μ²˜ λ£©μ—…μ΄λ‚˜ λ³΅μž‘ν•œ 연산이 포함될 경우 ν•„ 레이트(Fill Rate)λ₯Ό 크게 μ €ν•˜μ‹œν‚¬ 수 있으며 [2], 동일 픽셀에 μ—¬λŸ¬ 번 λ Œλ”λ§ 연산이 μ€‘μ²©λ˜λŠ” μ˜€λ²„λ“œλ‘œμš°(Overdraw) ν˜„μƒμ΄ λ°œμƒν•  경우 GPU μ„±λŠ₯ 병λͺ©μ˜ μ£Όμš” 원인이 λ˜κΈ°λ„ ν•œλ‹€ [3]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) - **ν”½μ…€ λ‹¨μœ„ μ—°μ‚°μ˜ μˆ˜ν–‰:** ν”„λž˜κ·Έλ¨ΌνŠΈ μ…°μ΄λ”λŠ” ν”½μ…€μ˜ μ΅œμ’… 색상 값을 κ²°μ •ν•˜λŠ” ν”½μ…€ λ‹¨μœ„μ˜ 계산을 μ „λ‹΄ν•œλ‹€ [2]. λ²„ν…μŠ€ 셰이더(Vertex Shader)와 ν”„λž˜κ·Έλ¨ΌνŠΈ 셰이더 μ‚¬μ΄μ—μ„œλŠ” varying λ³€μˆ˜λ₯Ό 톡해 데이터가 μ „λ‹¬λ˜λ©° [4], κ΅¬μ›Œμ§„ λ…Έλ©€ λ§΅(baked normal maps) 등을 ν™œμš©ν•΄ λ³΅μž‘ν•œ ν‘œλ©΄ λ””ν…ŒμΌμ„ ν”½μ…€ 셰이딩(pixel shading) λ°©μ‹μœΌλ‘œ λ Œλ”λ§ν•œλ‹€ [1]. - **셰이더 λ³΅μž‘λ„μ™€ ν•„ 레이트(Fill Rate):** ν”„λž˜κ·Έλ¨ΌνŠΈ 셰이더 λ‚΄μ—μ„œ μ—¬λŸ¬ ν…μŠ€μ²˜λ₯Ό μ‘°νšŒν•˜κ±°λ‚˜, μˆ˜ν•™μ  μ—°μ‚° 및 쑰건 논리가 λ³΅μž‘ν•΄μ§ˆ 경우 쀑간 μ‚¬μ–‘μ˜ GPUμ—μ„œλŠ” ν•„ λ ˆμ΄νŠΈκ°€ 50-70%κ°€λŸ‰ κ°μ†Œν•  수 μžˆλ‹€ [2]. 특히 PBR(물리 기반 λ Œλ”λ§) ν™˜κ²½μ—μ„œλŠ” 각 ν”½μ…€λ§ˆλ‹€ λ‹€μˆ˜μ˜ ν…μŠ€μ²˜ μƒ˜ν”Œλ§(μ•Œλ² λ„, λ…Έλ©€, λ©”νƒˆλ¦­, λŸ¬ν”„λ‹ˆμŠ€ λ“±) 및 ν™˜κ²½ λ°˜μ‚¬ 연산을 μ²˜λ¦¬ν•΄μ•Ό ν•˜λ―€λ‘œ ν”„λž˜κ·Έλ¨ΌνŠΈ 처리 μ‹œκ°„μ΄ κΈ‰μ¦ν•˜κ²Œ λœλ‹€ [2]. - **μ˜€λ²„λ“œλ‘œμš°(Overdraw)의 영ν–₯:** ν”„λž˜κ·Έλ¨ΌνŠΈ 셰이딩 λ‹¨κ³„μ—μ„œ λ‚˜νƒ€λ‚˜λŠ” μ˜€λ²„λ“œλ‘œμš°λŠ” 투λͺ…ν•œ κΈ°ν•˜ν•™μ  ꡬ쑰가 κ²ΉμΉ˜κ±°λ‚˜ 깊이 μ •λ ¬(Depth sorting)이 νš¨μœ¨μ μ΄μ§€ μ•Šμ•„ λ™μΌν•œ ν”½μ…€ μœ„μΉ˜μ— λ Œλ”λ§ μ“°κΈ° μž‘μ—…μ΄ μ—¬λŸ¬ 번 μ€‘μ²©λ˜λŠ” ν˜„μƒμ΄λ‹€ [3, 5]. μ΄λŠ” 화면에 보이지 μ•ŠλŠ” ν”½μ…€μ˜ μ—°μ‚°μ—κΉŒμ§€ GPU μžμ›μ„ λ‚­λΉ„ν•˜κ²Œ λ§Œλ“ λ‹€ [5]. - **μ •λ ¬ λΆ€μž¬μ™€ ν”„λž˜κ·Έλ¨ΌνŠΈ λ°”μš΄λ“œ(Fragment-bound) ν˜„μƒ:** 뢈투λͺ… 객체λ₯Ό λ Œλ”λ§ν•  λ•Œ 객체λ₯Ό 'μ•žμ—μ„œ λ’€λ‘œ(Front-to-Back)' μ •λ ¬ν•˜λ©΄ κ°€λ €μ§„ ν”½μ…€ 연산을 일찍 μ’…λ£Œν•˜λŠ” Early-Z μ΅œμ ν™”λ₯Ό 톡해 μ„±λŠ₯을 확보할 수 μžˆλ‹€ [3]. ν•˜μ§€λ§Œ InstancedMesh처럼 μΈμŠ€ν„΄μŠ€λ“€μ΄ μ •λ ¬λ˜μ§€ μ•Šμ€ μƒνƒœλ‘œ λ Œλ”λ§λ˜λŠ” 경우 이 μ΅œμ ν™”κ°€ λΆˆκ°€λŠ₯ν•΄ λ§‰λŒ€ν•œ μ˜€λ²„λ“œλ‘œμš° λΉ„μš©μ„ λ°œμƒμ‹œν‚€λ©°, 결과적으둜 전체 씬(Scene)의 λ Œλ”λ§μ΄ ν”„λž˜κ·Έλ¨ΌνŠΈ μ—°μ‚°μ˜ ν•œκ³„μ— λΆ€λ”ͺνžˆλŠ” ν”„λž˜κ·Έλ¨ΌνŠΈ λ°”μš΄λ“œ μƒνƒœμ— 빠질 수 μžˆλ‹€ [3, 6]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Graphics & Performance λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[Overdraw|Overdraw]], [[Vertex Shader|Vertex Shader]], [[Fill Rate|Fill Rate]], [[PBR|PBR]] - **Projects/Contexts:** [[Three.js WebGL Rendering Optimization|Three.js WebGL Rendering Optimization]], [[InstancedMesh Performance Bottlenecks|InstancedMesh Performance Bottlenecks]] - **Contradictions/Notes:** μ†ŒμŠ€μ— κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/Fragment Shading.md ---