--- id: P-REINFORCE-AUTO-DDA796 category: "10_Wiki/๐Ÿ’ก Topics/Graphics & Performance" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - WebGL 20" --- # [[WebGL 20|WebGL 20]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > WebGL 2.0์€ ์›น ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ 3D ๊ทธ๋ž˜ํ”ฝ์„ ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•œ API๋กœ, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ WebGPU๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ํ™˜๊ฒฝ์—์„œ WebGPURenderer๊ฐ€ ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์ฒด(Fallback) ๋ Œ๋”๋Ÿฌ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค [1, 2]. ์ตœ์‹  Three.js ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” TSL(Three Shader Language)์„ ํ†ตํ•ด WebGPU์™€ WebGL์—์„œ ๋ชจ๋‘ ์ž‘๋™ํ•˜๋Š” ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์…ฐ์ด๋”๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1-3]. WebGL 2.0์€ ํ…์Šค์ฒ˜ ๋ฐฐ์—ด(Data Array Textures)๊ณผ BatchedMesh ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜์—ฌ ์ „ํ†ต์ ์ธ WebGL 1.0์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ณ  ๋ Œ๋”๋ง ์„ฑ๋Šฅ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋ฐ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค [4, 5]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **Three.js์—์„œ์˜ WebGL 2.0 ์ž๋™ ํด๋ฐฑ(Fallback):** ๋ธŒ๋ผ์šฐ์ €๊ฐ€ WebGPU๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ WebGPURenderer๋Š” ๋ณ„๋„์˜ ์ฝ”๋“œ ๋ถ„๊ธฐ ์—†์ด ์ž๋™์œผ๋กœ WebGL 2.0 ๋ Œ๋”๋Ÿฌ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค [1, 2]. ๊ฐœ๋ฐœ์ž๋Š” WebGPU ์ง€์› ํ™˜๊ฒฝ์—์„œ WebGL ํด๋ฐฑ ๋™์ž‘์„ ํ…Œ์ŠคํŠธํ•˜๊ฑฐ๋‚˜ WebGPU์— ์—†๋Š” ํŠน์ • WebGL ํ™•์žฅ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๋•Œ `forceWebGL: true` ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ•์ œ๋กœ WebGL ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [6, 7]. ๋‹จ, ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์ด WebGL ์ „์šฉ์ผ ๊ฒฝ์šฐ์—๋Š” ๋ฒˆ๋“ค ํฌ๊ธฐ ์ถ•์†Œ๋ฅผ ์œ„ํ•ด WebGLRenderer๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค [7]. * **๊ณ ๊ธ‰ ํ…์Šค์ฒ˜ ๋ฐ ๋ฐฐ์นญ(Batching) ์ง€์›:** WebGL 2.0์€ ๋ฐ์ดํ„ฐ ํ…์Šค์ฒ˜ ๋ฐฐ์—ด(Data Array Textures) ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜์—ฌ, ๊ธฐ์กด ํ…์Šค์ฒ˜ ์•„ํ‹€๋ผ์Šค(Texture Atlas)์˜ ์น˜๋ช…์  ๋‹จ์ ์ธ ๊ฐ€์žฅ์ž๋ฆฌ ๋ฒˆ์ง(edge bleeding) ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค [4, 8, 9]. ์ด ๊ธฐ๋Šฅ์€ 2025๋…„ ๊ธฐ์ค€ ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ ์šฐ์ˆ˜ํ•œ ํ˜ธํ™˜์„ฑ์„ ์ž๋ž‘ํ•˜๋ฉฐ, BatchedMesh์™€ ๊ฒฐํ•ฉํ•˜๋ฉด ๋‹จ์ผ ๋“œ๋กœ์šฐ ์ฝœ(Draw call)๋งŒ์œผ๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋‹ค์–‘ํ•œ ํ…์Šค์ฒ˜๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด๋“ค์„ ๋งค์šฐ ํšจ์œจ์ ์œผ๋กœ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [4, 5, 8]. * **์„ฑ๋Šฅ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์˜ ํ•œ๊ณ„:** WebGL ํŒŒ์ดํ”„๋ผ์ธ์—์„œ๋Š” ๋ Œ๋”๋ง ๋ช…๋ น๋งˆ๋‹ค CPU ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์‹ค์งˆ์ ์œผ๋กœ 1,000~2,000๊ฐœ์˜ ๋“œ๋กœ์šฐ ์ฝœ(Draw call) ํ•œ๊ณ„์— ๋„๋‹ฌํ•  ๋•Œ ์„ฑ๋Šฅ์ด ๋ˆˆ์— ๋„๊ฒŒ ์ €ํ•˜๋ฉ๋‹ˆ๋‹ค [10]. ๋”๋ถˆ์–ด WebGL ์ปจํ…์ŠคํŠธ๋Š” ๋ธŒ๋ผ์šฐ์ €์™€ ๊ธฐ๊ธฐ์— ๋”ฐ๋ผ ๋ณดํ†ต 256MB์—์„œ 1GB ์ˆ˜์ค€์˜ ์œ ํ•œํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์ด๋ฅผ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ ์ปจํ…์ŠคํŠธ ์†์‹ค(Context Lost) ํ˜„์ƒ๊ณผ ํ•จ๊ป˜ ๋ทฐ์–ด๊ฐ€ ๋ฉˆ์ถ”๊ฒŒ ๋ฉ๋‹ˆ๋‹ค [11, 12]. ๋”ฐ๋ผ์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ๊ธฐ๋œ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ๋‚˜ ๋จธํ‹ฐ๋ฆฌ์–ผ์„ ๋ช…์‹œ์ ์œผ๋กœ ํ•ด์ œํ•ด์•ผ ํ•˜๋ฉฐ, ๋ชจ๋ฐ”์ผ ๋“ฑ์—์„œ ์ปจํ…์ŠคํŠธ๊ฐ€ ์†์‹ค๋  ๊ฒฝ์šฐ์— ๋Œ€๋น„ํ•ด ์šฐ์•„ํ•˜๊ฒŒ(gracefully) ๋ณต๊ตฌํ•˜๋Š” ๋กœ์ง์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค [12-14]. * **์…ฐ์ด๋” ํŒŒ์ดํ”„๋ผ์ธ์˜ ํ†ตํ•ฉ:** TSL(Three Shader Language) ์‹œ์Šคํ…œ์˜ ๋„์ž…์œผ๋กœ, ๊ฐœ๋ฐœ์ž๋Š” ๊ธฐ์กด์ฒ˜๋Ÿผ GLSL(WebGL)๊ณผ WGSL(WebGPU)์˜ ๋‘ ๊ฐ€์ง€ ์…ฐ์ด๋” ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์ด์ค‘์œผ๋กœ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์—†์–ด์กŒ์Šต๋‹ˆ๋‹ค [3, 15]. ํ•˜๋‚˜์˜ TSL ์ฝ”๋“œ๊ฐ€ ๊ฐ ๋ฐฑ์—”๋“œ์— ๋งž๊ฒŒ ์ž๋™ ์ปดํŒŒ์ผ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค [3]. ํฌ์ŠคํŠธ ํ”„๋กœ์„ธ์‹ฑ(Post-processing)์˜ ๊ฒฝ์šฐ, WebGL ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์—ฌ์ „ํžˆ `pmndrs/postprocessing` ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ์šฐ์ˆ˜ํ•œ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•˜์ง€๋งŒ, TSL ๊ธฐ๋ฐ˜ ํฌ์ŠคํŠธ ํ”„๋กœ์„ธ์‹ฑ๋„ ํ˜ผ์šฉ์ด ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค [16]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Graphics & Performance ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[WebGPU|WebGPU]], [[Three.js|Three.js]], Draw Calls, [[BatchedMesh|BatchedMesh]], [[TSL (Three Shader Language)|TSL (Three Shader Language)]] - **Projects/Contexts:** WebGPURenderer Fallback - **Contradictions/Notes:** ์†Œ์Šค์— ๋”ฐ๋ฅด๋ฉด WebGPU๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ๋ช…๋ น ์ƒ์„ฑ๊ณผ Compute Shader ์—ฐ์‚ฐ์„ ํ†ตํ•ด ๋ณต์žกํ•œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, WebGL์€ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ๋ฐ ์ƒํƒœ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ทจํ•˜๊ณ  ์žˆ์–ด 1,000~2,000ํšŒ ์ด์ƒ์˜ ๋นˆ๋ฒˆํ•œ ๋“œ๋กœ์šฐ ์ฝœ ๋ฐœ์ƒ ์‹œ CPU์—์„œ ๊ทน์‹ฌํ•œ ๋ Œ๋”๋ง ์„ฑ๋Šฅ ๋ณ‘๋ชฉ(Bottleneck) ํ˜„์ƒ์ด ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๋šœ๋ ทํ•œ ๋Œ€๋น„๊ฐ€ ๊ด€์ฐฐ๋ฉ๋‹ˆ๋‹ค [10, 17, 18]. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/WebGL 2.0.md ---