欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

ue4sky时间_UE4 SkyLight RealTimeCapture浅析

发布时间:2023/12/20 编程问答 57 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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浅析的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。