--- id: wiki-2026-0508-webgl-20 title: WebGL 20 category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [P-Reinforce-AUTO-DDA796] duplicate_of: none source_trust_level: A confidence_score: 0.9 tags: [auto-reinforced] raw_sources: [] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - [[WebGL|WebGL]] 20" inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[WebGL 20|WebGL 20]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > WebGL 2.0์€ ์›น ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ 3D ๊ทธ๋ž˜ํ”ฝ์„ ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•œ API๋กœ, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ [[WebGPU|WebGPU]]๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ํ™˜๊ฒฝ์—์„œ WebGPURenderer๊ฐ€ ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์ฒด(Fallback) ๋ Œ๋”๋Ÿฌ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค [1, 2]. ์ตœ์‹  Three.js ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” TSL(Three Shader Language)์„ ํ†ตํ•ด WebGPU์™€ WebGL์—์„œ ๋ชจ๋‘ ์ž‘๋™ํ•˜๋Š” ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์…ฐ์ด๋”๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1-3]. WebGL 2.0์€ ํ…์Šค์ฒ˜ ๋ฐฐ์—ด([[Data Array Textures|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|Batching]]) ์ง€์›:** WebGL 2.0์€ ๋ฐ์ดํ„ฐ ํ…์Šค์ฒ˜ ๋ฐฐ์—ด(Data Array Textures) ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜์—ฌ, ๊ธฐ์กด ํ…์Šค์ฒ˜ ์•„ํ‹€๋ผ์Šค(Texture Atlas)์˜ ์น˜๋ช…์  ๋‹จ์ ์ธ ๊ฐ€์žฅ์ž๋ฆฌ ๋ฒˆ์ง(Edge Bleeding) ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค [4, 8, 9]. ์ด ๊ธฐ๋Šฅ์€ 2025๋…„ ๊ธฐ์ค€ ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ ์šฐ์ˆ˜ํ•œ ํ˜ธํ™˜์„ฑ์„ ์ž๋ž‘ํ•˜๋ฉฐ, BatchedMesh์™€ ๊ฒฐํ•ฉํ•˜๋ฉด ๋‹จ์ผ ๋“œ๋กœ์šฐ ์ฝœ([[Draw Call|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|Processing]])์˜ ๊ฒฝ์šฐ, WebGL ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์—ฌ์ „ํžˆ `pmndrs/postprocessing` ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ์šฐ์ˆ˜ํ•œ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•˜์ง€๋งŒ, TSL ๊ธฐ๋ฐ˜ ํฌ์ŠคํŠธ ํ”„๋กœ์„ธ์‹ฑ๋„ ํ˜ผ์šฉ์ด ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค [16]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & Updates) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Graphics & Performance ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[WebGPU|WebGPU]], Three.js, Draw Calls, BatchedMesh, [[TSL (Three Shader Language)|TSL (Three Shader Language]] - **Projects/Contexts:** WebGPURenderer Fallback - **Contradictions/Notes:** ์†Œ์Šค์— ๋”ฐ๋ฅด๋ฉด WebGPU๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ๋ช…๋ น ์ƒ์„ฑ๊ณผ [[Compute Shader|Compute Shader]] ์—ฐ์‚ฐ์„ ํ†ตํ•ด ๋ณต์žกํ•œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, WebGL์€ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ๋ฐ ์ƒํƒœ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ทจํ•˜๊ณ  ์žˆ์–ด 1,000~2,000ํšŒ ์ด์ƒ์˜ ๋นˆ๋ฒˆํ•œ ๋“œ๋กœ์šฐ ์ฝœ ๋ฐœ์ƒ ์‹œ CPU์—์„œ ๊ทน์‹ฌํ•œ ๋ Œ๋”๋ง ์„ฑ๋Šฅ ๋ณ‘๋ชฉ(Bottleneck) ํ˜„์ƒ์ด ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๋šœ๋ ทํ•œ ๋Œ€๋น„๊ฐ€ ๊ด€์ฐฐ๋ฉ๋‹ˆ๋‹ค [10, 17, 18]. --- *Last updated: 2026-04-19* --- ## ๐Ÿค– LLM ํ™œ์šฉ ํžŒํŠธ (How to Use This Knowledge) **์–ธ์ œ ์ด ์ง€์‹์„ ์“ฐ๋Š”๊ฐ€:** - *(TODO)* **์–ธ์ œ ์“ฐ๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€:** - *(TODO)* ## ๐Ÿงช ๊ฒ€์ฆ ์ƒํƒœ (Validation) - **์ •๋ณด ์ƒํƒœ:** needs_review - **์ถœ์ฒ˜ ์‹ ๋ขฐ๋„:** A - **๊ฒ€ํ†  ์ด์œ :** *(P-Reinforce Phase 1 ์ž๋™ ์ •๊ทœํ™”. ๋ณธ๋ฌธ ๊ฒ€์ฆ ํ•„์š”.)* ## ๐Ÿงฌ ์ค‘๋ณต ๊ฒ€์‚ฌ (Duplicate Check) - **๊ธฐ์กด ์œ ์‚ฌ ๋ฌธ์„œ:** *(TODO: ์ธ๋ฑ์„œ ํด๋Ÿฌ์Šคํ„ฐ ๋ฆฌํฌํŠธ ์ฐธ์กฐ)* - **์ฒ˜๋ฆฌ ๋ฐฉ์‹:** UPDATE (์ž๋™ ์ •๊ทœํ™”) - **์ฒ˜๋ฆฌ ์ด์œ :** Phase 1 ์ •๊ทœํ™” โ€” ์˜› ํ…œํ”Œ๋ฆฟ/๋ˆ„๋ฝ ํ•„๋“œ ๋ณด๊ฐ•. ## ๐Ÿ•“ ๋ณ€๊ฒฝ ์ด๋ ฅ (Changelog) | ๋‚ ์งœ | ๋ณ€๊ฒฝ ๋‚ด์šฉ | ์ฒ˜๋ฆฌ ๋ฐฉ์‹ | ์‹ ๋ขฐ๋„ | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 ์ •๊ทœํ™” (frontmatter + ํ—ค๋” ํ‘œ์ค€ํ™”) | UPDATE | A | ## ๐Ÿ’ป ์ฝ”๋“œ ํŒจํ„ด (Code Patterns) **ํŒจํ„ด 1:** *(TODO: ์ด ํ”„๋กœ์ ํŠธ ์ปจ๋ฒค์…˜ ๋ฐ˜์˜ํ•œ ๊ตฌ์กฐ ์Šค์ผˆ๋ ˆํ†ค)* ```text # TODO ``` ## ๐Ÿค” ์˜์‚ฌ๊ฒฐ์ • ๊ธฐ์ค€ (Decision Criteria) **์„ ํƒ A๋ฅผ ์จ์•ผ ํ•  ๋•Œ:** - *(TODO)* **์„ ํƒ B๋ฅผ ์จ์•ผ ํ•  ๋•Œ:** - *(TODO)* **๊ธฐ๋ณธ๊ฐ’:** > *(TODO)* ## โŒ ์•ˆํ‹ฐํŒจํ„ด (Anti-Patterns) - **[์•ˆํ‹ฐํŒจํ„ด]:** *(TODO: ๋ฌด์—‡์„ ํ•˜๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€ + ์ด์œ  + ๋Œ€์‹  ๋ฌด์—‡์„)*