移动端 Vulkan

使用UE5.3.2,Vulkan发布到移动端。

我们做了一个挺复杂的材质。该材质能耗比较高。发现使用该材质时画面会偶发闪烁甚至会崩溃。

排查问题,发现材质的参数有问题。(逻辑上保证只设置了一次初始值) shader中有一个参数是uniformbufferconstants_material。里面存放了参数。shader访问这些数据的时候会出现偶尔会错误。然后我们把参数用MPC来做传递。发现问题解决了。请问具体是什么原因?

还有一个问题就是。我们无法完全把参数都移到mpc里面。有一些是ue自己内部控制的。还是会有部分问题。请问如何修复?

<br/>

[Attachment Removed]

Hi,

从log里无法推断是什么问题,请问你是如何判断除shader里访问Material Uniformbuffer的值会出错?把参数放到Material Parameter Collection里只是放到了另一个Uniform Buffer里,我无法解释这两者有什么区别会导致问题解决。

如果需要定位问题,最好能提供一个简单的蓝图复线工程,然后发给我们,并且最好多测试几台设备,并把出问题的设备信息提供上来(可以把log文件发过来)。因为我们手上不一定有同款设备,所以如果每台设备都有问题,我们会更方便查找。

[Attachment Removed]

等我们稍后整理。目前发现简单的shader不会重现这个问题。但shader非常耗时。比如超过5+ms左右,会比较容易出现。我们把raytracing的实现(自己实现整个bvh的遍历 加上trace 次数比较多)塞进了一个post process shader里面。发现的问题。如果参数是在材质中声明的,则会出现间隔数十帧后会出现访问错误。但是出现一次后就会正确,然后过一小段时间又出错。不知道你们有没有遇到过。当我们把这个参数移到一个材质参数收集器后,再给材质使用。就不会出现这种情况了。非常奇怪。

[Attachment Removed]

暂时不确定是什么原因,如果不是所有设备都有问题的话,大概率还是硬件驱动的一些限制导致的。

[Attachment Removed]