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; }