URP管线理解(一)宏观入口

本文深入探讨了Unity渲染管线(URP)中的ScriptableRenderPass概念及其应用。通过实例讲解了ScriptableRenderPass作为最基础渲染单元的角色,揭示了它是如何被用于扩展URP渲染流程的。

(1)对于URP的渲染管线,之前看过其它大佬的分析,
尤其是在catlikecoding教程的跟着教程一步一步从0到1抄写理解的过程非常nice,感觉收获良多,加深了对管线的流程和理解

(2)本篇理解只是单纯的说明ScriptableRenderPass是如何调用的
有许多的管线相关的其它细节未涉及到,后面再补充吧~~

------之所以选择将入口选为 ScriptableRenderPass处
是因为

(3) ScriptableRenderPass 我将其称为”最基础的渲染单元“

(4) 因为URP内部渲染的实现,都是基于继承ScriptableRenderPass来实现渲染的

(5) 关于ScriptableRenderPass的官方注释是 :” implements a logical rendering pass that can be used to extend Universal RP renderer“
有道词典翻译: 实现了一个逻辑渲染通道,可以用来扩展通用RP渲染器

Package版本:10.8.1

(一)首先,对URP 管线从宏观上认识一下:

从类的执行的层次结构:
RenderPipelines -> ScriptableRenderer -> ScriptableRenderPass
自上而下的执行,最终执行ScriptableRenderPass类中的每个所谓的”生命周期函数“

(1)从总入口: RenderPipelines类的 Render函数
(2)在Render函数中RenderSingleCamera中执行 ScriptableRenderer中的”生命周期函数“
(3)在ScriptableRenderer中的Execute函数中执行 ScriptableRenderPass中的”生命周期函数“
经过上面三步,就执行完了一个ScriptableRenderPass的生命周期
在这里插入图片描述

(二)ScriptableRenderPass 我将其称为”最基础的渲染单元“

因为URP内部渲染的实现,都是基于继承ScriptableRenderPass来实现渲染的

关于ScriptableRenderPass的官方注释是 :” implements a logical rendering pass that can be used to extend Universal RP renderer“
有道词典翻译: 实现了一个逻辑渲染通道,可以用来扩展通用RP渲染器

三)稍微详细的图解

在这里插入图片描述
请添加图片描述
请添加图片描述
请添加图片描述

Unity中修改URP(通用渲染管线)可按以下步骤与方法操作: ### 1. 切换到URP 若项目尚未使用URP,需先进行切换。操作如下: - 确保已安装URP包。在Unity的Package Manager(Window > Package Manager)中,找到Universal RP并安装。 - 创建URP配置文件。在Project窗口中,右键选择Create > Rendering > Universal Render Pipeline > Pipeline Asset (Forward Renderer),会创建URP的配置文件。 - 设置渲染管线。在Edit > Project Settings > Graphics中,将Scriptable Render Pipeline Settings指定为刚创建的URP配置文件。 ### 2. 修改URP配置文件 创建的URP配置文件包含了众多可调整的设置: - **Renderer设置**:URP配置文件里有个或多个Renderer,每个Renderer定义了场景的渲染方式。可以通过调整Renderer的设置,如相机设置、渲染功能等,来改变渲染效果。 - **质量设置**:能调整阴影、抗锯齿、后处理等质量相关的设置,以平衡性能与画质。 ### 3. 自定义渲染功能 若默认的渲染功能无法满足需求,可自定义渲染功能: - **创建自定义渲染功能脚本**:继承ScriptableRendererFeature类,重写Create和AddRenderPasses方法,在这些方法中可以添加自定义的渲染通道。 ```csharp using UnityEngine; using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; public class CustomRenderFeature : ScriptableRendererFeature { class CustomRenderPass : ScriptableRenderPass { public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) { // 在这里实现自定义渲染逻辑 } } CustomRenderPass m_ScriptablePass; public override void Create() { m_ScriptablePass = new CustomRenderPass(); m_ScriptablePass.renderPassEvent = RenderPassEvent.AfterRenderingOpaques; } public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) { renderer.EnqueuePass(m_ScriptablePass); } } ``` - **将自定义渲染功能添加到URP配置文件**:在URP配置文件的Renderer Features列表中,点击Add Renderer Feature,选择自定义的渲染功能脚本。 ### 4. 修改材质与着色器 - **材质设置**:使用URP的材质,可在材质的Inspector窗口中调整各种属性,如颜色、纹理、光泽度等。 - **自定义着色器**:若需要特殊的渲染效果,可以编写自定义的URP着色器。可参考Unity官方文档中关于URP着色器的编写指南。 ### 5. 后处理效果 - **添加后处理体积**:在场景中添加Volume对象,并添加后处理组件,如Bloom、Color Adjustments等。 - **调整后处理设置**:在Volume的Inspector窗口中,调整后处理组件的参数,以达到所需的效果。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值