getWaterNoise.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. //This file is automatically rebuilt by the Cesium build process.
  2. export default "/**\n\
  3. * @private\n\
  4. */\n\
  5. vec4 czm_getWaterNoise(sampler2D normalMap, vec2 uv, float time, float angleInRadians)\n\
  6. {\n\
  7. float cosAngle = cos(angleInRadians);\n\
  8. float sinAngle = sin(angleInRadians);\n\
  9. \n\
  10. // time dependent sampling directions\n\
  11. vec2 s0 = vec2(1.0/17.0, 0.0);\n\
  12. vec2 s1 = vec2(-1.0/29.0, 0.0);\n\
  13. vec2 s2 = vec2(1.0/101.0, 1.0/59.0);\n\
  14. vec2 s3 = vec2(-1.0/109.0, -1.0/57.0);\n\
  15. \n\
  16. // rotate sampling direction by specified angle\n\
  17. s0 = vec2((cosAngle * s0.x) - (sinAngle * s0.y), (sinAngle * s0.x) + (cosAngle * s0.y));\n\
  18. s1 = vec2((cosAngle * s1.x) - (sinAngle * s1.y), (sinAngle * s1.x) + (cosAngle * s1.y));\n\
  19. s2 = vec2((cosAngle * s2.x) - (sinAngle * s2.y), (sinAngle * s2.x) + (cosAngle * s2.y));\n\
  20. s3 = vec2((cosAngle * s3.x) - (sinAngle * s3.y), (sinAngle * s3.x) + (cosAngle * s3.y));\n\
  21. \n\
  22. vec2 uv0 = (uv/103.0) + (time * s0);\n\
  23. vec2 uv1 = uv/107.0 + (time * s1) + vec2(0.23);\n\
  24. vec2 uv2 = uv/vec2(897.0, 983.0) + (time * s2) + vec2(0.51);\n\
  25. vec2 uv3 = uv/vec2(991.0, 877.0) + (time * s3) + vec2(0.71);\n\
  26. \n\
  27. uv0 = fract(uv0);\n\
  28. uv1 = fract(uv1);\n\
  29. uv2 = fract(uv2);\n\
  30. uv3 = fract(uv3);\n\
  31. vec4 noise = (texture(normalMap, uv0)) +\n\
  32. (texture(normalMap, uv1)) +\n\
  33. (texture(normalMap, uv2)) +\n\
  34. (texture(normalMap, uv3));\n\
  35. \n\
  36. // average and scale to between -1 and 1\n\
  37. return ((noise / 4.0) - 0.5) * 2.0;\n\
  38. }\n\
  39. ";