--- 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|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|InstancedMesh]], [[Draw Call Optimization|Draw Call Optimization]], [[WEBGL_multi_draw|WEBGL_multi_draw]], [[Frustum Culling|Frustum Culling]] - **Projects/Contexts:** [[Three.js แ„…แ…ฆแ†ซแ„ƒแ…ฅแ„…แ…ตแ†ผ แ„Žแ…ฌแ„Œแ…ฅแ†จแ„’แ…ช|Three.js ๋ Œ๋”๋ง ์ตœ์ ํ™”]], [[แ„ƒแ…ขแ„€แ…ฒแ„†แ…ฉ 3D แ„€แ…ฅแ†ซแ„Žแ…ฎแ†จ แ„†แ…ฉแ„ƒแ…ฆแ†ฏ(BIM) แ„‰แ…ตแ„€แ…กแ†จแ„’แ…ช|๋Œ€๊ทœ๋ชจ 3D ๊ฑด์ถ• ๋ชจ๋ธ(BIM) ์‹œ๊ฐํ™”]], [[InstancedMesh แ„‰แ…กแ„‹แ…ญแ†ผ แ„‰แ…ต แ„ƒแ…ณแ„…แ…ฉแ„‹แ…ฎ แ„แ…ฉแ†ฏ แ„Žแ…ฌแ„Œแ…ฅแ†จแ„’แ…ชแ„‹แ…ด แ„’แ…กแ†ซแ„€แ…จแ„Œแ…ฅแ†ท แ„‰แ…กแ„…แ…จ แ„‹แ…งแ†ซแ„€แ…ฎ|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 ---