If I interpret you correctly, then I think I'm kind of working on the same problem. I want to send several textures/images as uniform-input to the shader, which should allow me to provide each vertex with several inputs.
Here's what I have thus far:
# load shader
onready var myshader = preload("res://new_shader.shader")
# create texture-array that can hold several images in "layers"
var textureArray = TextureArray.new()
textureArray.create(1, 1, 3, Image.FORMAT_RGB8)
# create the image object that should be inserted into the textureArray
var image = Image.new()
image.create(1, 1, false, Image.FORMAT_RGB8)
# add the image to the textureArray (this makes the image appear in all layers, which I don't understand why. I'm expecting it to only appear in layer 1...)
textureArray.set_layer_data(image, 1)
# get the object using the shader
var mesh_material = get_node("MeshInstance").mesh.material#.get_shader_param("user_input")
# set the shader-defined "uniform" parameter from GDScript
mesh_material.set_shader_param("user_input", textureArray )