简介: Unity HDRP 在 Unity2019 版已经支持光线追踪了,在设置中开启光线追踪后(开启方法),需要在场景中添加光线追踪的体积才会真正的生效。
版本:Unity2019.4.12f1 HDRP 7.5.1
准备
- 在项目中开启光线追踪 开启方法
- 给我们场景中的体积组件添加光线追踪功能,注意光线追踪在体积内的功能名称为 PathTracing
- 项目开启光线追踪后,之前的一些效果都会有相对应的光线追踪版本。
1. 基础的光线追踪渲染 路径追踪 (开启后,下面的光追版本都不会再有效果)
2. 高效模拟金属反射的 递归追踪
3. AO 有光线追踪版本
4. 接触阴影有光线追踪版本
5. 全局光照有光线追踪版本
6. 反射有光线追踪版本

添加光线追踪功能,并开启
Path Tracing 路径追踪渲染
- Enable 勾选后开启光线追踪功能,注意需要项目开启光线追踪功能,和硬件支持光线追踪功能
- LayerMask 参与光线追踪运算的物体层级。不在指定层级内的物体是不会参与渲染的

立方体不在Default层内,layerMask只设置了Default,所以在画面内是看不见立方体的
- MaxiMumSamples 最大采样数量,值越大画面效果越好,单帧渲染耗时越长

16的采样数量

2048的采样数量
- MinimumDepth 最小采样弹射次数
- MaximumDepth 最大采样弹射次数,注意:如果只想要直接光照,可以将此值和 Minimum Depth 设置为 1。如果只想可视化间接光照(仅在第二次反弹时可见),可以将这两者都设置为 2

只有直接光照,没有间接光照

有一次反弹的间接光照

只有间接光照没有直接光照

弹射次数过少时,反射的反射内容是黑色的

增大弹射次数,反射的反射内容更详细了
*MaximumIntensity 最大强度,设置允许光线在弹射过程中能积累的最大亮度,防止出现孤立的过爆像素亮点。
RecursiveRendering 递归渲染
- 开启路径追踪(Pathtracing)后,这个功能不再有效果。
- 添加 RecursiveRendering 到我们的体积组件,并启用
- 需要使用递归追踪的物体的材质必须手动指认 RenderingPass 为 RayTracing

指定要使用递归渲染的物体材质,RenderingPass 为 Ratracing

递归追踪参数界面
- Enable 勾选后开启递归追踪功能
- LayerMask 允许使用递归追踪功能的层级,一个物体要想使用递归追踪功能,除了要设置材质上的RenderingPass 外,其层级还有位于本 LayerMask 设置的层级内
- MaxDepth 最大追踪深度,即采样的弹射次数

最大弹射次数设置为1

最大弹射次数设置为2

最大弹射次数设置为6
- RayLength 光线长度,超过这个长度的需要光线追踪的物体不会被渲染出来。

光线长度被缩减为2.8后,远处的物体不再渲染
AO 的光线追踪版
- 开启光线追踪后,面板参数会有较大的变化,我们单拿一个小节来讲解

开启光线追踪之后的AO参数面板
- Intensity AO 强度,值越高,AO 效果越明显
- DirectLightingStrength AO 对直射光的照亮范围的影响,值越大直射光照亮的范围内AO效果越明显,值为 0 时,直射光照射范围内没有AO效果
- LayerMsak 指定会产生AO的物体所在的层级,例如我们将下图的盒子放到别的层级,AO的这个属性只选Defaut , 则会发现,盒子不会对其它物体产生 AO, 但是盒子依然能接受AO效果。

盒子不在Default层,所以盒子没有对木棍和地面产生AO
- RayLength 探测射线的长度。指光线追踪在计算AO时用来检测周围物体的探测线的长度,这个值可以理解为产生AO的距离。值越大,AO范围越大,越能让离得更远的两个物体产生AO。

射线长度为 0.5

射线长度为4
- SampleCount 采样次数,简单理解就是一个像素点要发射多少射线来探测周边进行AO计算,数量越多消耗越大,效果越好,数量越少效果越差。

5条射线采样

64条射线采样
- Denoise 降噪,通过时间积累计算来为AO效果降噪,可以在采样数低的情况下获得较好的效果。
- DenosieRadius 降噪计算范围,建议设置为两三噪点之间的距离即可。在开启 Denosie 后可以进行配置。

16次采样,0.1 的降噪距离
接触阴影光线追踪版
- 在场景的光源的属性面板上打开 Shadows > Contact Shadows 下的 Raytracing 即可,将ContactShadows 下的 Enable 设置为Custom,然后勾选 RayTracing 即可

开启灯光的接触阴影的光线追踪版本

无接触阴影

普通接触阴影

光线追踪版接触阴影
Global Illumination 光追版全局光照
- 给体积组件添加 Global Illumination 功能
- 开启后默认参数很是惨怛

光追版全局光照
- LayerMask 设置参与光线追踪版全局光照的物体层级,只有在指定的层级内的物体才会参与全局光照的计算。层级外的物体有全局关照效果,但是不影响全局光照计算,我们给CUBE 设置蓝色自发光,看一下对比效果。

不包含 CUBE 所在的层级

包含CUBE 所在的层级
RayLength 光线长度,其实是指在这个范围内的物体会对全局光照做出贡献。
ClampValue 光线在追踪过程成中能积累的最大值裁剪。

最大值为1时对全局光照的影响

最大值为5时对全局光照的影响
Mode模式 分为 性能模式和高画质模式
1. Performance 性能模式
2. Quality 高画质模式FullResolution 全尺寸分辨率,勾选后计算使用全尺寸分辨进行光线追踪,性能会有消耗,精度会更高一些
UpScaleRadius 缩放半径,值越大 光斑模糊效果越强,可以柔化噪点

性能模式下的 半尺寸 小缩放

性能模式下的 全尺寸 大缩放
- SampleCount 采样光线数量,值越大精度越高,效果越好,一般给 4 即可,就算给到最大噪点依然会存在,但是机器会很卡,一般建议给到 2 - 8 即可
- BounceCount 弹射次数,值越大弹射次数越多,环境就会越偏亮一点,值再大也会有密密麻麻的噪点,建议给到 2 - 4 即可。

高画质模式 低采样效果

高采样高弹射效果,截图都卡
- Denoise 勾选后开启降噪,开启后便可以柔化全局光照计算结果,使光照效果柔和。
- HalfResolutionDenoiser 使用半尺寸进行除噪,效果一般,建议关掉
- DenoiserRadius 第一遍除噪半径,建议设置大一点 比如 0.5 - 0.8

第一遍降噪之后
- SecondDenoiserPass 第二遍降噪 勾选后开启第二次降噪。
- SecondDenoiseRadius 第二遍降噪使用的半径 ,可根据实际效果控制大小,值越大模糊程度越大,光线越柔和

二次模糊之后的全局环境光效果
光线追踪版反射
- 开启 Screen Space Reflection 的 RayTracing 属性即可

开启 Raytracing 属性
- Minimum Smoothness 控制 HDRP 处理光线追踪反射的像素的最小平滑度值。如果像素的平滑度值小于此值,则 HDRP 会退回到反射层级视图中下一个可用的反射方法
- Smoothness Fade Start 控制平滑度值,在该值处开始淡出平滑度控制的淡出。此淡化的范围是 [Min Smoothness, Smoothness Fade Start]。
- Reflect Sky 开启后可以反射天空盒
- LayerMask 指定可以计入反射运算的层级,位于指定层级的物体可以参与反射,否则不会被反射。
- RayLength 反射效果计算距离,操作此距离的像素不再计算反射

反射距离为 1

反射距离为 5
- ClampValue 发射光线能达到的最大强度,防止出现爆亮的像素点
- Mode 反射模式 分为 性能模式和高画质模式
- UpscaleRadius 向上缩放半径
- FullResolution 全尺寸分辨率参与运算,勾选后精度有所提升

性能模式下 半尺寸 低缩放效果

性能模式下 全尺寸 高缩放效果
- SampleCount 参与采样的光线数量,越大精度越高,设备越卡 建议值 2 - 4
- BounceCount 弹射次数,越大反射层级越深,设备越卡 建议值 2 - 4

高画质模式下 低采样数 和低弹射数

高画质模式下 高采样绿 和高弹射次数
- Dnoise 降噪,开启后会减少部分反射的噪点。
- DenoiserRadius 降噪半径,可以根据实际情况设置。

未开降噪时的反射噪点

开启后噪点数明显减少