【游戏杂谈2】6.5GB 压成 970MB

为什么游戏贴图不能用 JPEG,神经网络却能砍掉 85% 显存?

你一定干过这件事:

新游戏进去,帧数抖得像帕金森,任务栏一看——显存 8GB,占用 7.9GB。于是你熟练地把"材质质量"从超高拉到。帧数瞬间回来了,代价是墙面变成了土豆泥,远处的招牌糊成一坨马赛克。

你可能骂过优化,骂过老黄的刀法,但很少有人问一个更基础的问题:

贴图凭什么这么占地方?我手机拍的 4000 万像素照片才 8MB,游戏里一块石头的贴图凭什么吃掉几百 MB 显存?

这个问题的答案,恰好是理解 2026 年最值得关注的一项图形技术——神经纹理压缩(Neural Texture Compression, NTC)——的最佳入口。英伟达在 GTC 2026 上又拿它出来讲了一遍,演示数据相当唬人:同一个场景,传统方案吃 6.5GB 显存,NTC 只要 970MB,肉眼看不出差别。

那就从"一张贴图的账本"开始拆。

一、显存的账本——一张贴图到底多贵

先算笔账。你现在玩的主机/PC 大作,贴图普遍是 4K 分辨率(4096×4096 像素)。

一张 4K 贴图,如果每个像素存 RGBA 四个通道、每通道 1 字节(也就是最常见的 8-bit 未压缩格式),体积是:

4096 × 4096 × 4 字节 ≈ 67 MB

注意,这只是一个材质的一张图。而现代游戏用的是 PBR(基于物理的渲染)材质——一个材质不是一张图,而是一整套地图(texture maps):

  • 基础色(Albedo/Base Color):物体本来是什么颜色

  • 法线贴图(Normal):表面凹凸的朝向,决定光怎么打

  • 粗糙度(Roughness):磨砂还是镜面

  • 金属度(Metallic):金属还是非金属

  • 环境光遮蔽(AO):缝隙里更暗

少则三五张,多则七八张。一个材质 67MB × 6 ≈ 400MB。一个场景里几百上千个材质叠起来,显存被吃穿一点都不奇怪。

这也是为什么显存爆掉成了这两年的高频惨案:

  • 《最后生还者 第一部》PC 版首发时,材质开到顶,8GB 显存直接原地去世,官方后来连发补丁才缓解;

  • 《霍格沃茨之遗》更离谱,高材质预设的显存胃口大得离谱,8GB / 10GB 卡纷纷中招,玩家被迫在"糊"和"卡"之间二选一。

所以第一个结论很朴素:不是厂商懒,是贴图这东西天生就贵,而且贵得有物理原因。

二、为什么不用 JPEG?——"随机访问"这条铁律

你可能会说:照片都用 JPEG,一张才几 MB,游戏贴图为什么不直接 JPEG 压了事?

答案藏在一个你平时根本不会想到的词里:随机访问(random access)

GPU 渲染一帧画面,每一个像素都要去贴图里"采样"——根据屏幕上的坐标,去纹理上找对应的纹素(texel)。一帧 4K 画面有 800 多万个像素,每个像素可能采样多次(各向异性过滤、多级渐远纹理……),一帧下来,GPU 要随机访问几十亿次纹素

JPEG 这类"熵编码"压缩的问题是:它为了压得狠,把整个图像的相关性搅在一起。你想取其中一个小块,得先把整张图解码出来。GPU 不可能为了取一个纹素就把 67MB 全解了——解码延迟会直接把帧率拖进地心。

所以游戏贴图走的是另一条路:块压缩(block compression, BCn 系列,PC 上是 BC1~BC7)

它的逻辑特别"老实":

  • 把贴图切成 4×4 像素的小块,每块独立压缩;

  • 每块的字节数固定(比如 BC7 每块 16 字节,对应 4×4=16 像素,平均每个像素 1 字节,即未压缩的 1/4);

  • GPU 硬件原生支持,采样时只解当前小块,零额外延迟。

代价也写在物理规律里:压缩比被锁死在约 4:1。纹理越精细、信息越密,BC7 越吃亏——它没法像 JPEG 那样"看整张图"去压榨冗余。

一个经典反面教材是 id Software 的 《RAGE》。它当年搞了套激进的 MegaTexture(虚拟纹理)技术,试图用一张超巨图覆盖整个世界。理想很丰满,现实是贴图流式加载跟不上,玩家跑动时墙面、地面一块块"渐入"、甚至长时间糊着,被疯狂吐槽。问题根源之一,正是这种"另类压缩/流式方案"和硬件随机访问特性没对上拍。

所以第二件事:游戏贴图是被 GPU 的访问方式绑架的。能用的压缩,必须小块、固定比、可瞬时随机解——而这就掐死了压缩率的脖子。

三、NTC 的思路——从"存像素"到"存函数"

英伟达的 NTC(以及学术界更早的 Neural Texture / Latent Texture 方向)想干的,是换一种范式:

不再存"像素数组",而是存一个"生成像素的函数"。

具体做法是三件套:

  1. 潜在纹理(latent texture):把原来的高分辨率贴图,用神经网络压成一个低分辨率、但信息密度极高的"潜在表示"。它占的空间极小。

  2. 小型神经解码器:一个轻量神经网络,输入"位置坐标 + 潜在纹理",输出该位置的完整纹素。

  3. 位置编码(positional encoding):让网络能精确定位到任意坐标,而不是只会在固定网格上插值。

这里面有三个必须说清楚的关键点,否则很容易把它误解成"AI 一键美颜":

  • 这是离线、针对该素材"过拟合"的网络,不是通用大模型。 每个材质训练一个专属的小解码器,训练完就固定了。它不会突然冒出训练集里没有的奇怪内容。

  • 它是确定性的,非生成式的。 同一个坐标、同一个潜在纹理,永远输出同一个纹素。没有"AI 幻觉",没有这一帧墙面是砖、下一帧变大理石的恐怖故事。这对游戏是底线——玩家能容忍掉帧,不能容忍世界随机抽风。

  • 它吃"跨通道的统计冗余"。 前面说过 PBR 材质是一堆图,它们之间高度相关(比如法线和粗糙度往往同步变化)。传统 BC 压缩是逐张独立压的;神经网络可以联合建模,把这部分冗余也榨出来。

运行时,这个解码器跑在 Tensor Core 上——也就是专门给矩阵乘法用的那块硬件,跟负责光栅化、光追的主流水线分开,不抢传统渲染的资源。这是它能落地的前提:加了一层神经网络,但不能让画面其他地方变慢。

一句话总结范式转变:BC 压缩是"把图压扁",NTC 是"把图变成一个可以按需查询的函数"。

四、实测数据与两种落地模式(含一盆冷水)

光讲原理没意思,看数字。英伟达官方放出的两个例子很有代表性:

  • 一个叫 Tuscan Villa 的演示场景:传统 BCn 贴图 6.5GB 显存,换成 NTC 后 970MB——砍掉约 85%

  • 一个 VR 头盔贴图:原始 272MB,NTC 后 11.37MB——压缩比夸张到约 24:1。越"密"的材质,收益越大。

但这里有个关键的工程细节,决定了你到底省不省显存——NTC 有两种使用模式:

  • Inference on Load(加载时推理):游戏读盘时,把潜在纹理一次性"解"成常规贴图再塞进显存。这种情况下,显存占用和 BC 差不多,省的是硬盘空间和读盘带宽,不省显存

  • Inference on Sample(采样时推理):潜在纹理直接躺在显存里,GPU 采样时才现过神经网络解码。这种情况下,显存才真正省下来,但每次采样多了一次 Tensor Core 计算。

所以厂商想省显存,得走 Inference on Sample——这也意味着要改渲染管线的采样路径,不是换个格式那么简单。

工程进度方面,NTC SDK 0.9 阶段已经把 BC7 编码速度提升了约 6 倍、推理快了 20~40%。但最该泼的一盆冷水是:

截至目前,没有任何一款正式商用的买断/服务型游戏,公开采用了 NTC。

它是 GTC 舞台上的明星,是论文和 SDK 里的成熟技术,但还不是你明年打开 Steam 就能感受到的东西。这点必须讲清楚,否则就成了"厂商画饼我帮吹"。

五、顺手一提:神经材质(Neural Material)

NTC 解决的是"贴图存和取",还有另一支技术在做"贴图算"——神经材质

PBR 着色里有一类运算叫 BRDF(双向反射分布函数),负责算"光打在这个表面上,眼睛看到什么颜色"。在 4K 分辨率下每个像素都算一遍复杂的 BRDF,开销不小。神经材质用一个小网络替代这部分高负载运算:训练一个能复现 BRDF 结果的轻量网络,运行时直接查/算,跳过昂贵的物理公式。

英伟达的 Neural Material 研究里,1080p 下最高能拿到 7.7 倍的着色提速。

把这条线连起来看会很有意思:

  • DLSS 4 / 4.5:用神经网络把低分辨率"补"成高分辨率(超分);

  • Ray Reconstruction(光线重建):用神经网络收拾降噪后的光追噪点;

  • 神经材质 / NTC:把着色计算和贴图存取也神经化。

整条渲染管线正在被一段一段地"神经网络化"。 落地的例子已经能摸到——《黑神话:悟空》在 DLSS 4 / 4.5 上的表现,就是这条线的现实注脚:同画质下帧率明显更稳,同帧率下能开更高画质。老黄这套"AI 补帧补画质"的打法,已经不是 PPT 了

更多游戏资讯请关注:电玩帮游戏资讯专区

电玩帮图文攻略 www.vgover.com