--- id: P-REINFORCE-AUTO-86F967 category: "[[10_Wiki/πŸ’‘ Topics/Graphics & Performance]]" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - InstancedMesh (λ“œλ‘œμš° 콜 μ΅œμ ν™”)" --- # [[InstancedMesh (λ“œλ‘œμš° 콜 μ΅œμ ν™”)]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > `InstancedMesh`λŠ” **λ™μΌν•œ κΈ°ν•˜κ΅¬μ‘°(Geometry)와 재질(Material)을 κ³΅μœ ν•˜λŠ” μˆ˜λ§Žμ€ 객체λ₯Ό 단 1회의 λ“œλ‘œμš° 콜(Draw Call)만으둜 GPUμ—μ„œ λ Œλ”λ§**ν•˜μ—¬, CPU의 μ˜€λ²„ν—€λ“œλ₯Ό 극적으둜 쀄이고 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ ν”„λ ˆμž„ 레이트(FPS)λ₯Ό λΉ„μ•½μ μœΌλ‘œ ν–₯μƒμ‹œν‚€λŠ” 3D κ·Έλž˜ν”½μŠ€ 핡심 μ΅œμ ν™” κΈ°λ²•μž…λ‹ˆλ‹€. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (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회둜 쀄인 사둀가 μžˆμŠ΅λ‹ˆλ‹€. **3. μ„±λŠ₯ 이득과 ν™œμš© 방식** μΈμŠ€ν„΄μ‹± μ΅œμ ν™”λ₯Ό μ μš©ν•˜λ©΄ λ“œλ‘œμš° 콜 νšŸμˆ˜κ°€ $N$(객체 수)μ—μ„œ 1둜 쀄어듀어, λ‚΄μž₯ν˜• GPU ν™˜κ²½μ—μ„œ λŒ€κ·œλͺ¨ 데이터셋 λ Œλ”λ§ μ‹œ **ν”„λ ˆμž„ 레이트λ₯Ό 10λ°° 이상 ν–₯상**μ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, 각 μΈμŠ€ν„΄μŠ€λŠ” λ™μΌν•œ ν˜•νƒœλ₯Ό κ³΅μœ ν•˜λ”λΌλ„ μΈμŠ€ν„΄μŠ€λ³„ 속성(per-instance attributes)을 톡해 **μ„œλ‘œ λ‹€λ₯Έ μœ„μΉ˜, νšŒμ „, 크기(Scale) 및 색상을 λ…λ¦½μ μœΌλ‘œ κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€**. **4. 였브젝트 ν’€λ§κ³Όμ˜ κ²°ν•©** μ‹€μ‹œκ°„ κ²Œμž„ μ•„ν‚€ν…μ²˜μ—μ„œλŠ” μ΄μ•Œμ΄λ‚˜ νŒŒν‹°ν΄κ³Ό 같이 자주 μƒμ„±λ˜κ³  μ‚¬λΌμ§€λŠ” 객체λ₯Ό κ°œλ³„ λ©”μ‹œλ‘œ κ΄€λ¦¬ν•˜μ§€ μ•Šκ³ , **ν•˜λ‚˜μ˜ `InstancedMesh`λ₯Ό κ³ μ •λœ 였브젝트 ν’€(Pool)둜 κ΄€λ¦¬ν•˜λ©° λ³€ν™˜ ν–‰λ ¬(Matrix)만 μ—…λ°μ΄νŠΈ**ν•˜λŠ” 방식을 μ‚¬μš©ν•΄ λ©”λͺ¨λ¦¬ νŒŒνŽΈν™” 방지와 λ Œλ”λ§ μ΅œμ ν™”λ₯Ό λ™μ‹œμ— λ‹¬μ„±ν•©λ‹ˆλ‹€. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Graphics & Performance λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[Draw Call Optimization (λ“œλ‘œμš° 콜 μ΅œμ ν™”)]], [[BatchedMesh]], [[Object Pooling (였브젝트 풀링)]], [[React Three Fiber μžμ‚° μ΅œμ ν™”]] - **Projects/Contexts:** [[λŒ€κ·œλͺ¨ νŒŒν‹°ν΄ μ‹œμŠ€ν…œ μ΅œμ ν™”]], [[수만 개의 데이터λ₯Ό ν‘œν˜„ν•˜λŠ” 3D 산점도(Scatter Plot) μ‹œκ°ν™”]], [[숲, ꡰ쀑 λ“± 반볡 객체가 λ§Žμ€ 3D 씬]] - **Contradictions/Notes:** `InstancedMesh`λŠ” μ„±λŠ₯ κ°œμ„ μ— νƒμ›”ν•˜μ§€λ§Œ, **λͺ¨λ“  μΈμŠ€ν„΄μŠ€κ°€ λ°˜λ“œμ‹œ λ™μΌν•œ κΈ°ν•˜κ΅¬μ‘°(Geometry)와 재질(Material)을 κ³΅μœ ν•΄μ•Ό ν•œλ‹€λŠ” 섀계적 μ œμ•½**이 λ”°λ¦…λ‹ˆλ‹€. λ§Œμ•½ μž¬μ§ˆμ€ κ°™μœΌλ‚˜ ν˜•νƒœ(Geometry)κ°€ μ„œλ‘œ λ‹€λ₯Έ μ—¬λŸ¬ 객체듀을 λ¬Άμ–΄ λ“œλ‘œμš° μ½œμ„ 1회둜 쀄이렀면, R156 버전에 λ„μž…λœ `BatchedMesh`λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 더 μ ν•©ν•©λ‹ˆλ‹€. - Raw Source: [[00_Raw/2026-04-20/InstancedMesh (λ“œλ‘œμš° 콜 μ΅œμ ν™”).md]] ---