Neural Texture Compression
神经纹理压缩将纹理存储为学习得到的特征,并按需重建纹理,在保留精细细节的同时减少图形内存占用。
神经纹理压缩(NTC)是一种有损压缩技术,它将材质纹理存储为紧凑的学习特征和小型神经解码器。渲染器需要纹理时,解码器会重建纹理值。简单来说,它用较小的学习描述取代大量表面细节图像,在保留精细视觉细节的同时,减少存储和图形内存需求。
NVIDIA 的 Karthik Vaidyanathan、Marco Salvi、Bartlomiej Wronski、Tomas Akenine-Möller、Pontus Ebelin 和 Aaron Lefohn 于 2023 年通过《材质纹理的随机访问神经压缩》推出了具有重要影响的随机访问 NTC 方法。该方法会联合压缩材质纹理及其 mipmap,也就是表面看起来更远时使用的逐级缩小纹理版本。
神经纹理压缩的工作原理#
基于物理的渲染材质会使用多种相互对齐的纹理贴图:底色贴图描述表面颜色,法线贴图描述表面朝向的细微变化,粗糙度贴图控制高光的锐利程度。这些贴图具有共同结构。例如,同一位置的划痕可能会影响多个通道。NTC 利用这些相关性,将贴图共同表示在共享的潜在空间中,并将紧凑的特征向量分布在空间网格上。小型神经网络(通常是多层感知机)会将这些特征解码为材质值。
压缩时,会针对材质优化特征网格和解码器的模型权重。重建损失函数会衡量重建结果与原始纹理之间的差异,反向传播则提供优化所需的梯度。原始方法使用 Adam 优化器,并将采样特征与位置信息及请求的 mip 级别结合起来。渲染时,坐标查询会重建对应的纹素,也就是纹理中与像素相对应的单位。
这种混合结构使 NTC 与隐式神经表示相关联;隐式神经表示通过学习坐标相关函数来表示信号。它在图形领域的标志性能力是随机访问:渲染器按需重建所请求的纹理位置,从而支持着色过程中的实时推理。
内存节省与渲染权衡#
NTC 用纹理解码器计算量换取纹理内存。GPU上的两种部署模式尤其清楚地体现了这种权衡:
- 加载时推理:在资源加载时解码纹理,并可将其转换为传统的 BCn 块压缩纹理。这会减少资源的存储和传输大小,同时保留目标格式在内存中的占用量。
- 样本上的推理: 着色器会在渲染期间解码请求的纹素,使神经表征保留在图形内存中,并在纹理采样时增加解码工作量。
第三种模式是在反馈上进行推理:将请求的纹理图块解码到稀疏纹理缓存中。这些选择决定了压缩节省的空间能保留在哪里,以及解压缩工作会在哪里发生。
最初的墨水瓶演示使用了 4096 x 4096 的 NTC 纹理,与 1024 x 1024 的块压缩纹理进行对比:纹素数量增加 16 倍,纹理内存减少 30%。该对比展示了如何在更小的纹理分配空间内保留更高分辨率的表面细节。
应用与相关概念#
交互式 3D 渲染是一种直接应用。开发者在内容准备期间压缩材质资源,并将解码集成到渲染器中。借助 NVIDIA RTX 神经纹理压缩 SDK,ntc-cli 可压缩纹理集,NTC Explorer 可比较各项设置,示例渲染器则可显示 glTF 资源。捆绑提供的 FlightHelmet 模型包含预压缩材质,可用于测试各种渲染模式。
神经渲染是将学习得到的组件用于图像合成这一更广泛领域。超分辨率则从低分辨率输入重建更高分辨率的图像。它们在图形管线中的处理环节不同。
模型量化会降低网络参数和激活值的数值精度。Ultralytics YOLO 通过 TensorRT 导出应用这种相关的低精度技术,生成 INT8 YOLO26 引擎,以降低模型的内存需求,并加速受支持的推理工作负载。
重建质量与伪影#
NTC 的质量取决于比特预算和材质复杂度。每纹素比特数越高,可用于重建细节的容量就越大;在预算固定时增加通道数会加大压缩压力。峰值信噪比(PSNR)以分贝为单位,用于量化重建保真度,数值越高表示误差越低。共享解码还可能导致特征在通道之间泄漏,从而改变重建出的材质属性。在 NVIDIA 的实现中,明确指定的 Alpha 掩码通道会受到特殊处理,以更准确地保留接近 0 和 1 的值。










