How to set the value of a uniform mat3 to a Transform2D?

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);

A mat2 shader type is represented as a Transform2D in Godot but the transform’s origin is dropped as far as I can tell. mat3 is represented as a Basis Shading language — Godot Engine (stable) documentation in English