为什么Unity里的变体数和UWA工具测出来的不一样

1)为什么Unity里的变体数和UWA工具测出来的不一样
2)使用TextureArray为什么会导致L1 Cache Miss率变高
3)Gfx.PresentFrame耗时异常高
4)AO方案中哪个更适合移动端


这是第412篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

UWA社区主页:community.uwa4d.com
UWA QQ群:793972859

Shader

Q:为什么Unity里的变体数和UWA工具测出来的变体数不一样呢?

 

 

A:shader_feature在编辑器中预览只会保留第一个关键字的变体,所以会少显示很多;但实际进入包体的是UWA AssetBundle工具显示的量。

顺便一提,通过变体收集的方式可以让引擎在打包的时候自动去掉一部分shader_feature关键字导致的变体组合,节省部分内存。

该回答由UWA提供,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/674d1de4682c7e5cd61bf9b3


GPU

Q:做地形的时候用的ID图的方案,将所有的地表贴图做成了TextureArray,Xcode测试性能。发现TextureArray导致Texture L1缓存的Cache Miss率高达77%,且不用就不高了,设备是iPad Air 5。

请问是相邻像素的TextureArray的ID不同导致Cache Miss吗?

 

针对以上问题,有经验的朋友欢迎转至社区交流:
https://answer.uwa4d.com/question/674d2240682c7e5cd61bf9b6


Rendering

Q:部分安卓机型上,某个东西显示出来的时候,Gfx.PresentFrame耗时非常高。

以下是真机测试、多线程渲染下的截图:

 

目前还没找到根本原因,但实验发现:
1. 挂掉出问题的Shader的Clip函数,就不会有问题。
2. 删掉工程内的变体收集器,也不会有问题(新版本和老版本相关的区别就是新收集了一波变体,然后打进了Bundle里)。

目前解决方案就是把变体收集器删了,因为现在就没做Shader预热,所以收集器其实没用到。

请问其本质原因是什么?

针对以上问题,有经验的朋友欢迎转至社区交流:
https://answer.uwa4d.com/question/674ab5a93d306f3e9d594db6


Rendering

Q:请问以下AO方案中,哪些适合移动端呢?

SSAO、SSDO、HBAO+、GTAO、MXAO、LSAO、VXAO、DeepAO、以及上一年Meta的PSAO。

A:一般动态物体就是烘培AO,也就是单个物体有,静态物体就是LightmapAO也是烘培的,移动端从性能考虑大多还是走烘焙。

只有那些大世界的场景实在是太大才会想各种办法去设计一个GI效果,比如SSAO去凑整个环境的AO效果。

感谢南瓜@UWA问答社区提供了回答

封面图来源于网络


今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。

UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859

posted @ 2024-12-04 11:09  UWATech  阅读(2)  评论(0编辑  收藏  举报