ModelFS.glsl 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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(0.0);
  10. material.specular = vec3(1.0);
  11. material.roughness = 1.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. #endif
  25. return vec4(color, alpha);
  26. }
  27. SelectedFeature selectedFeature;
  28. void main()
  29. {
  30. #ifdef HAS_MODEL_SPLITTER
  31. modelSplitterStage();
  32. #endif
  33. czm_modelMaterial material = defaultModelMaterial();
  34. ProcessedAttributes attributes;
  35. geometryStage(attributes);
  36. FeatureIds featureIds;
  37. featureIdStage(featureIds, attributes);
  38. Metadata metadata;
  39. MetadataClass metadataClass;
  40. MetadataStatistics metadataStatistics;
  41. metadataStage(metadata, metadataClass, metadataStatistics, attributes);
  42. #ifdef HAS_SELECTED_FEATURE_ID
  43. selectedFeatureIdStage(selectedFeature, featureIds);
  44. #endif
  45. #ifndef CUSTOM_SHADER_REPLACE_MATERIAL
  46. materialStage(material, attributes, selectedFeature);
  47. #endif
  48. #ifdef HAS_CUSTOM_FRAGMENT_SHADER
  49. customShaderStage(material, attributes, featureIds, metadata, metadataClass, metadataStatistics);
  50. #endif
  51. lightingStage(material, attributes);
  52. #ifdef HAS_SELECTED_FEATURE_ID
  53. cpuStylingStage(material, selectedFeature);
  54. #endif
  55. #ifdef HAS_MODEL_COLOR
  56. modelColorStage(material);
  57. #endif
  58. #ifdef HAS_PRIMITIVE_OUTLINE
  59. primitiveOutlineStage(material);
  60. #endif
  61. vec4 color = handleAlpha(material.diffuse, material.alpha);
  62. #ifdef HAS_CLIPPING_PLANES
  63. modelClippingPlanesStage(color);
  64. #endif
  65. #if defined(HAS_SILHOUETTE) && defined(HAS_NORMALS)
  66. silhouetteStage(color);
  67. #endif
  68. out_FragColor = color;
  69. }