--- id: P-REINFORCE-AUTO-32752F 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 API" --- # [[WebGL API]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > WebGL(Web Graphics Library)์€ ์›น ๋ธŒ๋ผ์šฐ์ €์˜ HTML5 `` ์š”์†Œ ๋‚ด์—์„œ ํ•˜๋“œ์›จ์–ด ๊ฐ€์†์„ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„ 3D ๋ฐ 2D ๊ทธ๋ž˜ํ”ฝ์„ ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•œ ์ €์ˆ˜์ค€(low-level) ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค(API)์ž…๋‹ˆ๋‹ค [1-3]. OpenGL ES 2.0์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋˜์—ˆ์œผ๋ฉฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(JavaScript) ์ฝ”๋“œ๋ฅผ GPU ๋ช…๋ น์–ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๊ทธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ ์žฅ์น˜(GPU)์—์„œ ์ง์ ‘ ์‹คํ–‰๋˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค [2, 4]. 2011๋…„์— ๋„์ž…๋œ ์ดํ›„ ์›น ๊ธฐ๋ฐ˜ 3D ๊ทธ๋ž˜ํ”ฝ์˜ ํ•ต์‹ฌ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ๋˜์–ด ์™”์œผ๋‚˜, ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์‹คํ–‰ ๋ฐ ์ „์—ญ ์ƒํƒœ ๋จธ์‹  ๋ชจ๋ธ๊ณผ ๊ฐ™์€ ์•„ํ‚คํ…์ฒ˜์˜ ํ•œ๊ณ„๋กœ ์ธํ•ด CPU ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๋Š” ๋“ฑ ์ตœ์‹  ํ•˜๋“œ์›จ์–ด ์„ฑ๋Šฅ์„ ์˜จ์ „ํžˆ ๋Œ์–ด๋‚ด๊ธฐ์—๋Š” ์ œ์•ฝ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค [4-7]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **์ž‘๋™ ๋ฐฉ์‹ ๋ฐ ๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ:** WebGL์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ ์นœํ™”์ ์ด๋ผ๊ธฐ๋ณด๋‹ค๋Š” ๋น ๋ฅธ ํ•˜๋“œ์›จ์–ด ๋ Œ๋”๋ง์„ ์œ„ํ•ด ์ตœ์ ํ™”๋œ ์ €์ˆ˜์ค€ API๋กœ, ํ•˜๋“œ์›จ์–ด ํšŒ๋กœ์˜ ์Šค์œ„์น˜๋ฅผ ์ง์ ‘ ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค [3]. ๋ Œ๋”๋ง์„ ์œ„ํ•ด์„œ๋Š” HTML ์บ”๋ฒ„์Šค ์š”์†Œ์—์„œ WebGL ์ปจํ…์ŠคํŠธ(`gl`)๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ์ •์  ์…ฐ์ด๋”(vertex shader)์™€ ๋‹จํŽธ ์…ฐ์ด๋”(fragment shader)๋ฅผ ์ปดํŒŒ์ผํ•˜์—ฌ ๋ Œ๋”๋ง ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋งํฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [8]. ์ดํ›„ GPU ๋ฉ”๋ชจ๋ฆฌ์— ๋ฒ„ํผ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ชจ๋ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•˜๊ณ , ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ์—์„œ `drawArrays()` ๋“ฑ๊ณผ ๊ฐ™์€ ๋ช…๋ น์„ ํ˜ธ์ถœํ•˜์—ฌ ํ™”๋ฉด์— ๊ทธ๋ž˜ํ”ฝ์„ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค [8-10]. * **์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐ ๋ธŒ๋ผ์šฐ์ € ์˜ค๋ฒ„ํ—ค๋“œ:** WebGL์€ ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋˜๋ฏ€๋กœ ๋ณด์•ˆ์„ ์œ„ํ•œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์™€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ˜ธ์ถœ์„ ๋ณ€ํ™˜ํ•˜๋Š” ๋งˆ์ƒฌ๋ง(marshalling) ๊ณผ์ •์—์„œ ๋„ค์ดํ‹ฐ๋ธŒ ํ™˜๊ฒฝ ๋Œ€๋น„ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค [11]. ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ๊ณผ CPU-์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋กœ๊ทธ๋žจ ๋ฐ GPU ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ํ†ต์‹ ์€ ๋ Œ๋”๋ง ์†๋„๋ฅผ ์ €ํ•˜์‹œํ‚ค๋Š” ์ฃผ๋œ ์›์ธ์ž…๋‹ˆ๋‹ค [12, 13]. ๋”ฐ๋ผ์„œ ๊ณ ์„ฑ๋Šฅ์„ ์–ป์œผ๋ ค๋ฉด `getError()`, `getParameter()` ๊ฐ™์ด ๋น„์šฉ์ด ํฐ ํ˜ธ์ถœ์„ ํ”ผํ•˜๊ณ , ๋ฐฐ์น˜(batching)๋‚˜ ์ธ์Šคํ„ด์‹ฑ(instancing) ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•ด ๋“œ๋กœ์šฐ ์ฝœ(Draw Call) ํšŸ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [10, 14]. ๋”๋ถˆ์–ด ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(Garbage Collection)์œผ๋กœ ์ธํ•œ ๋ Œ๋”๋ง ๋Š๊น€์„ ๋ง‰๊ธฐ ์œ„ํ•ด ๊ฐ€๋น„์ง€๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š” ์—„๊ฒฉํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ ๋ฐฉ์‹์ด ์š”๊ตฌ๋ฉ๋‹ˆ๋‹ค [15, 16]. * **์•„ํ‚คํ…์ฒ˜์˜ ๊ตฌ์กฐ์  ํ•œ๊ณ„:** WebGL์˜ ํ•ต์‹ฌ์ ์ธ ๋ฌธ์ œ๋Š” ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ์•„ํ‚คํ…์ฒ˜๊ฐ€ 2011๋…„ GPU ์„ค๊ณ„(OpenGL ES 2.0)์— ๋จธ๋ฌผ๋Ÿฌ ์žˆ์–ด ์ตœ์‹  ๊ทธ๋ž˜ํ”ฝ ํ•˜๋“œ์›จ์–ด์˜ ๊ธฐ๋Šฅ์„ ์ถฉ๋ถ„ํžˆ ํ™œ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค [4, 17]. ์ฒซ์งธ, ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์‹คํ–‰ ๋ชจ๋ธ๋กœ ์ธํ•ด ๋ชจ๋“  ๋“œ๋กœ์šฐ ์ฝœ๊ณผ ์ƒํƒœ ๋ณ€๊ฒฝ์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด, GPU๊ฐ€ ์ž‘์—…์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ CPU์— ๊ณผ๋ถ€ํ•˜(๋ณ‘๋ชฉ ํ˜„์ƒ)๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค [5, 7]. ๋‘˜์งธ, ์ „์—ญ ์ƒํƒœ ๋จธ์‹ (global state machine)์— ์˜์กดํ•˜๋ฏ€๋กœ ๋“œ๋กœ์šฐ ์ฝœ๋งˆ๋‹ค ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•˜๋ฉฐ, ์ด ๊ณผ์ •์—์„œ CPU ์ธก์˜ ๋ฐ˜๋ณต์ ์ธ ์ƒํƒœ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ์ˆ˜๋ฐ˜๋ฉ๋‹ˆ๋‹ค [6, 18]. ์…‹์งธ, ์ปดํ“จํŠธ ์…ฐ์ด๋”(Compute Shader)๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์•„ ์ž…์ž ์‹œ์Šคํ…œ์ด๋‚˜ ๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๊ฐ™์€ ๋Œ€๊ทœ๋ชจ ๋ณ‘๋ ฌ ์—ฐ์‚ฐ ์ž‘์—…์กฐ์ฐจ ๋ Œ๋”๋ง ์˜ค๋ฒ„ํ—ค๋“œ๋กœ ๋ณ‘๋ชฉ์„ ๊ฒช๊ณ  ์žˆ๋Š” CPU์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [19]. ์ด๋Ÿฌํ•œ ํ•œ๊ณ„๋“ค๋กœ ์ธํ•ด ์˜ค๋Š˜๋‚  ์›น ์‚ฐ์—…์—์„œ๋Š” ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ๋ช…๋ น ์ƒ์„ฑ ๋ฐ ์ปดํ“จํŠธ ์…ฐ์ด๋”๋ฅผ ์ง€์›ํ•˜๋Š” ์ฐจ์„ธ๋Œ€ API์ธ WebGPU๋กœ์˜ ์ „ํ™˜์ด ํ™œ๋ฐœํžˆ ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค [20-23]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Graphics & Performance ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** OpenGL ES 2.0, [[GPU]], HTML5 Canvas, [[WebGPU]], [[JavaScript]] - **Projects/Contexts:** Three.js, [[WebGLRenderingContext]] - **Contradictions/Notes:** ์†Œ์Šค์— ๋”ฐ๋ฅด๋ฉด WebGL์€ ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์‹คํ–‰๊ณผ ์ปดํ“จํŠธ ์…ฐ์ด๋” ๋ฏธ์ง€์› ๋“ฑ์˜ ๊ตฌ์กฐ์  ๋‹จ์  ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์— ๋ฏผ๊ฐํ•˜๊ณ  ๋Œ€๊ทœ๋ชจ ์—ฐ์‚ฐ์ด ํ•„์š”ํ•œ ์ตœ์‹  3D ๊ฒฝํ—˜์—์„œ๋Š” ํ•œ๊ณ„๊ฐ€ ๋ช…ํ™•ํ•˜์—ฌ WebGPU๋กœ ๋Œ€์ฒด๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค [7, 19, 23]. ํ•˜์ง€๋งŒ ๋ณดํŽธ์ ์ด๊ณ  ํญ๋„“์€ ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ์ด ํ•„์š”ํ•œ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ(๋ชจ๋“  ๊ธฐ๊ธฐ์—์„œ ๋™์ž‘ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ)์—์„œ๋Š” WebGPU์˜ ์ง€์›์ด ์•„์ง ์™„๋ฒฝํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ WebGL์ด ๊ฐ€์žฅ ์•ˆ์ „ํ•˜๊ณ  ์ ์ ˆํ•œ ์„ ํƒ(๋˜๋Š” ํด๋ฐฑ)์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค [24-26]. --- *Last updated: 2026-04-19* ---