GPU Skinning不生效问题

GPU Skinning不生效问题

1)GPU Skinning不生效问题
2)勾选凸包报的警告问题
3)Unity 2019 图片压缩格式选择
4)Android Export打包对压缩的影响
5)Android内存中的Unknown部分泄漏


这是第192篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。

UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)

Rendering

Q:Unity版本:2019.3.0f6
Shader:GPUSkinningUnlitSkin2
测试Scene :Adam_Player_Crowd
测试手机 :Samsung S5

请问我使用Git上的GPU Skinning在PC上测试DrawCall数是有降低的,同时没有Animator.update的消耗,而且有Instancing,但build到Samaung S5上用Unity Profiler监看没有Animator.update的开销,但DrawCall没有降低,也没有Instancing,请问是有什么部分没有设定好吗?

另外GPU Skinning若要使用Instancing仅限于OpenGL ES 3.0吗? 还是OpenGL ES 2.0也能使用?

PC

Samsung S5

A:参考官网文档,如下描述,并不支持OpenGL ES 2.0。

感谢郑骁@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5e4b325bfd2e373ffa7eac5d


Mesh

Q:有个复杂模型报警告:
Couldn’t create a Convex Mesh from source mesh “**” within the maximum polygons limit (256). The partial hull will be used. Consider simplifying your mesh.
我用SimpleLod减面之后也没有减到256个面,但是不报这个警告了,这个警告到底是怎么回事?建模时候应该如何避免?

A:生成的Convex Mesh最多只能有255个三角形。你原来的模型太复杂,255个三角形不够用,不足以表示轮廓。

感谢fubbi1000@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5e4eaca8fd2e373ffa7eac65


Texture

Q:关于图片压缩格式选择的问题,看了之前的博客,安卓选择ETC2,苹果选择 PVRTC。现在项目升级到了Unity 2019.2.21f1,多了很多格式,想请教一下,下面几个问题:(Unity版本:2019.2.21f1)
1. 新版本Unity 2019,Format中安卓和苹果格式该如何选择?
2. 安卓现在可以使用ASTC格式了吗,市场份额是多少?
3. Resize Algorithm,Override ETC2 fallback,分别代表意思以及如何选择?
4. HDR ,6X6,10X10,如何选择好?

麻烦科普下,不胜感激,谢谢!


A1:个人觉得:
问题1,iOS选ASTC,Android选ETC2比较好;
问题3&4,可以看看Texture的官方文档,看完这个基本上你就能够明白了,然后根据项目需求,相信能够有个较为好的选择。
感谢fubbi1000@UWA问答社区提供了回答

A2:现在tx新上线的项目已经开始普及ASTC的使用了,所以全面选择ASTC,2019可以默认import的时候选择ASTC,尤其是对光照贴图和法线有很好的效果。Unity现在默认是6x6,也可以根据项目选择其它大小。

感谢郑骁@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5e4d17b886a3954891983920


AssetBundle

Q:在Android Gradle项目中,build.gradle有如下配置:

aaptOptions
{
noCompress ‘.unity3d’, ‘.ress’, ‘.resource’, ‘.obb’
}

现测试如果不将AssetBundle配置到非压缩的情况下,包体会缩减一些,大概和对AssetBundle进行LZMA压缩的效果差不多。如果是用这种方式对压缩包进行二次压缩,解压流程是怎么样的?对运行时性能有什么影响吗?

现在根据我个人的经验猜测,Android APK包是安装时解压。也就是说,安装完成后,无论是否二次压缩,在硬盘里面都是一个样子。还望有相关经验的朋友讲解一下。

A:Android的APK包再安装后是不解压的,所以理论上运行时获取里面“二次压缩”的Bundle还需要一个解压步骤。也确实有开发者反馈过,如果改成了“二次压缩”,AssetBundle的加载以及从AssetBundle中加载资源的耗时都会明显变大。

所以,修改前建议用自身项目的AssetBundle资源做一下测试,看这两部分的耗时差异是否明显。

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


Memory

Q:请教一下,Android内存中Unknown这部分一般都是什么?反复进出一个场景,Unity的资源正常释放,没有泄漏,但是这个Unknown一直在增长。


A:这块是通过mmap分配的匿名内存,用了LuaJIT,Lua内存是在这里的;常规Lua的内存是通过malloc分配的,会出现在Native Heap;另外一个大头就是Mono内存了,Boehm GC在安卓上也是通过mmap分配的;再就是第三方so库的内存分配。

感谢littlesome@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5e259954fd2e373ffa7eab72

封面图来源:Shaders
Unity中编码着色器。


今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859(原群已满员)