Gras Shader Problem gelöst

This commit is contained in:
2026-07-15 19:09:49 +02:00
parent 975161e2cc
commit cdaaba3841
2 changed files with 11 additions and 11 deletions

View File

@@ -9,7 +9,7 @@ uniform vec2 m_WindDir; // normierter XZ-Windvektor
in vec3 inPosition;
in vec3 inNormal;
in vec4 inColor;
in vec2 inTexCoord; // .x = windFactor (0 = Wurzel, 1 = Spitze)
in vec2 inTexCoord; // .x = windFactor (0=Wurzel, 1=Spitze) .y = randPhase (pro Halm, aus Java gebacken)
out vec4 varColor;
out vec3 varNormal;
@@ -25,12 +25,11 @@ void main() {
// Windrichtung (Fallback: Süd)
vec2 windN = (dot(m_WindDir, m_WindDir) > 0.001) ? normalize(m_WindDir) : vec2(0.0, 1.0);
// Wellenfront: Position entlang der Windachse → Halme in Windrichtung erreicht der Impuls später
// randPhase in Java aus der Halm-Wurzel gebacken (hash(bx,bz)*2π) → identisch für
// alle Vertices desselben Halms, kein Breitenflackern bei starkem Wind.
float randPhase = inTexCoord.y;
float wavePhase = dot(worldXZ, windN);
// Zufälliger Phasenversatz pro Halm (Spatial-Hash → kein synchrones Schwingen)
float randPhase = fract(sin(dot(worldXZ, vec2(127.1, 311.7))) * 43758.5453) * 6.2832;
float sway = sin(t * 2.1 + wavePhase * 0.10 + randPhase) * 0.6
+ sin(t * 1.4 + wavePhase * 0.06 + randPhase * 0.73) * 0.4;