Initial Commit: Reinforced Knowledge Wiki v1.0 - Pure Origin
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
---
|
||||
id: P-REINFORCE-AUTO-AADCDE
|
||||
category: "[[10_Wiki/💡 Topics/Graphics & Performance]]"
|
||||
confidence_score: 0.90
|
||||
tags: [auto-reinforced]
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[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]]
|
||||
---
|
||||
Reference in New Issue
Block a user