URP的渲染通道RendererFeature可以很方便的实现一些渲染问题,比如渲染顺序问题,遮挡后的材质替换等等。
那么我们如何通过代码来动态添加和修改呢?
首先我们需要获取到当前的URP配置文件,在对配置文件进行添加
1.通过反射获取当前UniversalRendererData
我们通过GraphicsSettings.renderPipelineAsset或QualitySettings.renderPipeline,可以获取到Edit中Graphic或Quality中设置的URP配置。
但无法获取配置中的RendererList,
UniversalRenderPipelineAsset并没有开放此属性。
所以我们可以通过反射来获取此属性。(获取了RendererList中第一个data)
UniversalRenderPipelineAsset URPAsset = (UniversalRenderPipelineAsset)QualitySettings.renderPipeline;
FieldInfo propertyInfo = URPAsset.GetType().GetField("m_RendererDataList", BindingFlags.Instance | BindingFlags.NonPublic);
UniversalRendererData URPDa