纹理压缩格式详解:ASTC、BC、ETC 与 PVRTC

概述 纹理压缩(Texture Compression)是实时渲染中降低显存占用和带宽消耗的核心技术。与通用图像压缩(如 PNG、JPEG)不同,硬件纹理压缩格式支持随机访问——GPU 无需解压整幅图像即可直接读取单个 texel,这对纹理缓存和着色器采样至关重要。 本文系统梳理主流硬件纹理压缩格式的技术细节、适用场景及硬件支持情况,所有关键数据均来自官方文档与公开规范。 BC 系列(Block Compression) BC 系列是 DirectX 生态中最主流的压缩格式,由 S3TC(DXT)发展而来,后续经 RGTC、BPTC 扩展为今日形态。所有 BC 格式均以固定 4×4 texel 块为单位进行编码。 BC1(原 DXT1 / S3TC) 数据量:64 bits / 4×4 block(4 bpp) 结构:两个 16-bit RGB565 端点色 + 16 个 2-bit 索引 色板:4 色(两个端点 + 两个插值色) Alpha:无独立 alpha,仅支持 1-bit “镂空”(punch-through)透明 支持通道:RGB(无独立 Alpha) 典型用途:不透明漫反射贴图、简单遮罩 据 Khronos Data Format Specification 描述,BC1 的 1-bit alpha 行为由两个端点值的相对大小决定: color0 > color1(按无符号整数比较):4 色不透明模式,00/01/10/11 均为插值颜色,无透明 color0 <= color1:3 色 + 透明模式,11 表示完全透明像素(alpha = 0) 实际使用方式 编码端:向压缩器提供带 Alpha 的源图(如 PNG with 1-bit alpha),大多数 BC1 编码器(如 DirectXTex、nvcompress、Compressonator)会自动判断 block 是否需要透明模式。若源图 alpha 为纯 0/255,编码器会尽量使用 color0 <= color1 模式将 11 映射为透明。 ...

April 22, 2026 · 5 min · MrOptimist

移动端 GPU 可见性剔除机制对比

1. 移动端 GPU 可见性剔除机制对比 1.1 概览 PowerVR HSR Apple HSR Mali FPK Adreno LRZ 全称 Hidden Surface Removal Hidden Surface Removal Forward Pixel Kill Low Resolution Z 架构 TBDR TBDR TBDR TBDR 粒度 逐像素 逐像素 逐像素(尽力而为) 逐块(8x8 像素) 保证级 不透明物体保证零过度绘制 不透明物体保证零过度绘制 非保证,尽力剔除 非保证,块级粗剔除 绘制顺序依赖 不透明物体顺序无关 不透明物体顺序无关 正面到背面更优 Binning pass 构建后顺序无关,但正面到背面可提升 Early-Z 效率 AlphaTest 失效 失效 失效 失效 Alpha Blend 失效 失效 失效 失效 gl_FragDepth 写入 失效 失效 失效 失效 1.2 PowerVR HSR (Imagination) 1.2.1 原理 TBDR 架构中,所有几何体先提交到 Tile,HSR 在 PS 执行前对整个 Tile 做可见性解析,只对最终可见像素跑 PS。 ...

April 20, 2026 · 6 min · MrOptimist