--- id: P-REINFORCE-AUTO-38086E category: "10_Wiki/๐Ÿ’ก Topics/Graphics & Performance" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - Compute Shader" --- # [[Compute Shader|Compute Shader]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > ์ปดํ“จํŠธ ์…ฐ์ด๋”(Compute Shader)๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋‚˜ CPU๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋˜ ๋ฌด๊ฑฐ์šด ์—ฐ์‚ฐ ์ž‘์—…์„ ์ˆ˜์ฒœ ๊ฐœ์˜ GPU ์ฝ”์–ด๋ฅผ ํ™œ์šฉํ•ด ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” WebGPU์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค [1]. ์ฃผ๋กœ ์ž…์ž(Particle) ์‹œ์Šคํ…œ, ๋ฌผ๋ฆฌ ์—ฐ์‚ฐ, ์‹ค์‹œ๊ฐ„ ํ•„ํ„ฐ๋ง, ๊ทธ๋ฆฌ๊ณ  ๋Œ€๊ทœ๋ชจ ๊ฐ์ฒด์˜ ๊ฐ€์‹œ์„ฑ ํŒ๋ณ„(Culling)๊ณผ ๊ฐ™์€ ๋ฒ”์šฉ GPU ์—ฐ์‚ฐ(GPGPU)์— ์‚ฌ์šฉ๋˜์–ด, ๊ธฐ์กด WebGL ๊ธฐ๋ฐ˜ ํ™˜๊ฒฝ์˜ ํ•œ๊ณ„๋ฅผ ๋›ฐ์–ด๋„˜๋Š” ์••๋„์ ์ธ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค [1-3]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์—ฐ์‚ฐ ๋ฐ ์„ฑ๋Šฅ ํ–ฅ์ƒ:** CPU ๊ธฐ๋ฐ˜์˜ ์ž…์ž ์‹œ์Šคํ…œ์€ ์ผ๋ฐ˜์ ์œผ๋กœ 5๋งŒ ๊ฐœ ์ •๋„์—์„œ ์„ฑ๋Šฅ ๋ณ‘๋ชฉ์„ ๊ฒช์ง€๋งŒ, WebGPU ์ปดํ“จํŠธ ์…ฐ์ด๋”๋ฅผ ๋„์ž…ํ•˜๋ฉด ์ด๋ฅผ ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ ๋‹จ์œ„๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [2, 4]. ์˜ˆ๋ฅผ ๋“ค์–ด, 1๋งŒ ๊ฐœ์˜ ์ž…์ž๋ฅผ CPU์—์„œ ์—…๋ฐ์ดํŠธํ•  ๋•Œ 30ms๊ฐ€ ๊ฑธ๋ฆฌ๋˜ ์ž‘์—…์„ ์ปดํ“จํŠธ ์…ฐ์ด๋”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด 10๋งŒ ๊ฐœ์˜ ์ž…์ž๋ฅผ 2ms ์ด๋‚ด์— ์ฒ˜๋ฆฌํ•˜์—ฌ 150๋ฐฐ ์ด์ƒ์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [5]. * **์ฃผ์š” ํ™œ์šฉ ๋ถ„์•ผ:** ์ปดํ“จํŠธ ์…ฐ์ด๋”๋Š” ์ถฉ๋Œ ๊ฐ์ง€(Collision detection), ์‹ค์‹œ๊ฐ„ ์กฐ๋ช… ๊ณ„์‚ฐ, ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง, ๊ตฌ์กฐ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋“ฑ์— ํšจ๊ณผ์ ์œผ๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค [1, 4]. ์‹ค์‹œ๊ฐ„ ํŽธ์ง‘๊ณผ ๊ฑฐ๋Œ€ํ•œ ์Šค์ผ€์ผ์ด ํ•„์š”ํ•œ ์ ˆ์ฐจ์  ์ง€ํ˜• ์ƒ์„ฑ(Procedural terrain generation)๋„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค [6]. ๋˜ํ•œ, ๋ฉ”์‰ฌ์˜ ์ •์  ๋ณ€ํ™˜์„ ์ปดํ“จํŠธ ๋‹จ๊ณ„์—์„œ ๋ฏธ๋ฆฌ ์ฒ˜๋ฆฌํ•ด ๋ฒ„ํผ์— ์ €์žฅํ•ด๋‘๊ณ  ์—ฌ๋Ÿฌ ๋ Œ๋” ํŒจ์Šค์—์„œ ์žฌ์‚ฌ์šฉํ•˜๋Š” '์ปดํ“จํŠธ ์Šคํ‚ค๋‹(Compute Skinning)' ๊ธฐ๋ฒ•๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค [5]. * **๋ฉ”๋ชจ๋ฆฌ ํ™œ์šฉ ๋ฐ ์Šคํ† ๋ฆฌ์ง€ ํ…์Šค์ฒ˜:** ์ผ๋ฐ˜์ ์ธ ํ…์Šค์ฒ˜์™€ ๋‹ฌ๋ฆฌ ์ปดํ“จํŠธ ์…ฐ์ด๋” ํ™˜๊ฒฝ์—์„œ๋Š” '์Šคํ† ๋ฆฌ์ง€ ํ…์Šค์ฒ˜(Storage textures)'๋ฅผ ํ†ตํ•ด ์…ฐ์ด๋” ๋‚ด์—์„œ ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ ์ž‘์—…์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์œ ์ฒด ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด๋‚˜ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ๋“ฑ์— ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค [7, 8]. ๋”๋ถˆ์–ด ์Šค๋ ˆ๋“œ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ ๊ฐ€ ํ•„์š”ํ•œ ์ž‘์—…์—์„œ๋Š” ์ž‘์—… ๊ทธ๋ฃน ๋ณ€์ˆ˜(Workgroup variables)๋ฅผ ์‚ฌ์šฉํ•œ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Š” ๋ฐ˜๋ณต์ ์ธ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ํŒจํ„ด์—์„œ ์ „์—ญ ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค 10~100๋ฐฐ ๋” ๋น ๋ฅธ ์†๋„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค [6, 9]. * **GPU ์ฃผ๋„ ๋ Œ๋”๋ง(GPU-driven Rendering)๊ณผ ๊ฐ„์ ‘ ๊ทธ๋ฆฌ๊ธฐ:** ์ปดํ“จํŠธ ์…ฐ์ด๋”๋Š” ๊ฐ„์ ‘ ๊ทธ๋ฆฌ๊ธฐ(Indirect draw)์™€ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ์˜ ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค [9]. CPU๊ฐ€ ์ธ์Šคํ„ด์Šค์˜ ์œ„์น˜๋ฅผ ๊ฒ€์‚ฌํ•˜๊ณ  ๊ทธ๋ฆฌ๊ธฐ ๋ช…๋ น์„ ์ค€๋น„ํ•˜๋Š” ๋Œ€์‹ , ์ปดํ“จํŠธ ์…ฐ์ด๋”๊ฐ€ ์ง์ ‘ ์‹œ์•ผ ํฌํ•จ ์—ฌ๋ถ€๋‚˜ ์˜คํด๋ฃจ์ „(๊ฐ€๋ฆผ ํ˜„์ƒ)์„ ํŒ๋ณ„ํ•œ ๋’ค ์‹œ๊ฐ์ ์œผ๋กœ ์œ ํšจํ•œ ๊ฐ์ฒด๋“ค๋กœ๋งŒ ๊ฐ„์ ‘ ๊ทธ๋ฆฌ๊ธฐ ๋ฒ„ํผ๋ฅผ ์ฑ„์›๋‹ˆ๋‹ค [3, 10, 11]. ์ด ๋ฐฉ์‹์„ ํ†ตํ•ด CPU์™€ GPU ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ „์†ก๋Ÿ‰์„ ๊ฑฐ์˜ 0์œผ๋กœ ์ˆ˜๋ ดํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3]. * **๋ Œ๋”๋ง ๋™๊ธฐํ™”:** ์ปดํ“จํŠธ ์…ฐ์ด๋”๊ฐ€ ํฌํ•จ๋œ ์”ฌ์„ ๋ Œ๋”๋งํ•  ๋•Œ๋Š” GPU ์ž‘์—…์˜ ์ ์ ˆํ•œ ๋™๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค [12]. ์ข…์†์ ์ธ ๋ Œ๋” ํŒจ์Šค๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์ „์— ์ปดํ“จํŠธ ํŒจ์Šค์˜ ์ž‘์—…์ด ์™„์ „ํžˆ ์™„๋ฃŒ๋˜๋„๋ก ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด `renderAsync`์™€ ๊ฐ™์€ ๋น„๋™๊ธฐ ๋ Œ๋”๋ง ๋ฐฉ์‹์˜ ์‚ฌ์šฉ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค [12]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Graphics & Performance ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[WebGPU|WebGPU]], [[GPU-driven Rendering|GPU-driven Rendering]], [[Indirect Draw|Indirect Draw]], [[Frustum Culling|Frustum Culling]] - **Projects/Contexts:** ๋Œ€๊ทœ๋ชจ ๊ฑด์„ค ๋ฐ BIM ๋ชจ๋ธ ํ”Œ๋žซํผ(์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ์ปดํฌ๋„ŒํŠธ ๋ Œ๋”๋ง ์ตœ์ ํ™”) [13, 14], ์—‘์Šคํฌ 2025 ์˜ค์‚ฌ์นด์— ์ „์‹œ๋œ 100๋งŒ ํŒŒํ‹ฐํด ์œ ์ฒด ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์„ค์น˜๋ฌผ(Hokusai) [15, 16]. - **Contradictions/Notes:** ์ปดํ“จํŠธ ์…ฐ์ด๋”๋Š” ์ตœ์‹  ๊ทธ๋ž˜ํ”ฝ API์ธ WebGPU์—์„œ ๊ธฐ๋ณธ ์ง€์›๋˜์ง€๋งŒ, ๊ตฌํ˜• WebGL์ด๋‚˜ WebGL2 ํ™˜๊ฒฝ์—์„œ๋Š” ์ง์ ‘์ ์œผ๋กœ ์ง€์›๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด๋ฅผ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋“œ์‹œ WebGPU ๊ธฐ๋ฐ˜์˜ ๋ Œ๋”๋Ÿฌ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ œ์•ฝ์ด ์žˆ์Šต๋‹ˆ๋‹ค [3, 17]. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/Compute Shader.md ---