Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

地形八张纹理的可行性和消耗研究 #9

Open
liuxq opened this issue Nov 11, 2016 · 0 comments
Open

地形八张纹理的可行性和消耗研究 #9

liuxq opened this issue Nov 11, 2016 · 0 comments
Labels

Comments

@liuxq
Copy link
Owner

liuxq commented Nov 11, 2016

最近美术希望增加地形纹理到8张,希望研究可行性和消耗,于是做了如下测试。
修改4纹理shader到8张纹理,控制图也从一张增加为两张,第一张的RGBA控制前四个纹理,第二章的RGBA控制后四个纹理,然后用ps做出两个控制图,将图分成八份,shader界面和渲染结果如下。

dock
dock

测试机器是macmini,使用的unity4.7,查看profile,测试结果如下。

内存方面:

512512的dxt1 纹理内存大小128k(安卓ect-4bit,苹果pvrtc-4bit)
256
256的rgba32 纹理内存大小256k

每个场景增加4个dxt1纹理1个rgba32纹理,每个场景增加内存:768k,如果使用mipmap则增加为1.33倍到1m

GPU方面:

1*1米的场景2个drawcall,使用4纹理shader的GPU时间:0.233ms

dock

1*1米的场景2个drawcall,使用8纹理shader的GPU时间:0.464ms

dock

512*512米的场景合并之后13个drawcall,使用4纹理shader的GPU时间:0.805ms

dock

512*512米的场景合并之后13个drawcall,使用8纹理shader的GPU时间:1.274ms

dock

注:这里的512512米用的是1616的网格,共1024个,静态batch过后drawcall达到13

分析8纹理方案的GPU消耗是4纹理的1.6~2倍,由于测试GPU使用的mac,在真机上消耗时间的基数会大大增加。另外测试发现八张贴图的shader如果删掉其中四张,GPU时间消耗不变,因此如果有的图不打算使用8贴图,一定要使用4贴图的shader。

真机兼容性:

部分低端机型由于没有测试过有可能存在shader不支持或者纹理增多导致的显存不足,存在不支持的风险。

总结建议:

项目目前的主要性能瓶颈在内存,所以内存这块消耗的增加需要其他模块考虑降低消耗。
(比如只有256*256的地图才使用8纹理)
GPU这块由于不是瓶颈,暂时考虑可以接受
兼容问题需要考虑,即如果有的机型不支持8纹理,需要替代方案(比如只使用前四张纹理)

@liuxq liuxq added the blog label Nov 11, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant