mesh.frag.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /**
  2. * Copyright (c) 2018-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
  3. *
  4. * @author Alexander Rose <alexander.rose@weirdbyte.de>
  5. */
  6. export const mesh_frag = `
  7. precision highp float;
  8. precision highp int;
  9. #include common
  10. #include common_frag_params
  11. #include color_frag_params
  12. #include light_frag_params
  13. #include normal_frag_params
  14. #include common_clip
  15. void main() {
  16. #include clip_pixel
  17. // Workaround for buggy gl_FrontFacing (e.g. on some integrated Intel GPUs)
  18. #if defined(enabledStandardDerivatives)
  19. vec3 fdx = dFdx(vViewPosition);
  20. vec3 fdy = dFdy(vViewPosition);
  21. vec3 faceNormal = normalize(cross(fdx,fdy));
  22. bool frontFacing = dot(vNormal, faceNormal) > 0.0;
  23. #else
  24. bool frontFacing = dot(vNormal, vViewPosition) < 0.0;
  25. #endif
  26. #if defined(dFlipSided)
  27. interior = frontFacing;
  28. #else
  29. interior = !frontFacing;
  30. #endif
  31. float fragmentDepth = gl_FragCoord.z;
  32. #include assign_material_color
  33. #if defined(dRenderVariant_pick)
  34. #include check_picking_alpha
  35. gl_FragColor = material;
  36. #elif defined(dRenderVariant_depth)
  37. gl_FragColor = material;
  38. #elif defined(dRenderVariant_marking)
  39. gl_FragColor = material;
  40. #elif defined(dRenderVariant_color)
  41. #ifdef dIgnoreLight
  42. gl_FragColor = material;
  43. #else
  44. #if defined(dFlatShaded) && defined(enabledStandardDerivatives)
  45. vec3 normal = -faceNormal;
  46. #else
  47. vec3 normal = -normalize(vNormal);
  48. #ifdef dDoubleSided
  49. normal = normal * (float(frontFacing) * 2.0 - 1.0);
  50. #endif
  51. #endif
  52. #include apply_light_color
  53. #endif
  54. #include apply_interior_color
  55. #include apply_marker_color
  56. #include apply_fog
  57. #include wboit_write
  58. #endif
  59. }
  60. `;