--- id: P-REINFORCE-AUTO-3EE85A 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 ๋ชจ๋ฐ”์ผ GPU ์„ฑ๋Šฅ ๊ด€๋ฆฌ" --- # [[WebGL ๋ชจ๋ฐ”์ผ GPU ์„ฑ๋Šฅ ๊ด€๋ฆฌ]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > WebGL ๋ชจ๋ฐ”์ผ GPU ์„ฑ๋Šฅ ๊ด€๋ฆฌ๋Š” ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์ด ์ œํ•œ์ ์ธ ๋ชจ๋ฐ”์ผ ๋””๋ฐ”์ด์Šค ํ™˜๊ฒฝ์—์„œ 3D ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๊ตฌ๋™๋  ์ˆ˜ ์žˆ๋„๋ก ๋ Œ๋”๋ง ๋ถ€ํ•˜๋ฅผ ์ค„์ด๋Š” ๊ธฐ์ˆ ์  ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ๋ชจ๋ฐ”์ผ ๋ธŒ๋ผ์šฐ์ €๋Š” ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ํด๋ฆฌ๊ณค ์ˆ˜์™€ ๋“œ๋กœ์šฐ ์ฝœ(Draw Call)์— ๋šœ๋ ทํ•œ ํ•œ๊ณ„๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ์…ฐ์ด๋” ์ •๋ฐ€๋„ ์กฐ์ ˆ, ํ…์Šค์ฒ˜ ์••์ถ•, ๋ฐฐํ„ฐ๋ฆฌ ์†Œ๋ชจ ๊ด€๋ฆฌ ๋“ฑ์˜ ๋‹ค๊ฐ์ ์ธ ์ตœ์ ํ™”๊ฐ€ ์š”๊ตฌ๋ฉ๋‹ˆ๋‹ค [1-4]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **๋ชจ๋ฐ”์ผ ํ•˜๋“œ์›จ์–ด์˜ ๋ Œ๋”๋ง ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ํ•œ๊ณ„:** ๋ชจ๋ฐ”์ผ ๋ธŒ๋ผ์šฐ์ €(iOS Safari, Chrome Mobile ๋“ฑ)๋Š” ์žฅ๋ฉด๋‹น 5๋งŒ์—์„œ 10๋งŒ ๊ฐœ์˜ ํด๋ฆฌ๊ณค์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋˜๋ฉฐ, ๋“œ๋กœ์šฐ ์ฝœ์ด 1,000~2,000ํšŒ๋ฅผ ๋„˜์–ด๊ฐ€๋ฉด CPU ๋ณ‘๋ชฉ ํ˜„์ƒ์œผ๋กœ ์ธํ•œ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ˆˆ์— ๋„๊ฒŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค [2, 3]. ํŠนํžˆ 2~4GB์˜ ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€์ง„ ๊ธฐ๊ธฐ์—์„œ๋Š” ํ…์Šค์ฒ˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ 500MB๋ฅผ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(GC)์œผ๋กœ ์ธํ•œ ๋ฉˆ์ถค ๋ฐ ํ”„๋ ˆ์ž„ ๋Š๊น€ ํ˜„์ƒ์ด ์‹ฌ๊ฐํ•˜๊ฒŒ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [4]. * **์…ฐ์ด๋” ๋ฐ ๋ฐ์ดํ„ฐ ์ •๋ฐ€๋„ ์ตœ์ ํ™”:** ๋ชจ๋ฐ”์ผ GPU๋Š” `mediump` ์ •๋ฐ€๋„ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ `highp`๋ณด๋‹ค ์•ฝ 2๋ฐฐ ๋น ๋ฅด๋ฏ€๋กœ, ๊นŠ์ด ๊ณ„์‚ฐ์ด๋‚˜ ์œ„์น˜ ์ •๋ณด ๋“ฑ ํ•„์ˆ˜์ ์ธ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ `mediump` ์ •๋ฐ€๋„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค [1]. ๋˜ํ•œ, ๋ฒ„ํ…์Šค ์…ฐ์ด๋”์™€ ํ”„๋ž˜๊ทธ๋จผํŠธ ์…ฐ์ด๋” ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” Varying ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜๋„ ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์˜ ํ•œ๊ณ„๋ฅผ ๊ณ ๋ คํ•˜์—ฌ 3๊ฐœ ์ดํ•˜๋กœ ์ตœ์†Œํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [1]. * **ํ…์Šค์ฒ˜ ๋ฐ ๋ Œ๋”๋ง ์˜ต์…˜ ์กฐ์œจ:** ์—ฌ๋Ÿฌ ํ…์Šค์ฒ˜๋ฅผ ํ•˜๋‚˜๋กœ ๊ฒฐํ•ฉํ•˜๋Š” ํ…์Šค์ฒ˜ ์•„ํ‹€๋ผ์Šค(Texture Atlas)๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋ชจ๋ฐ”์ผ GPU์—์„œ ํฐ ๋ถ€๋‹ด์ด ๋˜๋Š” ํ…์Šค์ฒ˜ ๋ฐ”์ธ๋”ฉ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ํš๊ธฐ์ ์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [5]. ์ถ”๊ฐ€์ ์œผ๋กœ Basis Universal๊ณผ ๊ฐ™์€ ํˆด์„ ์ด์šฉํ•ด ๋ชจ๋ฐ”์ผ ํŠนํ™” ํฌ๋งท(iOS์˜ PVRTC, ์•ˆ๋“œ๋กœ์ด๋“œ์˜ ASTC ๋“ฑ)์œผ๋กœ ํŠธ๋žœ์Šค์ฝ”๋”ฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์—ฌ์•ผ ํ•˜๋ฉฐ [6], ์„€๋„์šฐ ๋งต์˜ ํฌ๊ธฐ๋Š” ๋ชจ๋ฐ”์ผ์— ๋งž๊ฒŒ 512์—์„œ 1024 ์‚ฌ์ด๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [7]. ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์—์„œ 60fps๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ธฐ๋ณธ ๋„ค์ดํ‹ฐ๋ธŒ ์•ˆํ‹ฐ์•จ๋ฆฌ์–ด์‹ฑ(MSAA)์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ , ๊ทธ ๋Œ€์‹  FXAA์™€ ๊ฐ™์€ ํฌ์ŠคํŠธ ํ”„๋กœ์„ธ์‹ฑ ๊ธฐ๋ฐ˜์˜ ์•ˆํ‹ฐ์•จ๋ฆฌ์–ด์‹ฑ์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค [8]. * **์ „๋ ฅ ๋ณด์กด ๋ฐ ์ƒํƒœ ๊ด€๋ฆฌ:** ์”ฌ(Scene)์ด ์ •์ ์ผ ๋•Œ ๋งค ํ”„๋ ˆ์ž„ ๋ Œ๋”๋ง์„ ํ•˜์ง€ ์•Š๋Š” ์˜จ๋””๋งจ๋“œ(`frameloop="demand"`) ๋ Œ๋”๋ง ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด ๋ชจ๋ฐ”์ผ ๋””๋ฐ”์ด์Šค์˜ ๋ฐฐํ„ฐ๋ฆฌ ์†Œ๋ชจ๋ฅผ ์ค„์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค [9]. ์ด์™€ ํ•จ๊ป˜ ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ ํŠน์„ฑ์ƒ WebGL ์ปจํ…์ŠคํŠธ ์œ ์‹ค(Context lost) ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ด๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค [10]. * **์ปฌ๋ง ๋ถ€์žฌ ์‹œ ๋ชจ๋ฐ”์ผ ์„ฑ๋Šฅ ์น˜๋ช…ํƒ€:** ๊ฐœ๋ณ„์ ์ธ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•ด ์‹œ์•ผ ์ ˆ๋‘์ฒด ์ปฌ๋ง(Frustum culling)์ด ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์„ ๊ฒฝ์šฐ, ๋ณด์ด์ง€ ์•Š๋Š” ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ •์  ์…ฐ์ด๋”์˜ ํ–‰๋ ฌ ์—ฐ์‚ฐ์ด ์ธ์Šคํ„ด์Šค ์ˆ˜์— ๋น„๋ก€ํ•ด ์„ ํ˜•์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋ฏ€๋กœ, ์ €์‚ฌ์–‘ ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ๋‚˜ ํ†ตํ•ฉ GPU ํ™˜๊ฒฝ์—์„œ๋Š” ์น˜๋ช…์ ์ธ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [11]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Graphics & Performance ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[Draw Calls]], [[Texture Atlas]], [[์…ฐ์ด๋” ์ •๋ฐ€๋„ (Mediump/Highp)]], [[Varying Variables]], [[FXAA]] - **Projects/Contexts:** [[Three.js ๋ชจ๋ฐ”์ผ ๋ Œ๋”๋ง ์ตœ์ ํ™”]], [[๋ชจ๋ฐ”์ผ ๊ธฐ๋ฐ˜ WebGL ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ]] - **Contradictions/Notes:** ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๊ธฐ๋ฒ•์„ ๋™์›ํ•˜๋”๋ผ๋„, ํ…์Šค์ฒ˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ 500MB ์ดํ•˜๋กœ ํ†ต์ œํ•˜์ง€ ์•Š์œผ๋ฉด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(GC) ๋ฉˆ์ถค ํ˜„์ƒ์œผ๋กœ ์ตœ์ ํ™” ํšจ๊ณผ๊ฐ€ ์ƒ์‡„๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์— ๋Œ€ํ•œ ์—„๊ฒฉํ•œ ์ œํ•œ์ด ์šฐ์„ ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [4]. --- *Last updated: 2026-04-19* - Raw Source: [[00_Raw/2026-04-20/WebGL ๋ชจ๋ฐ”์ผ GPU ์„ฑ๋Šฅ ๊ด€๋ฆฌ.md]] ---