1、NVIDIA游戏引擎中实时光线追踪的进展:全局照明、焦散与透明欧阳耀斌NVIDIA开发者技术工程师,2020年12月#page#实时全局照明及降噪光照探针方案随机光线跟踪降噪方案实时焦散概要物体焦散水体焦散透明效果服装透明折射透明混合透明NVRTXUE4分支已集成到NVRTX实验分支#page#实时全局照明及降噪Marbles RTX,NVIDIA#page#历史回顾光照图(light maps):Quake ll,Source Engine虚拟点光源(virtual point lights):CryENGINE3,TheLastofUs,Uncharted4反射阴影映射(reflectiv
2、eshadowmaps):CryENGINE3,TheLastofUs,GearsofWar4,Uncharted4光传播体积(lightpropagationvolumes):CryENGINE3,Civilization7稀疏体素光锥跟踪(sparsevoxelconetracing):TheTomorrowChildren屏幕空间全局照明(screenspaceglobalillumination):UnrealEngine4,Unity随机光线追踪降噪(stochasticraytracinganddenoising):MetroExodus,Minecraft,UnrealEngin
3、e4光照探针(irradianceprobes):FarCry3#page#当前方案光照探针(lrradianceProbes细节较少,对场景大小有限制需要较多美术手工调整效率极高详情请关注演讲“RTXGI在剑使情缘三家园系统中的应用视角迅速变化时图像质量不受影响随机光线追踪+降噪(StochasticRayTracing+Denoising)细节较多,不受场景大小限制无需美术大量手工调整效率较低场景视角迅速变化时会出现噪点#page#基于光照探针的RTXG方法在创建场景时摆放探针避免探针与物体穿透#page#基于光照探针的RTXGI方法更新探针1.根据光照和动态物体的变化,推算需要更光照新的
4、探针2.在探针的球面上发射光线,计算各光线与场景交点的光照(考虑阴影等因素)到表面距离3B83.编码光照结果和到物体表面的距离,并存储到探针球面上泸染场景(光栅化或光追)当前屏幕像素寻找附近探针,根据探针上的距离信息判断其可见性2.从可见探针上收集并计算间接光照#page#随机光线追踪B#page#UE4.24 FINALGIGATHERr.RayTracing.Globallumination.EnableFinalGatherset:Disab性能比已有的bruteforceGl明显提高23 fps vs 79 fps (RTX 2080 Ti/ 8 samples per pixel)基
5、于Irradiancecaching算法估计间接光照并缓存在屏幕空间的缓冲区GatherPointBuffer漳染时查找GatherPointBuffer得间接光照eset: Diisable#page#创建GATHER POINT BUFFER从G-buffer读取某像素的几何信息2.采样一条光线并找到交点B3.采样光源判断可见性B在交点做着色计算5重复步骤2,3.4并累积光照计算结果*将光照信息存入GatherPointBuffer6.Dstruct FGatherSamplefloat3 B;float3 P;float3 irradiance;4StructuredBuffer Gat
6、herBufffer#page#执行FINALGATHER从G-bufer读取某像素S的几何信息读取收集点P和该点的交点B的信息2.33.判断S到B的可见性(P和S可能不是一个点)如果可见则进行着色并累加结果对其他收集点重复步骤2,3,4Gather Point Buffer#page#有快随机光线跟踪屏幕空间降噪#page#降噪随机光线跟踪方案的重要环节输入图像本质是图像滤波与相邻像素结果平均时间滤波与上一结果平均难点:信息缺失空间滤波相邻点被遮挡相邻点超出屏幕输出图像光照突变#page#降噪方案经典方案:SpatiotemporalVariance-GuidedFilter(SVGF)众多