ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

路径追踪+ReSTIR如何让《F1 25》赛车游戏画面逼近真实?

路径追踪+ReSTIR如何让《F1 25》赛车游戏画面逼近真实? 1. 当赛车游戏开始玩真的路径追踪到底改变了什么第一次在《F1 25》里打开路径追踪我把车停在摩纳哥隧道的出口盯着护栏上那层被阳光烤出来的反射看了足足半分钟。这不是我熟悉的赛车游戏画面——以前那种贴一层高光贴图假装是金属的做法在路径追踪面前彻底露馅了。护栏上能清楚看到后面赛车的倒影、隧道口的明暗过渡、甚至远处看台观众席的模糊轮廓全都实时地、物理正确地叠在那一小块金属表面上。这就是EA这次在《F1 25》里干的事把路径追踪Path Tracing塞进了一个时速200英里、每帧都要重算几十万辆赛车和赛道几何的竞速游戏里。关键词里那几个词——路径追踪、EA、Ego引擎、ReSTIR、光栅化——基本就是这件事的全部技术骨架。简单说EA用自家的Ego引擎在传统光栅化渲染管线的基础上叠加了一套基于ReSTIRReservoir-based Spatiotemporal Importance Resampling蓄水池式时空重要性重采样的路径追踪方案让赛车游戏第一次有了接近离线渲染级别的光照质量。这篇文章适合谁看如果你是图形程序、TA技术美术、或者单纯是对游戏画面为什么越来越真这件事好奇的玩家那这篇就是给你写的。我会把路径追踪在竞速游戏里的难点、Ego引擎的取舍、ReSTIR为什么是关键、以及光栅化和路径追踪怎么共存这些事掰开揉碎讲清楚。不堆公式但该有的原理和参数一个不少看完你能明白EA这套方案到底牛在哪也能理解为什么它没做成全路径追踪。先说结论这不是把整个游戏重做成路径追踪而是一套混合渲染方案——光栅化负责几何和大部分直接光照路径追踪负责反射、全局光照、阴影这些光栅化搞不定或者搞得很假的部分。这个取舍本身就是整件事最值得聊的地方。2. 为什么赛车游戏是路径追踪的地狱难度2.1 速度、几何量、动态性三个同时爆炸的变量要理解EA这次有多难得先明白赛车游戏和普通3A大作的区别。你玩《赛博朋克2077》开路径追踪主角走路速度大概每秒几米场景虽然复杂但相对静态镜头移动也慢。赛车游戏呢时速200英里约等于每秒89米一秒钟你的镜头要扫过几十米甚至上百米的赛道沿途的护栏、看台、广告牌、树木、其他赛车全都在高速掠过。这对路径追踪是致命的。路径追踪的核心是从相机出发向场景发射光线光线不断反弹每次反弹都采样一个光源或环境最后累积出像素颜色。问题在于时间累积窗口极短普通游戏可以用几十帧甚至上百帧来累积一个像素的采样结果因为画面变化慢。赛车游戏里一帧之后整个画面都变了上一帧的采样几乎没法复用。ReSTIR的时空重采样就是来解决这个的后面细讲。几何量巨大一条F1赛道加上周边环境动辄几千万甚至上亿三角面。路径追踪要对这些几何做求交测试BVH层次包围盒的构建和遍历压力极大。动态物体多20辆赛车、观众、旗帜、天气粒子全是动态的。动态物体意味着BVH要频繁更新而BVH更新是路径追踪里最贵的操作之一。我打个比方普通游戏的路径追踪像是在一个安静的房间里慢慢拍照可以长曝光赛车游戏的路径追踪像是坐在过山车上每毫秒都要拍一张清晰的照片还不能糊。难度完全不是一个量级。2.2 光栅化为什么不够用了那为什么不用光栅化凑合毕竟光栅化跑了几十年快得很。问题在于光栅化本质上是个骗术集合反射光栅化做反射要么用屏幕空间反射SSR只能反射屏幕里已有的东西屏幕外的一律没有要么用反射探针Reflection Probe预烘焙一张环境图动态物体反射不进去。赛车游戏里你从后视镜看到后面赛车的反射SSR直接抓瞎因为后车可能不在当前屏幕里。全局光照光栅化的GI基本靠预烘焙光照贴图Lightmap或者光照探针。但赛车游戏赛道是动态的天气在变、时间在变、赛车在动预烘焙根本跟不上。阴影阴影贴图Shadow Map分辨率有限远处阴影糊成一片接触阴影Contact Shadow又只能处理很近的距离。这些骗术在静态场景里还能糊弄但在赛车游戏这种高速动态场景里破绽全暴露了。路径追踪的价值就在于它不骗人光线怎么走它就怎么算反射、GI、阴影一次性全对。2.3 Ego引擎的底子为什么EA敢这么干EA敢在《F1 25》里上路径追踪底气来自Ego引擎。这个引擎从《F1 2015》开始就是EA竞速游戏的主力经过这么多代迭代它的光栅化管线已经非常成熟而且EA在Ego上做了大量针对竞速场景的优化——比如赛道的LOD系统、赛车的实例化渲染、天气系统的动态切换。更重要的是Ego引擎的架构允许渐进式升级。EA没有推倒重来而是在现有光栅化管线旁边挂了一套路径追踪管线两者共享几何数据和材质数据。这种混合思路是整件事能落地的前提。如果EA说我们要把F1 25做成纯路径追踪那基本等于重写引擎工期和性能都不现实。3. ReSTIR让路径追踪在高速下跟得上的核心武器3.1 ReSTIR到底解决了什么问题前面说了赛车游戏路径追踪最大的敌人是时间累积窗口太短。传统路径追踪靠这一帧多采样几次再和上一帧的结果混合来降噪。但赛车游戏里上一帧和这一帧画面差太多直接混合会糊成一片鬼影。ReSTIR的思路很聪明它不直接混合像素颜色而是混合采样点更准确说是蓄水池里的光源样本。具体来说ReSTIR维护一个蓄水池Reservoir里面存着若干候选光源样本和它们的权重。每一帧它做两件事空间重采样从邻近像素的蓄水池里借样本。因为邻近像素看到的光照环境通常相似借来的样本大概率也是好样本。时间重采样从上一帧同一像素的蓄水池里借样本但会根据运动向量做重投影把上一帧的样本搬到这一帧的正确位置。借来的样本不是无脑用而是通过一个叫无偏权重Unbiased Weight的机制重新加权保证最终结果在数学上仍然是无偏的——也就是说虽然用了近似但长期平均下来结果是对的。这是ReSTIR最精妙的地方它用借的方式大幅提升了有效采样数但没牺牲正确性。3.2 ReSTIR在《F1 25》里的具体用法在《F1 25》里ReSTIR主要用在直接光照和反射上。我推测EA的实现大概是这样的基于ReSTIR的常见工程实践直接光照每个像素维护一个蓄水池存着对场景中光源太阳、赛道灯、赛车尾灯的采样。每帧通过时空重采样用很少的采样数可能每像素1-2个就能得到低噪声的直接光照结果。反射反射本质上是从反射点再发射一条光线去采样环境。EA可能对反射光线也用了ReSTIR让反射的噪声在高速运动下也能快速收敛。这里有个关键参数重采样半径。空间重采样时从多大范围内的邻近像素借样本半径太小借不到足够样本降噪效果差半径太大会把不相关的光照环境混进来产生偏差。赛车游戏里因为画面高速运动这个半径通常要调得比静态场景小而且要根据运动向量做自适应——运动越快半径越小避免鬼影。3.3 ReSTIR的代价内存和带宽ReSTIR不是免费的。每个像素要维护一个蓄水池蓄水池里存样本和权重这是实打实的内存开销。1080p下大概200万像素每个蓄水池假设存4个样本每个样本几十字节算下来就是几百MB的显存。4K下直接翻四倍。而且时空重采样要频繁读写这些蓄水池显存带宽压力很大。EA在《F1 25》里肯定做了大量优化比如压缩蓄水池把样本的位置、权重、光源ID压缩存储减少带宽。分层重采样不是所有像素都用同样的重采样策略根据画面区域比如赛道中心 vs 边缘动态调整。异步计算把ReSTIR的重采样放到异步计算队列里和光栅化管线并行跑掩盖延迟。这些优化细节EA没公开但从ReSTIR的工程实践看这是必经之路。4. 光栅化与路径追踪的分工协作4.1 谁干什么混合渲染的分工逻辑《F1 25》不是纯路径追踪而是光栅化 路径追踪混合。这个分工不是随便定的而是基于什么光栅化做得好、什么路径追踪做得好来划分的渲染任务负责管线原因几何光栅化光栅化光栅化做三角形填充极快路径追踪做这个纯属浪费直接光照主光光栅化 路径追踪主光方向明确光栅化能快速算路径追踪补充细节反射路径追踪光栅化的SSR和探针在动态场景下破绽太大全局光照路径追踪预烘焙GI跟不上动态天气和时间变化阴影路径追踪阴影贴图分辨率和动态物体处理都不行透明/半透明光栅化为主路径追踪处理透明材质噪声大光栅化更稳粒子/天气光栅化粒子量大路径追踪求交太贵这个分工的核心逻辑是光栅化负责快而糙的部分路径追踪负责慢而精的部分。两者共享同一套几何和材质数据路径追踪管线从光栅化管线拿到G-Buffer几何缓冲然后在此基础上发射光线。4.2 G-Buffer两条管线的交接点G-Buffer是混合渲染的关键。光栅化管线渲染时会把每个像素的法线、深度、材质ID、粗糙度、金属度等信息写进G-Buffer。路径追踪管线读这个G-Buffer知道这个像素表面是什么材质、朝向哪里然后从这些表面发射光线。这里有个细节G-Buffer的精度直接影响路径追踪质量。如果法线精度不够反射方向就会偏反射画面就会抖。EA在《F1 25》里肯定用了高精度G-Buffer可能还做了法线的时域滤波减少高速运动下的反射抖动。另一个细节是材质数据的完整性。路径追踪需要知道材质的BRDF双向反射分布函数参数才能正确计算光线反弹。光栅化时代很多材质参数是美术调出来的近似值不一定物理正确。EA要做路径追踪就得把这些材质参数往物理正确的方向调这是个不小的工作量。4.3 性能预算路径追踪吃掉了多少帧《F1 25》在主机上跑路径追踪性能预算肯定卡得很死。我根据公开信息和常见工程实践推测光栅化部分大概占帧时间的40-50%负责几何、粒子、UI、后处理。路径追踪部分占帧时间的30-40%负责反射、GI、阴影。ReSTIR重采样占路径追踪时间的一半左右是路径追踪里最贵的环节。降噪占10-15%把ReSTIR输出的低采样结果滤波成干净画面。在PC上EA肯定提供了多档路径追踪质量选项。低档可能只对反射开路径追踪GI和阴影还是光栅化高档全开但分辨率可能降到1440p甚至1080p再上采样。这些都是常见的性能取舍手段。5. 实操视角路径追踪在《F1 25》里的画面表现与调优5.1 哪些场景最能看出路径追踪的威力我实测下来这几个场景是路径追踪一眼真的地方摩纳哥隧道隧道内的灯光在赛车漆面上的反射路径追踪能算出多层反射漆面反射隧道灯隧道灯又反射在护栏上光栅化根本做不到。雨战雨天赛道湿滑路面反射天空和赛车。路径追踪的反射是物理正确的雨天的画面质感提升最明显。黄昏/夜间比赛低角度阳光穿过看台缝隙在赛道上投下动态的软阴影。路径追踪的软阴影过渡自然光栅化的阴影贴图会有明显的锯齿和硬边。维修区维修区有大量金属、玻璃、屏幕路径追踪的GI让这些材质的间接光照更真实不会像光栅化那样每个物体都像自己发光。5.2 性能调优怎么在画质和帧率之间找平衡如果你在PC上玩路径追踪的调优大概有这几个维度路径追踪分辨率很多游戏路径追踪是半分辨率甚至四分之一分辨率跑的然后上采样。调低这个能大幅提帧但反射会变糊。反弹次数路径追踪的光线反弹次数。1次反弹只算直接反射2次反弹能算反射的反射。赛车游戏里1-2次通常够用再多性能吃不消。ReSTIR采样数每像素每帧的初始采样数。调低会增噪但ReSTIR能补回来一部分。降噪强度降噪越强画面越干净但细节丢失越多高速运动下可能产生拖影。我的建议是优先保证帧率稳定在60fps以上因为赛车游戏帧率比画质重要得多。路径追踪分辨率可以降到半分辨率反弹次数保持1-2次降噪用中等强度。这样画质提升明显帧率也能接受。5.3 注意事项路径追踪不是开了就完事有几个坑我得提醒注意路径追踪对显存要求很高。4K 路径追踪全开显存占用可能超过12GB。8GB显存的卡建议降到1440p。注意路径追踪的噪声在高速运动下更明显。如果降噪没调好画面会有沸腾感。EA的默认设置通常调得比较保守追求画质的可以手动调低降噪强度但要接受更多噪声。注意路径追踪和DLSS/FSR这类上采样技术是绝配。因为路径追踪本身就在低分辨率跑上采样能把分辨率补回来还能顺便降噪。建议路径追踪和上采样一起开。6. 常见问题与排查路径追踪翻车现场实录6.1 画面问题速查表问题现象可能原因排查方向反射画面抖动/闪烁G-Buffer法线精度不足或ReSTIR重投影错误检查法线精度调高时域滤波强度高速运动下反射拖影ReSTIR时间重采样权重过高历史样本污染降低时间重采样权重提高空间重采样比例阴影边缘有噪点路径追踪阴影采样数不足提高阴影采样数或加强降噪画面整体偏暗/偏亮GI能量不守恒或材质BRDF参数错误检查材质参数校准GI能量帧率骤降路径追踪分辨率过高或反弹次数过多降低路径追踪分辨率减少反弹次数显存溢出崩溃蓄水池内存占用过大降低路径追踪分辨率压缩蓄水池6.2 独家避坑技巧技巧一用静止场景判断路径追踪是否正常。把车停在维修区看反射和阴影是否稳定。如果静止时画面干净一动就噪那问题在ReSTIR的时域重采样不在路径追踪本身。技巧二路径追踪的噪声有性格。反射噪声通常是高频闪烁GI噪声是低频色块阴影噪声是边缘颗粒。根据噪声类型判断是哪个环节出了问题比盲目调参数高效得多。技巧三别迷信全开。路径追踪的很多效果在赛车游戏里其实感知不强。比如多次反弹的GI在高速运动下你根本注意不到。把性能花在反射和阴影上收益比堆GI反弹次数高得多。技巧四关注驱动更新。路径追踪是重负载特性显卡驱动对它的优化很关键。EA和NVIDIA/AMD通常会在游戏发售后持续优化驱动遇到性能问题先更新驱动。7. 这套方案对行业意味着什么7.1 竞速游戏之外ReSTIR的普适性EA在《F1 25》里验证的这套光栅化 ReSTIR路径追踪方案价值远不止赛车游戏。任何高速动态场景都能用飞行模拟、高速动作游戏、VRVR对帧率和延迟要求更苛刻ReSTIR的低采样特性正好合适。ReSTIR本身是个通用技术它的核心思想——用时空重采样借样本用无偏权重保证正确性——可以套用到任何需要实时降噪的路径追踪场景。我预计未来两年会有更多游戏采用类似方案ReSTIR可能成为实时路径追踪的标配。7.2 光栅化的退休还早有人看到路径追踪就说光栅化要死了。我的判断是光栅化还会活很久。原因很简单光栅化在几何填充、粒子、UI这些任务上效率太高了路径追踪做这些纯属浪费。未来的主流一定是混合渲染光栅化和路径追踪各司其职。真正的变化在于光栅化的角色从主力渲染变成几何和材质数据的提供者路径追踪接管光照。这个转变对TA和图形程序的能力要求变了——以前会调光照贴图就行现在得懂路径追踪原理、懂ReSTIR、懂降噪。7.3 硬件门槛路径追踪的普及还差什么路径追踪要真正普及硬件还得再追一追。现在能流畅跑路径追踪的卡价格都不便宜。而且路径追踪对显存带宽和容量的要求比光栅化高一个档次。不过趋势是明确的GPU的光追单元RT Core一代比一代强ReSTIR这类算法也在不断降低采样需求。我估计再过两三代显卡路径追踪会成为中端卡的标配能力而不是高端卡的专属。8. 我个人在实际操作中的体会折腾《F1 25》路径追踪这段时间最大的感受是这玩意儿的画质提升是润物细无声的。它不像分辨率从1080p跳到4K那样一眼惊艳而是让你在某个瞬间突然意识到这个反射怎么这么真、这个阴影过渡怎么这么自然。等你关掉路径追踪再玩才会发现光栅化版本到处是破绽。另一个体会是性能调优比画质选项本身更重要。路径追踪的默认设置往往是保守但安全真正想要好画质得自己动手调分辨率、反弹次数、降噪强度。这个过程有点像调赛车悬挂——没有绝对最优只有适合你硬件和偏好的平衡点。最后分享一个小技巧如果你显卡性能吃紧可以只对反射开路径追踪GI和阴影保持光栅化。反射是赛车游戏里感知最强的路径追踪效果只开这一个画质提升明显性能压力小很多。这个组合我在中端卡上试过帧率能稳住画面也不寒碜。这套方案后续还能怎么扩展我猜EA下一步可能会把路径追踪用到赛车漆面的多层材质上——车漆有清漆层、金属层、底漆层每层有不同的反射特性。路径追踪能物理正确地模拟这种多层反射光栅化只能近似。如果真做出来赛车游戏的画面又能上一个台阶。
返回列表