如灰尘保佑的礼物

Unity SRP实践

创建自定义可编程渲染管线

  • 继承RenderPipeline抽象类,实现void Render(ScriptableRenderContext context, Camera[] cameras)方法
  • 继承RenderPipelineAsset抽象类,实现RenderPipeline CreatePipeline()方法

绘制天空盒

protected override void Render(ScriptableRenderContext context, Camera[] cameras)
{
    //全部相机逐次渲染
    foreach (var camera in cameras)
    {
        //设置渲染相关相机参数,包含相机的各个矩阵和剪裁平面等
        context.SetupCameraProperties(camera);
        //绘制天空球
        context.DrawSkybox(camera);
        //开始执行上下文
        context.Submit();
    }
}

绘制物体

renderContext.DrawRenderers(cullResults, ref drawSet, ref filtSet);

执行上面命令一次代表一次绘制,如果同时渲染透明和不透明的物体,这个命令就要执行两次。 三个参数:第一个为剪裁结果,第二个为绘制设置,第三个为过滤设置。