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

NvPerf GPU 性能计数器参考手册

NvPerf GPU 性能计数器参考手册 本文档基于 NVIDIA 官方文档,对 NvProfAnalyzer 中使用的所有 GPU 性能计数器进行中文解释。 参考文档来源 Nsight Compute Profiling Guide — 计数器命名规则、硬件单元、管线定义 Nsight Graphics Advanced Learning — 图形管线各单元的功能说明 Nsight Graphics System Architecture — GPU 系统架构图解 NVIDIA Peak Performance Analysis Blog — 性能分析方法论 Nsight Compute CLI — CLI 工具与指标映射表 一、计数器命名规则 NVIDIA 性能计数器遵循统一的命名格式: 单元__(子单元?)_(管线阶段?)_度量_(限定符?) 示例解读: sm__inst_executed 单元: SM | 度量: inst_executed (指令执行) | 限定符: 无 → SM 执行的 warp 指令总数 sm__inst_executed_pipe_fma 单元: SM | 度量: inst_executed | 限定符: pipe_fma → FMA 管线执行的 warp 指令数 smsp__thread_inst_executed_pipe_tex_pred_on ...

April 20, 2026 · 12 min · MrOptimist

NVIDIA GPU性能计数器完整参考手册

NVIDIA GPU性能计数器完整参考手册 (NvPerf/Nsight系列) 文件信息 CSV文件示例: Unity_2026.04.02_10.06_frame628066.pagecache.nvperf.csv 参数总数: 2958个性能计数器 工具演进: nvperf → Nsight系列工具(推荐) 一、性能计数器命名规则详解 1.1 Nsight Compute命名规范 根据Nsight Compute Profiling Guide: 基本格式: unit__(subunit?)_(pipestage?)_quantity_(qualifiers?) 接口计数器: unit__(subunit?)_(pipestage?)_(interface)_quantity_(qualifiers?) 组成部分: unit: GPU逻辑或物理单元(如sm、dram、lts) subunit: 单元内的子单元(可选) pipestage: 管线阶段(可选) quantity: 测量的内容(字节、计数、比率等) qualifiers: 附加谓词(操作类型、访问模式等) 1.2 后缀含义 .avg: 平均值 .max: 最大值 .min: 最小值 .sum: 总和 (bytes): 单位标识(字节) _op_read: 读取操作 _op_write: 写入操作 _lookup_hit: 查找命中 _lookup_miss: 查找未命中 二、GPU硬件架构单元详解 2.1 计算核心单元 单元前缀 中文名称 功能描述 对应文档 sm__ 流多处理器 GPU的主要计算单元,包含多个CUDA核心,执行着色器指令 Nsight Compute Profiling Guide smsp__ SM子分区 SM内的四个子分区,各含调度器、寄存器文件和执行单元 同上 tpc__ 纹理处理集群 包含多个SM和纹理单元的处理集群 Nsight Graphics System Architecture vpc__ 顶点处理集群 处理顶点着色相关任务的集群 同上 2.2 图形管线单元 单元前缀 中文名称 功能描述 对应文档 fe__ 前端单元 图形管线的初始阶段,处理命令分发 Nsight Graphics Advanced Learning gr__ 图形渲染单元 图形渲染相关操作 同上 raster__ 光栅化单元 将图元转换为像素片段 同上 pes__ 图元引擎状态 协调顶点、曲面细分、几何等阶段 同上 2.3 内存系统单元 单元前缀 中文名称 功能描述 对应文档 dram__ DRAM内存控制器 设备主内存(GDDR6/GDDR5X)访问控制器 Nsight Compute Profiling Guide fbpa__ 帧缓冲区分区 帧缓冲区内存分区管理 Nsight Graphics System Architecture lts__ 本地纹理存储 纹理数据的本地存储 同上 l1tex__ L1纹理缓存 包含L1数据缓存和纹理处理两个并行管线 同上 2.4 缓存系统单元 单元前缀 中文名称 功能描述 对应文档 gcc__ 图形命令缓存 图形命令的缓存系统 Nsight Graphics Advanced Learning l2__ L2缓存 为GPU所有单元提供服务,一致性的中心点 Nsight Graphics System Architecture syslts__ 系统本地纹理存储 系统级的纹理存储管理 同上 2.5 其他系统单元 单元前缀 中文名称 功能描述 对应文档 idc__ 指令分发单元 指令分发相关操作 Nsight Compute Profiling Guide pcie__ PCI Express总线 CPU-GPU数据传输总线 Nsight Graphics System Architecture prop__ 预ROP单元 协调深度和颜色像素处理,管理API顺序 Nsight Graphics Advanced Learning rtcore__ 光线追踪核心 专用光线追踪处理单元 同上 三、图形管线处理阶段详解 3.1 前端处理(World Pipe) 根据Nsight Graphics Advanced Learning: ...

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