VegetationDepth.glsl 924 B

1234567891011121314151617181920212223242526272829303132
  1. #include "Uniforms.glsl"
  2. #include "Transform.glsl"
  3. uniform float cWindHeightFactor;
  4. uniform float cWindHeightPivot;
  5. uniform float cWindPeriod;
  6. uniform vec2 cWindWorldSpacing;
  7. #ifdef WINDSTEMAXIS
  8. uniform vec3 cWindStemAxis;
  9. #endif
  10. varying vec3 vTexCoord;
  11. void VS()
  12. {
  13. mat4 modelMatrix = iModelMatrix;
  14. vec3 worldPos = GetWorldPos(modelMatrix);
  15. #ifdef WINDSTEMAXIS
  16. float stemDistance = dot(iPos.xyz, cWindStemAxis);
  17. #else
  18. float stemDistance = iPos.y;
  19. #endif
  20. float windStrength = max(stemDistance - cWindHeightPivot, 0.0) * cWindHeightFactor;
  21. float windPeriod = cElapsedTime * cWindPeriod + dot(worldPos.xz, cWindWorldSpacing);
  22. worldPos.x += windStrength * sin(windPeriod);
  23. worldPos.z -= windStrength * cos(windPeriod);
  24. gl_Position = GetClipPos(worldPos);
  25. vTexCoord = vec3(GetTexCoord(iTexCoord), GetDepth(gl_Position));
  26. }