--- id: P-REINFORCE-AUTO-B90AAF category: "[[10_Wiki/πŸ’‘ Topics/Graphics & Performance]]" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - Texture Compression" --- # [[Texture Compression]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > ν…μŠ€μ²˜ μ••μΆ•(Texture Compression)은 μ›Ή 기반 3D μ• ν”Œλ¦¬μΌ€μ΄μ…˜(예: Three.js)μ—μ„œ GPU λ©”λͺ¨λ¦¬(VRAM) μ†ŒλΉ„μ™€ 파일 λ‹€μš΄λ‘œλ“œ 크기λ₯Ό 획기적으둜 쀄이기 μœ„ν•œ ν•„μˆ˜ μ΅œμ ν™” κΈ°μˆ μž…λ‹ˆλ‹€ [1-3]. PNGλ‚˜ JPEG와 같은 일반적인 이미지 포맷이 GPU λ©”λͺ¨λ¦¬ λ‚΄μ—μ„œ 압좕이 μ™„μ „νžˆ ν’€λ¦¬λŠ” 것과 달리, KTX2λ‚˜ Basis Universal 같은 포맷은 GPU μƒμ—μ„œλ„ μ••μΆ•λœ μƒνƒœλ₯Ό μœ μ§€ν•˜μ—¬ ν•˜λ“œμ›¨μ–΄ 가속 μ••μΆ• ν•΄μ œλ₯Ό μ§€μ›ν•©λ‹ˆλ‹€ [1, 3]. 이λ₯Ό 톡해 λ©”λͺ¨λ¦¬ λŒ€μ—­ν­ μš”κ΅¬λŸ‰μ„ 쀄이고 저사양 κΈ°κΈ°μ—μ„œμ˜ λΈŒλΌμš°μ € ν¬λž˜μ‹œλ‚˜ ν”„λ ˆμž„ μ €ν•˜λ₯Ό λ°©μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [2, 3]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **VRAM 점유율 및 λ©”λͺ¨λ¦¬ νš¨μœ¨μ„± ν–₯상** PNG 및 JPEG ν…μŠ€μ²˜λŠ” 파일 크기가 μž‘λ”λΌλ„ GPU λ©”λͺ¨λ¦¬(VRAM)에 λ‘œλ“œλ  λ•Œ 압좕이 μ™„μ „νžˆ ν•΄μ œλ©λ‹ˆλ‹€ [1]. 예λ₯Ό λ“€μ–΄ 200KB 크기의 PNG νŒŒμΌμ΄λ‚˜ λΉ„μ••μΆ• RGBA 포맷의 4096Γ—4096 해상도 ν…μŠ€μ²˜λŠ” VRAMμ—μ„œ 각각 20MB 이상, μ΅œλŒ€ 64MBκΉŒμ§€ 곡간을 μ°¨μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [1, 2]. λͺ¨λ°”일 κΈ°κΈ° λ“±μ—μ„œ ν…μŠ€μ²˜ λ©”λͺ¨λ¦¬κ°€ 500MBλ₯Ό μ΄ˆκ³Όν•˜λ©΄ κ°€λΉ„μ§€ μ»¬λ ‰μ…˜ μ§€μ—° 및 ν”„λ ˆμž„ λŠκΉ€ ν˜„μƒμ΄ λ°œμƒν•©λ‹ˆλ‹€ [2]. KTX2 및 Basis Universalκ³Ό 같은 GPU μΉœν™”μ  μ••μΆ• 포맷을 μ‚¬μš©ν•˜λ©΄ ν…μŠ€μ²˜κ°€ GPU μƒμ—μ„œ μ••μΆ•λœ μƒνƒœλ‘œ μœ μ§€λ˜μ–΄ λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ„ 75%μ—μ„œ μ΅œλŒ€ μ•½ 10λ°°κΉŒμ§€ 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€(예: 64MBμ—μ„œ 8-16MB둜 κ°μ†Œ) [1, 3, 4]. * **Basis Universal 및 ν”Œλž«νΌ ν˜Έν™˜μ„±** Basis Universal은 λ‹€μ–‘ν•œ GPU 포맷을 μ§€μ›ν•˜λ©°, λ‘œλ“œ μ‹œμ μ— λ°μŠ€ν¬ν†±(BC7), λͺ¨λ°”일(ASTC), iOS(PVRTC) λ“± 각 ν”Œλž«νΌμ— λ§žλŠ” 포맷으둜 μžλ™ νŠΈλžœμŠ€μ½”λ”©λ©λ‹ˆλ‹€ [3, 4]. 블둝 μ••μΆ• μ•Œκ³ λ¦¬μ¦˜μ„ 톡해 μ‹œκ°μ  ν’ˆμ§ˆμ„ λ³΄μ‘΄ν•˜λ©΄μ„œλ„ 파일 크기λ₯Ό PNG λŒ€λΉ„ 75~90% 쀄여주며, 4:1μ—μ„œ 8:1 μˆ˜μ€€μ˜ μ••μΆ•λ₯ μ„ μ œκ³΅ν•˜μ—¬ ν…μŠ€μ²˜ λ‹€μš΄λ‘œλ“œ μ‹œκ°„λ„ 크게 λ‹¨μΆ•ν•©λ‹ˆλ‹€ [3, 4]. * **μ••μΆ• μ•Œκ³ λ¦¬μ¦˜ 선택 (UASTC vs ETC1S)** μ—μ…‹μ˜ νŠΉμ„±μ— 따라 μ μ ˆν•œ μ••μΆ• 방식을 선택해야 ν•©λ‹ˆλ‹€. * **UASTC:** 파일 ν¬κΈ°λŠ” μƒλŒ€μ μœΌλ‘œ ν¬μ§€λ§Œ 더 높은 ν’ˆμ§ˆμ„ μ œκ³΅ν•˜λ―€λ‘œ, λ…Έλ©€ λ§΅(Normal maps)μ΄λ‚˜ μ€‘μš”λ„κ°€ 높은 νžˆμ–΄λ‘œ ν…μŠ€μ²˜(Hero textures)에 μ ν•©ν•©λ‹ˆλ‹€ [1, 5]. * **ETC1S:** ν’ˆμ§ˆμ€ 수용 κ°€λŠ₯ν•œ μˆ˜μ€€μ΄λ©΄μ„œ 파일 크기λ₯Ό 더 μž‘κ²Œ λ§Œλ“€ 수 μžˆμ–΄, λ””ν“¨μ¦ˆ(Diffuse) ν…μŠ€μ²˜, ν™˜κ²½ ν…μŠ€μ²˜ 및 보쑰 에셋에 μ ν•©ν•©λ‹ˆλ‹€ [1, 5]. * **κ΅¬ν˜„ 및 툴 ν™œμš©** Three.jsμ—μ„œ Draco 및 KTX2λ₯Ό μ‚¬μš©ν•˜λ €λ©΄ 초기 μ„€μ • μ‹œ μ μ ˆν•œ 디코더 경둜λ₯Ό ꡬ성해야 ν•©λ‹ˆλ‹€ [6]. λ˜ν•œ μ‹œκ°μ μΈ ν’ˆμ§ˆ μ €ν•˜ 없이 μ–Όλ§ˆλ‚˜ μ••μΆ•ν•  수 μžˆλŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ Shopify의 `gltf-compressor`와 같은 도ꡬλ₯Ό μ‚¬μš©ν•˜μ—¬ μ••μΆ• μ „ν›„λ₯Ό λŒ€μ‘°ν•˜κ³  졜적의 값을 μ°ΎλŠ” 것이 ꢌμž₯λ©λ‹ˆλ‹€ [5]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Graphics & Performance λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[KTX2]], [[Basis Universal]], [[UASTC]], [[ETC1S]], [[VRAM]] - **Projects/Contexts:** [[Three.js]], [[WebGL]], [[gltf-compressor]] - **Contradictions/Notes:** μ†ŒμŠ€μ— λ‚΄μš© μΆ©λŒμ€ μ—†μœΌλ©°, PNG/JPEG 포맷은 파일 크기(예: 200KB)κ°€ μž‘λ”λΌλ„ GPU λ©”λͺ¨λ¦¬μ— 올라갈 λ•Œ 압좕이 ν•΄μ œλ˜μ–΄ λ§‰λŒ€ν•œ VRAM(예: 20MB+)을 μ†Œλͺ¨ν•˜λ―€λ‘œ KTX2와 같은 μ „μš© ν…μŠ€μ²˜ μ••μΆ• 기술이 ν•„μˆ˜μ μ΄λΌκ³  μΌκ΄€λ˜κ²Œ κ°•μ‘°ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€ [1]. --- *Last updated: 2026-04-19* - Raw Source: [[00_Raw/2026-04-20/Texture Compression.md]] ---