--- category: Unified tags: [auto-consolidated, technical-documentation] title: [[Compute Shaders|Compute Shaders]] last_updated: 2026-05-02 --- # [[Compute Shaders|Compute Shaders]] ## ๐Ÿ“Œ Brief Summary > ์ปดํ“จํŠธ ์…ฐ์ด๋”(Compute Shaders)๋Š” [[WebGPU|WebGPU]] ํ™˜๊ฒฝ์—์„œ ์ง€์›๋˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ, CPU์˜ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ์ˆ˜ํ–‰๋˜๋˜ ๋ฌด๊ฑฐ์šด ๋ฒ”์šฉ ์—ฐ์‚ฐ ์ž‘์—…์„ GPU๋กœ ์˜คํ”„๋กœ๋“œํ•˜๋Š” ํ•ต์‹ฌ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค [1, 2]. GPU์˜ ์ˆ˜์ฒœ ๊ฐœ ์ฝ”์–ด๋ฅผ ํ™œ์šฉํ•œ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜, ์ถฉ๋Œ ๊ฐ์ง€, ๋Œ€๊ทœ๋ชจ ํŒŒํ‹ฐํด ์‹œ์Šคํ…œ ๋“ฑ์˜ ์ž‘์—… ์„ฑ๋Šฅ์„ ๋น„์•ฝ์ ์œผ๋กœ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค [2]. ๋˜ํ•œ ๊ฐ„์ ‘ ๊ทธ๋ฆฌ๊ธฐ(Indirect Drawing) ๊ธฐ์ˆ ๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ CPU์˜ ๊ฐœ์ž… ์—†์ด ๊ฐ€์‹œ์„ฑ์„ ํŒ๋ณ„ํ•˜๊ณ  ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š” ์™„์ „ํ•œ GPU ์ฃผ๋„ ๋ Œ๋”๋ง([[GPU-driven Rendering|GPU-driven Rendering]]) ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค [3, 4]. --- > ์ปดํ“จํŠธ ์…ฐ์ด๋”(Compute Shaders)๋Š” [[JavaScript|JavaScript]] ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ์ˆ˜ํ–‰๋˜๋˜ ๋ฌด๊ฑฐ์šด ์ž‘์—…์„ ์ˆ˜์ฒœ ๊ฐœ์˜ GPU ์ฝ”์–ด์—์„œ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์˜คํ”„๋กœ๋“œํ•˜๋Š” ๋ฒ”์šฉ GPU ์—ฐ์‚ฐ(general-Purpose GPU computation) ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค [1]. ์ฃผ๋กœ [[WebGPU|WebGPU]] ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ, ํŒŒํ‹ฐํด ์‹œ์Šคํ…œ, ๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜, ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง ๋“ฑ์˜ CPU ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ํš๊ธฐ์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜์—ฌ ๋ Œ๋”๋ง ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค [2-4]. ## ๐Ÿ“– Core Content * **๋ฒ”์šฉ GPU ์—ฐ์‚ฐ ๋ฐ ์„ฑ๋Šฅ ํ–ฅ์ƒ:** ์ปดํ“จํŠธ ์…ฐ์ด๋”๋Š” ๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜, ์ถฉ๋Œ ๊ฐ์ง€, ์œ ์ฒด ์‹œ๋ฎฌ๋ ˆ์ด์…˜, ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ, ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง, ์ ˆ์ฐจ์  ์ง€ํ˜• ์ƒ์„ฑ ๋“ฑ ๋ณต์žกํ•œ ์—ฐ์‚ฐ์„ CPU ๋Œ€์‹  GPU์—์„œ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค [2, 5-8]. ๊ธฐ์กด CPU ๊ธฐ๋ฐ˜ ํŒŒํ‹ฐํด ์—…๋ฐ์ดํŠธ๋Š” ์•ฝ 5๋งŒ ๊ฐœ ์ˆ˜์ค€์—์„œ ๋ณ‘๋ชฉ์ด ๋ฐœ์ƒํ•˜์ง€๋งŒ, WebGPU ์ปดํ“จํŠธ ์…ฐ์ด๋”๋ฅผ ํ™œ์šฉํ•˜๋ฉด 10๋งŒ ๊ฐœ์˜ ํŒŒํ‹ฐํด์„ 2ms ์ด๋‚ด์— ์—…๋ฐ์ดํŠธํ•˜์—ฌ ์ตœ๋Œ€ 150๋ฐฐ์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๋‚ด๋ฉฐ ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ์œ ๋‹›์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [9-12]. * **GPU ์ฃผ๋„ ๋ Œ๋”๋ง ๋ฐ ์ปฌ๋ง (GPU-driven Rendering & Culling):** ๊ฐ„์ ‘ ๊ทธ๋ฆฌ๊ธฐ(Indirect Drawing) ๋ช…๋ น๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ ๊ทน๋„๋กœ ํšจ์œจ์ ์ธ ๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค [4, 13]. ์ปดํ“จํŠธ ์…ฐ์ด๋”๊ฐ€ ๋ชจ๋“  ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•ด ์‹œ์•ผ ์ ˆ๋‘์ฒด(Frustum) ๋ฐ ์˜คํด๋ฃจ์ „(Occlusion) ์ปฌ๋ง ํŒ๋ณ„์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ํ™”๋ฉด์— ๋ณด์ด๋Š” ๊ฐ์ฒด ์ •๋ณด๋งŒ ์›์ž์  ์นด์šดํ„ฐ(Atomic Counter)๋ฅผ ํ†ตํ•ด ๊ฐ„์ ‘ ๊ทธ๋ฆฌ๊ธฐ ๋ฒ„ํผ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค [3, 4, 14]. ์ด๋ฅผ ํ†ตํ•ด CPU์™€ GPU ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™” ์ง€์—ฐ๊ณผ ๋ช…๋ น ๋ฐœํ–‰ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์‚ฌ์‹ค์ƒ 0์— ์ˆ˜๋ ดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค [4, 15]. * **๋ฐ์ดํ„ฐ ๊ณต์œ  ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™”:** ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ๊ฐ€ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•œ ์Šคํ† ๋ฆฌ์ง€ ํ…์Šค์ฒ˜([[Storage|Storage]] Textures)๋ฅผ ํ™œ์šฉํ•ด GPU ๊ธฐ๋ฐ˜ ๋ Œ๋”๋ง๊ณผ ํšจ๊ณผ ์ฒ˜๋ฆฌ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค [6, 16]. ๋˜ํ•œ ์Šค๋ ˆ๋“œ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ, ๋ฐ˜๋ณต ์ ‘๊ทผ ํŒจํ„ด์—์„œ ์ „์—ญ ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค 10~100๋ฐฐ ๋” ๋น ๋ฅธ ์ž‘์—… ๊ทธ๋ฃน ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ(Workgroup Shared [[memory|memory]])๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [7, 13]. * **๊ณ ๊ธ‰ ์—ฐ์‚ฐ ๊ธฐ๋ฒ• ์ง€์›:** ์ปดํ“จํŠธ ๋‹จ๊ณ„์—์„œ ๋ฉ”์‰ฌ ์ •์  ๋ณ€ํ™˜์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฒ„ํผ์— ์ €์žฅํ•ด ๋ถˆํ•„์š”ํ•œ ์ค‘๋ณต ์—ฐ์‚ฐ์„ ์ œ๊ฑฐํ•˜๋Š” '์ปดํ“จํŠธ ์Šคํ‚ค๋‹(Compute Skinning)'์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค [12]. ๋˜ํ•œ glTF ๋ชจ๋ธ์— ํ”ํžˆ ์“ฐ์ด๋Š” 8๋น„ํŠธ/16๋น„ํŠธ ์ •์ˆ˜ ๋ฐ์ดํ„ฐ๋ฅผ 32๋น„ํŠธ ํฌ๋งท์œผ๋กœ ์••์ถ• ํ•ด์ œํ•˜๋Š” ์ž‘์—…๋„ ๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ ์™ธ๊ณฝ์—์„œ ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [12]. * **๋™๊ธฐํ™” ๋ฐ ํŒŒ์ดํ”„๋ผ์ธ ์ œ์–ด ๋ฒ ์ŠคํŠธ ํ”„๋ž™ํ‹ฐ์Šค:** ์—ฐ์‚ฐ ์˜์กด์„ฑ์ด ๋†’์€ ์”ฌ์„ Three.js์—์„œ ๋ Œ๋”๋งํ•  ๋•Œ๋Š” `renderAsync`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ Œ๋” ํŒจ์Šค๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์ „์— ์ปดํ“จํŠธ ํŒจ์Šค๊ฐ€ ์™„์ „ํžˆ ๋๋‚˜๋„๋ก ๋™๊ธฐํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [17]. ์„ฑ๋Šฅ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๊ทน๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์Šคํ…Œ์ด์ง• ๋ฒ„ํผ(Staging Buffers)๋ฅผ ํ™œ์šฉํ•œ ์ด์ค‘ ๋ฒ„ํผ๋ง(Double-buffering)์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์œผ๋ฉฐ, ๋””์ŠคํŒจ์น˜ ์‚ฌ์ด์— `await mapAsync()`๋ฅผ ํ˜ธ์ถœํ•  ๊ฒฝ์šฐ GPU ํŒŒ์ดํ”„๋ผ์ธ์„ ๋ฉˆ์ถ”๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ง€์–‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [18]. --- * **ํŒŒํ‹ฐํด ๋ฐ ๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ฒ˜๋ฆฌ ํ•œ๊ณ„ ๋ŒํŒŒ** ๊ธฐ์กด CPU ๊ธฐ๋ฐ˜ ํŒŒํ‹ฐํด ์—…๋ฐ์ดํŠธ๋Š” ์ผ๋ฐ˜์ ์ธ ํ•˜๋“œ์›จ์–ด์—์„œ ์•ฝ 50,000๊ฐœ ๋ถ€๊ทผ์—์„œ ์„ฑ๋Šฅ ๋ณ‘๋ชฉ์— ๋„๋‹ฌํ•˜์ง€๋งŒ, WebGPU ์ปดํ“จํŠธ ์…ฐ์ด๋”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฅผ ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ ๋‹จ์œ„๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [2, 3]. ์˜ˆ๋ฅผ ๋“ค์–ด, CPU์—์„œ ํ”„๋ ˆ์ž„๋‹น 30ms๊ฐ€ ์†Œ์š”๋˜๋˜ 10,000๊ฐœ์˜ ํŒŒํ‹ฐํด ์—…๋ฐ์ดํŠธ ์ž‘์—…์„ ์ปดํ“จํŠธ ์…ฐ์ด๋”๋กœ ์ „ํ™˜ํ•˜๋ฉด 100,000๊ฐœ์˜ ํŒŒํ‹ฐํด์„ 2ms ์ด๋‚ด์— ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์–ด ์•ฝ 150๋ฐฐ์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [4]. ๋˜ํ•œ, ๋Œ€๊ทœ๋ชจ ์œ ์ฒด ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ฐ ๋ฌผ๋ฆฌ ์—ฐ์‚ฐ์—๋„ ํƒ์›”ํ•œ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค [5, 6]. * **๊ณ ๊ธ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐ GPU ์ฃผ๋„ ๋ Œ๋”๋ง([[GPU-driven Rendering|GPU-driven Rendering]])** ์ปดํ“จํŠธ ์…ฐ์ด๋”๋Š” ์ถฉ๋Œ ๊ฐ์ง€(Collision detection), ์‹ค์‹œ๊ฐ„ ์กฐ๋ช…, ๋Œ€๊ทœ๋ชจ BIM ๋ฐ์ดํ„ฐ์…‹์˜ ์‹ค์‹œ๊ฐ„ ํ•„ํ„ฐ๋ง ๋“ฑ ๋‹ค์ˆ˜์˜ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค [1, 3, 4]. ์‹ค์‹œ๊ฐ„ ํŽธ์ง‘์ด ๊ฐ€๋Šฅํ•œ ๋Œ€๊ทœ๋ชจ ์ ˆ์ฐจ์  ์ง€ํ˜•(Procedural terrain)์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ [6], ์ปดํ“จํŠธ ์…ฐ์ด๋”์˜ ์ถœ๋ ฅ์„ ๊ธฐ๋ฐ˜์œผ๋กœ GPU๊ฐ€ ๋ Œ๋”๋ง ๋Œ€์ƒ์„ ์ง์ ‘ ๊ฒฐ์ •ํ•˜๋Š” ๊ฐ„์ ‘ ๊ทธ๋ฆฌ๊ธฐ([[Indirect Draw|Indirect Draw]]s)๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค์™€ ๊ฐ€์‹œ์„ฑ ์ปฌ๋ง(Culling)์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [7, 8]. * **์ปดํ“จํŠธ ์Šคํ‚ค๋‹ (Compute Skinning)** ์ปดํ“จํŠธ ์…ฐ์ด๋”๋Š” ์ปดํ“จํŠธ ๋‹จ๊ณ„์—์„œ ๋ฉ”์‰ฌ ์ •์  ๋ณ€ํ™˜์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฒ„ํผ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค [4]. ์ด๋ ‡๊ฒŒ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์ˆ˜์˜ ๋ Œ๋”๋ง ํŒจ์Šค์—์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด ์ค‘๋ณต ๊ณ„์‚ฐ์„ ์—†์•จ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์กฐ๋ฆฝ ๊ณผ์ •์„ ๋ณด์—ฌ์ฃผ๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ฒ˜๋ฆฌ ๋“ฑ์— ๋งค์šฐ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค [4]. * **ํ•ต์‹ฌ ๊ตฌํ˜„ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋ฐ ๋™๊ธฐํ™” ์ตœ์ ํ™”** * **์Šคํ† ๋ฆฌ์ง€ ํ…์Šค์ฒ˜([[Storage|Storage]] textures):** ์ผ๋ฐ˜ ํ…์Šค์ฒ˜์™€ ๋‹ฌ๋ฆฌ ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ๋ฅผ ๋ชจ๋‘ ํ—ˆ์šฉํ•˜์—ฌ ์ปดํ“จํŠธ ์…ฐ์ด๋” ๋‚ด์—์„œ ์œ ์ฒด ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ฐ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค [5, 9]. * **์ž‘์—… ๊ทธ๋ฃน ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ(Workgroup shared [[memory|memory]]):** ์Šค๋ ˆ๋“œ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์ „์—ญ ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค 10~100๋ฐฐ ๋น ๋ฅธ ์ ‘๊ทผ ์†๋„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค [6, 7]. * **๋ Œ๋”๋ง ๋™๊ธฐํ™” ๋ฐ ์ด์ค‘ ๋ฒ„ํผ๋ง:** ์ปดํ“จํŠธ ์…ฐ์ด๋”๊ฐ€ ํฌํ•จ๋œ ์”ฌ์€ GPU ์ž‘์—…์ด ์ข…์†๋œ ๋ Œ๋”๋ง ํŒจ์Šค ์ด์ „์— ์™„๋ฃŒ๋˜๋„๋ก `renderAsync`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ ๋ Œ๋”๋ง์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [10]. ๋˜ํ•œ ์„ฑ๋Šฅ์„ ๋†’์ด๋ ค๋ฉด ์Šคํ…Œ์ด์ง• ๋ฒ„ํผ(Staging buffers)๋ฅผ ํ™œ์šฉํ•œ ์ด์ค‘ ๋ฒ„ํผ๋ง(Double-buffering) ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉฐ, ํŒŒ์ดํ”„๋ผ์ธ ์ง€์—ฐ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋””์ŠคํŒจ์น˜ ๊ฐ„์— `await mapAsync()` ์‚ฌ์šฉ์„ ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [11]. ## โš–๏ธ Trade-offs & Caveats - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Graphics & Performance ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. --- - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Graphics & Performance ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** `[[WebGPU|WebGPU]]`, `GPU-driven Rendering`, `Indirect Drawing`, `Storage Textures`, `[[Frustum Culling|Frustum Culling]]` - **Projects/Contexts:** `Three.js`, `Segments.ai`, `BIM Datasets` - **Contradictions/Notes:** ์ปดํ“จํŠธ ์…ฐ์ด๋”๋Š” ์—„์ฒญ๋‚œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์ œ๊ณตํ•˜์ง€๋งŒ ๊ตฌํ˜• API์ธ [[WebGL|WebGL]]์ด๋‚˜ WebGL 2์—์„œ๋Š” ์ง€์›๋˜์ง€ ์•Š์•„ WebGPU ํ™˜๊ฒฝ์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค [1]. ๋˜ํ•œ GPU ์ตœ์ ํ™”๋ฅผ ์ œ๋Œ€๋กœ ๋‹ค๋ฃจ์ง€ ๋ชปํ•ด ๋™๊ธฐํ™” ๋Œ€๊ธฐ(`await mapAsync()`)๋ฅผ ๋‚จ์šฉํ•  ๊ฒฝ์šฐ, ์˜คํžˆ๋ ค GPU๊ฐ€ ์ตœ๋Œ€ 60%์˜ ์‹œ๊ฐ„ ๋™์•ˆ ์œ ํœด ์ƒํƒœ(Idle)์— ๋น ์ง€๋Š” ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [18]. --- *Last updated: 2026-04-19* --- --- - **Related Topics:** [[WebGPU|WebGPU]], GPU-driven Rendering, [[TSL (Three Shader Language)|TSL (Three Shader Language]], Storage Textures - **Projects/Contexts:** Three.js WebGPURenderer, Native WebGPU, ๋Œ€๊ทœ๋ชจ ๊ฑด์„ค/BIM ํ”Œ๋žซํผ (Large-Scale Construction Viewers) - **Contradictions/Notes:** ์ปดํ“จํŠธ ์…ฐ์ด๋”๋ฅผ ํ†ตํ•œ GPU ๋ณ‘๋ ฌ ์—ฐ์‚ฐ์€ ์••๋„์ ์ธ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๊ฐ€์ ธ์˜ค์ง€๋งŒ, ์ž‘์—… ๋””์ŠคํŒจ์น˜ ์‚ฌ์ด์— `await mapAsync()`๋ฅผ ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด GPU ํŒŒ์ดํ”„๋ผ์ธ์ด ๋ฉˆ์ถ”๊ณ  ์ตœ๋Œ€ 60%์˜ ์‹œ๊ฐ„ ๋™์•ˆ GPU๊ฐ€ ์œ ํœด ์ƒํƒœ์— ๋น ์ง€๋Š” ์„ฑ๋Šฅ ์ €ํ•˜ ์—ญํšจ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [11]. --- *Last updated: 2026-04-19* ---