meshlambert_frag.glsl.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. export default /* glsl */`
  2. uniform vec3 diffuse;
  3. uniform vec3 emissive;
  4. uniform float opacity;
  5. varying vec3 vLightFront;
  6. varying vec3 vIndirectFront;
  7. #ifdef DOUBLE_SIDED
  8. varying vec3 vLightBack;
  9. varying vec3 vIndirectBack;
  10. #endif
  11. #include <common>
  12. #include <packing>
  13. #include <dithering_pars_fragment>
  14. #include <color_pars_fragment>
  15. #include <uv_pars_fragment>
  16. #include <uv2_pars_fragment>
  17. #include <map_pars_fragment>
  18. #include <alphamap_pars_fragment>
  19. #include <aomap_pars_fragment>
  20. #include <lightmap_pars_fragment>
  21. #include <emissivemap_pars_fragment>
  22. #include <envmap_common_pars_fragment>
  23. #include <envmap_pars_fragment>
  24. #include <cube_uv_reflection_fragment>
  25. #include <bsdfs>
  26. #include <lights_pars_begin>
  27. #include <fog_pars_fragment>
  28. #include <shadowmap_pars_fragment>
  29. #include <shadowmask_pars_fragment>
  30. #include <specularmap_pars_fragment>
  31. #include <logdepthbuf_pars_fragment>
  32. #include <clipping_planes_pars_fragment>
  33. void main() {
  34. #include <clipping_planes_fragment>
  35. vec4 diffuseColor = vec4( diffuse, opacity );
  36. ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
  37. vec3 totalEmissiveRadiance = emissive;
  38. #include <logdepthbuf_fragment>
  39. #include <map_fragment>
  40. #include <color_fragment>
  41. #include <alphamap_fragment>
  42. #include <alphatest_fragment>
  43. #include <transparent_fragment>
  44. #include <specularmap_fragment>
  45. #include <emissivemap_fragment>
  46. // accumulation
  47. reflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );
  48. #ifdef DOUBLE_SIDED
  49. reflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;
  50. #else
  51. reflectedLight.indirectDiffuse += vIndirectFront;
  52. #endif
  53. #include <lightmap_fragment>
  54. reflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );
  55. #ifdef DOUBLE_SIDED
  56. reflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;
  57. #else
  58. reflectedLight.directDiffuse = vLightFront;
  59. #endif
  60. reflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();
  61. // modulation
  62. #include <aomap_fragment>
  63. vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;
  64. #include <envmap_fragment>
  65. gl_FragColor = vec4( outgoingLight, diffuseColor.a );
  66. #include <tonemapping_fragment>
  67. #include <encodings_fragment>
  68. #include <fog_fragment>
  69. #include <premultiplied_alpha_fragment>
  70. #include <dithering_fragment>
  71. }
  72. `;