--- id: P-REINFORCE-AUTO-7D070F category: "10_Wiki/๐Ÿ’ก Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - InstancedMesh ์ตœ์ ํ™”" --- # [[InstancedMesh แ„Žแ…ฌแ„Œแ…ฅแ†จแ„’แ…ช|InstancedMesh ์ตœ์ ํ™”]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > [[InstancedMesh แ„Žแ…ฌแ„Œแ…ฅแ†จแ„’แ…ช|InstancedMesh ์ตœ์ ํ™”]]๋Š” ๋™์ผํ•œ ๊ธฐํ•˜ํ•™์  ๊ตฌ์กฐ(Geometry)์™€ ์žฌ์งˆ(Material)์„ ๊ฐ€์ง„ ์ˆ˜๋งŽ์€ ๊ฐ์ฒด๋ฅผ ๋‹จ ํ•œ ๋ฒˆ์˜ ๋“œ๋กœ์šฐ ์ฝœ(Draw Call)๋กœ GPU์— ์ „๋‹ฌํ•˜์—ฌ ๋ Œ๋”๋ง ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค [1], [2]. ์ˆ˜์ฒœ, ์ˆ˜๋งŒ ๊ฐœ์˜ ๋ฐ˜๋ณต์ ์ธ ๊ฐ์ฒด(๋‚˜๋ฌด, ํ’€, ํŒŒํ‹ฐํด ๋“ฑ)๋ฅผ ๋ Œ๋”๋งํ•  ๋•Œ CPU์˜ ๋ช…๋ น ๋ฐœํ–‰ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๋Œ€ํญ ์ค„์ด๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3], [4], [5]. ๊ทธ๋Ÿฌ๋‚˜ ์ „์ฒด ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์ „์—ญ์  ์‹œ์•ผ ์ ˆ๋‘์ฒด ์ปฌ๋ง, ๊ฐœ๋ณ„ ๊ฐ์ฒด์˜ ๊นŠ์ด ์ •๋ ฌ ๋ถ€์žฌ๋กœ ์ธํ•œ ์˜ค๋ฒ„๋“œ๋กœ์šฐ ๋“ฑ ๊ตฌ์กฐ์  ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ•˜๋ฏ€๋กœ, ํ”„๋กœ์ ํŠธ์˜ ํŠน์„ฑ๊ณผ ๋ณ‘๋ชฉ ๊ตฌ๊ฐ„์— ๋งž์ถ˜ ์ „๋žต์ ์ธ ๋„์ž…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค [6], [7]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **๋“œ๋กœ์šฐ ์ฝœ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™” ์›๋ฆฌ** * InstancedMesh๋Š” GPU ๋ฉ”๋ชจ๋ฆฌ์— ๋‹จ ํ•˜๋‚˜์˜ ์ •์  ๋ฒ„ํผ๋งŒ ์—…๋กœ๋“œํ•˜๊ณ , ๊ฐ ์ธ์Šคํ„ด์Šค์— ๊ณ ์œ ํ•˜๊ฒŒ ์ ์šฉ๋  ๋ณ€ํ™˜ ํ–‰๋ ฌ(์œ„์น˜, ํšŒ์ „, ์ถ•์ฒ™) ๋ฐ ์ƒ‰์ƒ ์ •๋ณด๋ฅผ ๋ณ„๋„์˜ ์ธ์Šคํ„ด์Šค ์†์„ฑ(Instance Attribute)์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค [2]. * ์ด ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ผ๋ฐ˜ ๋ฉ”์‰ฌ๋กœ ์ˆ˜์ฒœ ๋ฒˆ ํ˜ธ์ถœํ•ด์•ผ ํ•  ๋“œ๋กœ์šฐ ์ฝœ์„ 1ํšŒ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ์–ด, CPU ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ํ•ด์†Œํ•˜๊ณ  ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ VRAM์„ ํš๊ธฐ์ ์œผ๋กœ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [8], [1], [9]. * ๊ฐœ๋ณ„ ์ธ์Šคํ„ด์Šค์˜ ๋ณ€ํ™˜ ํ–‰๋ ฌ์ด๋‚˜ ์ƒ‰์ƒ์„ ๋ณ€๊ฒฝ(`setMatrixAt`, `setColorAt`)ํ•œ ํ›„์—๋Š” ๋ฐ˜๋“œ์‹œ `needsUpdate` ์†์„ฑ์„ `true`๋กœ ์„ค์ •ํ•ด์•ผ ๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ์— ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค [10], [11]. ๋™์ ์œผ๋กœ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ด๋™ํ•œ ๊ฒฝ์šฐ, ์ •ํ™•ํ•œ ๋ ˆ์ด์บ์ŠคํŒ…(Picking) ๋ฐ ์ปฌ๋ง์„ ์œ„ํ•ด `computeBoundingSphere()`์™€ `computeBoundingBox()`๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฐ”์šด๋”ฉ ๋ณผ๋ฅจ์„ ๊ฐฑ์‹ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [12], [13], [14]. * **๊ตฌ์กฐ์  ํ•œ๊ณ„ ๋ฐ ์„ฑ๋Šฅ ๋ณ‘๋ชฉ ์š”์ธ** * **์ปฌ๋ง(Culling)์˜ ๋น„ํšจ์œจ์„ฑ:** InstancedMesh๋Š” ์—”์ง„ ์ˆ˜์ค€์—์„œ ๋‹จ์ผ ๊ฐ์ฒด๋กœ ์ทจ๊ธ‰๋˜๋ฏ€๋กœ, ๊ฐœ๋ณ„ ์ธ์Šคํ„ด์Šค ๋‹จ์œ„๊ฐ€ ์•„๋‹Œ ์ „์ฒด๋ฅผ ์•„์šฐ๋ฅด๋Š” ๊ฑฐ๋Œ€ํ•œ ๋ฐ”์šด๋”ฉ ๋ณผ๋ฅจ์„ ๊ธฐ์ค€์œผ๋กœ ๋‹จ ํ•œ ๋ฒˆ์˜ ์‹œ์•ผ ์ ˆ๋‘์ฒด ์ปฌ๋ง(Frustum Culling)์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค [15]. ์ด๋กœ ์ธํ•ด ์‹œ์•ผ ๋ฐ–์˜ ์ˆ˜๋งŽ์€ ๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ๋„ ๋ถˆํ•„์š”ํ•œ GPU ์ •์  ์—ฐ์‚ฐ์ด ๊ฐ•์ œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [15], [16]. * **์ •๋ ฌ ๋ถ€์žฌ์™€ ์˜ค๋ฒ„๋“œ๋กœ์šฐ(Overdraw):** ์นด๋ฉ”๋ผ ๊ฑฐ๋ฆฌ์— ๋”ฐ๋ฅธ ์ž๋™ ์ •๋ ฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๋’ค์— ๊ฐ€๋ ค์ง„ ํ”ฝ์…€ ์—ฐ์‚ฐ์„ ์กฐ๊ธฐ์— ์ข…๋ฃŒ(Early-Z)ํ•˜์ง€ ๋ชปํ•ด ์˜ค๋ฒ„๋“œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค [17], [18]. ํŠนํžˆ ํˆฌ๋ช…/๋ฐ˜ํˆฌ๋ช… ๊ฐ์ฒด ๋ Œ๋”๋ง ์‹œ์—๋Š” ๊นŠ์ด ์ •๋ ฌ์ด ๋’ค์„ž์—ฌ ์‹œ๊ฐ์  ์˜ค๋ฅ˜๋ฅผ ์ดˆ๋ž˜ํ•ฉ๋‹ˆ๋‹ค [19]. * **๋ฉ”๋ชจ๋ฆฌ ๋Œ€์—ญํญ ํ•œ๊ณ„:** ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋“ฑ์œผ๋กœ ๋งค ํ”„๋ ˆ์ž„ ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค ๋ณ€ํ™˜ ํ–‰๋ ฌ(์ธ์Šคํ„ด์Šค๋‹น 64๋ฐ”์ดํŠธ)์„ ๊ฐฑ์‹ ํ•ด์•ผ ํ•  ๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ ์ „์†ก๋Ÿ‰์ด ์‹œ์Šคํ…œ ๋ฒ„์Šค ๋Œ€์—ญํญ์„ ํฌํ™”์‹œ์ผœ ํ”„๋ ˆ์ž„ ์ง€์—ฐ(Stuttering)์„ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [20], [21]. * **๋‹ค์–‘์„ฑ ํ‘œํ˜„์˜ ์ œ์•ฝ:** ๋‹จ์ผ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ์™€ ๋‹จ์ผ ์žฌ์งˆ๋งŒ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์–ด ๋‹ค์–‘ํ•œ ์—์…‹์„ ํ‘œํ˜„ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค [22]. ๊ฐœ๋ณ„ ์ธ์Šคํ„ด์Šค์— ์„œ๋กœ ๋‹ค๋ฅธ ํ…์Šค์ฒ˜๋ฅผ ์ ์šฉํ•˜๋ ค๋ฉด [[Texture Atlas|Texture Atlas]]๋‚˜ ๋ฐ์ดํ„ฐ ๋ฐฐ์—ด ํ…์Šค์ฒ˜(Data Array Textures)๋ฅผ ํ™œ์šฉํ•˜๊ณ  UV ์˜คํ”„์…‹์„ ์กฐ์ •ํ•˜๋Š” ์ถ”๊ฐ€์ ์ธ ์…ฐ์ด๋” ์กฐ์ž‘์ด ๊ฐ•์ œ๋ฉ๋‹ˆ๋‹ค [23], [24], [25]. * **ํ•œ๊ณ„ ๊ทน๋ณต์„ ์œ„ํ•œ ๊ฐœ์„  ๋ฐ ๋Œ€์•ˆ ์ „๋žต** * **๊ณต๊ฐ„ ๋ถ„ํ•  ๊ธฐ๋ฐ˜ ๊ทธ๋ฃนํ™”:** ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜์˜ ๊ฑฐ๋Œ€ํ•œ InstancedMesh๋กœ ๋ฌถ๊ธฐ๋ณด๋‹ค๋Š”, ๊ณต๊ฐ„์ ์œผ๋กœ ์ธ์ ‘ํ•œ ๊ฐ์ฒด๋ผ๋ฆฌ ์†Œ๊ทœ๋ชจ(100~500๊ฐœ)๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋ฉด ์ ˆ๋‘์ฒด ์ปฌ๋ง์˜ ์ •๋ฐ€๋„๋ฅผ ๋†’์—ฌ GPU ์—ฐ์‚ฐ ๋‚ญ๋น„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [7]. * **InstancedMesh2 ๋ฐ BatchedMesh ํ™œ์šฉ:** ๋‹จ์ผ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ ์ œ์•ฝ์ด ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค๋ฉด, ์„œ๋กœ ๋‹ค๋ฅธ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ๋ฅผ ํ•˜๋‚˜์˜ ๋“œ๋กœ์šฐ ์ฝœ๋กœ ๋ฌถ์–ด์ฃผ๋Š” [[BatchedMesh|BatchedMesh]] ์‚ฌ์šฉ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค [26], [27]. ๋˜ํ•œ, ์ปค๋ฎค๋‹ˆํ‹ฐ ์ƒํƒœ๊ณ„์˜ `InstancedMesh2` ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๊ฐœ๋ณ„ ์ธ์Šคํ„ด์Šค์˜ ํ”„๋Ÿฌ์Šคํ…€ ์ปฌ๋ง, ์ •๋ ฌ, [[Level of Detail (LOD)|Level of Detail (LOD)]], BVH ๊ธฐ๋ฐ˜์˜ ๋น ๋ฅธ ๋ ˆ์ด์บ์ŠคํŒ…, ์Šคํ‚จ๋“œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ตœ์ ํ™” ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ํ™•์žฅ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [28], [29], [30]. * **WebGPU ์ปดํ“จํŠธ ์…ฐ์ด๋” ๋„์ž…:** WebGPU ํ™˜๊ฒฝ์—์„œ๋Š” GPU๊ฐ€ ์ง์ ‘ ๊ฐ€์‹œ์„ฑ ํŒ๋‹จ๊ณผ ์ปฌ๋ง์„ ์ฒ˜๋ฆฌํ•˜์—ฌ CPU์™€ GPU ๊ฐ„์˜ ํ†ต์‹  ๋น„์šฉ์„ "0"์— ์ˆ˜๋ ดํ•˜๊ฒŒ ํ•˜๋Š” ๊ฐ„์ ‘ ๊ทธ๋ฆฌ๊ธฐ(Indirect Draw) ๋ฐฉ์‹์ด ์ฐจ์„ธ๋Œ€ ๋Œ€์•ˆ์œผ๋กœ ๋– ์˜ค๋ฅด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค [31]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[Draw Call|Draw Call]], [[Frustum Culling|Frustum Culling]], [[BatchedMesh|BatchedMesh]], [[Texture Atlas|Texture Atlas]], [[Level of Detail (LOD)|Level of Detail (LOD)]], [[Overdraw|Overdraw]] - **Projects/Contexts:** [[Three.js|Three.js]], WebGL/WebGPU Rendering, [[Babylon.js|Babylon.js]], Unity GPU Instancing - **Contradictions/Notes:** * "InstancedMesh๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ญ์ƒ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ธฐ ์‰ฝ์ง€๋งŒ, ์†Œ์Šค๋Š” ๋งค์šฐ ๋‹จ์ˆœํ•œ ๊ธฐํ•˜ํ•™(์˜ˆ: ๋‹จ์ผ ์‚ผ๊ฐํ˜•)์˜ ๊ฒฝ์šฐ ์ธ์Šคํ„ด์‹ฑ ๋ณ€ํ™˜ ํ–‰๋ ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋” ์ปค์„œ ๋‹จ์ˆœํžˆ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ๋ฅผ ๋ณ‘ํ•ฉ(Merging)ํ•˜๋Š” ๋ฐฉ์‹์ด ์˜คํžˆ๋ ค ํ”„๋ ˆ์ž„ ๋ ˆ์ดํŠธ ์ธก๋ฉด์—์„œ ์œ ๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค [32], [33]." * "๋“œ๋กœ์šฐ ์ฝœ ์ˆ˜๊ฐ€ ๊ทน์ ์œผ๋กœ ๊ฐ์†Œํ•จ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , 5,000๊ฐœ ์ˆ˜์ค€์˜ ๊ฐ์ฒด ํ™˜๊ฒฝ์—์„œ๋Š” ์ธ์Šคํ„ด์Šค ์ •๋ ฌ ๋ถ€์žฌ๋กœ ์ธํ•œ ์˜ค๋ฒ„๋“œ๋กœ์šฐ ๋น„์šฉ์ด CPU ์ด๋“์„ ์ƒํšŒํ•˜์—ฌ ์ผ๋ฐ˜ ๋ฉ”์‰ฌ ๋ Œ๋”๋ง๋ณด๋‹ค ๋‚ฎ์€ FPS๋ฅผ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฒฝ๊ณ ํ•ฉ๋‹ˆ๋‹ค [18]." --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/InstancedMesh ์ตœ์ ํ™”.md ---