I want to create a ImageTexture3D but can't :(

Godot Version

4.2

Question

Hey so I am trying to create a ImageTexture3D through Godot so I can make a LUT file and sample it in my shader. Using .new() doesn’t work at all, seems like I am using unitialized rids. Can I initialize them from this code?

func make_lut():
	var imageArray:Array[Image] = [];
	var sizea:Array = range(size + 1);
	var fsize:float = float(size);
	for r in sizea:
		for g in sizea:
			var img:Image = Image.new();
			img.create_empty(size + 1, size + 1, false, Image.FORMAT_RGB8);
			print("img made %s" % img);
			for b in sizea:
				var color_in:Color = Color(r/fsize, g/fsize, b/fsize);
				img.set_pixel(r, g, transform_color(color_in));
			imageArray.push_back(img);
	
	image3D = ImageTexture3D.new();
	image3D.create(Image.FORMAT_RGB8, size + 1, size + 1, size + 1, false, imageArray);

func transform_color(color:Color)->Color:
	print("%s -> %s" % [color, color]);
	return color;

These errors show up:

hi making lut
img made <Image#-9223352691650909176>
(0, 0, 0, 1) -> (0, 0, 0, 1)
  Attempting to use an uninitialized RID
  servers/rendering/renderer_rd/storage_rd/texture_storage.cpp:767 - Parameter "t" is null.
  Attempting to use an uninitialized RID
  Attempting to use an uninitialized RID

I checked out the Rendering Server class, but all the create()s need an image, and every place I check in the internet is using Image.new(). What am I doing wrong?