--- id: wiki-2026-0508-webgl title: WebGL category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [] duplicate_of: none source_trust_level: A confidence_score: 0.92 tags: [auto-consolidated, technical-documentation] raw_sources: [] last_reinforced: 2026-05-08 github_commit: pending inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[WebGL|WebGL]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > **WebGL**์€ ํ”Œ๋Ÿฌ๊ทธ์ธ ์—†์ด ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ 2D ๋ฐ 3D ๊ทธ๋ž˜ํ”ฝ์„ ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•œ ์ €์ˆ˜์ค€(Low-level) [[JavaScript|JavaScript]] API์ž…๋‹ˆ๋‹ค. ์›์‹œ WebGL์€ ์ง์ ‘ ๋‹ค๋ฃจ๊ธฐ ๋งค์šฐ ๋ณต์žกํ•˜๊ณ  ์žฅํ™ฉํ•˜์ง€๋งŒ, **Three.js**๋‚˜ **React Three Fiber(R3F)** ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ์ถ”์ƒํ™”๋˜์–ด ํ˜„๋Œ€ ์›น์˜ ๊ณ ์„ฑ๋Šฅ 3D ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ๊ทธ๋ž˜ํ”ฝ๊ณผ ๊ฒŒ์ž„ ์—”์ง„์„ ๊ตฌํ˜„ํ•˜๋Š” ํ•ต์‹ฌ ๊ธฐ๋ฐ˜ ๊ธฐ์ˆ ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. --- > ๋ชจ๋ฐ”์ผ ๊ธฐ๋ฐ˜ WebGL ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์€ ์ƒ๋Œ€์ ์œผ๋กœ ๋ถ€์กฑํ•œ ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ์™€ ํ”„๋กœ์„ธ์„œ ์„ฑ๋Šฅ์„ ์ง€๋‹Œ ๋ชจ๋ฐ”์ผ ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ ๋งค๋„๋Ÿฌ์šด 3D ๋ Œ๋”๋ง(60fps)์„ ๊ตฌํ˜„ํ•˜๊ณ  ๋ฐฐํ„ฐ๋ฆฌ ์†Œ๋ชจ๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘๋Š” ๊ธฐ์ˆ ์  ์ ‘๊ทผ์ž…๋‹ˆ๋‹ค. ์ œํ•œ๋œ ํ•˜๋“œ์›จ์–ด ๋ฆฌ์†Œ์Šค๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ์—„๊ฒฉํ•œ ํด๋ฆฌ๊ณค ์ˆ˜ ๋ฐ ๋“œ๋กœ์šฐ ์ฝœ([[Draw Call|Draw Call]]) ์ œํ•œ, ํ…์Šค์ฒ˜ ๋ฉ”๋ชจ๋ฆฌ ์••์ถ•, ์…ฐ์ด๋” ์ •๋ฐ€๋„ ํ•˜ํ–ฅ, ๊ทธ๋ฆฌ๊ณ  ๋””๋ฐ”์ด์Šค ํŠน์„ฑ์„ ๊ณ ๋ คํ•œ ์ „์› ๋ฐ ์ปจํ…์ŠคํŠธ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•์ด ๋ณตํ•ฉ์ ์œผ๋กœ ๋™์›๋ฉ๋‹ˆ๋‹ค. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) **1. WebGL์˜ ๋ณต์žก์„ฑ๊ณผ Three.js์˜ ์—ญํ• ** WebGL ์ž์ฒด๋Š” ์…ฐ์ด๋” ์ฝ”๋“œ์™€ ๋ฒ„ํผ๋ฅผ ์ง์ ‘ ๋‹ค๋ฃจ์–ด์•ผ ํ•˜๋Š” ๋งค์šฐ ์ €์ˆ˜์ค€(Low-level)์˜ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณต์žก์„ฑ์„ ์ค„์ด๊ณ ์ž ๊ฐœ๋ฐœ๋œ ๊ฒƒ์ด Three.js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋ฉฐ, ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์”ฌ(Scene), ์นด๋ฉ”๋ผ, ๊ธฐํ•˜๊ตฌ์กฐ(Geometry), ์žฌ์งˆ(Material), ๋ Œ๋”๋Ÿฌ ๋“ฑ์˜ ์ถ”์ƒํ™”๋œ ๊ฐ์ฒด๋ฅผ ์ œ๊ณตํ•˜์—ฌ WebGL ๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ์„ ํ›จ์”ฌ ์‰ฝ๊ฒŒ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. **2. WebGL์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ ์ž์› ๊ด€๋ฆฌ (๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ํ•œ๊ณ„)** JavaScript์˜ ์ผ๋ฐ˜์ ์ธ ํž™ ๋ฉ”๋ชจ๋ฆฌ์™€ ๋‹ฌ๋ฆฌ, WebGL์ด ์‚ฌ์šฉํ•˜๋Š” GPU ์ž์›(VRAM์— ์˜ฌ๋ผ๊ฐ„ ํ…์Šค์ฒ˜, ๊ธฐํ•˜๊ตฌ์กฐ, ์žฌ์งˆ, ๋ Œ๋” ํƒ€๊ฒŸ ๋“ฑ)์€ ๋ธŒ๋ผ์šฐ์ €์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(GC)์— ์˜ํ•ด ์ž๋™์œผ๋กœ ํšŒ์ˆ˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‹ฌ๊ฐํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜์™€ GPU ํฌ๋ž˜์‹œ๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด, ์‚ฌ์šฉ์ด ๋๋‚œ ์ž์›์— ๋Œ€ํ•ด ๋ฐ˜๋“œ์‹œ ๋ช…์‹œ์ ์œผ๋กœ `.dispose()` ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. GLTF ๋ชจ๋ธ์—์„œ ๋กœ๋“œ๋œ `ImageBitmap` ํ…์Šค์ฒ˜์˜ ๊ฒฝ์šฐ `.close()` ํ˜ธ์ถœ๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. **3. ์„ฑ๋Šฅ ์ตœ์ ํ™”์™€ ๋“œ๋กœ์šฐ ์ฝœ([[Draw Call|Draw Call]])** WebGL ๋ Œ๋”๋ง์˜ ์ฃผ๋œ ์„ฑ๋Šฅ ๋ณ‘๋ชฉ์€ CPU๊ฐ€ GPU์—๊ฒŒ ๊ทธ๋ฆฌ๊ธฐ ๋ช…๋ น์„ ๋‚ด๋ฆฌ๋Š” **'๋“œ๋กœ์šฐ ์ฝœ(Draw Call)'**์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋ถ€๋“œ๋Ÿฌ์šด 60FPS๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ํ™ฉ๊ธˆ๋ฅ ์€ ํ”„๋ ˆ์ž„๋‹น ๋“œ๋กœ์šฐ ์ฝœ์„ 100ํšŒ ๋ฏธ๋งŒ์œผ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ˆ˜๋ฐฑ, ์ˆ˜์ฒœ ๊ฐœ์˜ ๋™์ผํ•œ ๊ฐ์ฒด๋ฅผ ๊ทธ๋ฆด ๋•Œ๋Š” ๊ฐœ๋ณ„ ๋ฉ”์‹œ(Mesh)๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ , ๋‹จ 1ํšŒ์˜ ๋“œ๋กœ์šฐ ์ฝœ๋งŒ์œผ๋กœ GPU ๋‚ด๋ถ€์—์„œ ๊ฐ์ฒด๋ฅผ ๋ณต์ œํ•˜๋Š” `[[InstancedMesh|InstancedMesh]]` ์ตœ์ ํ™” ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ฐ”์ผ WebGL ํ™˜๊ฒฝ์˜ ์…ฐ์ด๋”์—์„œ๋Š” `mediump` ์ •๋ฐ€๋„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ์‚ฐ ์„ฑ๋Šฅ์„ 2๋ฐฐ๊ฐ€๋Ÿ‰ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. **4. [[OffscreenCanvas|OffscreenCanvas]]๋ฅผ ํ†ตํ•œ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ ๋ถ„๋ฆฌ** ๋ณต์žกํ•œ WebGL 3D ์”ฌ ์—ฐ์‚ฐ์€ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋ฅผ ๋ธ”๋กœํ‚นํ•˜์—ฌ ์‚ฌ์šฉ์ž UI์˜ ๋ฐ˜์‘์„ฑ์„ ํฌ๊ฒŒ ๋–จ์–ด๋œจ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด `OffscreenCanvas` API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ WebGL ๋ Œ๋”๋ง ์ปจํ…์ŠคํŠธ๋ฅผ DOM์—์„œ ์™„์ „ํžˆ ๋ถ„๋ฆฌํ•˜๊ณ , **์›น ์›Œ์ปค(Web Worker)**๋ผ๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ์—์„œ WebGL์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์•„ํ‚คํ…์ฒ˜๋Š” ๋ฌด๊ฑฐ์šด ๊ทธ๋ž˜ํ”ฝ ์—ฐ์‚ฐ ์ค‘์—๋„ UI๊ฐ€ ๋งค๋„๋Ÿฝ๊ฒŒ ๋™์ž‘ํ•˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. **5. ์ฐจ์„ธ๋Œ€ [[WebGPU|WebGPU]]์™€์˜ ๊ณต์กด๊ณผ TSL** ํ˜„์žฌ WebGL 2๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ 97% ์ด์ƒ์„ ์ปค๋ฒ„ํ•˜๋Š” ๊ฐ€์žฅ ์•ˆ์ •์ ์ด๊ณ  ๋„๋ฆฌ ์“ฐ์ด๋Š” ํ‘œ์ค€์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ˆ˜์‹ญ๋งŒ ๊ฐœ์˜ ์ž…์ž๋ฅผ ์ œ์–ดํ•˜๊ฑฐ๋‚˜ ๊ณ ์„ฑ๋Šฅ ๋ฌผ๋ฆฌ ์—ฐ์‚ฐ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ปดํ“จํŠธ ์…ฐ์ด๋”(Compute Shaders) ๊ธฐ๋Šฅ์˜ ๋ถ€์žฌ๋กœ ์ธํ•ด, ์ฐจ์„ธ๋Œ€ ๊ทธ๋ž˜ํ”ฝ์Šค API์ธ **WebGPU**๋กœ ์ „ํ™˜๋˜๋Š” ์ถ”์„ธ์ž…๋‹ˆ๋‹ค. ์ด์— ๋Œ€์‘ํ•˜์—ฌ ์ตœ์‹  Three.js๋Š” **[[TSL (Three Shader Language)|TSL (Three Shader Language]]**์ด๋ผ๋Š” ๋…ธ๋“œ ๊ธฐ๋ฐ˜ ์…ฐ์ด๋” ์‹œ์Šคํ…œ์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. TSL๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋Š” WebGPU์šฉ WGSL๊ณผ WebGL์šฉ GLSL๋กœ ๋™์‹œ ์ปดํŒŒ์ผ๋˜๋ฉฐ, WebGPU๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” **์ž๋™์œผ๋กœ WebGL 2๋กœ ํด๋ฐฑ(Fallback)**๋˜๋„๋ก ์„ค๊ณ„๋˜์–ด ํ˜ธํ™˜์„ฑ๊ณผ ์„ฑ๋Šฅ์„ ๋ชจ๋‘ ์žก๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. --- * **์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ ๋ฐ ๋“œ๋กœ์šฐ ์ฝœ ํ•œ๊ณ„ ๊ด€๋ฆฌ** * ๋ชจ๋ฐ”์ผ ๋ธŒ๋ผ์šฐ์ €(iOS Safari, [[Chrome|Chrome]] Mobile, Firefox Mobile ๋“ฑ)๋Š” ์”ฌ ๋‹น 50,000์—์„œ 100,000 ํด๋ฆฌ๊ณค์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค [1]. * ๋“œ๋กœ์šฐ ์ฝœ์ด 1,000์—์„œ 2,000ํšŒ๋ฅผ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ ๋ชจ๋ฐ”์ผ ํ”„๋กœ์„ธ์„œ์—์„œ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜์—ฌ ์‹ฌ๊ฐํ•œ ์„ฑ๋Šฅ ์ €ํ•˜๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค [2]. * **๋ฉ”๋ชจ๋ฆฌ ๋ฐ ํ…์Šค์ฒ˜ ์ตœ์ ํ™”** * ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ 2~4GB์— ๋ถˆ๊ณผํ•œ ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์—์„œ๋Š” ํ…์Šค์ฒ˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด 500MB๋ฅผ ์ดˆ๊ณผํ•  ๋•Œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(GC)์œผ๋กœ ์ธํ•œ ์ผ์‹œ ์ •์ง€์™€ ์‹ฌ๊ฐํ•œ ํ”„๋ ˆ์ž„ ๋Š๊น€์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค [3]. * ๋ชจ๋ฐ”์ผ GPU์˜ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ํฌ๊ฒŒ ์ค„์ด๋ ค๋ฉด ์—ฌ๋Ÿฌ ํ…์Šค์ฒ˜๋ฅผ ํ•˜๋‚˜์˜ ์•„ํ‹€๋ผ์Šค(Atlas) ํ…์Šค์ฒ˜๋กœ ๊ฒฐํ•ฉํ•˜์—ฌ ๋‹ค์ค‘ ํ…์Šค์ฒ˜ ๋ฐ”์ธ๋”ฉ์„ ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [4]. * Basis Universal ํฌ๋งท์„ ์‚ฌ์šฉํ•˜๋ฉด ํ…์Šค์ฒ˜๋ฅผ ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์— ๋งž๋Š” GPU ์••์ถ• ํฌ๋งท(iOS์˜ PVRTC, ๋ชจ๋ฐ”์ผ์˜ ASTC ๋“ฑ)์œผ๋กœ ๋กœ๋“œ ์‹œ์ ์— ๋งž๊ฒŒ ํŠธ๋žœ์Šค์ฝ”๋”ฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์ ์œ ์œจ์„ ํฌ๊ฒŒ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [5]. * **์…ฐ์ด๋” ๋ฐ ๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ ํŠœ๋‹** * ๋ชจ๋ฐ”์ผ GPU๋Š” `mediump` ์ •๋ฐ€๋„๋ฅผ `highp`๋ณด๋‹ค ์•ฝ 2๋ฐฐ ๋น ๋ฅธ ์†๋„๋กœ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ, ๊นŠ์ด(depth) ๊ณ„์‚ฐ์ด๋‚˜ ์œ„์น˜ ์ขŒํ‘œ ๋“ฑ ๊ผญ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” `mediump`๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [6]. * ๋ฒ„ํ…์Šค ์…ฐ์ด๋”์™€ ํ”„๋ž˜๊ทธ๋จผํŠธ ์…ฐ์ด๋” ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” varying ๋ณ€์ˆ˜๋Š” ๋ชจ๋ฐ”์ผ GPU ํ™˜๊ฒฝ์—์„œ 3๊ฐœ ์ดํ•˜๋กœ ์ตœ์†Œํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [6]. * ํผํฌ๋จผ์Šค๋ฅผ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•ด ๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ€ํ‹ฐ์ƒ˜ํ”Œ๋ง ์•ˆํ‹ฐ์•จ๋ฆฌ์–ด์‹ฑ(MSAA)์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ , ๊ทธ ๋Œ€์‹  FXAA๋ฅผ ๋งˆ์ง€๋ง‰ ํŒจ์Šค์— ์ ์šฉํ•ด์•ผ ๋ชจ๋ฐ”์ผ์—์„œ 60fps๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [7]. * ๊ทธ๋ฆผ์ž ๋งต(Shadow map)์˜ ํฌ๊ธฐ๋Š” ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์— ๋งž๊ฒŒ 512์—์„œ 1024 ํ•ด์ƒ๋„๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ ์ ˆํ•ฉ๋‹ˆ๋‹ค [8]. * **๋ฐฐํ„ฐ๋ฆฌ ์ ˆ์•ฝ ๋ฐ ๋ชจ๋ฐ”์ผ ์˜ˆ์™ธ ์ƒํ™ฉ ์ฒ˜๋ฆฌ** * React Three Fiber ๋“ฑ์—์„œ ์ •์ ์ธ ์”ฌ์„ ๊ตฌํ˜„ํ•  ๋•Œ `frameloop="demand"` ์˜ต์…˜์„ ์„ค์ •ํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ํ”„๋ ˆ์ž„ ๋ Œ๋”๋ง์„ ๋ฉˆ์ถค์œผ๋กœ์จ ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์˜ ๋ฐฐํ„ฐ๋ฆฌ๋ฅผ ์•„๋‚„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [9]. * ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ๋Š” WebGL ์ปจํ…์ŠคํŠธ๊ฐ€ ์œ ์‹ค(context lost)๋˜๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ํ•ด๋‹น ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜์—ฌ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ณต๊ตฌ๋˜๋„๋ก ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [10]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & Updates) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Graphics & Performance ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. --- - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Graphics & Performance ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** Three.js, [[React Three Fiber (R3F)|React Three Fiber (R3F]], WebGPU Compute Shaders, OffscreenCanvas, [[InstancedMesh (แ„ƒแ…ณแ„…แ…ฉแ„‹แ…ฎ แ„แ…ฉแ†ฏ แ„Žแ…ฌแ„Œแ…ฅแ†จแ„’แ…ช)|InstancedMesh (๋“œ๋กœ์šฐ ์ฝœ ์ตœ์ ํ™”]], [[memory|memory]] Leak Prevention (๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๋ฐฉ์ง€) - **Projects/Contexts:** ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ฐ˜ 3D ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” ๋ฐ ๋””์ง€ํ„ธ ํŠธ์œˆ, ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜ ๊ณ ์„ฑ๋Šฅ ์›น ๊ฒŒ์ž„ ์—”์ง„ - **Contradictions/Notes:** WebGL ํŒŒ์ดํ”„๋ผ์ธ์—์„œ `EffectComposer` ๋“ฑ์„ ํ™œ์šฉํ•ด ์ปค์Šคํ…€ ํ›„์ฒ˜๋ฆฌ(Post-[[Processing|Processing]])๋ฅผ ์ ์šฉํ•  ๊ฒฝ์šฐ, WebGL์˜ ๋‚ด์žฅ ์•ˆํ‹ฐ์•จ๋ฆฌ์–ด์‹ฑ(AA) ๊ธฐ๋Šฅ์ด ๋ฌดํšจํ™”๋˜๋Š” ์ œ์•ฝ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ํŒŒ์ดํ”„๋ผ์ธ ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„์— SMAA๋‚˜ FXAA ํšจ๊ณผ ํŒจ์Šค๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ถ”๊ฐ€ํ•ด ์ฃผ์–ด์•ผ ์‹œ๊ฐ์  ํ’ˆ์งˆ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --- --- - **Related Topics:** ๋“œ๋กœ์šฐ ์ฝœ ์ตœ์ ํ™”(Draw Call [[Optimization|Optimization]]), ํ…์Šค์ฒ˜ ์••์ถ• ๋ฐ ์•„ํ‹€๋ผ์Šค(Texture Compression & Atlas), ์…ฐ์ด๋” ์ •๋ฐ€๋„ ์ตœ์ ํ™”(Shader Precision Optimization), ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๊ด€๋ฆฌ(Garbage Collection [[Management|Management]]) - **Projects/Contexts:** Three.js WebGL ๋ Œ๋”๋ง, ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ณ‘๋ชฉ - **Contradictions/Notes:** ๋ผˆ๋Œ€ ํ…์Šค์ฒ˜์˜ ๋ถ€๋ถ„ ์—…๋ฐ์ดํŠธ(partial texture updates)์™€ ๊ฐ™์€ ํŠน์ • ์„ธ๋ถ€ ๋ Œ๋”๋ง ์ตœ์ ํ™” ๊ธฐ๋ฒ•์€ ์ผ๋ถ€ ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์™€ Firefox ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ๋Š” ์˜คํžˆ๋ ค ์†๋„๋ฅผ ๋А๋ฆฌ๊ฒŒ ๋งŒ๋“œ๋Š” ๋ถ€์ž‘์šฉ(์—ญํšจ๊ณผ)์ด ๋ณด๊ณ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค [11, 12]. --- *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: ๋ฌด์—‡์„ ํ•˜๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€ + ์ด์œ  + ๋Œ€์‹  ๋ฌด์—‡์„)*