unityd基于物理渲染的问题解决

unityd基于物理渲染的问题解决

ID:16455020

大小:2.62 MB

页数:21页

时间:2018-08-09

unityd基于物理渲染的问题解决_第1页
unityd基于物理渲染的问题解决_第2页
unityd基于物理渲染的问题解决_第3页
unityd基于物理渲染的问题解决_第4页
unityd基于物理渲染的问题解决_第5页
资源描述:

《unityd基于物理渲染的问题解决》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、unity3d基于物理渲染的问题解决最近1个月做了unity次世代开发的一些程序方面的支持工作,当然也是基于物理渲染相关的,主要还是skyshopmarmoset的使用吧,他算是unity4.x版本PBR的优秀方案之一了但在使用以及性能上,还是多少有些坑和不足,这里也是自己的一些心得吧,希望可以其他对这个方案有兴趣的朋友起到一些帮助。 一、遇到了fps降低的BUG国庆节前的老版本工程和最新的工程版本运行起来没任何区别,但新版本在真机上的的运行效率有问题,只有7.5fps开发和运行环境,XCode6.1IOS8.1 IPadAir分辨率2048x1536GraphiclevelGLES3

2、.0图1老版本的运行截图,为了能做参考,我这里把新版本的场景文件拷贝到老工程里新版本相同的场景就只有不到8FPS然后对两个版本用Xcode做了分析,旧版本fpsanalyze新版本fpsanalyze,同样的shader消费的ms是老版的5倍文章出处狗刨学习网发现bug后,尝试定位问题 1一开始认为是marmoset版本问题,但用老版本完全覆盖,fps并没有提升 2删除和场景资源相关外的所有资源,重新build后,fps就恢复了,不过这种解决方法应该是无非接受的目前临时的解决方法,把老工程的ProjectSettings里的文件替换过好了,具体的原因还要继续排查。另外有一些版本的Sky

3、Shop的Mobileshader没有gles3.0的支持,需要在给所有场景里使用的Marmoset的shader里添加关键字#pragma surface MarmosetSurf MarmosetDirect vertex:MarmosetVert exclude_path:prepass noforwardadd approxview#pragma only_renderers d3d9 opengl gles d3d11 d3d11_9x gles3好早marmoset的是UberShader的设计,所以只要改几个就好了。要unity支持es3.0的话,需要在设置PlayerS

4、ettings..的图形等级里选择Automatic或强制gles3.0。  如果只用es2.0的话,因为unity会使用texCube或texCubeBias来替换texCubeLod,没有lod的支持,使用cubemap的mipmap来实现粗糙度的功能就会受到影响最终渲染画面里可能会看不到材质的粗糙度表现。如果把这个bug解决的话,那么性能评估应该和10.1前的报告一样,IPadAir可以承受的是全屏,100DrawCall的支持IBL材质物体的绘制,另外有IBL的shader的瓶颈应该是在pixelshader上,如果1,2个IBL材质占满整个2048x1536屏幕的话,一样会有

5、潜在的瓶颈问题产生。二、关于另外一个场景的问题解决DrawCall可以先在Editor或联机Porfile里查看,一些设备不支持UnityEditor的GPUProfile,所以还是要用到Xcode没做任何优化的前提下 drawcall是592,GPU里两个占用最高的shader,9.8ms和7.94ms都是Terrain占用的(地形和他和阴影贴图),另外关闭阴影后为289drawcall,关闭地形后289->219(地形70dc),关闭水面289dc->246dc(水面反射)首先是Terrain,不论是shader还是dc都有些多,在Xcode的Frameview里,Terrain的

6、绘制有不合理的地方,从截图场景来看,这种大小的地形需要70的drawcall次数有些夸张了,另外就是shader上,如果是静态烘培阴影,应该是可以合并到一个shader里绘制的。建议还是从优化地形开始,降低dc,合并shader,如果u3d的terrain没有优化的可能,不如就直接max里制作网格的地面来代替。水面可以优化反射部分的实现,静态场景的反射可以预烘培到一张贴图里,而可以反射的部分,建议单独添加到一个layer里。降低dc数量。摄像机的可视范围,角度,以及shaderLod的设置,在Xcode的分析中,一些极远位置的山体还是被绘制了,而且和近处的角色一样高质量的shader,

7、这点用unity的内部设置应该就可以解决。另外这个demo摄像机的角度过低,导致远处的物体也都被渲染到,如果适当修改摄像机角度,例如传统的45视角,应该可以裁剪一部分场景物体。起到降低dc和ps填充率的作用。三、关于Marmosetshader的改进意见1。如果不使用skyshop的天空盒的动态功能的话,skymanager的update可以关闭public void LateUpdate() {            if(firstFram

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。