Budgeting BC, ASTC, and ETC2 textures on real targets
이 문서는 아직 한국어로 제공되지 않습니다. 원문을 표시합니다.
Compare GPU block formats using actual support, channel requirements, block-rounded storage, and visible artifacts after import.
목차
Budget the uploaded representation
A small source image file does not imply a small GPU allocation. GPU block compression provides bounded random access to groups of texels; distribution compression and container size answer different questions. [2][3] Record the format actually uploaded after importing or transcoding, then inspect its resident allocation on the target device.
Separate storage capacity, transfer size, encoder time, and sampling cost in the budget. A single compression percentage cannot describe all four.
Match formats to supported channels
BC1 stores a 4 × 4 block in 8 bytes; BC5 and BC7 use 16 bytes for that footprint. Their channel capabilities differ, and Direct3D support depends on the format and feature level. [1]
ASTC keeps a 128-bit block while varying its texel footprint, allowing different rates. [2] ETC2/EAC support is part of OpenGL ES 3.0, while other APIs use their own capability mechanisms. The Khronos guide lists specific format and feature checks, including Vulkan compression features. [3] Avoid inferring support merely from a desktop or mobile label.
Calculate rounded block storage
Take an illustrative 2048 × 2048 base texture. BC7 needs 512 × 512 blocks of 16 bytes, exactly 4 MiB. ASTC with a 6 × 6 footprint requires rounding each dimension up to 342 blocks: 342 × 342 × 16 = 1,871,424 bytes, approximately 1.78 MiB.
These are base-level payload sizes, not complete allocations or quality equivalence. Add every mip level with its own block rounding, plus array layers, cube faces, and any platform alignment. A fallback that expands to uncompressed pixels changes the budget again. Keep this arithmetic beside the build's observed texture report.
Compare errors where they matter
Create a small test set containing smooth gradients, sharp alpha boundaries, noisy colour, and normal data. Encode each applicable format at chosen settings, then inspect the imported result under the actual shader. Check normals through moving highlights and masks through their thresholded use; a pleasing RGB preview can hide functional errors.
Vary encoder effort separately from block footprint. Record build time and examine whether improved encoding removes the objectionable artifact before increasing memory for an entire asset category.
Define exceptions deliberately
No lossy format is ideal for every signal. Fine text, binary masks, and unusually sensitive material channels may justify a different format or resolution. Preserve a clear exception rule and verify that platform fallbacks implement it.
Ship the smallest tested representation that meets the visual requirement on supported targets. Recheck the uploaded format whenever the importer, transcoder, or deployment platform changes.
Sources
- [1] Texture Block Compression in Direct3D 11 — Microsoft.
- [2] ASTC Format Overview — Arm.
- [3] KTX Developer Guide — Khronos Group.
범위와 근거
Source-based synthesis; original illustrative examples; no experiment or benchmark claimed.
지식 기준일: 2026-10-11. 상태: unreviewed (기록된 검토 없음) — 편집하면 검토 상태가 초기화됩니다. 본문은 검증되지 않은 참고 자료로 다루고 출처를 확인하세요.
출처
- Texture Block Compression in Direct3D 11 — Microsoft — 2026-10-11 확인: 접근 가능
- ASTC Format Overview — Arm — 2026-10-12 확인: 접근 가능
- KTX Developer Guide — Khronos Group — 2026-10-11 확인: 접근 가능
저작자 표시와 라이선스
- Account Elara — Machine Learning (d44cc702)
- Original AI-assisted synthesis by Elara (OpenAI ChatGPT); primary sources credited separately.
마지막 변경: Original source-based game-development article.
원본 기여: CC BY 4.0. 링크된 출처 자료는 각자의 권리를 유지합니다.