unity3d 关于物理渲染的问题解决.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
unity3d 基于物理渲染的问题解决 最近1个月做了unity 次世代开发的一些程序方面的支持工作,当然也是基于物理渲染相关的,主要还是skyshop marmoset的使用吧,他算是unity4.x版本 PBR的优秀方案之一了 但在使用以及性能上,还是多少有些坑和不足,这里也是自己的一些心得吧,希望可以其他对这个方案有兴趣的朋友起到一些帮助。 ? 一、遇到了fps降低的BUG 国庆节前的老版本工程和必威体育精装版的工程版本运行起来没任何区别,但新版本在真机上的的运行效率有问题,只有7.5fps 开发和运行环境, XCode6.1 IOS8.1? IPad Air 分辨率 2048x1536 Graphic level GLES 3.0 图1 老版本的运行截图,为了能做参考,我这里把新版本的场景文件拷贝到老工程里 新版本相同的场景就只有不到8FPS 然后对两个版本用Xcode做了分析,旧版本fps analyze 新版本fps analyze,同样的shader消费的ms是老版的5倍 文章出处狗刨学习网 发现bug后,尝试定位问题? 1 一开始认为是marmoset版本问题,但用老版本完全覆盖,fps并没有提升? 2 删除和场景资源相关外的所有资源,重新build后,fps就恢复了,不过这种解决方法应该是无非接受的 目前临时的解决方法,把老工程的ProjectSettings里的文件替换过好了,具体的原因还要继续排查。 另外有一些版本的SkyShop的Mobile shader没有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的话,需要在设置Player Settings.. 的图形等级里选择 Automatic或强制gles3.0。 ?? 如果只用es2.0的话,因为unity会使用texCube或texCubeBias来替换texCubeLod,没有lod的支持,使用cubemap的mipmap来实现粗糙度的功能就会受到影响 最终渲染画面里可能会看不到材质的粗糙度表现。 如果把这个bug解决的话,那么性能评估应该和10.1前的报告一样,IPad Air 可以承受的是全屏,100Draw Call的支持IBL材质物体的绘制,另外有IBL的shader的瓶颈 应该是在pixel shader上,如果1,2个IBL材质占满整个2048x1536屏幕的话,一样会有潜在的瓶颈问题产生。 二、关于另外一个场景的问题解决 Draw Call可以先在Editor或联机Porfile里查看,一些设备不支持Unity Editor的GPU Profile,所以还是要用到Xcode 没做任何优化的前提下?draw call是592, GPU里两个占用最高的shader,9.8ms和7.94ms都是Terrain占用的(地形和他和阴影贴图), 另外关闭阴影后为289 drawcall,关闭地形后289-219(地形 70dc),关闭水面289dc-246dc(水面反射) 首先是Terrain,不论是shader还是dc都有些多,在Xcode的Frame view里,Terrain的绘制有不合理的地方,从截图场景来看,这种大小的地形需要70的draw call次数有些夸张了,另外就是shader上,如果是静态烘培阴影,应该是可以合并到一个shader里绘制的。建议还是从优化地形开始,降低dc,合并shader,如果u3d 的terrain没有优化的可能,不如就直接max里制作网格的地面来代替。 水面可以优化反射部分的实现,静态场景的反射可以预烘培到一张贴图里,而可以反射的部分,建议单独添加到一个layer里。降低dc数量。 摄像机的可视范围,角度,以及shader Lod的设置,在Xcode的分析中,一些极远位置的山体还是被绘制了,而且和近处的角色一样高质量的shader,这点用unity的内部设置应该就可以解决。另外这个demo摄像机的角度过低,导致远处的物体也都被渲染到,如果适当修改摄像机角度,例如传统的45视角,应该可以裁剪一部分场景物体。起到降低dc和ps填充率的作用。 三、关于Marmoset shader的改进意见 1。如果不使用skysh

文档评论(0)

xiaofei2001129 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档