feat: Wiki 지식 자산 업데이트 - UX Scenarios, Frontend, Game Design, Topics 추가 [2026-05-08]

This commit is contained in:
2026-05-08 19:52:07 +09:00
parent 9dd3d40662
commit 5ba5a55c78
3984 changed files with 334557 additions and 28839 deletions
+69 -7
View File
@@ -1,13 +1,26 @@
---
category: Unified
id: wiki-2026-0508-instancedmesh
title: InstancedMesh
category: 10_Wiki/Topics
status: needs_review
canonical_id: self
aliases: []
duplicate_of: none
source_trust_level: A
confidence_score: 0.92
tags: [auto-consolidated, technical-documentation]
title: [[InstancedMesh (드로우 콜 최적화)|InstancedMesh (드로우 콜 최적화]]
last_updated: 2026-05-02
raw_sources: []
last_reinforced: 2026-05-08
github_commit: pending
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
tech_stack:
language: unspecified
framework: unspecified
---
# [[InstancedMesh (드로우 콜 최적화)|InstancedMesh (드로우 콜 최적화]]
## 📌 Brief Summary
## 📌 한 줄 통찰 (The Karpathy Summary)
> `InstancedMesh`는 **동일한 기하구조(Geometry)와 재질(Material)을 공유하는 수많은 객체를 단 1회의 드로우 콜([[Draw Call|Draw Call]])만으로 GPU에서 렌더링**하여, CPU의 오버헤드를 극적으로 줄이고 애플리케이션의 프레임 레이트(FPS)를 비약적으로 향상시키는 3D 그래픽스 핵심 최적화 기법입니다.
---
@@ -26,7 +39,7 @@ last_updated: 2026-05-02
> InstancedMesh는 동일한 기하학적 구조(Geometry)와 재질(Material)을 공유하는 수많은 객체를 단 한 번의 드로우 콜([[Draw Call|Draw Call]])로 렌더링할 수 있게 해주는 특수 메쉬이다 [1, 2]. 각 인스턴스는 고유한 변환 행렬(위치, 회전, 축척)과 색상을 가질 수 있으며, 이를 통해 CPU 오버헤드를 획기적으로 줄이고 렌더링 성능을 향상시킨다 [2-4]. 나무, 풀, 바위와 같이 형태가 동일한 대규모 객체 군집을 렌더링할 때 주로 사용되며, 메모리 소비도 최소화할 수 있는 강력한 최적화 도구이다 [5-7].
## 📖 Core Content
## 📖 구조화된 지식 (Synthesized Content)
**1. 드로우 콜(Draw Call)의 개념과 성능 병목** 모든 3D 장면에서 메시는 각각의 드로우 콜을 발생시키며, 이 횟수가 많아질수록 CPU가 GPU에 렌더링 명령을 내리는 오버헤드가 급증합니다. 매끄러운 60FPS를 유지하기 위한 렌더링의 골든 룰은 **프레임당 드로우 콜을 100회 미만으로 유지**하는 것이며, 폴리곤(삼각형)의 수보다 드로우 콜의 횟수가 성능에 훨씬 치명적인 영향을 미칩니다.
**2. InstancedMesh의 작동 원리** 1,000개의 나무나 총알을 개별적인 메시(Mesh)로 렌더링하면 1,000번의 드로우 콜이 발생합니다. 하지만 `InstancedMesh`를 사용하면 **단 1번의 드로우 콜만으로 GPU 내부에서 해당 객체를 1,000번 복제하여 렌더링**할 수 있습니다. 한 부동산 데모 프로젝트의 경우, 수많은 의자 객체들을 인스턴싱 렌더링으로 변경하여 드로우 콜을 9,000회에서 300회로 줄인 사례가 있습니다.
@@ -96,7 +109,7 @@ last_updated: 2026-05-02
* **활용 및 제어:**
개별 인스턴스의 속성은 `setMatrixAt`, `setColorAt` 등의 메서드를 통해 제어하며, 값을 변경한 후에는 반드시 해당 속성(`instanceMatrix`, `instanceColor` 등)의 `needsUpdate` 플래그를 `true`로 설정해야 렌더링에 반영된다 [24]. 위에서 언급한 개별 컬링이나 정렬 문제를 극복하기 위해 `[[InstancedMesh2|InstancedMesh2]]` 같은 확장 라이브러리를 사용하거나 BVH(Bounding Volume Hierarchy)를 통한 공간 분할 기법을 도입하기도 한다 [25-27].
## Trade-offs & Caveats
## 모순 및 업데이트 (Contradictions & Updates)
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
- **정책 변화:** Graphics & Performance 분야의 자동 자산화 수행.
@@ -120,7 +133,7 @@ last_updated: 2026-05-02
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
## 🔗 Knowledge Connections
## 🔗 지식 연결 (Graph)
- **Related Topics:** Draw Call [[Optimization|Optimization]] (드로우 콜 최적화), BatchedMesh, Object Pooling (오브젝트 풀링, React Three Fiber 자산 최적화
- **Projects/Contexts:** [[대규모 파티클 시스템 최적화|대규모 파티클 시스템 최적화]], 수만 개의 데이터를 표현하는 3D 산점도(Scatter Plot) 시각화, 숲, 군중 등 반복 객체가 많은 3D 씬
- **Contradictions/Notes:** `InstancedMesh`는 성능 개선에 탁월하지만, **모든 인스턴스가 반드시 동일한 기하구조(Geometry)와 재질(Material)을 공유해야 한다는 설계적 제약**이 따릅니다. 만약 재질은 같으나 형태(Geometry)가 서로 다른 여러 객체들을 묶어 드로우 콜을 1회로 줄이려면, R156 버전에 도입된 `BatchedMesh`를 사용하는 것이 더 적합합니다.
@@ -172,3 +185,52 @@ last_updated: 2026-05-02
*Last updated: 2026-04-19*
---
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
**언제 이 지식을 쓰는가:**
- *(TODO)*
**언제 쓰면 안 되는가:**
- *(TODO)*
## 🧪 검증 상태 (Validation)
- **정보 상태:** needs_review
- **출처 신뢰도:** A
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
## 🧬 중복 검사 (Duplicate Check)
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
- **처리 방식:** UPDATE (자동 정규화)
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
## 🕓 변경 이력 (Changelog)
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|------|-----------|-----------|--------|
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
## 💻 코드 패턴 (Code Patterns)
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
```text
# TODO
```
## 🤔 의사결정 기준 (Decision Criteria)
**선택 A를 써야 할 때:**
- *(TODO)*
**선택 B를 써야 할 때:**
- *(TODO)*
**기본값:**
> *(TODO)*
## ❌ 안티패턴 (Anti-Patterns)
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*