--- id: P-REINFORCE-AUTO-C16818 category: "[[10_Wiki/๐Ÿ’ก Topics/Graphics & Performance]]" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - React Three Fiber ์ž์‚ฐ ์ตœ์ ํ™” (Asset Optimization)" --- # [[React Three Fiber ์ž์‚ฐ ์ตœ์ ํ™” (Asset Optimization)]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > React Three Fiber(R3F) ํ™˜๊ฒฝ์—์„œ 3D ๋ชจ๋ธ(GLTF), ํ…์Šค์ฒ˜ ๋“ฑ์˜ ์ž์‚ฐ ํฌ๊ธฐ๋ฅผ ๋Œ€ํญ ์ค„์ด๊ณ , GPU ๋ฉ”๋ชจ๋ฆฌ ์ ์œ ๋ฅผ ์ตœ์†Œํ™”ํ•˜๋ฉฐ ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„์™€ ๋ Œ๋”๋ง ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ์••์ถ• ๋ฐ ํŒŒ์ดํ”„๋ผ์ธ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) **1. GLTF/GLB ํฌ๋งท ์‚ฌ์šฉ ๋ฐ JSX ๋ณ€ํ™˜** ์›น 3D ์ƒํƒœ๊ณ„์˜ ํ‘œ์ค€์ธ GLTF ํ˜น์€ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•ํƒœ์ธ GLB ํฌ๋งท์„ ์ตœ์šฐ์„ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. GLB๋Š” ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ, ์žฌ์งˆ, ํ…์Šค์ฒ˜, ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ์••์ถ•ํ•˜์—ฌ ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋น ๋ฆ…๋‹ˆ๋‹ค. ๋˜ํ•œ `@react-three/gltfjsx` ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•˜๋ฉด GLTF ๋ชจ๋ธ์„ ์žฌ์‚ฌ์šฉ ๋ฐ ์ œ์–ด ๊ฐ€๋Šฅํ•œ React JSX ์ปดํฌ๋„ŒํŠธ๋กœ ์ž๋™ ๋ณ€ํ™˜ํ•˜์—ฌ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. **2. Draco ๋ฐ Meshopt๋ฅผ ํ†ตํ•œ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ ์••์ถ•** - **Draco:** Google์˜ Draco ์••์ถ•์„ ์‚ฌ์šฉํ•˜๋ฉด ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ **90~95%๊นŒ์ง€ ํš๊ธฐ์ ์œผ๋กœ ๊ฐ์†Œ**์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์••์ถ• ํ•ด์ œ๋Š” ๋ฉ”์ธ ์Šค๋ ˆ๋“œ ์ฐจ๋‹จ์„ ๋ง‰๊ธฐ ์œ„ํ•ด ์›น ์›Œ์ปค(Web Worker)์—์„œ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. - **Meshopt:** Draco์™€ ์œ ์‚ฌํ•œ ์••์ถ•๋ฅ ์„ ์ œ๊ณตํ•˜๋ฉด์„œ๋„ ์••์ถ• ํ•ด์ œ ์†๋„๊ฐ€ ๋” ๋น ๋ฅผ ์ˆ˜ ์žˆ๋Š” ๋Œ€์•ˆ์ด๋ฏ€๋กœ ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ์— ๋งž์ถฐ ์„ ํƒ์ ์œผ๋กœ ํ…Œ์ŠคํŠธํ•ด ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. **3. KTX2 ๊ธฐ๋ฐ˜ ํ…์Šค์ฒ˜ ์••์ถ• (GPU ๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™”)** ์ผ๋ฐ˜์ ์ธ PNG๋‚˜ JPEG ์ด๋ฏธ์ง€๋Š” ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ์ž‘๋”๋ผ๋„ VRAM(GPU ๋ฉ”๋ชจ๋ฆฌ)์— ์˜ฌ๋ผ๊ฐˆ ๋•Œ ์••์ถ•์ด ์™„์ „ํžˆ ํ’€๋ ค ๋ง‰๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ(์˜ˆ: 200KB PNG๊ฐ€ 20MB ์ด์ƒ์˜ VRAM ์ฐจ์ง€)๋ฅผ ์†Œ๋ชจํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด **KTX2(Basis Universal) ํ˜•์‹์€ GPU ๋‚ด์—์„œ๋„ ์••์ถ•๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์—ฌ VRAM ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์•ฝ 10๋ฐฐ ์ค„์—ฌ์ค๋‹ˆ๋‹ค**. - **UASTC:** ๊ณ ํ’ˆ์งˆ์ด ํ•„์š”ํ•œ ๋…ธ๋ฉ€ ๋งต(Normal Map)์ด๋‚˜ ์ฃผ์š” ํ…์Šค์ฒ˜์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. - **ETC1S:** ํŒŒ์ผ ํฌ๊ธฐ ์ ˆ๊ฐ์ด ์ค‘์š”ํ•œ ํ™˜๊ฒฝ ๋งต์ด๋‚˜ ๋ณด์กฐ ์—์…‹์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. **4. LOD (Level of Detail) ๊ตฌํ˜„** ์นด๋ฉ”๋ผ์™€์˜ ๊ฑฐ๋ฆฌ์— ๋”ฐ๋ผ ๋ชจ๋ธ์˜ ๋””ํ…Œ์ผ์„ ์กฐ์ ˆํ•˜์—ฌ ๋ Œ๋”๋ง ๋ถ€ํ•˜๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค. `@react-three/drei` ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ `` ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ๊ฑฐ๋ฆฌ์— ๋งž์ถฐ High-poly ๋ชจ๋ธ๊ณผ Low-poly ๋ชจ๋ธ์ด ์ž๋™์œผ๋กœ ์Šค์™‘(Swap)๋˜์–ด ๋Œ€๊ทœ๋ชจ ์”ฌ์—์„œ ํ”„๋ ˆ์ž„ ๋ ˆ์ดํŠธ๋ฅผ 30~40% ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. **5. ์‚ฌ์ „ ๋กœ๋”ฉ(Preloading)๊ณผ ์ ์ง„์  ๋กœ๋”ฉ(Progressive Loading)** - **ํ”„๋ฆฌ๋กœ๋”ฉ:** ์”ฌ์ด ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚˜๊ธฐ ์ „์— `useGLTF.preload('/model.glb')`๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ Œ๋”๋ง ์ง€์—ฐ(Pop-in)์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. - **์ ์ง„์  ๋กœ๋”ฉ / Suspense:** ๋กœ๋”ฉ ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฑฐ๋Œ€ํ•œ ๋ชจ๋ธ์˜ ๊ฒฝ์šฐ, React์˜ `}>`๋ฅผ ํ™œ์šฉํ•ด ์šฐ์„  ๊ฐ€๋ฒผ์šด ํ”Œ๋ ˆ์ด์Šคํ™€๋”(์Šค์ผˆ๋ ˆํ†ค ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ๋‚˜ ์ €ํ•ด์ƒ๋„ ๋ชจ๋ธ)๋ฅผ ์ฆ‰์‹œ ๋„์›Œ๋‘๊ณ  ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๊ณ ํ•ด์ƒ๋„ ์—์…‹์„ ๋ถˆ๋Ÿฌ์˜ค๋„๋ก ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. **6. ํ…์Šค์ฒ˜ ์•„ํ‹€๋ผ์‹ฑ(Texture Atlasing) ๋ฐ ๋ฉ”์‹œ ๋ณ‘ํ•ฉ** ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…์Šค์ฒ˜๋ฅผ ํ•˜๋‚˜์˜ ํฐ ์ด๋ฏธ์ง€ ๋งต(Atlas)์œผ๋กœ ํ•ฉ์น˜๊ฑฐ๋‚˜, ๋™์ผํ•œ ์žฌ์งˆ์„ ๊ณต์œ ํ•˜๋Š” ์—ฌ๋Ÿฌ ์ •์  ๋ฉ”์‹œ(Mesh)๋ฅผ ํ•˜๋‚˜๋กœ ๋ณ‘ํ•ฉ(Merge)ํ•˜์—ฌ **๋“œ๋กœ์šฐ ์ฝœ(Draw Call)๊ณผ ํ…์Šค์ฒ˜ ๋ฐ”์ธ๋”ฉ ํšŸ์ˆ˜๋ฅผ ์ตœ์†Œํ™”**ํ•ด์•ผ ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์—์„œ๋„ ์›ํ™œํ•œ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Graphics & Performance ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[Code Splitting & Lazy Loading]], [[Draw Call Optimization (๋“œ๋กœ์šฐ ์ฝœ ์ตœ์ ํ™”)]], [[Memory Leak Prevention (๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๋ฐฉ์ง€)]], [[์›น ์›Œ์ปค(Web Worker)]] - **Projects/Contexts:** [[๋Œ€๊ทœ๋ชจ WebGL/R3F 3D ์‡ผํ•‘๋ชฐ ์ œํ’ˆ ์ปจํ”ผ๊ทœ๋ ˆ์ดํ„ฐ]], [[๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์„ ํƒ€๊ฒŸ์œผ๋กœ ํ•˜๋Š” ์›น ๊ธฐ๋ฐ˜ 3D ๊ฒŒ์ž„]] - **Contradictions/Notes:** ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ๋‚˜ ํ…์Šค์ฒ˜๋ฅผ ๊ณผ๋„ํ•˜๊ฒŒ ์••์ถ•(Draco, KTX2)ํ•˜๋ฉด ๋‹ค์šด๋กœ๋“œ๋˜๋Š” ํŒŒ์ผ ํฌ๊ธฐ์™€ GPU ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋Œ€ํญ ์ค„์–ด๋“ค์ง€๋งŒ, ํด๋ผ์ด์–ธํŠธ์˜ ์›น ์›Œ์ปค์—์„œ ์ด๋ฅผ ์••์ถ• ํ•ด์ œ(Decompression)ํ•˜๋Š” ๊ณผ์ •์—์„œ CPU ์—ฐ์‚ฐ ๋น„์šฉ๊ณผ ๋””์ฝ”๋” ๋กœ๋”ฉ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ๋ณต์žก๋„๊ฐ€ ๋‚ฎ๊ณ  ๋น ๋ฅธ ์ฆ‰๊ฐ์  ๋ Œ๋”๋ง์ด ํ•„์š”ํ•œ ์—์…‹์˜ ๊ฒฝ์šฐ ์˜คํžˆ๋ ค ์••์ถ• ์—†์ด ์›๋ณธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด TTI(Time to Interactive) ๋ฉด์—์„œ ๋” ์œ ๋ฆฌํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ Trade-off๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. --- _Last updated: 2026-04-14_ - Raw Source: [[00_Raw/2026-04-20/React Three Fiber ์ž์‚ฐ ์ตœ์ ํ™” (Asset Optimization).md]] ---