递归渲染 (Recursive rendering)
此功能是用于在高清渲染管线 (High Definition Render Pipeline, HDRP) 中渲染网格的替代管线。使用该渲染模式的游戏对象将递归投射出折射和反射光线。这意味着,当光线射到表面上时,它会反射或折射并继续射到其他表面上。您可以根据项目需求,控制光线这样做的最大次数。
材质的平滑度不会影响光线的反射或折射方式,这使得此渲染模式对于渲染多层透明游戏对象非常有用。
以递归光线追踪技术渲染的汽车换档装置
使用递归渲染
递归渲染使用体积 (Volume) 框架,因此若要启用此功能和修改其属性,必须将递归渲染覆盖添加到场景中的体积。为此需要执行以下操作:
- 在 Scene 视图或 Hierarchy 视图中,选择一个包含 Volume 组件的游戏对象以在 Inspector 中查看该游戏对象。
- 在 Inspector 中,选择 Add Override > Ray Tracing,然后单击 Recursive Rendering。
- 在 Recursive Rendering Volume Override 的 Inspector 中,选中 Enable 选项。如果不能看到 Enable 选项,请确保你的 HDRP 项目支持光线追踪。如需了解如何在 HDRP 中设置光线追踪,请参阅光线追踪入门。
现在,您已经在场景中设置了递归渲染,接下来必须将游戏对象设置为使用光线追踪渲染通道,以使 HDRP 对游戏对象使用递归渲染。为此需要执行以下操作:
- 在 Scene 视图或 Hierarchy 中选择游戏对象以在 Inspector 中查看该游戏对象。
- 选择附加到该游戏对象的材质。
- 在 Surface Options 折叠箭头下,启用 Recursive Rendering (Preview)。
您也可以对 Shader Graph 主节点执行此操作:
- 在 Project 窗口中,双击 Shader 以在 Shader Graph 中将其打开。
- 在 Graph Inspector 的 Graph Settings 选项卡中,找到 Surface Options,然后启用 Recursive Rendering (Preview)。
最好是在需要多次反射和折射的情况下(例如汽车前照灯)使用递归渲染。尽管递归渲染还会在更简单的场景(例如镜子或水坑)中产生光线追踪反射,但最好在这种情况下出于性能原因使用光线追踪反射。
由于递归渲染使用独立的渲染通道,因此 HDRP 无法在递归渲染的游戏对象上渲染任何其他光线追踪效果。例如,无法渲染光线追踪次表面散射或光线追踪阴影等效果。
属性
属性 | 描述 |
---|---|
LayerMask | 定义需要 HDRP 处理该光线追踪效果的层。 |
Max Depth | 控制光线在停止并返回最终颜色之前可以反射或折射的最大次数。增大此值将呈指数增加执行时间。 |
Ray Length | 控制 HDRP 用于光线追踪的光线长度。如果光线未找到相交点,则光线将返回天空的颜色。 |
Min Smoothness | 定义在目标表面的平滑度值小于参数定义的平滑度值的情况下不投射反射光线的阈值。 |