--- id: P-REINFORCE-AUTO-B5A436 category: "10_Wiki/πŸ’‘ Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - Depth Pre-Pass" --- # [[Depth Pre-Pass|Depth Pre-Pass]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > Depth Pre-PassλŠ” λ³΅μž‘ν•œ κΈ°ν•˜ν•™μ  ꡬ쑰λ₯Ό κ°€μ§„ μ”¬μ—μ„œ κ°€λ €μ§„ 객체λ₯Ό μ œκ±°ν•˜λŠ” μ˜€ν΄λ£¨μ „ 컬링(Occlusion culling)을 μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” 효과적인 λ Œλ”λ§ μ „λž΅μž…λ‹ˆλ‹€ [1]. 특히 ν•„ 레이트(fill-rate)와 ν”„λž˜κ·Έλ¨ΌνŠΈ 처리 μ„±λŠ₯이 μ œν•œλœ λ‚΄μž₯ GPU(iGPU) ν™˜κ²½μ—μ„œ μœ μš©ν•œ ν•΄κ²°μ±…μœΌλ‘œ ν™œμš©λ©λ‹ˆλ‹€ [1]. λ Œλ”λ§μ„ 두 λ‹¨κ³„λ‘œ λ‚˜λˆ„μ–΄ λΆˆν•„μš”ν•œ ν”„λž˜κ·Έλ¨ΌνŠΈ 셰이더 연산을 λ°©μ§€ν•¨μœΌλ‘œμ¨ μ˜€λ²„λ“œλ‘œμš°(overdraw)κ°€ μ‹¬ν•œ λͺ¨λΈμ˜ λ Œλ”λ§ μ„±λŠ₯을 크게 ν–₯μƒμ‹œν‚΅λ‹ˆλ‹€ [1, 2]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **μž‘λ™ 원리 (두 λ‹¨κ³„μ˜ λ Œλ”λ§ ν”„λ‘œμ„ΈμŠ€):** Depth Pre-PassλŠ” λ‹€μŒκ³Ό 같은 두 κ°€μ§€ λ Œλ”λ§ λ‹¨κ³„λ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€ [1]. 1. **Stage 1 (Depth-Only):** 씬 전체λ₯Ό `MeshBasicMaterial`κ³Ό 같이 맀우 λ‹¨μˆœν•œ μž¬μ§ˆμ„ μ‚¬μš©ν•˜μ—¬ λ Œλ”λ§ν•˜λ©°, μ΄λ•Œ 색상 μ“°κΈ° κΈ°λŠ₯은 λΉ„ν™œμ„±ν™”(`colorWrite: false`)ν•©λ‹ˆλ‹€ [1]. 이 첫 번째 νŒ¨μŠ€λŠ” κ°€μž₯ κ°€κΉŒμš΄ ν”„λž˜κ·Έλ¨ΌνŠΈμ˜ 깊이(depth) κ°’μœΌλ‘œ Z-버퍼(Z-buffer)λ₯Ό μ±„μš°λŠ” μ—­ν• λ§Œμ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€ [1]. 2. **Stage 2 (Main Render):** 깊이 ν…ŒμŠ€νŠΈ(depth test) ν•¨μˆ˜λ₯Ό `EQUAL`둜 μ„€μ •ν•œ ν›„, 전체 셰이딩을 μ μš©ν•˜μ—¬ 씬을 λ‹€μ‹œ λ Œλ”λ§ν•©λ‹ˆλ‹€ [1]. Z-λ²„νΌμ—λŠ” 이미 화면에 λ³΄μ΄λŠ” ν‘œλ©΄μ˜ 깊이 κ°’λ§Œ μ €μž₯λ˜μ–΄ μžˆμœΌλ―€λ‘œ, GPUλŠ” λ‹€λ₯Έ 물체에 κ°€λ €μ§„(occluded) ν”„λž˜κ·Έλ¨ΌνŠΈλ“€μ΄ μ—°μ‚° λΉ„μš©μ΄ 높은 메인 셰이더 λ‘œμ§μ— μ§„μž…ν•˜κΈ° 전에 이λ₯Ό μžλ™μœΌλ‘œ 폐기(discard)ν•©λ‹ˆλ‹€ [1]. * **μ„±λŠ₯ ν–₯상 및 적용 효과:** μ΄λŸ¬ν•œ μˆ˜λ™ Z-prepass λ‘œμ§μ„ κ΅¬ν˜„ν•˜λ©΄ ν”„λž˜κ·Έλ¨ΌνŠΈ 셰이더에 κ°€ν•΄μ§€λŠ” λΆ€ν•˜λ₯Ό μ΅œλŒ€ 30%κΉŒμ§€ 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€ [2]. μ΄λŠ” μˆ¨κ²¨μ§„ λ‚΄λΆ€ κΈ°ν•˜κ΅¬μ‘° λ ˆμ΄μ–΄κ°€ λ§Žμ•„ 픽셀이 μ—¬λŸ¬ 번 λ§κ·Έλ €μ§€λŠ” 'μ˜€λ²„λ“œλ‘œμš°(overdraw)'κ°€ μ‹¬ν•˜κ²Œ λ°œμƒν•˜λŠ” CAD λͺ¨λΈμ„ λ Œλ”λ§ν•  λ•Œ 특히 κ·€μ€‘ν•œ μ΅œμ ν™” κΈ°λ²•μž…λ‹ˆλ‹€ [2]. κ°œλ°œμžλ“€μ€ μ΄λŸ¬ν•œ 깊이 기반의 κ°€μ‹œμ„± νŒλ³„(Depth Pre-Pass) κΈ°μˆ μ„ ꡬ쑰적 μ΅œμ ν™” 및 Render-on-Demand μ‹€ν–‰ λͺ¨λΈκ³Ό κ²°ν•©ν•˜μ—¬, ν‘œμ€€ λͺ¨λ°”일 ν•˜λ“œμ›¨μ–΄μ—μ„œλ„ μ›Œν¬μŠ€ν…Œμ΄μ…˜ μˆ˜μ€€μ˜ μ‹œκ°ν™” κ²½ν—˜μ„ μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [3]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[Occlusion Culling|Occlusion Culling]], Z-buffer, [[Overdraw|Overdraw]], Fragment Shader - **Projects/Contexts:** WebGL/Three.js CAD Rendering Optimization - **Contradictions/Notes:** μ†ŒμŠ€μ— μƒμΆ©λ˜λŠ” λ‚΄μš©μ€ μ—†μœΌλ©°, μ˜€ν΄λ£¨μ „ 컬링을 CPUμ—μ„œ μ²˜λ¦¬ν•˜κΈ° μ–΄λ ΅κ±°λ‚˜ GPU λ ˆμ΄ν„΄μ‹œλ‘œ 인해 λΉ„μš©μ΄ 높을 λ•Œ 이λ₯Ό ν•΄κ²°ν•˜λŠ” κ°€μž₯ 효과적인 우회(workaround) κΈ°λ²•μœΌλ‘œ μ„€λͺ…λ©λ‹ˆλ‹€ [1]. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/Depth Pre-Pass.md ---