mesh.frag.ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /**
  2. * Copyright (c) 2018-2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
  3. *
  4. * @author Alexander Rose <alexander.rose@weirdbyte.de>
  5. */
  6. export default `
  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. #include wboit_params
  16. void main() {
  17. #include clip_pixel
  18. // Workaround for buggy gl_FrontFacing (e.g. on some integrated Intel GPUs)
  19. #if defined(enabledStandardDerivatives)
  20. vec3 fdx = dFdx(vViewPosition);
  21. vec3 fdy = dFdy(vViewPosition);
  22. vec3 faceNormal = normalize(cross(fdx,fdy));
  23. bool frontFacing = dot(vNormal, faceNormal) > 0.0;
  24. #else
  25. bool frontFacing = dot(vNormal, vViewPosition) < 0.0;
  26. #endif
  27. #if defined(dFlipSided)
  28. interior = frontFacing;
  29. #else
  30. interior = !frontFacing;
  31. #endif
  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_color)
  39. #ifdef dIgnoreLight
  40. gl_FragColor = material;
  41. #else
  42. #if defined(dFlatShaded) && defined(enabledStandardDerivatives)
  43. vec3 normal = -faceNormal;
  44. #else
  45. vec3 normal = -normalize(vNormal);
  46. #ifdef dDoubleSided
  47. normal = normal * (float(frontFacing) * 2.0 - 1.0);
  48. #endif
  49. #endif
  50. #include apply_light_color
  51. #endif
  52. #include apply_interior_color
  53. #include apply_marker_color
  54. #include apply_fog
  55. float absFragDepth = abs(gl_FragCoord.z);
  56. #include wboit_write
  57. #endif
  58. }
  59. `;