lighting-model-fsh.glsl 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. #define STANDARD
  2. #ifdef PHYSICAL
  3. #define IOR
  4. #define USE_SPECULAR
  5. #endif
  6. uniform vec3 diffuse;
  7. uniform vec3 emissive;
  8. uniform float roughness;
  9. uniform float metalness;
  10. uniform float opacity;
  11. #ifdef IOR
  12. uniform float ior;
  13. #endif
  14. #ifdef USE_SPECULAR
  15. uniform float specularIntensity;
  16. uniform vec3 specularColor;
  17. #ifdef USE_SPECULAR_COLORMAP
  18. uniform sampler2D specularColorMap;
  19. #endif
  20. #ifdef USE_SPECULAR_INTENSITYMAP
  21. uniform sampler2D specularIntensityMap;
  22. #endif
  23. #endif
  24. #ifdef USE_CLEARCOAT
  25. uniform float clearcoat;
  26. uniform float clearcoatRoughness;
  27. #endif
  28. #ifdef USE_IRIDESCENCE
  29. uniform float iridescence;
  30. uniform float iridescenceIOR;
  31. uniform float iridescenceThicknessMinimum;
  32. uniform float iridescenceThicknessMaximum;
  33. #endif
  34. #ifdef USE_SHEEN
  35. uniform vec3 sheenColor;
  36. uniform float sheenRoughness;
  37. #ifdef USE_SHEEN_COLORMAP
  38. uniform sampler2D sheenColorMap;
  39. #endif
  40. #ifdef USE_SHEEN_ROUGHNESSMAP
  41. uniform sampler2D sheenRoughnessMap;
  42. #endif
  43. #endif
  44. #ifdef USE_ANISOTROPY
  45. uniform vec2 anisotropyVector;
  46. #ifdef USE_ANISOTROPYMAP
  47. uniform sampler2D anisotropyMap;
  48. #endif
  49. #endif
  50. varying vec3 vViewPosition;
  51. #include <common>
  52. #include <packing>
  53. #include <dithering_pars_fragment>
  54. #include <color_pars_fragment>
  55. #include <uv_pars_fragment>
  56. #include <map_pars_fragment>
  57. #include <alphamap_pars_fragment>
  58. #include <alphatest_pars_fragment>
  59. #include <alphahash_pars_fragment>
  60. #include <aomap_pars_fragment>
  61. #include <lightmap_pars_fragment>
  62. #include <emissivemap_pars_fragment>
  63. #include <iridescence_fragment>
  64. #include <cube_uv_reflection_fragment>
  65. #include <envmap_common_pars_fragment>
  66. #include <envmap_physical_pars_fragment>
  67. #include <fog_pars_fragment>
  68. #include <lights_pars_begin>
  69. #include <normal_pars_fragment>
  70. #include <lights_physical_pars_fragment>
  71. #include <transmission_pars_fragment>
  72. #include <shadowmap_pars_fragment>
  73. #include <bumpmap_pars_fragment>
  74. #include <normalmap_pars_fragment>
  75. #include <clearcoat_pars_fragment>
  76. #include <iridescence_pars_fragment>
  77. #include <roughnessmap_pars_fragment>
  78. #include <metalnessmap_pars_fragment>
  79. #include <logdepthbuf_pars_fragment>
  80. #include <clipping_planes_pars_fragment>
  81. varying vec3 vWorldNormal;
  82. void main() {
  83. #include <clipping_planes_fragment>
  84. vec4 diffuseColor = vec4( diffuse, opacity );
  85. ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
  86. vec3 totalEmissiveRadiance = emissive;
  87. #include <logdepthbuf_fragment>
  88. #include <map_fragment>
  89. #include <color_fragment>
  90. #include <alphamap_fragment>
  91. #include <alphatest_fragment>
  92. #include <alphahash_fragment>
  93. #include <roughnessmap_fragment>
  94. #include <metalnessmap_fragment>
  95. #include <normal_fragment_begin>
  96. #include <normal_fragment_maps>
  97. #include <clearcoat_normal_fragment_begin>
  98. #include <clearcoat_normal_fragment_maps>
  99. #include <emissivemap_fragment>
  100. #include <lights_physical_fragment>
  101. #include <lights_fragment_begin>
  102. #include <lights_fragment_maps>
  103. #include <lights_fragment_end>
  104. #include <aomap_fragment>
  105. vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;
  106. vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;
  107. #include <transmission_fragment>
  108. vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;
  109. #ifdef USE_SHEEN
  110. float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );
  111. outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;
  112. #endif
  113. #ifdef USE_CLEARCOAT
  114. float dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );
  115. vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );
  116. outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;
  117. #endif
  118. #include <opaque_fragment>
  119. #include <tonemapping_fragment>
  120. #include <colorspace_fragment>
  121. #include <fog_fragment>
  122. #include <premultiplied_alpha_fragment>
  123. #include <dithering_fragment>
  124. }