-
Notifications
You must be signed in to change notification settings - Fork 85
SRP Custom
zilch edited this page Feb 9, 2021
·
1 revision
所有自定义的渲染管线资源,都要首先继承RenderPipelineAsset
,并实现CreatePipeline
方法:
protected override RenderPipeline CreatePipeline()
{
throw new System.NotImplementedException();
}
在URP中,看到这块关键代码是这样的:
protected override RenderPipeline CreatePipeline()
{
.....some code ....
CreateRenderers();
return new UniversalRenderPipeline(this);
}
RenderPipelineAsset.CreatePipeline
需要返回RenderPipeline
对象,RenderPipeline是一个abstract类,必须实现Render
接口:
protected override void Render(ScriptableRenderContext context, Camera[] cameras)
{
}
Render函数提供了两个参数,分别是ScriptableRenderContext和Camera数组。 后续的渲染即围绕这两个参数展开。 我们可以根据自己的管线定义,针对不同的相机,采取不同的渲染策略。
首先是摄像机裁剪工作 。
Camera.TryGetCullingParameters(out ScriptableCullingParameters cullingParameters) => bool
从每个camera,都可以获取到ScriptableCullingParameters参数
然后利用:
ScriptableRenderContext.Cull(ScriptableCullingParameters cullingParameters) => CullingResults
可以得到CullingResults对象。
完成裁剪后,就可以利用接口ScriptableRenderContext.DrawRenderers进行渲染