--- id: wiki-2026-0508-instancing title: Instancing category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [P-Reinforce-AUTO-2752BF] duplicate_of: none source_trust_level: A confidence_score: 0.9 tags: [auto-reinforced] raw_sources: [] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - Instancing" inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[Instancing|Instancing]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > μΈμŠ€ν„΄μ‹±(Instancing)은 μ›Ή κ·Έλž˜ν”½μŠ€ λ Œλ”λ§ 및 UI λ””μžμΈ μ†Œν”„νŠΈμ›¨μ–΄μ—μ„œ μ„±λŠ₯을 μ΅œμ ν™”ν•˜κΈ° μœ„ν•΄ λ™μΌν•œ 객체λ₯Ό 효율적으둜 반볡 μ²˜λ¦¬ν•˜λŠ” κΈ°λ²•μž…λ‹ˆλ‹€. [[WebGL|WebGL]]μ΄λ‚˜ WebGPU ν™˜κ²½μ—μ„œλŠ” 단일 λ“œλ‘œμš° 콜(Draw Call)둜 λ™μΌν•œ λ©”μ‰¬λ‚˜ ν˜•νƒœλ₯Ό λŒ€λŸ‰μœΌλ‘œ κ·Έλ €λ‚΄μ–΄ CPU 및 GPU μ˜€λ²„ν—€λ“œλ₯Ό μ€„μ΄λŠ” 핡심 기술둜 μ‚¬μš©λ©λ‹ˆλ‹€ [1, 2]. 반면 [[Figma|Figma]]와 같은 λ””μžμΈ λ„κ΅¬μ—μ„œλŠ” 원본 μ»΄ν¬λ„ŒνŠΈμ˜ λ³΅μ œλ³Έμ„ μ˜λ―Έν•˜λ©°, μΈμŠ€ν„΄μŠ€ λ‚΄λΆ€μ˜ ꡬ쑰적 μ΅œμ ν™” μ—¬λΆ€κ°€ μ†Œν”„νŠΈμ›¨μ–΄ μ„±λŠ₯에 직접적인 영ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€ [3, 4]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) - **μ›Ή κ·Έλž˜ν”½μŠ€ λ Œλ”λ§ μ΅œμ ν™” (WebGL & WebGPU):** - **λ“œλ‘œμš° 콜(Draw Call) κ°μ†Œ:** WebGL μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ„±λŠ₯을 κ·ΉλŒ€ν™”ν•˜λŠ” κ°€μž₯ μ€‘μš”ν•œ 비결은 λ“œλ‘œμš° 콜 횟수λ₯Ό μ΅œμ†Œν™”ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€ [5]. λ™μΌν•œ 메쉬λ₯Ό μ—¬λŸ¬ 번 ν˜ΈμΆœν•˜μ—¬ κ·Έλ¦¬λŠ” λŒ€μ‹  μΈμŠ€ν„΄μ‹± 기법을 μ‚¬μš©ν•˜λ©΄ λŒ€λŸ‰μ˜ 메쉬λ₯Ό 단일 ν•¨μˆ˜ 호좜둜 λ Œλ”λ§ν•  수 μžˆμ–΄ μ„±λŠ₯ μ˜€λ²„ν—€λ“œλ₯Ό 크게 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€ [1]. - **WebGPUλ₯Ό ν™œμš©ν•œ κ°€μš°μ‹œμ•ˆ λ Œλ”λ§ (WebSplatter):** WebGPU 기반의 [[3D_Gaussian_Splatting|3D Gaussian Splatting]] ν”„λ ˆμž„μ›Œν¬μΈ WebSplatterλŠ” λž˜μŠ€ν„°ν™” λ‹¨κ³„μ—μ„œ μΈμŠ€ν„΄μŠ€ν™”λœ λ“œλ‘œμš° 콜(instanced draw call)을 톡해 각 κ°€μš°μ‹œμ•ˆμ„ 단일 μΏΌλ“œ(두 개의 μ‚Όκ°ν˜•)둜 μ œμΆœν•˜μ—¬ λ Œλ”λ§ν•©λ‹ˆλ‹€ [2]. λ Œλ” 패슀(Render pass) λ‚΄λΆ€μ—μ„œ `passEncoder.draw(vertexCount, instanceCount)` λͺ…령을 ν˜ΈμΆœν•˜μ—¬, μ§€μ •λœ 정점 및 μΈμŠ€ν„΄μŠ€ 수만큼 λ²„ν…μŠ€ 셰이더와 ν”„λž˜κ·Έλ¨ΌνŠΈ μ…°μ΄λ”μ˜ 싀행을 νŠΈλ¦¬κ±°ν•©λ‹ˆλ‹€ [6]. - **κ΄€λ ¨ WebGL ν™•μž₯ κΈ°λŠ₯:** WebGL μƒνƒœκ³„μ—μ„œλŠ” 이와 같은 μΈμŠ€ν„΄μ‹±μ„ μ§€μ›ν•˜κΈ° μœ„ν•΄ `[[ANGLE|ANGLE]]_instanced_arrays`λΌλŠ” ν™•μž₯(Extension) κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€ [7]. - **λ””μžμΈ μ‹œμŠ€ν…œ 및 UI 도ꡬ(Figma)μ—μ„œμ˜ μΈμŠ€ν„΄μŠ€:** - **μ„±λŠ₯ μ €ν•˜μ˜ 원인:** λŒ€κ·œλͺ¨ λ””μžμΈ νŒŒμΌμ—μ„œ λ³΅μž‘ν•œ 쀑첩 ꡬ쑰λ₯Ό κ°€μ§„ μ»΄ν¬λ„ŒνŠΈλ₯Ό μ‚¬μš©ν•  λ•Œ, μΈμŠ€ν„΄μŠ€ 내뢀에 λΆˆν•„μš”ν•˜κ²Œ ν¬ν•¨λœ μˆ¨κ²¨μ§„ λ ˆμ΄μ–΄(hidden layers)λŠ” 파일의 λ Œλ”λ§κ³Ό μ—…λ°μ΄νŠΈ 속도λ₯Ό 크게 늦좜 수 μžˆμŠ΅λ‹ˆλ‹€ [3, 8, 9]. - **μΈμŠ€ν„΄μŠ€ μ΅œμ ν™” λ°©μ•ˆ:** ꡬ쑰 μ»΄ν¬λ„ŒνŠΈμ˜ μ‚¬μš©μ„ 쀄이고, λŒ€μ‹  λ³„λ„μ˜ λ³€ν˜•(variants) 개수λ₯Ό 늘렀 μΈμŠ€ν„΄μŠ€ λ‚΄μ˜ μˆ¨κ²¨μ§„ λ ˆμ΄μ–΄λ“€μ„ μ œκ±°ν•˜λ©΄ ν”„λ‘œν† νƒ€μž… λ™μž‘μ΄ λˆˆμ— λ„κ²Œ λΆ€λ“œλŸ¬μ›Œμ§€λ©° μ„±λŠ₯이 크게 ν–₯μƒλ©λ‹ˆλ‹€ [4, 10]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & Updates) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Graphics & Performance λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** Draw Calls, [[WebGL|WebGL]], [[WebGPU|WebGPU]], Gaussian Splatting - **Projects/Contexts:** [[Wonderland Engine|Wonderland Engine]], WebSplatter, [[Figma|Figma]] - **Contradictions/Notes:** μ£Όμ–΄μ§„ μ†ŒμŠ€ 데이터 λ‚΄μ—μ„œ 'μΈμŠ€ν„΄μŠ€(Instancing)'λΌλŠ” μš©μ–΄λŠ” 3D κ·Έλž˜ν”½μŠ€ ν•˜λ“œμ›¨μ–΄ 가속을 μœ„ν•œ λ Œλ”λ§ νš¨μœ¨ν™” 기법(WebGL/WebGPU)κ³Ό, λ””μžμΈ 도ꡬ λ‚΄μ—μ„œ 원본 객체λ₯Ό λ³΅μ œν•΄ μ‚¬μš©ν•˜λŠ” 개체 λ‹¨μœ„(Figma)λΌλŠ” 두 κ°€μ§€ μƒμ΄ν•œ λ§₯λ½μ—μ„œ μ„€λͺ…λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€. --- *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: 무엇을 ν•˜λ©΄ μ•ˆ λ˜λŠ”κ°€ + 이유 + λŒ€μ‹  무엇을)*