性能优化(27、28、29)——渲染管线精简与优化


 

Shader方面

  • 在URP延时管线下,所有Unlit类型的对象都会被强制使用前向渲染管线渲染,所以这些对象不会有Gbuffer阶段,如果后续还需要使用Normal与Depth信息,只能通过Prepass的方式获取了
  • ASE生成的shader的指令集精度过高,导致渲染性能下降。我们可以利用half去替代一些float变量以提高渲染效率,这里有个原则:
    • 如果变量是表示位置与空间信息的,不要用half去替换
    • 如果变量是表示颜色与UV信息的,可以用half去替换
  • ASE生成的Shader无法符合Native RenderPass下的正确渲染表现
  • ASE生成的Shader并不匹配impostors插件的某些规则

URP中的Settings

  • 强烈建议使用URP做项目的时候不要在URP Render Pipeline Asset中开启这两个Pass:
  • 如果真的需要这两个Pass,可以选择在对应需要的Camera相机上对起进行复写设置。这样做的好处是,可以将两个Pass的生命周期与特定需要这些效果的相机进行绑定,并可以通过脚本在运行时控制其开启与关闭,这样在某些不需要的场景或相机上可以剔除掉这两个Pass,以节省GPG负载开销