网站建设与管理教案,品牌运营和品牌推广,儿童网站设计模板,网站死链接怎么处理有一天看项目里的FrameDebug发现在森林系的场景里草体的drawcall差不多有100多 主要是因为灯光贴图#xff0c;位置等不一样导致的打断合批#xff0c;导致一个批次只能渲染10个左右的草体 之前有了解过unity有接口#xff08;Graphics.DrawMeshInstanced#xff09;可以把…有一天看项目里的FrameDebug发现在森林系的场景里草体的drawcall差不多有100多 主要是因为灯光贴图位置等不一样导致的打断合批导致一个批次只能渲染10个左右的草体 之前有了解过unity有接口Graphics.DrawMeshInstanced可以把一样的网格不同的变换一次性绘制出来这个比较合适草体这种很多相同网格的渲染 如果一次性渲染500个草体 那不是就几个drawcall就能搞定相差几十倍的drawcall还是很有必要处理一下 并且还能优化掉obj的消耗场景的obj越多各种遍历肯定会越耗时 直接上对比
性能对比
例子1
修改前 修改后 修改前 Drawcall 331 主线程15.4ms 渲染线程9.4ms 65FPS 修改后 Drawcall 304 主线程13.1ms 渲染线程7.5ms 76FPS 成果 Drawcall 下降27 主线程下降2.3ms 渲染线程下降1.9ms上升11 FPS
例子2
修改前 Drawcall 719 主线程20.3ms 渲染线程14.9ms 49FPS 修改后 Drawcall 603 主线程15.0ms 渲染线程9.3ms 66FPS 成果 Drawcall 下降116 主线程下降5.3ms 渲染线程下降5.6ms上升17 FPS
并且这还是没做lod的情况 如果加上lod 还能再降一点
表现优化 可以看到这个草体变白了因为在做这个草体渲染的同时我还把草体融入了地形.优化了表现注意看草体和地形的接触点画面表现优化看起来自然很多优化前看起来非常出戏需要美术手动调草体材质不仅费时而且效果也不会很好优化后像是地里长出来的再给几张明显一点的图 融地形前 融地形后:
同时优化草体的灯光图和AO问题
草体直接用融地形的颜色直接去掉草体的灯光烘焙优化了灯光图间接解决了草体的AO问题美术烘焙草体的时候不需要AO只想要接收阴影现做法是在草下加灯光非常费劲