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

2024-02-08



我已经为此努力了一段时间,但我不知道是否有可能创建一个深度掩模着色器HDRP (如此处所述) http://wiki.unity3d.com/index.php/DepthMask.

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

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

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

我不太确定下一步要尝试什么,任何帮助将不胜感激!


所以我设法找到一种方法来实现这一点,它是使用自定义通行证:

HDRP Unity 深度掩模概述 https://i.stack.imgur.com/C6flO.png

该场景中有三个对象:

  1. 一架飞机将被遮蔽,并且其一部分消失(这是黄色的)。它确实使用 HDRP Lit 着色器作为透明,这是他的着色器:

使用 HDRP Lit 着色器遮罩对象 https://i.stack.imgur.com/ZnjM8.png

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

  2. 一架飞机将成为面具。它有一个自定义图层,我将此图层命名为“Mask”。该飞机的 HDRP Lit 着色器是透明的,并且使用深度测试:从不。这里是 :

具有 HDRP Lit 着色器的 Mask 对象 https://i.stack.imgur.com/gr3Md.png

最终,您将需要一个具有自定义通道体积组件的对象。此自定义通道体积将以您创建的自定义图层为目标:“蒙版”图层,并在渲染透明通道之前将其材质替换为自定义材质。这里是 :

自定义通行证设置 https://i.stack.imgur.com/zdKau.png

最后,这是在自定义通道中插入的材质上使用的着色器代码(自定义通道中名为 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 {}
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在Unity的HDRP中创建DepthMask效果? 的相关文章

  • WebGL 如何设置深度缓冲区中的值?

    在 OpenGL 中 深度缓冲区值是根据场景的近剪裁平面和远剪裁平面计算的 参考 从深度缓冲区获取真实的 z 值 https stackoverflow com questions 6652253 getting the true z va
  • Unity3D如何连接NavMesh和NavMeshAgent

    我在编辑器中收到此错误 SetDestination can only be called on an active agent that has been placed on a NavMesh 这些是我在解决问题时尝试的步骤 将 Nav
  • 帧缓冲区和在 opengl 中使用着色器

    我对帧缓冲区有点困惑 我想要做的是使用附加了多个纹理的帧缓冲区 填充每个纹理 然后使用着色器组合 混合 所有纹理以创建新的输出 听起来很容易 是的 我也是这么想的 但我不明白 如何将当前绑定的纹理传递给着色器 您需要的是将纹理放入特定的槽中
  • 如何编写从管道输入读取的 powershell 函数?

    SOLVED 以下是使用管道输入的函数 脚本的最简单示例 每个的行为都与通过管道传输到 echo cmdlet 相同 作为函数 Function Echo Pipe Begin Executes once before first item
  • 如何将 asm 着色器编译为 fxo 文件?

    我有一个已编译的 fxo 着色器 我正在尝试对其进行稍微编辑 仅调整一些常量 使用 fxdis https code google com archive p fxdis d3d1x https code google com archiv
  • Unity 对象不围绕枢轴点旋转

    突然 由于某种原因 统一编辑器中的对象开始围绕其重心旋转 至少我认为是这样 而不是其枢轴点 我尝试将对象放置在一个空对象内 该对象将像往常一样用作新的枢轴点 但这并没有改变任何东西 这是一些设置还是一些更新的功能 我怎样才能阻止它 检查编辑
  • 使texture2D在运行时/脚本Unity3D中可读[重复]

    这个问题在这里已经有答案了 我有一个插件 可以让我访问 Android 手机图库中的图片 这给了我一个Texture2D类型的纹理 然后我想使用 GetPixels 函数对其进行编辑 但默认情况下它未设置为可读 如何使纹理可读 以便我可以在
  • 如何使用 Unity 在 Android 设备上以各种宽高比显示游戏的相同部分?

    我从 Libgdx 引擎转向 Unity 是一名初级程序员 我尝试在 Unity 中为 Android 和 iOS 设备制作游戏 但在宽高比 分辨率缩放方面遇到问题 在 Libgdx 中 如果您开发了一些东西 您可以指定 默认 分辨率 并且
  • 将旧的 Unity 代码升级到 Unity 5

    在触发按钮上播放动画的代码似乎不起作用 我在 Youtube 上看到了一个视频 内容很简单animation Play 它可以在该视频上运行 但我无法让它在我的计算机上运行 我做错了什么还是团结改变了它 请帮助我在网上找不到解决方案 所有
  • 将物体放置在相机前面

    这应该是一项简单的任务 我已经用谷歌搜索过了 但我不明白为什么这些例子对我有用 基本上 我想在我的第一人称游戏中将瓷砖放在地上 我希望我想要放置在地面上的物体 漂浮 在半空中 同时为其选择完美的位置 我可以实例化该对象 使其成为玩家相机的子
  • 抑制数组列表添加方法管道输出

    我正在使用数组列表来构建日志项序列以供稍后记录 工作起来很不错 但是 Add 方法将当前索引发送到管道 我可以通过将其发送到 null 来解决这个问题 如下所示 strings Add junk gt null 但我想知道是否有某种机制可以
  • Unity 2019 - 如何修复 TextMeshPro 2.0 错误 cs0433

    我刚刚开始包含 Vuforia SDK 的新项目 进行一些更改后 我决定从 Asset Store 安装 GitHub 扩展以进行一些备份 之后我的 textMeshPro 插件变得疯狂 抛出了一个我无法处理的恼人错误 错误说 Librar
  • 与整数纹理进行 Alpha 混合以进行对象拾取

    问题描述 你好 在我们的 WebGL 应用程序中 我们正在绘制许多 甚至数十万 形状 并且我们想要发现当前鼠标位于哪个形状 我正在寻找一种有效的方法 Details 形状定义为有符号距离函数 https en wikipedia org w
  • 使用 Unity3D 解决 PnP

    我有一个真实 物理的棍子 上面连接有红外摄像头和一些红外 LED 它们形成了我正在使用的模式 以便使虚拟棍子以与物理棍子相同的方式移动 为此 我在 Python 中使用 OpenCV 并将由solvePnP 计算的旋转和平移向量发送到 Un
  • 已安装 cypress npm 软件包,但缺少 Cypress 二进制文件

    大家好 我是 azure devops CI 的新手 我正在尝试通过在作业之间缓存 node modules 来减少管道构建时间 但我遇到了无法解决的错误 我正在使用 cypress 进行测试 这是我的天蓝色管道 Node js Build
  • 谷歌地图通过骨干javascript返回div标签但不显示

    我已经开始使用地理定位 我可以获得坐标等 我想在地图中显示它 但是当我将地图返回到 div 时 什么也没有显示 现在我查看了 div 地图正在返回 但只是不可见 这是有问题的 div 请注意 这似乎只是一个小地图的链接 a style di
  • Shader的功能参数表现

    我试图了解如何在着色器语言中实现传递参数 我读过几篇文章和文档 但仍然有一些疑问 特别是我试图理解与C 函数调用 特别强调性能 之间略有差异HLSL Cg and GLSL但我猜下划线的实现非常相似 到目前为止我所理解的 除非另有说明 函数
  • 如何在 OpenGL 中绘制镜像某些东西的镜子?

    根据我的理解 要在 OpenGL 中进行镜像 您基本上需要绘制场景 然后将所有内容翻转并再次绘制 只是使其通过镜子可见 从而在镜子中创建完美翻转的图像 但我看到的问题是 执行此操作时 唯一可以看到其他镜子的镜子是在前一个镜子之后渲染的镜子
  • 计算着色器中的 Image2D

    我想使用 image2D 作为顶点的 2D 存储 该顶点将由计算着色器修改 但不起作用 创建纹理 glGenTextures 1 HeightMap glBindTexture GL TEXTURE 2D HeightMap glTexIm
  • glsl 着色器 - 颜色混合,正常模式(就像在 Photoshop 中一样)

    我试图创建混合 2 种颜色的效果 实际上是图像和颜色作为图像叠加 就像在 Photoshop 颜色叠加 和 正常混合 模式中一样 我正在使用 libgdx 这就是我到目前为止所拥有的 attribute vec4 a position at

随机推荐

  • 如何注入实现相同接口的两个不同类的两个实例?

    在java中处理CDI时 我想注入两个不同类的两个实例 实现相同的接口 据我了解 我可以注入不实现接口的类的实例 例如 class MyClass class XY Inject MyClass myClass 当我的类实现一个接口时 我必
  • Acumatica - 在销售订单行中添加图像

    我正在努力在选择 InventoryID 时在销售订单行上为文档详细信息制作缩略图 然而 每当我在行中选择 InventoryID 时 图像不会填充到网格中 这是我到目前为止所拥有的 DAC 扩展 namespace PX Objects
  • 存档选项在 xcode 4.5.2 中呈灰色

    我已经使用 Xcode 创建了应用程序 它已准备好在 iTunes 连接上上传 但应用程序加载器似乎太慢了 另一种归档方法看起来很好用 但该选项在 Xcode 4 5 2 中被禁用 行动 我尝试编辑方案并选择存档 发布选项 以及我的设备的目
  • 如何在 libgdx 中沿 x 轴旋转图像?

    我试图在其 x 轴上旋转图像 但它不起作用 Texture one new Texture Gdx files internal img one jpg oneImg new Image one oneImg setOrigin oneIm
  • iOS 11.2.1 Xcode 9.2 BoringSSL SSL_ERROR_ZERO_RETURN(6)

    我在有 WKWebView 显示页面的项目中突然遇到此错误 该页面像以前一样加载良好 但现在当我尝试从该页面导航到另一个页面时 我收到此错误 BoringSSL Function boringssl session errorlog lin
  • primefaces:对话框不显示

    我的问题是p dialog没有显示 监听器被解雇 没有错误消息 我的要求是 当我选择一行时 该行的详细信息必须显示在对话框中 请帮助我 提前致谢
  • 在 Pandas 中将两个 MultiIndex 级别合并为一个

    我有一个多索引的 Pandas 数据框 第二级包含年份 2014 2015 第三级包含月份编号 1 2 12 我想将这两个合并为一个级别 例如 1 2014 2 2014 6 2015 这怎么可能做到呢 我是熊猫新手 搜索了很多但找不到任何
  • X 天内从 http 页面调用时,FB.api 方法将停止工作。请更新您的网站以使用 https 进行 Facebook 登录

    我正在本地主机中开发一个应用程序 突然收到此错误 X 天内从 http 页面调用时 FB api 方法将停止工作 请更新您的网站以使用 https 进行 Facebook 登录 时间用完后我还能在本地主机上开发吗 根据 Facebook 公
  • 将 MeiYan 哈希函数移植到 Go

    我想将最先进的哈希函数 MeiYan 从 C 移植到 Go 据我所知 就速度和冲突率而言 这即使不是哈希表的最佳哈希函数 也是最好的哈希函数之一 它至少击败了 MurMur 我是 Go 新手 刚花了一个周末 想出了这个版本 func mei
  • Solidity:ParserError:预期的编译指示、导入指令或合约/接口/库定义

    当我编写简单合约时 我也遇到了最新的 solc 0 5 2 版本 和 0 4 25 的错误 我尝试过以下步骤 已卸载的 Solc npm uninstall solc 安装的目标版本 npm install save 电子邮件受保护 cdn
  • 使用 dapper,为什么在一次使用连接中创建的临时表在第二次使用同一连接时不可用

    我正在尝试使用 C 中的 dapper 执行一系列 SQL Server 步骤 第一步创建一个临时表并填充它 以下步骤从临时表中查询数据 创建 填充似乎运行成功 但临时表中的第一个查询失败 并显示 对象名称 GetPageOfGlobalU
  • 验证隐藏字段

    我正在使用 MVC3 进行不引人注目的验证 我有一个字段 用户需要填写一些数据 然后按 搜索 按钮 如果从未按下搜索或用户在按下搜索后更改了输入字段 则不应提交表单 我添加了一个隐藏字段 设置为true by the click 按钮的事件
  • 在 shell 脚本中获取 2 个数组中的公共值[重复]

    这个问题在这里已经有答案了 我有一个 array1 20 30 40 50 array2 10 20 30 80 100 110 40 我必须从数组 3 中的这两个数组中获取共同值 如下所示 array3 20 30 40 按升序排列 Sh
  • Facebook PHP SDK Graph API 发布到页面无法正常运行

    我正在尝试向我的应用程序添加一项功能 该功能会将状态发布到管理员用户的页面时间线 其详细信息与他们在 Facebook com 上发布的内容相同 我关注的主要功能是链接共享和缩略图 例如当您将链接粘贴到状态中时 它会自动检测缩略图 为您提供
  • HttpServletRequest 和 getHeader():如何正确处理不区分大小写的标头?

    由于我发现根据 RFC HTTP 标头不区分大小写 因此我想知道如何使用 Servlet 以不区分大小写的方式访问 HTTP 标头 有一个 getHeader String 方法来获取标头 但事实证明该方法对标头字段区分大小写 是否有一种
  • 获取UIScrollView的当前位置

    我来自 Android 但在 IOS 上我感到很头疼 我需要制作一个像电影片尾字幕一样的滚动菜单 我使用了下面的代码 rol scroll view contentOffset y timer NSTimer scheduledTimerW
  • 在 Web 浏览器控件中捕获 Javascript 警报

    使用网络浏览器控件浏览站点 有时会出现涉及 javascript 弹出框的错误 当这种情况发生时 我想做一些事情 了解 JavaScript 警报何时弹出 我使用 LostFocus 事件取得了一些成功 但每当它失去焦点时 代码都会运行 这
  • Swift 将多个类分配给 UI 元素

    是否可以将多个自定义类分配给 Swift 中的同一个 UI 元素 我有一个 UITextField 我需要使用 Spring 动画库 对其进行动画处理 并且我还需要在同一个 UITextField 上使用一些其他库来提供一些其他功能 我通常
  • 用于(合法)欺骗 SMS 消息的 SMS 网关

    我正在寻找一个 SMS 网关来通过 HTTP 接口发送短信 但有些短信网关不允许设置发件人ID 允许设置的短信网关要么要求用户证明发件人ID是自己的手机号码 要么手动检查每个发件人ID 以防止出现问题 短信欺骗 http en wikipe
  • 是否可以在Unity的HDRP中创建DepthMask效果?

    我已经为此努力了一段时间 但我不知道是否有可能创建一个深度掩模着色器HDRP 如此处所述 http wiki unity3d com index php DepthMask 对于我的确切用途 我试图在应用了材质的任何形状上创建一个 洞 以显