1)Font Texture的内存值异样高
2)UWA报告Overdraw的统计以及数据解读疑难
3)URP安卓平台下,高光有马赛克
4)UGUI因为Different Material Instance导致合批被打断
5)Unity地形TerrainData外面的SplatAlpha的压缩纳闷
这是第255篇UWA技术常识分享的推送。明天咱们持续为大家精选了若干和开发、优化相干的问题,倡议浏览工夫10分钟,认真读完必有播种。
UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)
Font
Q:咱们的检测报告中看到一个占用很大的Font Texture,且是从刚进入游戏就始终存在。不过我想不通的是它仅有256*256,为什么会有61MB的占用?
版本:Unity 2019.4.3f1
A:在2018中没有见过这种问题,应该是Unity 2019的Bug,在Unity 2019.4.21中修复了。
参考网址:https://unity3d.com/unity/whats-new/2019.4.21
感激Xuan@UWA问答社区提供了回
Rendering
Q:在UWA的测试报告中,咱们游戏的整体Overdraw比拟高,我想在内网复测一下Overdraw数据,有几个问题想求教一下:
1. 我应用UnityOverdrawMonitor在Editor中测试整个场景的Overdraw,测试后果要比UWA的小一些,我又测试了几个雷同的画面,都是UWA上的后果值更高一些,这个工具的统计值比UWA报告中的总填充数要小一点点,想问一下大家是怎么测试游戏中某个时刻的Overdraw?
2. UWA报告中这几个数据的关系是怎么的?总填充数、均匀填充倍数和单像素最大填充数等。
3. 对于其它工具,我把ParticleEffectProfiler拿到内网,它能够统计单个特效的单像素最大填充数,测试了几个独自的特效,Overdraw高的达到了4、5、6,大多数特效都是2,曾经整顿出Overdraw过高的特效给美术去优化了。
PS:因为公司我的项目是在内网开发,所以我的项目在Editor中的数据没法截图,我贴几张UWA上的报告截图:
A:1. 如果UnityOverdrawMonitor是以下这个开源工具:https://github.com/Nordeus/Unite2017/
那么,这外面的统计是不精确的,因为它的底层原理是通过Shader Replacement把Shader换成半透明的Shader来进行渲染,从而计算其Overdraw,这个并没有思考深度遮挡、剔除等问题,所以计算出来的值是有问题的,有时候甚至会引起不必要的误导。
这些数值的具体阐明可见:《UWA新性能| GPU性能优化,One Step!》
总填充数峰值
我的项目运行过程中,单帧填充像素的数量峰值。总填充数均值
我的项目运行过程中,均匀每帧的填充像素数量。填充倍数峰值
我的项目运行过程中,单帧中整个屏幕被填充的倍数峰值;倍数越高,则GPU的压力越大。填充倍数均值
我的项目运行过程中,均匀每帧的填充的倍数均值;倍数越高,则GPU的压力越大。从截图中看,你们的特效Overdraw压力还是不小的,倡议题主特地注意。
该答复由UWA提供
Rendering
Q:最简略的场景,蕴含一个Unity默认球体,应用URP Lit Shader。
在编辑器中显示失常:
工程输入到安卓之后,高光局部马赛克十分重大:
材质只设置了色彩:
请问有人遇到过这个问题吗?
Unity版本:2021.1.9f1
URP版本:11.0.0
A:须要批改URP源码。
在Packages/com.unity.render-pipelines.core@11.0.0/ShaderLibrary/Common.hlsl文件中1225行:
// Normalize that account for vectors with zero lengthreal3 SafeNormalize(float3 inVec){ real dp3 = max(FLT_MIN, dot(inVec, inVec)); return inVec * rsqrt(dp3);}
其中real须要批改为float:
// Normalize that account for vectors with zero lengthfloat3 SafeNormalize(float3 inVec){ float dp3 = max(FLT_MIN, dot(inVec, inVec)); return inVec * rsqrt(dp3);}
所以最终还是挪动平台精度设置有问题。
感激题主WTF-082699@UWA问答社区提供了答复
UGUI
Q:如下图所示,因为Different Material Instance合批被打断,然而确实是雷同材质球,请问什么起因?
A1:会不会是材质名字雷同,能够开Debug模式看看Instance ID是否一样。
感激范世青@UWA问答社区提供了答复
A2:已解决,模板测试导致的。
感激题主cwf@UWA问答社区提供了答复
Rendering
Q:Unity地形TerrainData外面的SplatAlpha为非压缩格局,内存占用特地大,有没有比拟好的压缩方法?
A:我不确定在Unity的原生Terrain中这张图是否能够压缩,原理上仿佛是能够的(除非这张图是运行时在内存生成的)。
然而这张图存储的并不是色彩信息,因而压缩之后成果可能比拟差,比方混合的边缘有马赛克。咱们之前用T2M转成Mesh之后,压缩过这张混合贴图,成果很差,最初还是在某些能够承受的地块应用16位来缩小一半内存,有问题地块还是应用的32位的原图。
感激贾伟昊@UWA问答社区提供了答复
封面图来源于网络
明天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题兴许都只是冰山一角,咱们早已在UWA问答网站上筹备了更多的技术话题等你一起来摸索和分享。欢送酷爱提高的你退出,兴许你的办法恰能解他人的当务之急;而他山之“石”,也能攻你之“玉”。
官网:www.uwa4d.com
官网技术博客:blog.uwa4d.com
官网问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官网技术QQ群:793972859(原群已满员)