问答 GPU Skinning 不生效问题

侑虎科技 · 2020年05月13日 · 1492 次阅读

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


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问答社区提供了回答


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 问答社区提供了回答


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问答社区提供了回答


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 提供


Memory

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


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

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


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

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

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册