URP渲染管线多Pass的问题

在Unity所有渲染管线中,URP是一种比较特殊的渲染管线。不同于HDRP和build-in管线,URP是一种

其中,single-pass这个描述词让人不由得一哆嗦。

不过对于实际应用需要使用多pass渲染的场景下,其实常规也有其他方法可以绕过限制。

  • 实际在Unity渲染中最多可支持3个pass,但需要给不同pass打上标签
    m_ShaderTagIdList.Add(new ShaderTagId("UniversalForward"));
    m_ShaderTagIdList.Add(new ShaderTagId("LightweightForward"));
    m_ShaderTagIdList.Add(new ShaderTagId("SRPDefaultUnlit"));

    源码中可以看到Unity提供了3个标签的位置。故在无法回避多pass的情况下可以通过如下这种方式进行制作

Shader "Custom/URP_MultiPass" 
{
    Properties 
    {
        //定义属性
    }
    SubShader 
    {
        Tags { "RenderType"="Opaque" ...//添加你需要的tag }
        Pass 
        {
            Tags { "LightMode"="UniversalForward" }
            CGPROGRAM
            // 光照部分渲染
            ENDCG
        }
        Pass {
            // 额外pass
            Tags { "LightMode"="SRPDefaultUnlit" }
            CGPROGRAM
            // 添加其他pass渲染,如卡渲的描边等等
            ENDCG
        }
    }
}
  • 将某一特性做成RenderFeature添加到渲染管线中,并添加图层过滤的方式来对渲染对象进行过滤

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值