--- id: P-REINFORCE-AUTO-8D909B category: "10_Wiki/๐Ÿ’ก Topics/Graphics & Performance" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - Needle Engine" --- # [[Needle Engine|Needle Engine]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > Needle Engine์€ 3D ๋ Œ๋”๋ง ๋ฐ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์ง€์›ํ•˜๋Š” ์—”์ง„์ด๋‹ค [1]. ๋™์ผํ•œ ๊ฐ์ฒด(์˜ˆ: ๋‚˜๋ฌด)๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ Œ๋”๋งํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋“œ๋กœ์šฐ ์ฝœ ์ฆ๊ฐ€๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด GPU ์ธ์Šคํ„ด์‹ฑ(GPU Instancing) ๋ฐ `InstancedMesh`๋ฅผ ํ™œ์šฉํ•œ ์ตœ์ ํ™”๋ฅผ ์ œ๊ณตํ•œ๋‹ค [1, 2]. ๋‚ด๋ถ€์ ์œผ๋กœ ์ธ์Šคํ„ด์‹ฑ ๋ฒ„ํผ๊ฐ€ ๋Ÿฐํƒ€์ž„์— ๋™์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋ฉด ์„ฑ๋Šฅ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋ฒ„ํผ ์‚ฌ์ „ ํ• ๋‹น์ด๋‚˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์˜ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์ด ๊ถŒ์žฅ๋œ๋‹ค [2, 3]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) - **๋‹ค์ค‘ ์ธ์Šคํ„ด์Šค ์ฒ˜๋ฆฌ์™€ ๋“œ๋กœ์šฐ ์ฝœ ์ตœ์ ํ™”**: ์ˆ˜๋งŽ์€ ๋ฐ˜๋ณต ๊ฐ์ฒด๋ฅผ ๋ Œ๋”๋งํ•  ๋•Œ ์”ฌ์— ๊ฐœ๋ณ„ ๊ฐ์ฒด๋กœ ๋ฐฐ์น˜ํ•˜๋ฉด ์—”์ง„์ด ์ด๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋“œ๋กœ์šฐ ์ฝœ์ด ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•œ๋‹ค [1]. Needle Engine์—์„œ๋Š” ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ช…์‹œ์ ์œผ๋กœ GPU ์ธ์Šคํ„ด์‹ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์‹ฑ ๋ฐฐ์น˜๋กœ ํ†ตํ•ฉํ•˜๋Š” ๋ฐฉ์‹์„ ์ทจํ•ด์•ผ ํ•œ๋‹ค [1]. - **๋™์  ๋ฒ„ํผ ํ™•์žฅ ๋ฌธ์ œ ๋ฐ ๋Œ€์•ˆ**: ์ธ์Šคํ„ด์‹ฑ ์‹œ์Šคํ…œ์€ ์ดˆ๊ธฐ์— ๋‚ฎ์€ ๋ฒ„ํผ ์šฉ๋Ÿ‰์œผ๋กœ ์‹œ์ž‘ํ•˜๋ฉฐ, ๋Ÿฐํƒ€์ž„์— ์ธ์Šคํ„ด์Šค๊ฐ€ ์ถ”๊ฐ€๋˜์–ด ๋ฒ„ํผ๊ฐ€ ๋™์ ์œผ๋กœ ๋Š˜์–ด๋‚  ๊ฒฝ์šฐ(`[Instancing] Growing Buffer`) ์„ฑ๋Šฅ ์ง€์—ฐ(Stall) ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค [3]. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด `RendererInstancing.d.ts.md` ์†Œ์Šค์˜ `InstancingHandler.getStartInstanceCount`๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œํ•˜์—ฌ, ์—”์ง„ ์‹œ์ž‘ ์‹œ ์˜ˆ์ƒ๋˜๋Š” ์ตœ๋Œ€ ์ธ์Šคํ„ด์Šค ์ˆ˜๋งŒํผ ๋ฒ„ํผ๋ฅผ ๋ฏธ๋ฆฌ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๊ถŒ์žฅ๋œ๋‹ค [3]. - **ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์˜ InstancedMesh ํ™œ์šฉ**: ์™ธ๋ถ€ ํˆด(์˜ˆ: ๋ธ”๋ Œ๋”)์—์„œ ๋‹จ์ผ ์—์…‹์„ ์ต์ŠคํฌํŠธํ•œ ํ›„, ์ฝ”๋“œ ์ƒ์—์„œ `InstancedMesh` ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ๋Ÿฐํƒ€์ž„์— ์ธ์Šคํ„ด์Šคํ™”ํ•˜๋ฉด ๋ฒ„ํผ์˜ ๋™์  ํ™•์žฅ ๋ฌธ์ œ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค [2]. - **์˜ค๋ฒ„๋“œ๋กœ์šฐ(Overdraw) ๊ด€๋ฆฌ**: ์ธ์Šคํ„ด์‹ฑ์„ ์ ์šฉํ•˜๋”๋ผ๋„ ๋‚˜๋ญ‡์žŽ๊ณผ ๊ฐ™์€ ํˆฌ๋ช…ํ•œ(Transparent) ์žฌ์งˆ์„ ๊ฒน์ณ์„œ ๋ Œ๋”๋งํ•˜๋ฉด ์˜ค๋ฒ„๋“œ๋กœ์šฐ๋กœ ์ธํ•ด ๋ Œ๋”๋ง ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ์ €ํ•˜๋  ์ˆ˜ ์žˆ๋‹ค [4]. ์ด๋ฅผ ๋ถˆํˆฌ๋ช…(Opaque) ๋ฐ ์ปท์•„์›ƒ(Cutout) ๋ชจ๋“œ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ํ”„๋ ˆ์ž„ ์†๋„๋ฅผ ๋Œ€ํญ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค [5]. - **์••์ถ• ํ™˜๊ฒฝ์—์„œ์˜ ๋ฒ„๊ทธ ํ•ด๊ฒฐ**: ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ๋‚˜ ํ”„๋ฆฌ๋ทฐ ์••์ถ• ์ ์šฉ ์‹œ ํ…์Šค์ฒ˜ ๋ˆ„๋ฝ์ด๋‚˜ ์ธ์Šคํ„ด์‹ฑ ๋ Œ๋”๋ง ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์ž„ํฌํŠธ ์„ค์ •์„ ์ ๊ฒ€ํ•˜๊ฑฐ๋‚˜ `@needle-tools/engine` ํŒจํ‚ค์ง€(์˜ˆ: `3.19.11-beta.1`) ์—…๋ฐ์ดํŠธ๋ฅผ ํ†ตํ•ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค [2, 6, 7]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Graphics & Performance ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** GPU Instancing, [[InstancedMesh|InstancedMesh]], [[Draw Call|Draw Call]], [[Overdraw|Overdraw]] - **Projects/Contexts:** Needle Engine ๋‹ค์ค‘ ์ธ์Šคํ„ด์Šค(Multiple Instance) ๋ Œ๋”๋ง ์ตœ์ ํ™” ๋…ผ์˜ - **Contradictions/Notes:** Needle Engine ์–ด์‹œ์Šคํ„ดํŠธ๋Š” ์„ฑ๋Šฅ ์ง€์—ฐ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด `InstancingHandler.getStartInstanceCount`๋ฅผ ์‚ฌ์šฉํ•ด ๋ฒ„ํผ๋ฅผ ์‚ฌ์ „ ํ• ๋‹นํ•  ๊ฒƒ์„ ์ œ์•ˆํ–ˆ์ง€๋งŒ, ์‹ค์ œ ์‚ฌ์šฉ์ž๋Š” ์ด ๋ฐฉ์‹์ด ๋งค์นญ๋˜๋Š” ๋ชจ๋“  ๋ Œ๋”๋Ÿฌ๋งˆ๋‹ค ํ•ด๋‹น ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์„ ๋ฐ˜๋ณตํ•ด์„œ ํ• ๋‹นํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜๋„ํ•œ ์ตœ์ ํ™” ํšจ๊ณผ๋ฅผ ์™„์ „ํžˆ ์–ป๊ธฐ ์–ด๋ ต๋‹ค๊ณ  ๋ณด๊ณ ํ–ˆ๋‹ค [3, 8]. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/Needle Engine.md ---