diff --git a/src/viewport/terrain_contour.gdshader b/src/viewport/terrain_contour.gdshader index d168f14..e6a0654 100644 --- a/src/viewport/terrain_contour.gdshader +++ b/src/viewport/terrain_contour.gdshader @@ -63,8 +63,15 @@ void vertex() { // 1-m-Raster — ohne Störung zeichnet die bilineare Mischung dessen Treppen // nach. Ein leichter Domain-Warp (Value-Noise in Rasterzellen, ±0,45 Zelle) // verwackelt die Abtaststelle, die Kante wird unregelmäßig wie echter Boden. +// Ganzzahl-Hash statt sin()-Hash (Karte 25.10.): sin() großer Argumente ist +// auf der GPU ungenau — die Noise bekam gerade, rasterförmige Sprünge, die +// als harte Kanten durch die Verläufe liefen (Sly-Befund, nah gezoomt). float hash2(vec2 p) { - return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453); + uvec2 q = uvec2(ivec2(p) + ivec2(4096)); + uint h = q.x * 1597334677u ^ q.y * 3812015801u; + h = (h ^ (h >> 16u)) * 2246822519u; + h = h ^ (h >> 13u); + return float(h & 65535u) / 65535.0; } float vnoise(vec2 p) {