首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用URP改变网格重叠中的颜色

用URP改变网格重叠中的颜色
EN

Stack Overflow用户
提问于 2022-06-07 15:17:23
回答 1查看 528关注 0票数 1

我有一个平面网格(一个自定义的跟踪),使用高级着色器在URP,我需要它来检测重叠,并改变它的颜色为红色。

应用程序是3d的,轨迹总是在y 0处绘制的。当路径重叠时,用户需要有视觉反馈,这样他们才能修复他们的路径。我正在尝试使用模版着色器来完成它,但是用于URP的模板不像内置渲染器那样工作。

这个问题完全有我需要做的事情,,但是在URP中,着色器不能工作。无论我尝试做多少次模板传递,它只是呈现第一次通过,而从来没有检测到其他的通行证。

在URP中,我只能用一个书写着色器和一个阅读器着色器使用模具,并替换模具缓冲区(添加不起作用)。

由于它不能检测到这两种不同的传递,我甚至不能使用双对象来完成它,包括作者和读者,我的阅读器有一个高级着色器和一个平面红色的pass。

记住,我需要一堆平面轨迹来检测重叠和自我重叠。有人能让它发挥作用或提出另一种方法吗?(我必须在工作中完成这件事)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-07 17:28:26

找到了的两种方式--

经过几个小时的搜索,我找到了这条线,Invertex说:

由于性能原因,URP不会自动运行所有的着色器通行证。您可以制作另一个已启用另一个传递的材料,并将其添加到对象的材料列表中。实际上是一样的。

所以我用:

代码语言:javascript
复制
Tags { 
        "RenderType" = "Opaque"
        "Queue" = "Geometry-1"
        }
    Pass
    {
        Stencil {
            Ref 0
            Comp Equal
            Pass IncrSat
            Fail IncrSat
        }
    }
    //here the code that renders when not overlapping

另一个着色器有:

代码语言:javascript
复制
//this one is in "Queue"="Geometry"
    Stencil {
        Ref 1
        Comp Less
    }
    //here the code that renders when overlapping

然后我把两个着色器放在我的预制板中。由于它只有一个亚网格,它在其中呈现两种材料。

上面的方法是一个丑陋而昂贵的解决方案--,所以我一直在搜索这个问题。

这条线之后的解决方案。我们可以使用"LightMode“标签,如"DepthOnly”、"Meta“、"SRPDefaultUnlit”、"UniversalForward“等。绕过URP的通行证。它们将以特定的顺序呈现,无论它们在文件中的顺序是什么。你被限制在少数,但它解决了它在我的情况下。

由于"SRPDefaultUnlit“将首先呈现所有对象,然后"UniversalForward”将呈现所有对象,因此我可以将其用于我的优势。

在第一关内:

代码语言:javascript
复制
        Tags
        {
        "LightMode" = "SRPDefaultUnlit"
        }
        Stencil 
        {
            Ref 0
            Comp Equal
            Pass IncrSat
            Fail IncrSat
        }

    //here the code that renders when not overlapping

在第二关:

代码语言:javascript
复制
    Tags
    {
        "LightMode" = "UniversalForward"
    }
    Stencil
    {
        Ref 1
        Comp Less
    }
    //here the code that renders when overlapping

注意:如果您使用内置的呈现,LightMode将不能工作,您必须使用默认的呈现,并在代码中更改传递顺序以获得所需的效果。你会在底座传球后再加一个。

对我来说,这似乎是最后的解决方案,但请随时为我做贡献,因为你将来可能会帮助其他人。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72533739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档