【问题标题】:How to tint a TextureRect?如何为 TextureRect 着色?
【发布时间】:2021-10-14 09:19:32
【问题描述】:

有没有办法在 Godot 4.3 中为TextureRect 着色?例如:想象一个透明背景上的白色图标分配给TextureRect。有没有办法以任意颜色绘制白色图标?

【问题讨论】:

    标签: c# godot


    【解决方案1】:

    在 Inspector 面板的 Visibility 下,您将找到 modulateself_modulate 属性。您可以使用它们为任何CanvasItem(包括任何Control 和任何Node2D)着色(或通过着色alpha 更改不透明度)。

    modulateself_modulate 属性的不同之处在于它们适用于哪个项目。属性modulate 适用于它所应用的项目及其子项,而self_modulate 仅适用于该项目而不适用于它的任何子项。


    当然,您也可以创建和设置自定义ShaderMaterial。见CanvasItem shaders。使用片段功能,您可以在其中设置所需的任何颜色。

    例如,此着色器将保留纹理中的 Alpha,但将所有内容设置为红色:

    shader_type canvas_item;
    
    void fragment()
    {
        COLOR.a = texture(TEXTURE, UV).a;
        COLOR.rgb = vec3(1.0, 0.0, 0.0);
    }
    

    或者这个其他示例将保留红色和 alpha(它将红色和 alpha 乘以 1,绿色和蓝色乘以 0):

    shader_type canvas_item;
    
    void fragment()
    {
        COLOR = texture(TEXTURE, UV) * vec4(1.0, 0.0, 0.0, 1.0);
    }
    

    而且,是的,它们结合在一起。 modulateself_modulate的效果在shader材质之后应用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-17
      • 2021-01-09
      • 2014-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多