VegetationDepth.hlsl 1.0 KB

1234567891011121314151617181920212223242526272829303132
  1. #include "Uniforms.hlsl"
  2. #include "Samplers.hlsl"
  3. #include "Transform.hlsl"
  4. uniform float cWindHeightFactor;
  5. uniform float cWindHeightPivot;
  6. uniform float cWindPeriod;
  7. uniform float2 cWindWorldSpacing;
  8. void VS(float4 iPos : POSITION,
  9. #ifdef SKINNED
  10. float4 iBlendWeights : BLENDWEIGHT,
  11. int4 iBlendIndices : BLENDINDICES,
  12. #endif
  13. #ifdef INSTANCED
  14. float4x3 iModelInstance : TEXCOORD2,
  15. #endif
  16. float2 iTexCoord : TEXCOORD0,
  17. out float3 oTexCoord : TEXCOORD0,
  18. out float4 oPos : POSITION)
  19. {
  20. float4x3 modelMatrix = iModelMatrix;
  21. float3 worldPos = GetWorldPos(modelMatrix);
  22. float windStrength = max(iPos.y - cWindHeightPivot, 0.0) * cWindHeightFactor;
  23. float windPeriod = cElapsedTime * cWindPeriod + dot(worldPos.xz, cWindWorldSpacing);
  24. worldPos.x += windStrength * sin(windPeriod);
  25. worldPos.z -= windStrength * cos(windPeriod);
  26. oPos = GetClipPos(worldPos);
  27. oTexCoord = float3(GetTexCoord(iTexCoord), GetDepth(oPos));
  28. }