Terrain-Shader: detail_kontrast (1,3) gegen blasse Büschel nach Hex-Tiling

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
slyphax 2026-10-25 09:50:20 +01:00
parent a1f386f5e6
commit b1d8f7626d

View file

@ -94,6 +94,8 @@ vec2 warp(vec2 g) {
// Achsen mehr, keine harten Nähte. Quest-Kosten: 3 Albedo-Fetches je Material // 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- // (nur 1 Material in ~allen Pixeln, die Mischzone nimmt 2). Danach Makro-
// Variation: Helligkeit (~35 m) + Farbstich (~120 m), je 1 Value-Noise. // 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) { vec3 alb_hex(float id, vec2 wp, vec2 gx, vec2 gy) {
float T = max(tile_size, 0.05); float T = max(tile_size, 0.05);
vec2 st = wp / T * 1.7320508; // sqrt(3): Dreieckskante ≈ 0,58 Kachel (größer = weniger Mischzone) 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 → // Kontrast-Erhalt: Mischen dreier Abtastungen glättet auf den Mittelwert →
// Abweichung vom Mittelwert (grober Mip) durch ||w|| teilen. // Abweichung vom Mittelwert (grober Mip) durch ||w|| teilen.
vec3 mean_c = textureLod(albedo_array, vec3(0.5, 0.5, id), 8.0).rgb; 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 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; float tint = vnoise(wp * 0.0085 + vec2(5.0, 41.0)) - 0.5;
vec3 col = acc * bright; vec3 col = acc * bright;