demo on how to use custom vertex attributes for indexing texture arrays for mesh surfaces. related to the godot patch available at : https://github.com/thenegativehunter2/godot/tree/custom_vertex_attribute
steps :
- first save your mesh resource so you can modify it.
-
attach your script to the new mesh (you can save again if you want to keep it attached, but beware the changes the script makes may also be saved)
-
alter the floating point array that was exported via the script to set different indexes for different surfaces
how it works :
in the vertex shader there is 4 custom vec4 (4D vector of floating point numbers). you can access them via CUSTOM0
, CUSTOM1
, CUSTOM2
and CUSTOM3
.
you can use a MeshDataTool
and call the functions like set_vertex_custom
with a Color as input to alter the data. then you can commit the changes to the mesh.
the cidx
parameter selects from CUSTOM0-3
.
only one of the parameters (customf and customu) is used. it depends on the data type. if no type is selected the data type will default to RGBA_FLOAT
the get functions (for example get_vertex_custom
) can also be used to retrieve the vertex's custom attribute as a Color
or a PackedByteArray
depending on it's data type.
keep in mind that in godot 4 the option to remove a single surface from an ArrayMesh
seems to have been removed so you will need to recommit the entire mesh. even the surfaces you don't alter.