diff --git a/src/viewport/terrain_contour.gdshader b/src/viewport/terrain_contour.gdshader index ae8feb3..225a6f7 100644 --- a/src/viewport/terrain_contour.gdshader +++ b/src/viewport/terrain_contour.gdshader @@ -94,6 +94,8 @@ vec2 warp(vec2 g) { // Achsen mehr, keine harten Nähte. Quest-Kosten: 3 Albedo-Fetches je Material // (nur 1 Material in ~allen Pixeln, die Mischzone nimmt 2). Danach Makro- // Variation: Helligkeit (~35 m) + Farbstich (~120 m), je 1 Value-Noise. +uniform float detail_kontrast = 1.3; // >1 = Büschel/Steine kräftiger (Hex-Mischung glättet sonst) + vec3 alb_hex(float id, vec2 wp, vec2 gx, vec2 gy) { float T = max(tile_size, 0.05); vec2 st = wp / T * 1.7320508; // sqrt(3): Dreieckskante ≈ 0,58 Kachel (größer = weniger Mischzone) @@ -124,7 +126,7 @@ vec3 alb_hex(float id, vec2 wp, vec2 gx, vec2 gy) { // Kontrast-Erhalt: Mischen dreier Abtastungen glättet auf den Mittelwert → // Abweichung vom Mittelwert (grober Mip) durch ||w|| teilen. vec3 mean_c = textureLod(albedo_array, vec3(0.5, 0.5, id), 8.0).rgb; - acc = mean_c + (acc - mean_c) / max(wn, 0.577); + acc = mean_c + (acc - mean_c) * (detail_kontrast / max(wn, 0.577)); float bright = mix(0.86, 1.12, vnoise(wp * 0.028 + vec2(17.0, 3.0))); float tint = vnoise(wp * 0.0085 + vec2(5.0, 41.0)) - 0.5; vec3 col = acc * bright;