打开网易新闻 查看精彩图片

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

UWA社区主页:community.uwa4d.com

本期目录:

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

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问答社区提供了回答,欢迎大家转至社区交流

https://answer.uwa4d.com/question/674d1ff2682c7e5cd61bf9b4

封面图来源于网络

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

UWA官网:www.uwa4d.com

UWA社区:community.uwa4d.com

UWA学堂:edu.uwa4d.com

点击下方名片关注我们,将我设为星标,及时接收小编每日推送哦,性能优化不迷路~

近期精彩回顾