纹理压缩格式详解: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

Nanite VisBuffer 核心概念速查

Nanite VisBuffer 核心概念速查 Nanite 是 UE5 的虚拟化几何系统,其核心创新是用 Visibility Buffer(可见性缓冲) 替代传统 G-Buffer,将几何处理与材质着色完全解耦。本文梳理 VisBuffer 管线中涉及的关键概念。 VisBuffer 整体管线 Mesh → Instance → Cluster Group → Cluster → Triangle → VisBuffer → Material Pass Culling Pass(计算着色器):GPU 端逐 Cluster 做视锥/遮挡/屏幕尺寸剔除 Rasterization Pass:将可见像素写入 VisBuffer(仅存 ID,不做材质计算) Material Pass:全屏 Pass 读取 VisBuffer,解码 ID,仅对可见像素着色一次 来源:Brian Karis, “A Deep Dive into Nanite Virtualized Geometry”, SIGGRAPH 2021 (Advances in Real-Time Rendering) 三角形(Triangle) Cluster 内的基本渲染单元。每个 Cluster 包含最多 128 个三角形。在 VisBuffer 中,三角形 ID 占约 7 bit(2^7 = 128),用于在 Material Pass 中定位该三角形的三个顶点并做重心坐标插值。 ...

April 20, 2026 · 4 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

Nanite: A Deep Dive

Nanite: A Deep Dive 来源: Karis_Nanite_SIGGRAPH_Advances_2021_final — Brian Karis, Rune Stubbe, Graham Wihlidal 会议: SIGGRAPH 2021 Advances in Real-Time Rendering in Games course 作者主讲: Brian Karis (Engineering Fellow, Epic Games) 主题: UE5 全新虚拟几何系统 Nanite 的深度技术解析 目录 愿景与现实 可选方案的探索 GPU Driven Pipeline 三角形 Cluster Culling 与 Occlusion Culling Visibility Buffer 与可见性/材质解耦 次线性扩展与 Cluster 层次结构 LOD 裂缝问题与 DAG 构建 构建流程详解(Build Operations) 简化算法与误差度量 运行时视相关 LOD 选择 并行 LOD 选择与层次裁剪 Persistent Threads 与两 Pass Occlusion Culling 光栅化(软件 + 硬件混合) 小三角形与微多边形软光栅器 小实例(Tiny Instances)与 Imposter 延迟材质求值(Deferred Material Evaluation) 流水线性能数据 阴影:Virtual Shadow Maps Streaming(几何流送) 压缩:内存表示与磁盘表示 结果与未来工作 致谢与参考文献 1. 愿景与现实 1.1 The Dream(梦想) 像 Virtual Texturing 那样虚拟化几何: ...

April 20, 2026 · 16 min · MrOptimist