1、NVIDIA实时光线追踪开发指南杨雪青NVIDIA首席开发者技术工程师,2020年12月#page#概要GPU光线追踪简介光线追踪API实时光线追踪的优化建议合理构建加速结构,优化HitShading,平衡质量与性能,降噪器的设计游戏引擎中的光线追踪UE4的NVIDIARTX-Dev分支系列#page#GPU光线追踪简介#page#GPU光线追踪简介光栅化通过投影矩阵把物体投影到屏幕上#page#GPU光线追踪简介光线追踪向场景中发射射线,找到射线与物体的交点#page#GPU光线追踪软件接口Microsoftuican.Directx#page#GPU光线追踪简介光线追踪API:高层结构光线
2、求交调用TraceRay()加速结构光线追踪管线Acceleration StructuresRay Tracing Pipeline着色结果属性索引着色器表Shader Table资源Resources#page#GPU光线追踪简介光线追踪管线(RayTracingPipeline)Hit Group1.发射光线Ray Generation新Shader类型RayGeneration ShaderTraceRay0DXR:DispatchRays0); HLSL: TraceRayO函数2.求光线与物体的交点Any HiAcCeleration遍历加速结构(AccelerationStruc
3、tures)StructureTravesal新Shader类型IntersectionShader(可选)Intersection3.处理交点一进行着色,继续发射光线,等等iTraceRay(新Shader类型ClosestHitShader(可选)和AnyHitShader(可选)Ye4、处理无交点的情况一继续发射光线,或终止新Shader类型MissShaderMisSCiosestHi皖1#page#GPU光线追踪简介加速结构(AccelerationStructure)AS是树形数据结构,用于加速光线遍历两级层次结构底层加速结构(BLAS):对应单个物体,针对基本几何体信息(三角形及
4、包围盒顶层加速结构(TLAS):对应场景,存储多个BLAS的实例(Instance)信息,包括坐标变换数据、材质等AS由驱动创建维护应用程序调用API进行管理两种方式:构建(Build),更新(Update)DXR: BuildRaytrracingAccelerationStructureO#page#GPU光线追踪简介着色器表(ShaderTable)InstanceContributionToHitGrouplndexShaderldenti芸MisS差差H莹RayGonMissHiCBVDXRRaType1RarTypeRayTypS0RayIyp1RayTypRayTypeRayTy
5、peRayType C89257100310InstanceAInstance B着色器表用于索引一次光线追踪中可能用到的所有资源顶层加速结构(TLAS)中的节点指向着色器表中的对应记录由多条等长的记录构成DXR:着色器表中可存放常量、resourceview等数据#page#GPU光线追踪简介光线追踪API:全景Top-Level ASRayInstanceInstanceGenerationHit GroupShaderRay TracingPipelineDispatchRaysO仓Shader IdentifierLocal Root ArgumentsShader TableBule
6、rsTexturesConstants#page#实时光线追踪的优化建议#page#实时光线追踪的优化建议光线追踪优化的几个主要方面合理构建加速结构影响光线求交的效率优化HitShading影响整个光线追踪流程的效率平衡质量与性能好钢用在刀刃上提高降噪能力降低光线追踪的采样压力#page#合理构建加速结构加速结构的构建(BUILD)使用异步计算(AsyncCompute)来Build加速结构构建加速结构时,对GPU的各单元利用率很低可以通过异步计算与其他泸染并行处理Overlapped对TLAS中的实例进行可视化剔除对实例选择合适的LOD层级在CPU的工作线程中进行操作#page#合理构建加速