在着色器预热阶段,pso precompiler加载500M shader增加了2G untracked内存,感觉有点多。不知道是否有优化空间?或者是哪里设置的不对?或者是就是这么多?
[Attachment Removed]
在着色器预热阶段,pso precompiler加载500M shader增加了2G untracked内存,感觉有点多。不知道是否有优化空间?或者是哪里设置的不对?或者是就是这么多?
[Attachment Removed]
Hi,
这个是有可能的,这些shader在驱动中所占用的内存是引擎无法预知的,当然肯定是跟PSO的数量有关系。
引擎希望尽可能利用PSO Precache来尽量减少这个问题,因为PSO Precache会只编译当前资产加载中可能用到的PSO,而不会把整个游戏用的PSO都提前编译好,从而减少占用。
NV显卡还有一个问题是编译好的PSO不能直接卸载,否则下次用到再编译,还是会慢,除非这个PSO被渲染使用过,才能卸载后再次创建不会卡顿,所以UE5.6版本是有cvar可以开启这个功能。
另外NV的显卡编译好的PSO是由一个上限的,超过这个上限就会造成Device Removed的问题,所以UE5.6才有一个开关,可以编译后卸载PSO。
[Attachment Removed]
请问这个渲染过才卸载的cvar跟编译达到上限卸载的cvar分别是什么?
[Attachment Removed]
这两个功能目前是同一个CVar了,r.PSOPrecache.KeepInMemoryUntilUsed [Image Removed]
[Attachment Removed]