【问题标题】:Giving a Material two different colors using a png Mask使用 png 蒙版为材质赋予两种不同的颜色
【发布时间】:2021-08-17 15:32:04
【问题描述】:

我正在尝试将徽标放在我的对象上。我有一张 png 图像我想用作蒙版和两种颜色,一种用于徽标,一种用于背景。

到目前为止,我已经为同一个子网格创建了两种材质,一种是透明图像,另一种是背景:

但徽标的颜色不可更改,因为它是正在显示的图像。 有没有办法使用 png 作为蒙版,但改变使用的颜色? 我是否需要编写着色器,还是在材质检查器中遗漏了某些内容?

提前致谢:)

【问题讨论】:

    标签: c# unity3d shader masking


    【解决方案1】:

    对同一个子网格使用两种材质是一个糟糕的想法,它的性能非常低,这不像在同一个着色器中有两个通道。 您可以做的是创建一个接收两个纹理的新着色器:

    • 一个纹理在徽标空间中只有 0,而在其他地方为白色
    • 其他纹理在徽标中为白色,其他像素为 0

    那么你会有两个颜色属性:

    • 一个会与您的“背景”纹理相乘
    • 另一个将与您的“Logo”纹理相乘

    然后添加两个纹理并将它们分配给 Albedo 节点。

    您可以使用混合蒙版来做同样的事情:

    • 您将拥有一个遮​​罩贴图(基本上是 Alpha 通道),并将 0 放在除徽标像素所在的所有位置。
    • 您还需要 2 个颜色属性。

    然后使用 ShaderGraph 中的混合节点来合并两个纹理。 使用混合蒙版,您不需要其他两个纹理,只需要蒙版,您可以在 ShaderGraph 中使用颜色属性创建贴图。

    【讨论】:

    • 感谢您的评论。不过,我没有使用着色图,因为我使用的是内置渲染管道。不过,这两种方法都应该在代码中可行,对吧?
    • 是的,您可以编写自己的着色器并使用相同的技术。 ShaderGraph 只是实现相同结果的可视化工具
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 2018-11-24
    • 1970-01-01
    • 2013-05-22
    相关资源
    最近更新 更多