Files
2nd/01_Archive/2026-04-20/Texture Compression.md

40 lines
4.1 KiB
Markdown

---
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|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|Three.js]], [[WebGL|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
---