shader_type spatial;
render_mode blend_mix, depth_draw_opaque, cull_back, diffuse_burley, specular_schlick_ggx;

uniform sampler2DArray textures       : source_color, filter_linear_mipmap, repeat_enable;
uniform sampler2DArray blend_textures : source_color, filter_nearest_mipmap, repeat_enable;

void fragment() {
	int num_textures       = textureSize(textures, 0).z;
	int num_blend_textures = textureSize(blend_textures, 0).z;

	float tex_primary_index   = COLOR.r * float(num_textures);
	float tex_secondary_index = COLOR.g * float(num_textures);
	float tex_blend_index     = COLOR.b * float(num_blend_textures);

	vec4 tex_primary   = texture(textures, vec3(UV, tex_primary_index));
	vec4 tex_secondary = texture(textures, vec3(UV, tex_secondary_index));

	vec4 blend = texture(blend_textures, vec3(UV, tex_blend_index));
	ALBEDO = mix(tex_secondary, tex_primary, blend.a).rgb;

	METALLIC  = 0.0;
	SPECULAR  = 0.5;
	ROUGHNESS = 1.0;
}