ModelExperimentalFS.glsl 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #if defined(HAS_NORMALS) && !defined(HAS_TANGENTS) && !defined(LIGHTING_UNLIT)
  2. #ifdef GL_OES_standard_derivatives
  3. #extension GL_OES_standard_derivatives : enable
  4. #endif
  5. #endif
  6. czm_modelMaterial defaultModelMaterial()
  7. {
  8. czm_modelMaterial material;
  9. material.diffuse = vec3(1.0);
  10. material.specular = vec3(0.04); // dielectric (non-metal)
  11. material.roughness = 0.0;
  12. material.occlusion = 1.0;
  13. material.normalEC = vec3(0.0, 0.0, 1.0);
  14. material.emissive = vec3(0.0);
  15. material.alpha = 1.0;
  16. return material;
  17. }
  18. vec4 handleAlpha(vec3 color, float alpha)
  19. {
  20. #ifdef ALPHA_MODE_MASK
  21. if (alpha < u_alphaCutoff) {
  22. discard;
  23. }
  24. return vec4(color, 1.0);
  25. #elif defined(ALPHA_MODE_BLEND)
  26. return vec4(color, alpha);
  27. #else // OPAQUE
  28. return vec4(color, 1.0);
  29. #endif
  30. }
  31. SelectedFeature selectedFeature;
  32. void main()
  33. {
  34. #ifdef HAS_MODEL_SPLITTER
  35. modelSplitterStage();
  36. #endif
  37. czm_modelMaterial material = defaultModelMaterial();
  38. ProcessedAttributes attributes;
  39. geometryStage(attributes);
  40. FeatureIds featureIds;
  41. featureIdStage(featureIds, attributes);
  42. Metadata metadata;
  43. metadataStage(metadata, attributes);
  44. #ifdef HAS_SELECTED_FEATURE_ID
  45. selectedFeatureIdStage(selectedFeature, featureIds);
  46. #endif
  47. #ifndef CUSTOM_SHADER_REPLACE_MATERIAL
  48. materialStage(material, attributes, selectedFeature);
  49. #endif
  50. #ifdef HAS_CUSTOM_FRAGMENT_SHADER
  51. customShaderStage(material, attributes, featureIds, metadata);
  52. #endif
  53. lightingStage(material, attributes);
  54. #ifdef HAS_SELECTED_FEATURE_ID
  55. cpuStylingStage(material, selectedFeature);
  56. #endif
  57. #ifdef HAS_MODEL_COLOR
  58. modelColorStage(material);
  59. #endif
  60. vec4 color = handleAlpha(material.diffuse, material.alpha);
  61. #ifdef HAS_CLIPPING_PLANES
  62. modelClippingPlanesStage(color);
  63. #endif
  64. gl_FragColor = color;
  65. }