Files
2nd/10_Wiki/Topics/Depth Pre-Pass.md
T
2026-05-02 23:33:34 +09:00

3.3 KiB


id: P-Reinforce-AUTO-B5A436 category: Unified confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - 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, Z-buffer, Overdraw, Fragment Shader
  • Projects/Contexts: WebGL/Three.js CAD Rendering Optimization
  • Contradictions/Notes: 소스에 상충되는 내용은 없으며, 오클루전 컬링을 CPU에서 처리하기 어렵거나 GPU 레이턴시로 인해 비용이 높을 때 이를 해결하는 가장 효과적인 우회(workaround) 기법으로 설명됩니다 [1].

Last updated: 2026-04-19