Unity的URP的RenderFeature相关编程内容梳理

37 篇文章 3 订阅

经过快一周浑浑噩噩的学习,终于把URP相关编程内容学糊涂了。

今天是周五,反省一下,安静下来,把相关的类逐个看清楚,也许没那么难。

现在这个逻辑好像是这样的,我的理解,可能不对。
添加RenderFeature就是在渲染管线中的特定位置添加了某个渲染指令,自定义的RenderFeature继承自ScriptableRenderFeature,内部执行的是自定义的RenderPass,自定义的RenderPass继承自ScriptableRenderPass,这里先对ScriptableRenderPass里面的几个方法的执行顺序做个说明:

1、ScriptabeRenderPass构造函数肯定第一个执行。

2、其次Configure

3、然后Execute

其实中间还有很多方法要执行,这里就简化成这3个。

RenderPass里面核心的功能是添加CommandBuffer,而添加CommandBuffer使用的是ScriptableRenderContext这个对象,ScriptableRenderContext提供了常用的CommandBuffer组合,类似DrawObjects方法,同时也可以通过它的ExecuteCommandBuffer来添加自定义的CommandBuffer组合r,分别说明如下:

1、DrawObjects

        这个方法是根据可视的GameObject提供的Render组件来插入渲染命令,其使用参数如下:

        a、cullingResults

        Rendering.CullingResults类型,要绘制的可见对象集。通常可以从ScriptableRenderContext.Cull获取此内容,这个Cull方法的参数是ScriptableCullingParameters结构体类型,这个参数可以使用Camera.TryGetCullingParameters方法来获取,其原型为

        bool TryGetCullingParameters(out ScriptableCullingParameters cullingParameters)

        b、drawingSettings

        DrawingSettings 通过SortingSettings对象描述如何对可见物体排序,并且通过ShaderPassName来决定使用哪个Shader Pass。

        c、filterSettings

        FilterSettings描述如何过滤可见对象集的结构体。如果使用默认值defaultValue相当于没有任何过滤。

        d、stateBlock

        e、tagName

        f、isPassTagName

        g、tagValues

        h、renderTypes

        i、stateBlocks

2、ExecuteCommandBuffer

        这个方法的参数只有一个CommandBuffer对象,下面对这个对象做一个介绍。

        这个对象的内容超级多,休息一下,过两天再写,呵呵。

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值