shader_type spatial;
render_mode blend_mix, depth_draw_always, diffuse_burley, specular_schlick_ggx;

uniform vec3 colore_sabbia : source_color = vec3(0.9, 0.85, 0.7);
uniform vec3 colore_solco : source_color = vec3(0.75, 0.7, 0.55); // Colore più scuro
uniform float frequenza = 10.0;
uniform float inclinazione_normale : hint_range(0.0, 2.0) = 0.8;
uniform float ampiezza_ombra : hint_range(0.0, 1.0) = 0.3; // Quanto è larga la riga scura

varying vec3 world_pos;

void vertex() {
    world_pos = (MODEL_MATRIX * vec4(VERTEX, 1.0)).xyz;
}

void fragment() {
    float riga = fract(world_pos.x * frequenza);
    
    // --- LOGICA COLORE (RAFFORZAMENTO) ---
    // Creiamo una "valle" scura al centro del solco (intorno a 0.5)
    float maschera_colore = smoothstep(0.5 - ampiezza_ombra, 0.5, riga) - smoothstep(0.5, 0.5 + ampiezza_ombra, riga);
    // Invertiamo o regoliamo per avere il fondo scuro
    vec3 colore_finale = mix(colore_sabbia, colore_solco, maschera_colore);
    
    // --- LOGICA NORMALE ---
    float lato = sign(riga - 0.5);
    vec3 n = NORMAL;
    n.x += lato * inclinazione_normale;
    
    ALBEDO = colore_finale;
    NORMAL = normalize(n);
    ROUGHNESS = 0.8;
}