Godot Version
v4.4.1.stable.official [49a5bc7b6]
Question
I have a shader with a uniform mat3
and I’d like to pass in the value of a Transform2D. set_shader_parameter
is working fine for most of the parameters, but trying to set the Transform2D is getting ignored. I can change the values of the shader parameter in the inspector too and they respond - but trying to set them via code fails.
How am I supposed to set this?
In my node:
var world_material:ShaderMaterial
@export var map_seed:int = 0:
set(v):
if map_seed == v:
return
map_seed = v
if world_material:
print("map_seed ", map_seed)
world_material.set_shader_parameter("seed", map_seed)
@export var uv_transform:Transform2D = Transform2D.IDENTITY:
set(v):
if uv_transform == v:
return
uv_transform = v
if world_material:
print("uv_transform ", uv_transform)
world_material.set_shader_parameter("uv_xform", uv_transform)
func _ready() -> void:
world_material = %mesh_plane.get_surface_override_material(0)
world_material.set_shader_parameter("uv_xform", uv_transform)
In my shader:
uniform mat3 uv_xform = mat3(1.0);