ue4sky时间_UE4 SkyLight RealTimeCapture浅析
UE4.26中的天光增加了一项功能RealTimeCapture,花了些时间测试了下具体的功能效果。
1.与之前的SceneRecapture功能的关系
这个功能不是之前功能的替代品(起码短时间不会替代),而是一个补充,之前的Recapture Scene功能依然存在,两者的共同点都是通过捕获场景,然后计算球谐提供天光效果,但是不同的是,之前的Recapture Scene会捕获场景中的所有物体,而RealTimeCapture只会捕获SkyAtmosphere(或者SkyBox),VolumetricCloud,HeightFog,其中SkyAtmosphere和SkyBox是互斥的,两者中只会有一个参与导捕获中,SkyBox参与计算的条件是材质中的IsSky勾选框勾中,如图所示:
而且看了下源码,只有开启了SkyAtmosphere才会捕获SkyBox,VolumetricCloud,HeightFog,可能是官方希望大家都启用SkyAtmosphere功能吧。
2.效果与效率测试
首先测试下原来的Recapture Scene的效率,开启之后:
关闭SkyLight Recapture:
可以看到,原先的SkyLight Recapture功能大概消耗为7.2ms左右,然后关闭SkyLight Recapture,开启官方VolumetricCloud功能,开启RealTimeCapture:
改变SkyAtmosphere的瑞丽散射值:
改变VolumetricCloud Albedo:
可以看到性能基本稳定,消耗很小,但是接近黄昏时刻的瑞丽散射值的时候时间消耗比正常要大,应该是偶然误差,大部分时间消耗比较稳定,看一下GPU消耗:
整个Capture过程GPU消耗大概0.34ms(测试显卡2070)。
另外,我们可以不用SkyAtmosphere,而使用自定义的天空盒,当天空盒材质开启IsSky:
关闭IsSky:
这里需要注意,只有场景中启用了SkyAtmosphere IsSky才会生效,不然是没法捕获自定义的天空盒的,仔细对比可以看到勾选了IsSky之后,体积云也发生了变化,具体两者有什么联系,暂时没有深入研究。
3.捕获过程分析
通过查看引擎源码,可以找到实时捕获过程中大概分为一下四步:
第一步,渲染之前提到的SkyAtmosphere(或者SkyBox),VolumetricCloud,HeightFog,LowerHeimisphereColor到SkyCube,第二步对上一步产生的SkyCube生成Mipmap,第三步生成SkyCube的高光卷积,最后一步把SkyCube通过CS生成对应的球谐。
官方的统计消耗比我的测试是要高的,可能是因为我的设备性能更好一些吧,另外官方做了一步优化,可以将上述过程进行分帧操作:
一共分了十二步,默认是开启分帧的,可以通过r.SkyLight.RealTimeReflectionCapture.TimeSlice命令来控制开启关闭。
4.总结
RealTimeCapture功能在PC的高性能平台基本可以做到无消耗实时捕获,而且和官方的SkyAtmosphere和VolumetricCloud配合使用可以给场景提供很好的天光效果,当然也有不足,比如目前主光和场景中的实体无法参与到实时捕获中,但总体可以在较低消耗下做到场景氛围的实时更新,特别在天气时间变化比较明显的场景中应该能发挥比较好的效果。对于移动端,首先需要做到支持SkyAtmosphere和VolumetricCloud效果才能发挥实时捕获的作用,还是需要不少工作要做的。
总结
以上是生活随笔为你收集整理的ue4sky时间_UE4 SkyLight RealTimeCapture浅析的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: firebird 行级锁问题_MySQL
- 下一篇: 串口调试助手 rtc 显示时间_闪电侠串