meshphysical_frag.glsl.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. export default /* glsl */`
  2. #define STANDARD
  3. #ifdef PHYSICAL
  4. #define IOR
  5. #define SPECULAR
  6. #endif
  7. uniform vec3 diffuse;
  8. uniform vec3 emissive;
  9. uniform float roughness;
  10. uniform float metalness;
  11. uniform float opacity;
  12. #ifdef IOR
  13. uniform float ior;
  14. #endif
  15. #ifdef SPECULAR
  16. uniform float specularIntensity;
  17. uniform vec3 specularTint;
  18. #ifdef USE_SPECULARINTENSITYMAP
  19. uniform sampler2D specularIntensityMap;
  20. #endif
  21. #ifdef USE_SPECULARTINTMAP
  22. uniform sampler2D specularTintMap;
  23. #endif
  24. #endif
  25. #ifdef USE_CLEARCOAT
  26. uniform float clearcoat;
  27. uniform float clearcoatRoughness;
  28. #endif
  29. #ifdef USE_SHEEN
  30. uniform vec3 sheenTint;
  31. uniform float sheenRoughness;
  32. #endif
  33. varying vec3 vViewPosition;
  34. #include <common>
  35. #include <packing>
  36. #include <dithering_pars_fragment>
  37. #include <color_pars_fragment>
  38. #include <uv_pars_fragment>
  39. #include <uv2_pars_fragment>
  40. #include <map_pars_fragment>
  41. #include <alphamap_pars_fragment>
  42. #include <alphatest_pars_fragment>
  43. #include <aomap_pars_fragment>
  44. #include <lightmap_pars_fragment>
  45. #include <emissivemap_pars_fragment>
  46. #include <bsdfs>
  47. #include <cube_uv_reflection_fragment>
  48. #include <envmap_common_pars_fragment>
  49. #include <envmap_physical_pars_fragment>
  50. #include <fog_pars_fragment>
  51. #include <lights_pars_begin>
  52. #include <normal_pars_fragment>
  53. #include <lights_physical_pars_fragment>
  54. #include <transmission_pars_fragment>
  55. #include <shadowmap_pars_fragment>
  56. #include <bumpmap_pars_fragment>
  57. #include <normalmap_pars_fragment>
  58. #include <clearcoat_pars_fragment>
  59. #include <roughnessmap_pars_fragment>
  60. #include <metalnessmap_pars_fragment>
  61. #include <logdepthbuf_pars_fragment>
  62. #include <clipping_planes_pars_fragment>
  63. void main() {
  64. #include <clipping_planes_fragment>
  65. vec4 diffuseColor = vec4( diffuse, opacity );
  66. ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
  67. vec3 totalEmissiveRadiance = emissive;
  68. #include <logdepthbuf_fragment>
  69. #include <map_fragment>
  70. #include <color_fragment>
  71. #include <alphamap_fragment>
  72. #include <alphatest_fragment>
  73. #include <roughnessmap_fragment>
  74. #include <metalnessmap_fragment>
  75. #include <normal_fragment_begin>
  76. #include <normal_fragment_maps>
  77. #include <clearcoat_normal_fragment_begin>
  78. #include <clearcoat_normal_fragment_maps>
  79. #include <emissivemap_fragment>
  80. // accumulation
  81. #include <lights_physical_fragment>
  82. #include <lights_fragment_begin>
  83. #include <lights_fragment_maps>
  84. #include <lights_fragment_end>
  85. // modulation
  86. #include <aomap_fragment>
  87. vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;
  88. vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;
  89. #include <transmission_fragment>
  90. vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;
  91. #ifdef USE_CLEARCOAT
  92. float dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );
  93. vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );
  94. outgoingLight = outgoingLight * ( 1.0 - clearcoat * Fcc ) + clearcoatSpecular * clearcoat;
  95. #endif
  96. #include <output_fragment>
  97. #include <tonemapping_fragment>
  98. #include <encodings_fragment>
  99. #include <fog_fragment>
  100. #include <premultiplied_alpha_fragment>
  101. #include <dithering_fragment>
  102. }
  103. `;