Water.js 1.5 KB

1234567891011121314151617181920212223242526272829303132
  1. //This file is automatically rebuilt by the Cesium build process.
  2. export default "uniform sampler2D specularMap;\n\
  3. uniform sampler2D normalMap;\n\
  4. uniform vec4 baseWaterColor;\n\
  5. uniform vec4 blendColor;\n\
  6. uniform float frequency;\n\
  7. uniform float animationSpeed;\n\
  8. uniform float amplitude;\n\
  9. uniform float specularIntensity;\n\
  10. uniform float fadeFactor;\n\
  11. czm_material czm_getMaterial(czm_materialInput materialInput)\n\
  12. {\n\
  13. czm_material material = czm_getDefaultMaterial(materialInput);\n\
  14. float time = czm_frameNumber * animationSpeed;\n\
  15. float fade = max(1.0, (length(materialInput.positionToEyeEC) / 10000000000.0) * frequency * fadeFactor);\n\
  16. float specularMapValue = texture2D(specularMap, materialInput.st).r;\n\
  17. vec4 noise = czm_getWaterNoise(normalMap, materialInput.st * frequency, time, 0.0);\n\
  18. vec3 normalTangentSpace = noise.xyz * vec3(1.0, 1.0, (1.0 / amplitude));\n\
  19. normalTangentSpace.xy /= fade;\n\
  20. normalTangentSpace = mix(vec3(0.0, 0.0, 50.0), normalTangentSpace, specularMapValue);\n\
  21. normalTangentSpace = normalize(normalTangentSpace);\n\
  22. float tsPerturbationRatio = clamp(dot(normalTangentSpace, vec3(0.0, 0.0, 1.0)), 0.0, 1.0);\n\
  23. material.alpha = specularMapValue;\n\
  24. material.diffuse = mix(blendColor.rgb, baseWaterColor.rgb, specularMapValue);\n\
  25. material.diffuse += (0.1 * tsPerturbationRatio);\n\
  26. material.diffuse = material.diffuse;\n\
  27. material.normal = normalize(materialInput.tangentToEyeMatrix * normalTangentSpace);\n\
  28. material.specular = specularIntensity;\n\
  29. material.shininess = 10.0;\n\
  30. return material;\n\
  31. }\n\
  32. ";