【发布时间】:2021-10-14 09:19:32
【问题描述】:
有没有办法在 Godot 4.3 中为TextureRect 着色?例如:想象一个透明背景上的白色图标分配给TextureRect。有没有办法以任意颜色绘制白色图标?
【问题讨论】:
有没有办法在 Godot 4.3 中为TextureRect 着色?例如:想象一个透明背景上的白色图标分配给TextureRect。有没有办法以任意颜色绘制白色图标?
【问题讨论】:
在 Inspector 面板的 Visibility 下,您将找到 modulate 和 self_modulate 属性。您可以使用它们为任何CanvasItem(包括任何Control 和任何Node2D)着色(或通过着色alpha 更改不透明度)。
modulate 和 self_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);
}
而且,是的,它们结合在一起。 modulate和self_modulate的效果在shader材质之后应用。
【讨论】: