Terrain-Shader: Ganzzahl-Hash statt sin()-Hash im Kanten-Warp (gerade harte Kanten weg)
Sly 25.10.: nah gezoomt gerade, rechteckige harte Kanten in den Verläufen. Ursache: sin() großer Argumente ist auf der GPU ungenau, die Warp-Noise bekam rasterförmige Sprünge. Mit malentest.svmap reproduziert (ohne Warp weg, mit Ganzzahl-Hash weg, Warp bleibt organisch). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
5a70824dd5
commit
9f2a32df70
1 changed files with 8 additions and 1 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue