--- id: [[P-Reinforce|P-Reinforce]]-AUTO-1903E0 category: Dev confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - [[WebGPU|WebGPU]] [[Compute Shader|Compute Shader]]s" --- # [[WebGPU Compute Shaders|WebGPU Compute Shaders]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > [[WebGPU Compute Shader|WebGPU Compute Shader]]๋Š” [[JavaScript|JavaScript]]์˜ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ์ˆ˜ํ–‰๋˜๋˜ ๋ฌด๊ฑฐ์šด ๋ฒ”์šฉ ์—ฐ์‚ฐ์„ ์ˆ˜๋งŽ์€ GPU ์ฝ”์–ด๋ฅผ ํ™œ์šฉํ•ด ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค [1]. CPU ๊ธฐ๋ฐ˜ ์—ฐ์‚ฐ์˜ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ํ•ด์†Œํ•˜์—ฌ ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ํŒŒํ‹ฐํด์ด๋‚˜ ๋Œ€๊ทœ๋ชจ ๋ณต์žกํ•œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค [2, 3]. Three.js์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ์„ฑ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์œผ๋ฉฐ, ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง, ๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜, GPU ์ฃผ๋„ ๋ Œ๋”๋ง ๋“ฑ ๊ณ ์„ฑ๋Šฅ์ด ์š”๊ตฌ๋˜๋Š” ์ž‘์—…์— ํ•„์ˆ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค [1, 4]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **์„ฑ๋Šฅ ํ–ฅ์ƒ ๋ฐ ๋ณ‘๋ชฉ ํ•ด์†Œ:** ๊ธฐ์กด CPU ๊ธฐ๋ฐ˜์˜ ์—…๋ฐ์ดํŠธ๋Š” ์•ฝ 50,000๊ฐœ์˜ ํŒŒํ‹ฐํด์—์„œ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋ฐœ์ƒํ–ˆ์œผ๋‚˜, WebGPU ์ปดํ“จํŠธ ์…ฐ์ด๋”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฅผ ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ ๋‹จ์œ„๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [2]. ์‹ค์ œ๋กœ CPU์—์„œ ํ”„๋ ˆ์ž„๋‹น 30ms๊ฐ€ ๊ฑธ๋ฆฌ๋˜ 10,000๊ฐœ์˜ ํŒŒํ‹ฐํด ์—…๋ฐ์ดํŠธ ์ž‘์—…์„ ์ปดํ“จํŠธ ์…ฐ์ด๋”๋ฅผ ํ†ตํ•ด 100,000๊ฐœ์˜ ํŒŒํ‹ฐํด์„ 2ms ์ด๋‚ด์— ์ฒ˜๋ฆฌํ•˜๋Š” ์ˆ˜์ค€(์•ฝ 150๋ฐฐ ํ–ฅ์ƒ)์œผ๋กœ ๋Œ€ํญ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3]. * **์ฃผ์š” ํ™œ์šฉ ์‚ฌ๋ก€:** ์ปดํ“จํŠธ ์…ฐ์ด๋”๋Š” ์ถฉ๋Œ ๊ฐ์ง€, ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง, ์‹ค์‹œ๊ฐ„ ์กฐ๋ช…, ๋ฌผ๋ฆฌ ์—ฐ์‚ฐ ๋“ฑ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์ž‘์—…์— ๋งค์šฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค [1, 4-6]. ๋˜ํ•œ ์‹ค์‹œ๊ฐ„ ํŽธ์ง‘๊ณผ ๊ฑฐ๋Œ€ํ•œ ๊ทœ๋ชจ๋ฅผ ์ง€์›ํ•˜๋Š” ์ ˆ์ฐจ์  ์ง€ํ˜• ์ƒ์„ฑ(Procedural terrain generation)์—๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค [6]. ์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹œํ€€์Šค๋ฅผ ์œ„ํ•œ '์ปดํ“จํŠธ ์Šคํ‚ค๋‹(Compute skinning)' ๊ธฐ๋ฒ•์—๋„ ํ™œ์šฉ๋˜์–ด, ์ปดํ“จํŠธ ๋‹จ๊ณ„์—์„œ ๋ฉ”์‰ฌ ์ •์  ๋ณ€ํ™˜์„ ๊ณ„์‚ฐํ•ด ๋ฒ„ํผ์— ์ €์žฅํ•˜๊ณ  ๋ Œ๋”๋ง ํŒจ์Šค์—์„œ ์žฌ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์ค‘๋ณต ๊ณ„์‚ฐ์„ ์—†์•จ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3]. * **์Šคํ† ๋ฆฌ์ง€ ํ…์Šค์ฒ˜([[Storage|Storage]] Textures) ํ™œ์šฉ:** ์ผ๋ฐ˜ ํ…์Šค์ฒ˜์™€ ๋‹ฌ๋ฆฌ ์ปดํ“จํŠธ ์…ฐ์ด๋”์—์„œ ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ๊ฐ€ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์œ ์ฒด ์‹œ๋ฎฌ๋ ˆ์ด์…˜, ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ, GPU ์ฃผ๋„ ๋ Œ๋”๋ง๊ณผ ๊ฐ™์€ ํšจ๊ณผ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค [5, 7]. * **๋ฉ”๋ชจ๋ฆฌ ๋ฐ ๋™๊ธฐํ™” ๊ด€๋ฆฌ:** ์Šค๋ ˆ๋“œ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ ๊ฐ€ ํ•„์š”ํ•œ ์ปดํ“จํŠธ ์…ฐ์ด๋”์˜ ๊ฒฝ์šฐ, ์ „์—ญ ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค 10~100๋ฐฐ ๋น ๋ฅธ ์ž‘์—… ๊ทธ๋ฃน ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ(Workgroup shared [[memory|memory]])๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [6, 8]. ์—ฐ์‚ฐ์ด ํฌํ•จ๋œ ์”ฌ์„ ๋ Œ๋”๋งํ•  ๋•Œ๋Š” `renderAsync`(๋˜๋Š” `renderer.computeAsync`)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ GPU ์ž‘์—…์„ ๋™๊ธฐํ™”ํ•˜๊ณ , ์ข…์†๋œ ๋ Œ๋” ํŒจ์Šค๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์ „์— ์ปดํ“จํŠธ ํŒจ์Šค๊ฐ€ ์™„๋ฃŒ๋˜๋„๋ก ๋ณด์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [9, 10]. * **๊ฐ„์ ‘ ๊ทธ๋ฆฌ๊ธฐ([[Indirect Draw|Indirect Draw]]s)์™€์˜ ๊ฒฐํ•ฉ:** ์ปดํ“จํŠธ ์…ฐ์ด๋”์˜ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ GPU๊ฐ€ ์Šค์Šค๋กœ ๋ฌด์—‡์„ ๋ Œ๋”๋งํ• ์ง€ ๊ฒฐ์ •ํ•˜๊ฒŒ ํ•˜๋Š” ๊ฐ„์ ‘ ๊ทธ๋ฆฌ๊ธฐ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [8]. ์ด๋ฅผ ํ†ตํ•ด CPU-GPU ๊ฐ„์˜ ๋™๊ธฐํ™” ์ง€์—ฐ์„ ์ œ๊ฑฐํ•˜๊ณ  ์ดˆ๋‹น ํ”„๋ ˆ์ž„ ์ˆ˜์ค€์˜ GPU ๊ธฐ๋ฐ˜ ์ปฌ๋ง(Culling)์„ ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [8, 11, 12]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Graphics & Performance ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** Storage Textures, Indirect Draws, [[TSL (Three Shader Language)|TSL (Three Shader Language]], Compute Skinning - **Projects/Contexts:** Three.js r171+ (WebGPURenderer ๋„์ž… ๋ฐ TSL ํ†ตํ•ฉ์œผ๋กœ ์ปดํ“จํŠธ ์…ฐ์ด๋” ์ง€์› [13-17]), BIM Datasets (๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง ๋ฐ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ์ ์šฉ ๋งฅ๋ฝ [3]), [[Expo 2025 Osaka|Expo 2025 Osaka]] (100๋งŒ ๊ฐœ ํŒŒํ‹ฐํด ์œ ์ฒด ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ ์šฉ ์‚ฌ๋ก€ [18, 19]) - **Contradictions/Notes:** [[WebGL|WebGL]]์ด๋‚˜ [[WebGL2|WebGL2]] ํ™˜๊ฒฝ์—์„œ๋Š” ์ปดํ“จํŠธ ์…ฐ์ด๋”๊ฐ€ ์ง€์›๋˜์ง€ ์•Š์œผ๋ฉฐ WebGPU ํ™˜๊ฒฝ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค [20]. Three.js์˜ TSL๊ณผ ๋ Œ๋”๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋น„๊ต์  ์‰ฝ๊ฒŒ ์ปดํ“จํŠธ ์…ฐ์ด๋”๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋„ค์ดํ‹ฐ๋ธŒ WebGPU๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋” ์„ธ๋ฐ€ํ•œ ์ง์ ‘ ์ œ์–ด ๋ฐ ๋‹ค์ค‘ ํŒจ์Šค ๋ฌผ๋ฆฌ ์—ฐ์‚ฐ ๋“ฑ์ด ๊ฐ€๋Šฅํ•œ ๋Œ€์‹  ๊ทธ๋ž˜ํ”ฝ์Šค ํŒŒ์ดํ”„๋ผ์ธ์— ๋Œ€ํ•œ ๋งค์šฐ ๋†’์€ ๊ธฐ์ˆ ์  ์ˆ™๋ จ๋„๊ฐ€ ์š”๊ตฌ๋œ๋‹ค๋Š” ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค [1, 4, 10]. --- *Last updated: 2026-04-19* ---