Files
2nd/10_Wiki/Topics/Graphics & Performance/BatchedMesh.md
T

4.0 KiB

id, category, confidence_score, tags, last_reinforced, github_commit
id category confidence_score tags last_reinforced github_commit
P-REINFORCE-AUTO-AADCDE 10_Wiki/💡 Topics/Graphics & Performance 0.90
auto-reinforced
2026-04-20 [P-Reinforce] Continuous Worker - BatchedMesh

BatchedMesh

📌 한 줄 통찰 (The Karpathy Summary)

지식 요약 정보 추출 중...

📖 구조화된 지식 (Synthesized Content)

  • 동작 원리와 초기화: BatchedMesh는 렌더링 시 CPU의 명령 발행 횟수(드로우 콜)를 줄이기 위한 기술입니다. 초기화 시 maxInstanceCount(최대 인스턴스 수), maxVertexCount(최대 정점 수), maxIndexCount(최대 인덱스 수)와 인스턴스들이 공유할 단일 material을 정의합니다. 이후 여러 지오메트리를 추가(addGeometry)하고, 개별 인스턴스에 고유한 변환 행렬(Matrix)을 적용(setMatrixAt)하여 위치, 회전, 크기를 설정할 수 있습니다 [1-6].

  • InstancedMesh와의 차이점: InstancedMesh가 instancedDraw를 사용하여 동일한 지오메트리만을 수없이 복제하는 방식이라면, BatchedMesh는 WEBGL_multi_draw 확장(WebGPU에서는 indirect draw)을 활용하여 서로 다른 지오메트리를 한 번에 그릴 수 있습니다. 또한 setVisibleAt 메서드를 제공하여 개별 객체의 가시성(Visibility)을 제어할 수 있는 유연성을 갖추고 있습니다 [7-11].

  • 성능 한계 및 병목 현상: BatchedMesh는 소규모 또는 다양한 지오메트리가 혼합된 씬(예: 각기 다른 모양의 수많은 벽이나 식물들)에서는 강력하지만, 확장성 측면에서 뚜렷한 한계를 보입니다.

    • 버퍼 패킹 및 통신 오버헤드: 인스턴스가 수만에서 수십만 개(예: 200,000개)로 늘어나면 GPU로 전송할 드로우 시작 지점 및 개수 버퍼 데이터가 커집니다. 매 프레임 이를 업데이트하고 multiDrawElementsWEBGL을 호출하는 데 막대한 CPU 자원이 소모됩니다 [11-14].
    • 정렬 및 컬링 비용: 시야 절두체 컬링(perObjectFrustumCulled)과 투명도 처리를 위한 객체 정렬(sortObjects)을 수행할 때, 이 연산이 CPU의 메인 스레드를 장악하여 프레임 속도(FPS)를 60FPS에서 10~20FPS 수준으로 급락시키는 병목을 유발합니다 [13, 15-17].
  • 최적화 적용 전략: 동적인 씬에서 고유한(Unique) 객체가 1,000개 이상일 때는 BatchedMesh(multiDrawElementsWEBGL)가 적합하지만, 고유 객체가 적고 인스턴스만 수십만 개인 경우에는 InstancedMesh(drawElementsInstanced)를 사용하는 것이 훨씬 효율적입니다 [18]. 모델의 삼각형 수가 천만 개를 넘어가거나 고정된 구조물이라면 지오메트리를 하나로 병합(Merging)하는 방식이 CPU 점유율 방어 측면에서 BatchedMesh보다 성능이 우수할 수 있습니다 [19-21].

⚠️ 모순 및 업데이트 (Contradictions & RL Update)

  • 과거 데이터와의 충돌: 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
  • 정책 변화: Graphics & Performance 분야의 자동 자산화 수행.

🔗 지식 연결 (Graph)

  • Related Topics: InstancedMesh, Draw Call Optimization, WEBGL_multi_draw, Frustum Culling
  • Projects/Contexts: Three.js 렌더링 최적화, 대규모 3D 건축 모델(BIM) 시각화, InstancedMesh 사용 시 드로우 콜 최적화의 한계점 사례 연구
  • Contradictions/Notes: 소스에서는 BatchedMesh가 여러 지오메트리를 한 번에 그려 드로우 콜을 획기적으로 줄여준다고 설명하지만, 동시에 인스턴스 수가 10만 개 이상이거나 1,200만 폴리곤 이상의 환경에서는 CPU의 버퍼 패킹 및 다중 드로우 처리 부하로 인해 병합된 일반 메쉬(Merged Mesh)나 InstancedMesh보다 FPS가 30~50% 이상 떨어지는 모순적 한계를 지니고 있음을 실증 사례로 지적합니다.

Last updated: 2026-04-19

  • Raw Source: 00_Raw/2026-04-20/BatchedMesh.md