PolylineShadowVolumeMorphFS.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435
  1. //This file is automatically rebuilt by the Cesium build process.
  2. export default "varying vec3 v_forwardDirectionEC;\n\
  3. varying vec3 v_texcoordNormalizationAndHalfWidth;\n\
  4. varying float v_batchId;\n\
  5. #ifdef PER_INSTANCE_COLOR\n\
  6. varying vec4 v_color;\n\
  7. #else\n\
  8. varying vec2 v_alignedPlaneDistances;\n\
  9. varying float v_texcoordT;\n\
  10. #endif\n\
  11. float rayPlaneDistanceUnsafe(vec3 origin, vec3 direction, vec3 planeNormal, float planeDistance) {\n\
  12. return (-planeDistance - dot(planeNormal, origin)) / dot(planeNormal, direction);\n\
  13. }\n\
  14. void main(void)\n\
  15. {\n\
  16. vec4 eyeCoordinate = gl_FragCoord;\n\
  17. eyeCoordinate /= eyeCoordinate.w;\n\
  18. #ifdef PER_INSTANCE_COLOR\n\
  19. gl_FragColor = czm_gammaCorrect(v_color);\n\
  20. #else // PER_INSTANCE_COLOR\n\
  21. float distanceFromStart = rayPlaneDistanceUnsafe(eyeCoordinate.xyz, -v_forwardDirectionEC, v_forwardDirectionEC.xyz, v_alignedPlaneDistances.x);\n\
  22. float distanceFromEnd = rayPlaneDistanceUnsafe(eyeCoordinate.xyz, v_forwardDirectionEC, -v_forwardDirectionEC.xyz, v_alignedPlaneDistances.y);\n\
  23. distanceFromStart = max(0.0, distanceFromStart);\n\
  24. distanceFromEnd = max(0.0, distanceFromEnd);\n\
  25. float s = distanceFromStart / (distanceFromStart + distanceFromEnd);\n\
  26. s = (s * v_texcoordNormalizationAndHalfWidth.x) + v_texcoordNormalizationAndHalfWidth.y;\n\
  27. czm_materialInput materialInput;\n\
  28. materialInput.s = s;\n\
  29. materialInput.st = vec2(s, v_texcoordT);\n\
  30. materialInput.str = vec3(s, v_texcoordT, 0.0);\n\
  31. czm_material material = czm_getMaterial(materialInput);\n\
  32. gl_FragColor = vec4(material.diffuse + material.emission, material.alpha);\n\
  33. #endif // PER_INSTANCE_COLOR\n\
  34. }\n\
  35. ";