阅读 58

SRP Rendering 小细节

  • 不透明物体渲染完毕后(1),首先渲染天空盒子(2),然后渲染不透明物体(3)。透明物体一般关闭深度写入。
  • ShaderTagId(string name):主要将pass中的LightMode的tag转化为id进行存储,pass中不写明LightMode时,默认为SRPDefaultUnlit,主要用在自定义渲染管线的ScriptableRenderContext.DrawRenderers()方法
static ShaderTagId unlitShaderTagId = new ShaderTagId("SRPDefaultUnlit");
复制代码
  • Camera.depth,越小,越先渲染
  • U3D sorting layer, sort order, order in layer, layer深入辨析
  • ScriptableRenderContext context:可以做很多事,比如设置全局的vp矩阵,shader中用于矩阵变换;执行CommandBuffer;设置渲染目标等。
  • 设置全局的vp矩阵,shader中用于矩阵变换****
 _context.SetupCameraProperties(_camera);
复制代码
  • DrawingSettings describes how to sort visible objects are sorted (sortingSettings) and which shader passes to use (shaderPassName).(如何对可见物体进行排序,用那个shader pass去绘制);其SetShaderPassName(index,shaderPassName),Set the shader passes that this draw call can render.(决定哪些shader pass 可以在这次绘制中使用)
  • 安排绘制一组可见的物体
ScriptableRenderContext.DrawRenderers(Rendering.CullingResults cullingResults, ref Rendering.DrawingSettings drawingSettings, ref Rendering.FilteringSettings filteringSettings);
复制代码
  • 运行Command Buffer