光线追踪阴影 (Ray-traced shadows)
光线追踪阴影是 HDRP 通过追踪来自以下光源的光线来生成的阴影:
在 HDRP 项目中启用光线追踪阴影时,光线追踪阴影将替代不透明游戏对象的阴影贴图。
使用光线追踪阴影
所有光线追踪阴影都是屏幕空间阴影。这意味着 HDRP 将它们存储在屏幕空间缓冲区中,该缓冲区用于保存深度缓冲区(仅存储不透明的游戏对象)中每个屏幕像素的信息。
要使用光线追踪阴影,请在 HDRP 项目中启用屏幕空间阴影。为此需要执行以下操作:
- 在 Project 窗口中单击 HDRP 资源以便在 Inspector 中查看该资源。
- 在 Lighting 部分中,启用 Screen Space Shadows。
- 将 Maximum 值设置为要在每帧评估的最大屏幕空间阴影数。如果场景中的光源数量超过此数量,则 HDRP 仅使用光线为该数量的光源投射阴影,然后为其余的光源使用阴影贴图。
然后,确保为摄像机启用 Screen Space Shadows。为此需要执行以下操作:
- 打开 Project Settings 窗口(菜单:Edit > Project Settings),然后选择 HDRP Default Settings 选项卡。
- 从 Default Frame Settings For 下拉选单中选择 Camera。
- 在 Lighting 部分中,启用 Screen Space Shadows。
最后,要使 HDRP 处理方向光、点光源或矩形光源的光线追踪阴影,请执行以下操作:
- 在 Shadows 部分中的 Shadow Map 折叠箭头下,单击 Enable 复选框。
- 同样在 Shadow Map 折叠箭头下,启用 Ray-Traced Shadows。对于方向光,需要启用 Screen Space Shadows 才能访问此属性。
- 要更改阴影的行为,请编辑 Ray-Traced Shadows 下的属性。
方向光
光线追踪阴影提供了一种替代解决方案来取代方向光用于不透明游戏对象的级联阴影贴图。
方向光级联阴影贴图
光线追踪方向光阴影 (Sun Angle = 0)
光线追踪方向光阴影(Sun Angle = 0.53,这是从地球上看太阳的角度)
光线追踪阴影允许透明的和可透射的游戏对象(由方向光提供光照)投射有色阴影。
光线追踪方向光阴影,包含有色阴影
光线追踪方向光阴影,不含有色阴影
属性
属性 | 描述 |
---|---|
Sun Angle | 设置天空中太阳的大小(以度为单位)。例如,在地球上,太阳的值为 0.53°。 |
Sample Count | 控制 HDRP 每帧每像素使用的光线数。较高的值会产生更准确的阴影。增大此值将线性增加执行时间。 |
Color Shadow | 允许透明的和可透射的游戏对象投射有色阴影。仅当相应的 Refraction Model 设置为 Thin、Box 或 Sphere 时,材质才能投射有色阴影。 |
Denoise | 启用时空滤波器,HDRP 使用时空滤波器来消除光线追踪阴影中的噪点,从而使阴影更平滑。 |
- Denoiser Radius | 控制时空滤波器的半径。 |
点光源和聚光灯
光线追踪阴影提供了一种替代解决方案来取代点光源和聚光灯用于不透明游戏对象的阴影贴图。HDRP 仍将点光源的光照视为来自空间中的单个点(光线是精准的),但在计算阴影时认为光线来自球体的表面。另一方面,HDRP 将聚光灯的光照视为来自空间中的单个点,但在计算阴影时认为光线来自锥体的表面。
点光源阴影贴图
光线追踪点光源阴影 (Radius = 0.001m)
光线追踪点光源阴影 (Radius = 0.5m)
光线追踪阴影允许透明的和可透射的游戏对象投射点光源的半透明阴影。
光线追踪点光源阴影,包含半透明阴影
光线追踪点光源阴影,不含半透明阴影
属性
属性 | 描述 |
---|---|
Sample Count | 控制 HDRP 每帧每像素使用的光线数。少量的样本会产生具有更多噪点的图像,因此需要更多降噪。增大此值将线性增加执行时间。 |
Semi-Transparent Shadow | 允许透明的和可透射的游戏对象投射半透明阴影。 |
Radius | 设置 HDRP 用来计算阴影的球体光源半径。这会增加发光表面的大小。 |
Denoise | 启用时空滤波器,HDRP 使用时空滤波器来消除光线追踪阴影中的噪点。 |
- Denoiser Radius | 控制时空滤波器的半径。 |
- Distance Based Denoising | 指定在对阴影进行消噪时 HDRP 是否应考虑与遮挡物的距离。这样可以提高降噪器的质量,但也会增加消耗的资源。 |
矩形光源
光线追踪阴影提供了一种替代解决方案来取代矩形光源用于不透明游戏对象的指数方差阴影贴图。
矩形光源阴影贴图
光线追踪矩形光源阴影
注意:在延迟模式下渲染时,HDRP 为光照着色器提供了精确的光线追踪面光源阴影。当 HDRP 针对任何其他着色器或针对前向模式下的光照着色器进行渲染时,它将使用近似算法来计算面光源的光线追踪阴影。该近似算法并非完全准确,但确实会产生合理的结果。
属性
属性 | 描述 |
---|---|
Sample Count | 控制 HDRP 每帧每像素使用的光线数。增大此值将线性增加执行时间。 |
Denoise | 启用时空滤波器,HDRP 使用时空滤波器来消除光线追踪阴影中的噪点。 |
- Denoiser Radius | 控制时空滤波器的半径。 |
限制
双面阴影
光线追踪阴影不支持网格渲染器 (Mesh Renderer) Cast Shadows 属性的 Two Sided 选项。要对网格使用双面阴影,请在 Inspector 中打开网格渲染器的材质,然后在 Surface Options 部分中启用 Double-Sided 属性。
递归渲染
HDRP 使用递归渲染方法渲染的游戏对象无法接收光线追踪阴影。如果同时启用这两种效果,则 HDRP 会在递归渲染的游戏对象上渲染光栅化阴影。