--- id: P-REINFORCE-AUTO-E3AAE4 category: "10_Wiki/๐Ÿ’ก Topics/Graphics & Performance" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - Threejs ๋ชจ๋ฐ”์ผ ๋ Œ๋”๋ง ์ตœ์ ํ™”" --- # [[Threejs แ„†แ…ฉแ„‡แ…กแ„‹แ…ตแ†ฏ แ„…แ…ฆแ†ซแ„ƒแ…ฅแ„…แ…ตแ†ผ แ„Žแ…ฌแ„Œแ…ฅแ†จแ„’แ…ช|Threejs ๋ชจ๋ฐ”์ผ ๋ Œ๋”๋ง ์ตœ์ ํ™”]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > Three.js ๋ชจ๋ฐ”์ผ ๋ Œ๋”๋ง ์ตœ์ ํ™”๋Š” ์ œํ•œ๋œ ์ปดํ“จํŒ… ํŒŒ์›Œ, ๋ฉ”๋ชจ๋ฆฌ ๋Œ€์—ญํญ ๋ฐ ๋ฐฐํ„ฐ๋ฆฌ ์šฉ๋Ÿ‰์„ ๊ฐ€์ง„ ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ ํ™˜๊ฒฝ์—์„œ 3D ์žฅ๋ฉด์„ ์›ํ™œํ•˜๊ฒŒ ๊ตฌ๋™ํ•˜๊ธฐ ์œ„ํ•œ ์ผ๋ จ์˜ ๊ธฐ์ˆ ์  ์ ‘๊ทผ์ด๋‹ค. ์ด ์ตœ์ ํ™”๋Š” ์…ฐ์ด๋” ์ •๋ฐ€๋„ ์กฐ์ ˆ, ํ…์Šค์ฒ˜ ๋ฐ ํด๋ฆฌ๊ณค ์ˆ˜ ์ œํ•œ, ๋“œ๋กœ์šฐ ์ฝœ(Draw Call) ๊ฐ์†Œ, ๋ฐฐํ„ฐ๋ฆฌ ์ ˆ์•ฝ์„ ์œ„ํ•œ ๋ Œ๋”๋ง ๋ฃจํ”„ ์ œ์–ด ๋“ฑ์„ ํฌํ•จํ•œ๋‹ค [1-4]. ์ด๋ฅผ ํ†ตํ•ด ๋ชจ๋ฐ”์ผ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋„ 60fps์˜ ์•ˆ์ •์ ์ธ ํ”„๋ ˆ์ž„ ์†๋„๋ฅผ ์œ ์ง€ํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ ํ•œ๊ณ„๋กœ ์ธํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํฌ๋ž˜์‹œ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค [5, 6]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **์…ฐ์ด๋” ๋ฐ ์ •๋ฐ€๋„ ์ตœ์ ํ™”** * ๋ชจ๋ฐ”์ผ GPU๋Š” `mediump` ์ •๋ฐ€๋„๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ `highp`๋ณด๋‹ค ๋Œ€๋žต 2๋ฐฐ ๋น ๋ฅธ ์†๋„๋ฅผ ๋‚ด๋ฏ€๋กœ, ๊นŠ์ด ๊ณ„์‚ฐ์ด๋‚˜ ์œ„์น˜ ๋“ฑ ํ•„์ˆ˜์ ์ธ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ `mediump`๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค [1]. * ๋ฒ„ํ…์Šค ์…ฐ์ด๋”์™€ ํ”„๋ž˜๊ทธ๋จผํŠธ ์…ฐ์ด๋” ์‚ฌ์ด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” varying ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ชจ๋ฐ”์ผ GPU์— ๋งž์ถฐ 3๊ฐœ ์ดํ•˜๋กœ ์ตœ์†Œํ™”ํ•ด์•ผ ํ•œ๋‹ค [1]. * **๋ฉ”๋ชจ๋ฆฌ ๋ฐ ํ…์Šค์ฒ˜ ๊ด€๋ฆฌ** * ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ๋Š” ๋ณดํ†ต 2~4GB์˜ ์ œํ•œ๋œ ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ํ…์Šค์ฒ˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ 500MB๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(GC)์œผ๋กœ ์ธํ•œ ์ผ์‹œ ์ค‘์ง€์™€ ์‹ฌ๊ฐํ•œ ํ”„๋ ˆ์ž„ ๋Š๊น€์ด ๋ฐœ์ƒํ•œ๋‹ค [5]. * ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Basis Universal์ด๋‚˜ KTX2์™€ ๊ฐ™์€ GPU ์นœํ™”์ ์ธ ์••์ถ• ํ…์Šค์ฒ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ํฌ๋งท์€ ๋ชจ๋ฐ”์ผ ํ”Œ๋žซํผ์— ๋”ฐ๋ผ ASTC(Android)๋‚˜ PVRTC(iOS)๋กœ ๋กœ๋“œ ์‹œ ๋ณ€ํ™˜๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ๋Œ€ํญ ์ค„์—ฌ์ค€๋‹ค [7]. * ๋‹ค์ˆ˜์˜ ํ…์Šค์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹ , ํ…์Šค์ฒ˜ ์•„ํ‹€๋ผ์Šค(Texture Atlas)๋กœ ๊ฒฐํ•ฉํ•˜์—ฌ ํ…์Šค์ฒ˜ ๋ฐ”์ธ๋”ฉ ํšŸ์ˆ˜๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด ๋ชจ๋ฐ”์ผ GPU์˜ ๋ Œ๋”๋ง ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ํฌ๊ฒŒ ๊ฐ์†Œ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค [8, 9]. * **๋“œ๋กœ์šฐ ์ฝœ ๋ฐ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ ์ œํ•œ** * ํ”„๋กœ์„ธ์„œ ์„ฑ๋Šฅ์ด ์ƒ๋Œ€์ ์œผ๋กœ ๋‚ฎ์€ ๋ชจ๋ฐ”์ผ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” 1,000~2,000ํšŒ์˜ ๋“œ๋กœ์šฐ ์ฝœ ํ•œ๊ณ„์น˜์— ๋„๋‹ฌํ•˜๋ฉด CPU ๋ณ‘๋ชฉ์œผ๋กœ ์ธํ•œ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ˆˆ์— ๋„๊ฒŒ ๋‚˜ํƒ€๋‚œ๋‹ค [4]. * ๋ชจ๋ฐ”์ผ ๋ธŒ๋ผ์šฐ์ €(iOS Safari, Chrome Mobile ๋“ฑ) ํ™˜๊ฒฝ์—์„œ๋Š” ํ™”๋ฉด๋‹น ํด๋ฆฌ๊ณค ๊ฐœ์ˆ˜๋ฅผ 50,000~100,000๊ฐœ ์ˆ˜์ค€์œผ๋กœ ์ œํ•œํ•ด์•ผ ๋งค๋„๋Ÿฌ์šด ๋ Œ๋”๋ง์ด ๋ณด์žฅ๋œ๋‹ค [3]. * **๊ทธ๋ฆผ์ž ๋ฐ ์•ˆํ‹ฐ์•จ๋ฆฌ์–ด์‹ฑ ์„ค์ • ํƒ€ํ˜‘** * ์„€๋„์šฐ ๋งต ๋ Œ๋”๋ง์€ ๋ฆฌ์†Œ์Šค ์†Œ๋ชจ๊ฐ€ ํฌ๋ฏ€๋กœ, ๋ชจ๋ฐ”์ผ์˜ ๊ฒฝ์šฐ ์„€๋„์šฐ ๋งต ํฌ๊ธฐ๋ฅผ 512์—์„œ 1024 ์‚ฌ์ด๋กœ ์ž‘๊ฒŒ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค [10]. * ๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑ ์‹œ ๊ณ ๋น„์šฉ์˜ ๋„ค์ดํ‹ฐ๋ธŒ ์•ˆํ‹ฐ์•จ๋ฆฌ์–ด์‹ฑ(MSAA)์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ , ๊ทธ ๋Œ€์‹  ํฌ์ŠคํŠธ ํ”„๋กœ์„ธ์‹ฑ์ธ FXAA๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์—์„œ๋„ ์„ฑ๋Šฅ ๋ถ€ํ•˜๋ฅผ 5~10% ์ˆ˜์ค€์œผ๋กœ ๋‚ฎ์ถ”๋ฉด์„œ 60fps๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค [6]. * **๋ฐฐํ„ฐ๋ฆฌ ์ ˆ์•ฝ ๋ฐ ์˜ค๋ฅ˜ ๋ณต๊ตฌ(Context Management)** * ์ •์ ์ธ ์”ฌ(Static scenes)์˜ ๊ฒฝ์šฐ ๋ฆฌ์•กํŠธ ๊ธฐ๋ฐ˜ ํ™˜๊ฒฝ(R3F ๋“ฑ)์—์„œ `frameloop="demand"` ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ํ”„๋ ˆ์ž„ ๋ Œ๋”๋ง์„ ๋ฐฉ์ง€ํ•จ์œผ๋กœ์จ ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์˜ ๋ฐฐํ„ฐ๋ฆฌ๋ฅผ ์•„๊ปด์•ผ ํ•œ๋‹ค [2]. * ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ๋Š” WebGL ์ปจํ…์ŠคํŠธ ์†์‹ค(Context lost)์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋ฆฌ์Šค๋„ˆ(`webglcontextlost`)๋ฅผ ๋“ฑ๋กํ•˜์—ฌ ์ด๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ์šฐ์•„ํ•˜๊ฒŒ ๋ณต๊ตฌํ•˜๋Š”(gracefully recover) ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์ˆ˜์ ์ด๋‹ค [11]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Graphics & Performance ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** ๋“œ๋กœ์šฐ ์ฝœ ์ตœ์ ํ™” (Draw Call Optimization), ํ…์Šค์ฒ˜ ์••์ถ• (Texture Compression), ์…ฐ์ด๋” ์ •๋ฐ€๋„ (Shader Precision), [[แ„€แ…กแ„‡แ…ตแ„Œแ…ต แ„แ…ฅแ†ฏแ„…แ…ฆแ†จแ„‰แ…งแ†ซ (Garbage Collection)|๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ (Garbage Collection)]] - **Projects/Contexts:** [[React Three Fiber (R3F)|React Three Fiber (R3F)]], Basis Universal / KTX2 - **Contradictions/Notes:** ์†Œ์Šค์—์„œ๋Š” ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ ๊ตฌํ˜„ ์‹œ ์‹œ๊ฐ์  ํ’ˆ์งˆ๊ณผ ์„ฑ๋Šฅ ๊ฐ„์˜ ์ง์ ‘์ ์ธ ํƒ€ํ˜‘(trade-off)์„ ๊ฐ•์กฐํ•œ๋‹ค. ๋ฐ์Šคํฌํ†ฑ ํ™˜๊ฒฝ์—์„œ๋Š” ๋‹ค์ค‘ ํ…์Šค์ฒ˜ ํŒŒ์ผ๊ณผ MSAA, 4096 ํฌ๊ธฐ์˜ ์„€๋„์šฐ ๋งต ํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์—์„œ๋Š” ๋™์ผํ•œ ๊ตฌ์„ฑ์„ ์œ ์ง€ํ•  ๊ฒฝ์šฐ ํ”„๋ ˆ์ž„ ์†๋„ ์ €ํ•˜์™€ ๋ฐœ์—ด, ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ์œผ๋กœ ์ธํ•œ ๊ฐ•์ œ ์ข…๋ฃŒ๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ทน๋‹จ์ ์ธ ๊ฐ„์†Œํ™”(FXAA, ์•„ํ‹€๋ผ์Šค ํ…์Šค์ฒ˜, 512~1024 ์„€๋„์šฐ ๋“ฑ)๋ฅผ ํ•„์ˆ˜์ ์œผ๋กœ ๋„์ž…ํ•ด์•ผ ํ•จ์„ ๋ช…์‹œํ•œ๋‹ค [5, 6, 10]. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/Three.js ๋ชจ๋ฐ”์ผ ๋ Œ๋”๋ง ์ตœ์ ํ™”.md ---