Gras Shader Problem gelöst
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user