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

uniform sampler2D main_texture : source_color;
// On passe en vec2 pour ajuster X et Y indépendamment
uniform vec2 main_uv_scale = vec2(1.0, 1.0); 

uniform sampler2D secondary_texture : source_color;
uniform vec2 secondary_uv_scale = vec2(1.0, 1.0);

uniform sampler2D blend_noise : source_color;

void fragment() {
    // Multiplie l'UV par le vector 2D (ex: scale.x sur UV.x, scale.y sur UV.y)
    vec2 main_uv = UV * main_uv_scale;
    vec4 main_albedo = texture(main_texture, main_uv);

    vec2 secondary_uv = UV * secondary_uv_scale;
    vec4 secondary_albedo = texture(secondary_texture, secondary_uv);

    vec4 blend_noise_texture = texture(blend_noise, UV);

    vec3 final_albedo = mix(main_albedo.rgb, secondary_albedo.rgb, blend_noise_texture.rgb);

    // Note : Votre conversion RGB -> HSV -> RGB était neutre (faisait un aller-retour sans modificateur).
    // On peut assigner directement pour simplifier et optimiser les performances :
    ALBEDO = final_albedo;
}