8、2D建筑与3D模型的遮挡问题 URP Shader

在我们的实际项目中根据实际情况,我们的建筑采用了2D面片的方式,但因为我们的英雄是3D模型,同时策划有需求,英雄可以在主城里面走动。这个时候就给我们提出了一个比较麻烦的问题,我们知道正常情况下渲染是谁的渲染队列高谁渲染在上面,我们这里英雄的Render Queue是2900,建筑面片的Render Queue是2800.渲染结果就会是下图的样子。
请添加图片描述

我们希望的是2D的建筑能正确的遮挡3D模型。
请添加图片描述

模型在建筑前面时又可以正常显示
请添加图片描述

也就是在部分区域可以遮挡模型,其它区域不遮挡模型。
但是这样的需求,单Pass是没有办法实现的。
我们只能考虑多Pass Shader来实现。
也就是一个Pass正常渲染,一个pass去实现固定区域去遮挡所有物体。
因为Shader Graph不支持多Pass shader的编写。我们这次就不再提供Shader Graph的连接图。
先直接上Shader ,后面我们再讲解一下整个的工作原理。
下面是建筑的shader,模型的shader我们使用前面的示例shader即可。

Shader "Unlit/DayNightBuildingDayNight"
{
    Properties
    {
        [NoScaleOffset]_MainTex("MainTexture", 2D) = "white" {}
        _Color("NightColor", Color) = (0, 0, 0, 0)
        [NoScaleOffset]_Control("Control", 2D) = "white" {}
        _RCut("RCut",Float)=0.01
        _GColor("GColor", Color) = (0, 0, 0, 0)
        _BColor("BColor", Color) = (0, 0, 0, 0)
        _Speed("Speed", Float) = 10

        
    }
    HLSLINCLUDE
    #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.h
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值