private void RenderSingleCamera(ScriptableRenderContext context, Camera camera)
{
CameraData cameraData = new CameraData();
cameraData.m_camera = camera;
RenderData renderData = new RenderData();
renderData.m_cameraData = cameraData;
if (!camera.TryGetCullingParameters(out ScriptableCullingParameters cullingParameters))
{
return;
}
CullingResults cullingResults = context.Cull(ref cullingParameters);
renderData.m_cullingResults = cullingResults;
context.SetupCameraProperties(camera);
m_forwardReneder.Clear();
m_forwardReneder.Init(context, ref renderData);
m_forwardReneder.Execute(context, ref renderData);
context.Submit();
}
其实就四步:
1、相机获取提出参数:camera.TryGetCullingParameters
2、让contenxt获取提出结果:ScriptableRenderContext.Cull
3、让contentx根据pass进行绘制:ScriptableRenderContext.DrawRenderers
4、提交绘制命令:context.Submit()
重点是每个pass的内部绘制,具体实现。
参考:https://blog.csdn.net/wodownload2/article/details/124634814?spm=1001.2014.3001.5502
其中的:DrawObjectPass的实现