gpt4 book ai didi

unity3d - 是否可以在 Unity 的 HDRP 中创建 DepthMask 效果?

转载 作者:行者123 更新时间:2023-12-05 03:00:12 25 4
gpt4 key购买 nike



我已经为此苦苦思索了一段时间,但我不知道是否可以为 HDRP 创建一个 DepthMask 着色器 (as descibed here) .

对于我的确切用途,我试图在我应用了 Material 的任何形状中创建一个“孔”,以显示在所有内容后面渲染的不同相机的内容。

我尝试弄乱着色器中的渲染队列、不同的 ZTest 和 ZWrite 组合,以及我发现的着色器的一些变体。最重要的是,我试着弄乱了我能想到的基本 HDRP 着色器的每个配置,这可能会有所作为。

我能得到的最接近的结果是让物体后面的透明 Material 消失。这确实意味着,如果我将所有不透明 Material 设置为透明,我会得到我想要的效果,但这并不理想,因为它破坏的多于解决的问题。理想情况下,我能够以某种方式在不透明 Material 上使用 HDRP 透明优先级系统,但我不确定是否可行。

我不太确定接下来要尝试什么,如有任何帮助,我们将不胜感激!

最佳答案

所以我设法找到了一种方法来实现这一点,它在这里使用 Custom Pass 是:

HDRP Unity Depth Mask Overview

这个场景中有三个对象:

  1. 一个将被遮盖的平面,它的一部分会消失(黄色的)。它确实使用 HDRP Lit 着色器作为透明,这是他的着色器:

Masked object with HDRP Lit shader

  1. 不会被掩盖的飞机。它确实使用 HDRP Lit 着色器作为不透明着色器(它是红色的)。这只是基本的。

  2. 将用作 mask 的平面。它有一个自定义层,我将此层命名为“蒙版”。该平面具有透明的 HDRP Lit 着色器并使用深度测试:从不。在这里:

The Mask object with HDRP Lit shader

最终您将需要一个带有自定义 channel 体积组件的对象。此自定义 channel 体积将以您创建的自定义层为目标:“蒙版”层,并将在渲染透明 channel 之前用自定义 Material 替换它的 Material 。在这里:

Custom Pass settings

最后是着色器的代码,用于自定义 channel 中插入的 Material (自定义 channel 中名为 StencilMask 的那个):

Shader "Custom/Stencil/MaskStencil"
{
SubShader {
// Render the mask after regular geometry, but before masked geometry and
// transparent things.

Tags {"Queue" = "Geometry+10" }

// Don't draw in the RGBA channels; just the depth buffer

ColorMask 0
ZWrite On

// Do nothing specific in the pass:

Pass {}
}
}

关于unity3d - 是否可以在 Unity 的 HDRP 中创建 DepthMask 效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57044672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com