1、光追是什么
-
基本概念
-
屏幕的每个像素往场景发出射线,碰撞到场景物体后,会展示出不同的颜色,然后对应调整该像素的颜色表现。
-
BVH算法,让光追效率极大增强;(检测碰撞三角面 → 检测碰撞模型包围盒)
-
-
光追与光栅化的区别
光追 | 光栅化 |
---|---|
从像素和射线开始; | 从物体和三角面开始; |
渲染慢,但真实; | 渲染块,但不够真实; |
真实的物理灯光; | 使用一些技巧来模拟灯光行为; |
开启简单; | 需要一些开发尝试来达到真实效果; |
2、混合渲染
-
基本概念
- 因为光追很昂贵,所以我们会在需要的地方使用光追。
-
应用
-
漫射(Diffuse light):我们会用光栅化实现;
-
反射:模糊表面的反射使用光栅化,光滑表面反射使用光追;
-
环境遮蔽(AO):看情况选择SSAO,或者光追;
-
阴影:核心灯光的阴影选择使用光追;
-
全局光(GI):消耗很高,使用时,考虑关闭其他光追;
扫描二维码关注公众号,回复: 15101345 查看本文章
-
3、光追的使用
1)场景基础设置
-
项目设置
-
打开光追与贴图LOD;
-
平台中设置为DirectX 12;
-
-
设置成功后重启引擎
-
会在右上角看到图形计算切换到了DirectX 12;
-
显示中多出光追Dug的分栏;
-
2)环境遮蔽-AO
-
概念
- 一种计算环境光是否被周围物体遮挡的算法;
-
两种方案
-
光追AO
- 屏幕射线与模型表面碰撞,能计算出真实的遮挡关系;
-
光栅化AO:SSAO
-
基于现成的深度数据,运算快;
-
最大弊端是无法区分前景和背景,物体被遮挡时,背景物体会被剔除,这部分的AO会被忽略;
-
-
-
AO的开启与设置
-
红框启用时,使用光追AO。非启用时,使用SSAO;
-
逐像素是AO的精度;半径是光追射线的长度;这两个值都直接影响性能;
-
3)反射-Reflection
-
三种方案
-
光追反射
-
表面越粗糙,反射喇叭口越大,消耗越大;
-
-
屏幕空间反射:属于图像的后期处理
-
无法识别屏幕以外的物体,所以画面边界和一些特殊的地方会失真;
-
反射距离也会受画面距离影响,局限大;
-
-
反射探针
- 环境捕获或者HDR贴图;
-
-
反射的开启与设置
-
反射中选择类型;
-
最大粗糙度:超过数值的表面使用SSR,这个阈值对性能影响大,推荐值0.2;
-
最大反弹次数:反射的反射,次数越多,性能消耗越大;
-
逐像素:控制精度,影响性能;
-
阴影设置和半透物体设置,同样影响性能,按需开启;
-
4)阴影-Shadow
-
两种方案
-
光追阴影:会匹配光源的半径,出现真实的虚影;
-
光栅化阴影:用的是瀑布流的阴影贴图(Shadow map)
-
-
开启与设置
-
给主光源开启光追阴影
-
光追阴影的采样精度
-
5)全局光-GI
-
两种方案
-
光追GI:环境物体散射真实的次级光;
-
光栅化GI:用构建+光照贴图的方式;
-
-
开启与设置
-
类型中选择是否开启;
-
反弹次数和逐像素对精度影响都很大;
-
6)半透-Translucent
-
两种方案
-
光追半透:产生真实的反射和折射;
-
光栅化半透:配合SSR或反射探针使用;
-
-
开启与设置
-
场景无透射时,选择光栅化,能节省几帧性能
-
-
半透材质
-
使用光栅化时,通常会有排序纹理,最好关闭双面;
-
折射率的计算(近似值):空气到玻璃,为两者折射率相除;
-
材质事例
-
4、性能优化
1)材质上的优化
-
原理:光追时,关闭反射中的一些的材质运算,来增加运行性能;
-
核心节点:RayTracingQualitySwitchReplace
-
Normal:正常渲染时,shader调用的数据;
-
RayTraced:光追反射中,shader调用的数据;
-
2)全局指令优化
-
指令1:r.RayTracing.Reflections.TestPathRoughness 1
-
原理:光追测试的反射度阈值,阈值为1时,测试都用SSR;
-
-
指令2:r.RayTracing.Reflections.MaxRayDistance 100
-
原理:射线的最远距离,默认为-1(无限远)。降低时,性能提高,反射会不完全;
-
-
指令3:r.RayTracing.Reflections.ScreenPercentage 50
-
原理:设置反射的分辨率百分比。降低时,性能提升,反射会产生抖动;
-
-
指令4:r.RayTracing.Reflections.Hybrid 1
-
原理:打开反射的混合算法。打开时,性能提升,第二次反射开始会用SSR代替光追反射;
-
-
指令5:r.RayTracing.Reflections.ReflectionCaptures 1
-
原理:光追反射的基础上叠加探针反射。打开时,可以把所有反射都设置为1次,原本2次以上的黑暗区域会被探针反射替代。
-
3)全局光GI优化
-
模式从“强力”改成“最终聚集”
-
降低天光的采样精度
-
指令:r.RayTracing.GlobalIllumination.NextEventEstimationSamples 1
- 原理:采样次数降低
- 原理:采样次数降低
4)GPU查看器-visualizer
-
快捷键:Ctrl+Shift+
-
界面及操作
-
点击时,会定位到这个块的消耗