@babylonjs/viewer 7.31.0 → 7.31.1-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (587) hide show
  1. package/assets/photoStudio.env +0 -0
  2. package/dist/babylon-viewer.esm.js +2 -0
  3. package/dist/babylon-viewer.esm.js.map +1 -0
  4. package/dist/babylon-viewer.esm.min.js +2 -0
  5. package/dist/babylon-viewer.esm.min.js.map +1 -0
  6. package/dist/chunks/EXT_lights_image_based-BvJx05eR.esm.js +172 -0
  7. package/dist/chunks/EXT_lights_image_based-BvJx05eR.esm.js.map +1 -0
  8. package/dist/chunks/EXT_lights_image_based-DCpOVi4F.esm.min.js +2 -0
  9. package/dist/chunks/EXT_lights_image_based-DCpOVi4F.esm.min.js.map +1 -0
  10. package/dist/chunks/EXT_mesh_gpu_instancing-Aj8WYLoB.esm.min.js +2 -0
  11. package/dist/chunks/EXT_mesh_gpu_instancing-Aj8WYLoB.esm.min.js.map +1 -0
  12. package/dist/chunks/EXT_mesh_gpu_instancing-DeQiq7Rp.esm.js +86 -0
  13. package/dist/chunks/EXT_mesh_gpu_instancing-DeQiq7Rp.esm.js.map +1 -0
  14. package/dist/chunks/EXT_meshopt_compression-BUJrjMGk.esm.min.js +2 -0
  15. package/dist/chunks/EXT_meshopt_compression-BUJrjMGk.esm.min.js.map +1 -0
  16. package/dist/chunks/EXT_meshopt_compression-C8oao-uC.esm.js +134 -0
  17. package/dist/chunks/EXT_meshopt_compression-C8oao-uC.esm.js.map +1 -0
  18. package/dist/chunks/EXT_texture_avif-D1QMjckX.esm.js +44 -0
  19. package/dist/chunks/EXT_texture_avif-D1QMjckX.esm.js.map +1 -0
  20. package/dist/chunks/EXT_texture_avif-VUkFAuGP.esm.min.js +2 -0
  21. package/dist/chunks/EXT_texture_avif-VUkFAuGP.esm.min.js.map +1 -0
  22. package/dist/chunks/EXT_texture_webp-146HjboX.esm.js +43 -0
  23. package/dist/chunks/EXT_texture_webp-146HjboX.esm.js.map +1 -0
  24. package/dist/chunks/EXT_texture_webp-CQ3V6L-Z.esm.min.js +2 -0
  25. package/dist/chunks/EXT_texture_webp-CQ3V6L-Z.esm.min.js.map +1 -0
  26. package/dist/chunks/ExtrasAsMetadata-B-b0eXpq.esm.min.js +2 -0
  27. package/dist/chunks/ExtrasAsMetadata-B-b0eXpq.esm.min.js.map +1 -0
  28. package/dist/chunks/ExtrasAsMetadata-CvRbJs7Y.esm.js +64 -0
  29. package/dist/chunks/ExtrasAsMetadata-CvRbJs7Y.esm.js.map +1 -0
  30. package/dist/chunks/KHR_animation_pointer-Bd9hX9iM.esm.js +343 -0
  31. package/dist/chunks/KHR_animation_pointer-Bd9hX9iM.esm.js.map +1 -0
  32. package/dist/chunks/KHR_animation_pointer-ZVVACgFy.esm.min.js +2 -0
  33. package/dist/chunks/KHR_animation_pointer-ZVVACgFy.esm.min.js.map +1 -0
  34. package/dist/chunks/KHR_draco_mesh_compression-DpUmqpkC.esm.js +610 -0
  35. package/dist/chunks/KHR_draco_mesh_compression-DpUmqpkC.esm.js.map +1 -0
  36. package/dist/chunks/KHR_draco_mesh_compression-p7wksBd6.esm.min.js +2 -0
  37. package/dist/chunks/KHR_draco_mesh_compression-p7wksBd6.esm.min.js.map +1 -0
  38. package/dist/chunks/KHR_interactivity-CY6_mqUa.esm.js +4033 -0
  39. package/dist/chunks/KHR_interactivity-CY6_mqUa.esm.js.map +1 -0
  40. package/dist/chunks/KHR_interactivity-pLjiJFEA.esm.min.js +2 -0
  41. package/dist/chunks/KHR_interactivity-pLjiJFEA.esm.min.js.map +1 -0
  42. package/dist/chunks/KHR_lights_punctual-D-B3HTfB.esm.js +1253 -0
  43. package/dist/chunks/KHR_lights_punctual-D-B3HTfB.esm.js.map +1 -0
  44. package/dist/chunks/KHR_lights_punctual-DM6AhIXb.esm.min.js +2 -0
  45. package/dist/chunks/KHR_lights_punctual-DM6AhIXb.esm.min.js.map +1 -0
  46. package/dist/chunks/KHR_materials_anisotropy-JD-27z7k.esm.min.js +2 -0
  47. package/dist/chunks/KHR_materials_anisotropy-JD-27z7k.esm.min.js.map +1 -0
  48. package/dist/chunks/KHR_materials_anisotropy-aSZw9IyE.esm.js +64 -0
  49. package/dist/chunks/KHR_materials_anisotropy-aSZw9IyE.esm.js.map +1 -0
  50. package/dist/chunks/KHR_materials_clearcoat-C3LC9yej.esm.min.js +2 -0
  51. package/dist/chunks/KHR_materials_clearcoat-C3LC9yej.esm.min.js.map +1 -0
  52. package/dist/chunks/KHR_materials_clearcoat-D70aD19M.esm.js +96 -0
  53. package/dist/chunks/KHR_materials_clearcoat-D70aD19M.esm.js.map +1 -0
  54. package/dist/chunks/KHR_materials_diffuse_transmission-BJpc5vXM.esm.min.js +2 -0
  55. package/dist/chunks/KHR_materials_diffuse_transmission-BJpc5vXM.esm.min.js.map +1 -0
  56. package/dist/chunks/KHR_materials_diffuse_transmission-CUKIzwqb.esm.js +97 -0
  57. package/dist/chunks/KHR_materials_diffuse_transmission-CUKIzwqb.esm.js.map +1 -0
  58. package/dist/chunks/KHR_materials_dispersion-BrvP-u4o.esm.min.js +2 -0
  59. package/dist/chunks/KHR_materials_dispersion-BrvP-u4o.esm.min.js.map +1 -0
  60. package/dist/chunks/KHR_materials_dispersion-DcKUTeH9.esm.js +62 -0
  61. package/dist/chunks/KHR_materials_dispersion-DcKUTeH9.esm.js.map +1 -0
  62. package/dist/chunks/KHR_materials_emissive_strength-Btd5m7vH.esm.min.js +2 -0
  63. package/dist/chunks/KHR_materials_emissive_strength-Btd5m7vH.esm.min.js.map +1 -0
  64. package/dist/chunks/KHR_materials_emissive_strength-CObYKHp2.esm.js +55 -0
  65. package/dist/chunks/KHR_materials_emissive_strength-CObYKHp2.esm.js.map +1 -0
  66. package/dist/chunks/KHR_materials_ior-C6PwWHpQ.esm.js +64 -0
  67. package/dist/chunks/KHR_materials_ior-C6PwWHpQ.esm.js.map +1 -0
  68. package/dist/chunks/KHR_materials_ior-Dk1HIJQK.esm.min.js +2 -0
  69. package/dist/chunks/KHR_materials_ior-Dk1HIJQK.esm.min.js.map +1 -0
  70. package/dist/chunks/KHR_materials_iridescence-CCgJ58Df.esm.js +72 -0
  71. package/dist/chunks/KHR_materials_iridescence-CCgJ58Df.esm.js.map +1 -0
  72. package/dist/chunks/KHR_materials_iridescence-CvBFkkon.esm.min.js +2 -0
  73. package/dist/chunks/KHR_materials_iridescence-CvBFkkon.esm.min.js.map +1 -0
  74. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-B9BmLJgU.esm.js +81 -0
  75. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-B9BmLJgU.esm.js.map +1 -0
  76. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-g9x0gvG3.esm.min.js +2 -0
  77. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-g9x0gvG3.esm.min.js.map +1 -0
  78. package/dist/chunks/KHR_materials_sheen-CET8CTK-.esm.js +85 -0
  79. package/dist/chunks/KHR_materials_sheen-CET8CTK-.esm.js.map +1 -0
  80. package/dist/chunks/KHR_materials_sheen-DnzdVL4X.esm.min.js +2 -0
  81. package/dist/chunks/KHR_materials_sheen-DnzdVL4X.esm.min.js.map +1 -0
  82. package/dist/chunks/KHR_materials_specular-DmG_wKGo.esm.min.js +2 -0
  83. package/dist/chunks/KHR_materials_specular-DmG_wKGo.esm.min.js.map +1 -0
  84. package/dist/chunks/KHR_materials_specular-ahqwA4QD.esm.js +75 -0
  85. package/dist/chunks/KHR_materials_specular-ahqwA4QD.esm.js.map +1 -0
  86. package/dist/chunks/KHR_materials_transmission-DHLOex9Y.esm.js +307 -0
  87. package/dist/chunks/KHR_materials_transmission-DHLOex9Y.esm.js.map +1 -0
  88. package/dist/chunks/KHR_materials_transmission-DcId_Onf.esm.min.js +2 -0
  89. package/dist/chunks/KHR_materials_transmission-DcId_Onf.esm.min.js.map +1 -0
  90. package/dist/chunks/KHR_materials_unlit-CHJoZvcR.esm.js +74 -0
  91. package/dist/chunks/KHR_materials_unlit-CHJoZvcR.esm.js.map +1 -0
  92. package/dist/chunks/KHR_materials_unlit-DrzO1lju.esm.min.js +2 -0
  93. package/dist/chunks/KHR_materials_unlit-DrzO1lju.esm.min.js.map +1 -0
  94. package/dist/chunks/KHR_materials_variants-3TC03wwa.esm.min.js +2 -0
  95. package/dist/chunks/KHR_materials_variants-3TC03wwa.esm.min.js.map +1 -0
  96. package/dist/chunks/KHR_materials_variants-C9HWH1dv.esm.js +238 -0
  97. package/dist/chunks/KHR_materials_variants-C9HWH1dv.esm.js.map +1 -0
  98. package/dist/chunks/KHR_materials_volume-BO2xW-9s.esm.js +87 -0
  99. package/dist/chunks/KHR_materials_volume-BO2xW-9s.esm.js.map +1 -0
  100. package/dist/chunks/KHR_materials_volume-DtVbjbMX.esm.min.js +2 -0
  101. package/dist/chunks/KHR_materials_volume-DtVbjbMX.esm.min.js.map +1 -0
  102. package/dist/chunks/KHR_mesh_quantization-cS7VwXsz.esm.min.js +2 -0
  103. package/dist/chunks/KHR_mesh_quantization-cS7VwXsz.esm.min.js.map +1 -0
  104. package/dist/chunks/KHR_mesh_quantization-xpIAWri-.esm.js +26 -0
  105. package/dist/chunks/KHR_mesh_quantization-xpIAWri-.esm.js.map +1 -0
  106. package/dist/chunks/KHR_texture_basisu-BMcFnggy.esm.js +43 -0
  107. package/dist/chunks/KHR_texture_basisu-BMcFnggy.esm.js.map +1 -0
  108. package/dist/chunks/KHR_texture_basisu-DSfjiTB-.esm.min.js +2 -0
  109. package/dist/chunks/KHR_texture_basisu-DSfjiTB-.esm.min.js.map +1 -0
  110. package/dist/chunks/KHR_texture_transform-DqWvW9Ik.esm.min.js +2 -0
  111. package/dist/chunks/KHR_texture_transform-DqWvW9Ik.esm.min.js.map +1 -0
  112. package/dist/chunks/KHR_texture_transform-ovyK6lxN.esm.js +63 -0
  113. package/dist/chunks/KHR_texture_transform-ovyK6lxN.esm.js.map +1 -0
  114. package/dist/chunks/KHR_xmp_json_ld-BSjiDN_K.esm.js +51 -0
  115. package/dist/chunks/KHR_xmp_json_ld-BSjiDN_K.esm.js.map +1 -0
  116. package/dist/chunks/KHR_xmp_json_ld-CiYvvYcy.esm.min.js +2 -0
  117. package/dist/chunks/KHR_xmp_json_ld-CiYvvYcy.esm.min.js.map +1 -0
  118. package/dist/chunks/MSFT_audio_emitter-D1yL_xMt.esm.js +2207 -0
  119. package/dist/chunks/MSFT_audio_emitter-D1yL_xMt.esm.js.map +1 -0
  120. package/dist/chunks/MSFT_audio_emitter-DvIfL201.esm.min.js +2 -0
  121. package/dist/chunks/MSFT_audio_emitter-DvIfL201.esm.min.js.map +1 -0
  122. package/dist/chunks/MSFT_lod-D4hkUDJr.esm.min.js +2 -0
  123. package/dist/chunks/MSFT_lod-D4hkUDJr.esm.min.js.map +1 -0
  124. package/dist/chunks/MSFT_lod-HD11Za60.esm.js +337 -0
  125. package/dist/chunks/MSFT_lod-HD11Za60.esm.js.map +1 -0
  126. package/dist/chunks/MSFT_minecraftMesh-BhwNALi5.esm.min.js +2 -0
  127. package/dist/chunks/MSFT_minecraftMesh-BhwNALi5.esm.min.js.map +1 -0
  128. package/dist/chunks/MSFT_minecraftMesh-DL5YTMbg.esm.js +46 -0
  129. package/dist/chunks/MSFT_minecraftMesh-DL5YTMbg.esm.js.map +1 -0
  130. package/dist/chunks/MSFT_sRGBFactors-71DWXYlk.esm.min.js +2 -0
  131. package/dist/chunks/MSFT_sRGBFactors-71DWXYlk.esm.min.js.map +1 -0
  132. package/dist/chunks/MSFT_sRGBFactors-CGm4wJMG.esm.js +47 -0
  133. package/dist/chunks/MSFT_sRGBFactors-CGm4wJMG.esm.js.map +1 -0
  134. package/dist/chunks/animationGroup-BroxOYP7.esm.min.js +2 -0
  135. package/dist/chunks/animationGroup-BroxOYP7.esm.min.js.map +1 -0
  136. package/dist/chunks/animationGroup-CWjaOD9K.esm.js +2479 -0
  137. package/dist/chunks/animationGroup-CWjaOD9K.esm.js.map +1 -0
  138. package/dist/chunks/assetContainer-B2MIAnVN.esm.min.js +2 -0
  139. package/dist/chunks/assetContainer-B2MIAnVN.esm.min.js.map +1 -0
  140. package/dist/chunks/assetContainer-TbbETMsA.esm.js +1720 -0
  141. package/dist/chunks/assetContainer-TbbETMsA.esm.js.map +1 -0
  142. package/dist/chunks/audioEngine-D71VHqbc.esm.js +305 -0
  143. package/dist/chunks/audioEngine-D71VHqbc.esm.js.map +1 -0
  144. package/dist/chunks/audioEngine-DGkNgSHT.esm.min.js +2 -0
  145. package/dist/chunks/audioEngine-DGkNgSHT.esm.min.js.map +1 -0
  146. package/dist/chunks/bakedVertexAnimation-C8gu0Kus.esm.min.js +2 -0
  147. package/dist/chunks/bakedVertexAnimation-C8gu0Kus.esm.min.js.map +1 -0
  148. package/dist/chunks/bakedVertexAnimation-Dr93wvvn.esm.js +119 -0
  149. package/dist/chunks/bakedVertexAnimation-Dr93wvvn.esm.js.map +1 -0
  150. package/dist/chunks/basisTextureLoader-DAzrx7CZ.esm.min.js +2 -0
  151. package/dist/chunks/basisTextureLoader-DAzrx7CZ.esm.min.js.map +1 -0
  152. package/dist/chunks/basisTextureLoader-Dz89vPV_.esm.js +600 -0
  153. package/dist/chunks/basisTextureLoader-Dz89vPV_.esm.js.map +1 -0
  154. package/dist/chunks/dds-CfSJhkp9.esm.min.js +2 -0
  155. package/dist/chunks/dds-CfSJhkp9.esm.min.js.map +1 -0
  156. package/dist/chunks/dds-Dlst-66O.esm.js +540 -0
  157. package/dist/chunks/dds-Dlst-66O.esm.js.map +1 -0
  158. package/dist/chunks/ddsTextureLoader-B6X4vPph.esm.min.js +2 -0
  159. package/dist/chunks/ddsTextureLoader-B6X4vPph.esm.min.js.map +1 -0
  160. package/dist/chunks/ddsTextureLoader-CLO8nENj.esm.js +88 -0
  161. package/dist/chunks/ddsTextureLoader-CLO8nENj.esm.js.map +1 -0
  162. package/dist/chunks/decalFragment-B4RSlkG3.esm.js +18 -0
  163. package/dist/chunks/decalFragment-B4RSlkG3.esm.js.map +1 -0
  164. package/dist/chunks/decalFragment-BWLR7pGp.esm.min.js +2 -0
  165. package/dist/chunks/decalFragment-BWLR7pGp.esm.min.js.map +1 -0
  166. package/dist/chunks/default.fragment-Bj4Iw_SG.esm.js +515 -0
  167. package/dist/chunks/default.fragment-Bj4Iw_SG.esm.js.map +1 -0
  168. package/dist/chunks/default.fragment-CKZejJPA.esm.min.js +2 -0
  169. package/dist/chunks/default.fragment-CKZejJPA.esm.min.js.map +1 -0
  170. package/dist/chunks/default.fragment-CmvJdbNF.esm.min.js +2 -0
  171. package/dist/chunks/default.fragment-CmvJdbNF.esm.min.js.map +1 -0
  172. package/dist/chunks/default.fragment-DEtYyTCv.esm.js +449 -0
  173. package/dist/chunks/default.fragment-DEtYyTCv.esm.js.map +1 -0
  174. package/dist/chunks/default.vertex-B5fyVzX0.esm.js +203 -0
  175. package/dist/chunks/default.vertex-B5fyVzX0.esm.js.map +1 -0
  176. package/dist/chunks/default.vertex-CZ_uU-85.esm.min.js +2 -0
  177. package/dist/chunks/default.vertex-CZ_uU-85.esm.min.js.map +1 -0
  178. package/dist/chunks/default.vertex-CbbWO7Co.esm.js +180 -0
  179. package/dist/chunks/default.vertex-CbbWO7Co.esm.js.map +1 -0
  180. package/dist/chunks/default.vertex-rqsWtZrW.esm.min.js +2 -0
  181. package/dist/chunks/default.vertex-rqsWtZrW.esm.min.js.map +1 -0
  182. package/dist/chunks/defaultUboDeclaration-C83f9dhI.esm.min.js +2 -0
  183. package/dist/chunks/defaultUboDeclaration-C83f9dhI.esm.min.js.map +1 -0
  184. package/dist/chunks/defaultUboDeclaration-CljPZkbq.esm.js +15 -0
  185. package/dist/chunks/defaultUboDeclaration-CljPZkbq.esm.js.map +1 -0
  186. package/dist/chunks/defaultUboDeclaration-DD4XocPc.esm.js +13 -0
  187. package/dist/chunks/defaultUboDeclaration-DD4XocPc.esm.js.map +1 -0
  188. package/dist/chunks/defaultUboDeclaration-DYNoYns2.esm.min.js +2 -0
  189. package/dist/chunks/defaultUboDeclaration-DYNoYns2.esm.min.js.map +1 -0
  190. package/dist/chunks/drawWrapper.functions-CKg3_9x4.esm.js +11 -0
  191. package/dist/chunks/drawWrapper.functions-CKg3_9x4.esm.js.map +1 -0
  192. package/dist/chunks/drawWrapper.functions-ng7lvueZ.esm.min.js +2 -0
  193. package/dist/chunks/drawWrapper.functions-ng7lvueZ.esm.min.js.map +1 -0
  194. package/dist/chunks/dumpTools-BESzxGLa.esm.js +402 -0
  195. package/dist/chunks/dumpTools-BESzxGLa.esm.js.map +1 -0
  196. package/dist/chunks/dumpTools-C1-7XK3T.esm.min.js +2 -0
  197. package/dist/chunks/dumpTools-C1-7XK3T.esm.min.js.map +1 -0
  198. package/dist/chunks/engine-C14Lojh8.esm.min.js +2 -0
  199. package/dist/chunks/engine-C14Lojh8.esm.min.js.map +1 -0
  200. package/dist/chunks/engine-Der8nZ-F.esm.js +2174 -0
  201. package/dist/chunks/engine-Der8nZ-F.esm.js.map +1 -0
  202. package/dist/chunks/engine.common-BIAQAbS5.esm.js +1088 -0
  203. package/dist/chunks/engine.common-BIAQAbS5.esm.js.map +1 -0
  204. package/dist/chunks/engine.common-JR3eK4lo.esm.min.js +2 -0
  205. package/dist/chunks/engine.common-JR3eK4lo.esm.min.js.map +1 -0
  206. package/dist/chunks/envTextureLoader-DBxj01wq.esm.min.js +2 -0
  207. package/dist/chunks/envTextureLoader-DBxj01wq.esm.min.js.map +1 -0
  208. package/dist/chunks/envTextureLoader-TPtjC4AO.esm.js +65 -0
  209. package/dist/chunks/envTextureLoader-TPtjC4AO.esm.js.map +1 -0
  210. package/dist/chunks/environmentTextureTools-BFTF7Uuv.esm.js +382 -0
  211. package/dist/chunks/environmentTextureTools-BFTF7Uuv.esm.js.map +1 -0
  212. package/dist/chunks/environmentTextureTools-hAgJLHR5.esm.min.js +2 -0
  213. package/dist/chunks/environmentTextureTools-hAgJLHR5.esm.min.js.map +1 -0
  214. package/dist/chunks/exrTextureLoader-BGbLT201.esm.js +1682 -0
  215. package/dist/chunks/exrTextureLoader-BGbLT201.esm.js.map +1 -0
  216. package/dist/chunks/exrTextureLoader-BIy8Kowg.esm.min.js +2 -0
  217. package/dist/chunks/exrTextureLoader-BIy8Kowg.esm.min.js.map +1 -0
  218. package/dist/chunks/fogFragment-DfzGCNiO.esm.min.js +2 -0
  219. package/dist/chunks/fogFragment-DfzGCNiO.esm.min.js.map +1 -0
  220. package/dist/chunks/fogFragment-us2nPbnR.esm.js +102 -0
  221. package/dist/chunks/fogFragment-us2nPbnR.esm.js.map +1 -0
  222. package/dist/chunks/fresnelFunction-DCdAvPbg.esm.js +12 -0
  223. package/dist/chunks/fresnelFunction-DCdAvPbg.esm.js.map +1 -0
  224. package/dist/chunks/fresnelFunction-DgnyAxzz.esm.min.js +2 -0
  225. package/dist/chunks/fresnelFunction-DgnyAxzz.esm.min.js.map +1 -0
  226. package/dist/chunks/glTFLoader-CoypRThR.esm.js +7577 -0
  227. package/dist/chunks/glTFLoader-CoypRThR.esm.js.map +1 -0
  228. package/dist/chunks/glTFLoader-DJOWGGzO.esm.min.js +2 -0
  229. package/dist/chunks/glTFLoader-DJOWGGzO.esm.min.js.map +1 -0
  230. package/dist/chunks/glTFLoaderAnimation-Bj17JLj0.esm.js +77 -0
  231. package/dist/chunks/glTFLoaderAnimation-Bj17JLj0.esm.js.map +1 -0
  232. package/dist/chunks/glTFLoaderAnimation-CFIqLbF8.esm.min.js +2 -0
  233. package/dist/chunks/glTFLoaderAnimation-CFIqLbF8.esm.min.js.map +1 -0
  234. package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js +2 -0
  235. package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js.map +1 -0
  236. package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js +67 -0
  237. package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js.map +1 -0
  238. package/dist/chunks/harmonicsFunctions-BUdOda2X.esm.js +34 -0
  239. package/dist/chunks/harmonicsFunctions-BUdOda2X.esm.js.map +1 -0
  240. package/dist/chunks/harmonicsFunctions-Cwd91Rxn.esm.min.js +2 -0
  241. package/dist/chunks/harmonicsFunctions-Cwd91Rxn.esm.min.js.map +1 -0
  242. package/dist/chunks/harmonicsFunctions-DffaFQxD.esm.js +35 -0
  243. package/dist/chunks/harmonicsFunctions-DffaFQxD.esm.js.map +1 -0
  244. package/dist/chunks/harmonicsFunctions-o_ODwySi.esm.min.js +2 -0
  245. package/dist/chunks/harmonicsFunctions-o_ODwySi.esm.min.js.map +1 -0
  246. package/dist/chunks/hdrTextureLoader-1niTHf7G.esm.min.js +2 -0
  247. package/dist/chunks/hdrTextureLoader-1niTHf7G.esm.min.js.map +1 -0
  248. package/dist/chunks/hdrTextureLoader-D8lbfJJF.esm.js +252 -0
  249. package/dist/chunks/hdrTextureLoader-D8lbfJJF.esm.js.map +1 -0
  250. package/dist/chunks/helperFunctions-Bc3vBAJE.esm.js +80 -0
  251. package/dist/chunks/helperFunctions-Bc3vBAJE.esm.js.map +1 -0
  252. package/dist/chunks/helperFunctions-Bjxu6aor.esm.min.js +2 -0
  253. package/dist/chunks/helperFunctions-Bjxu6aor.esm.min.js.map +1 -0
  254. package/dist/chunks/helperFunctions-Bm1PSts6.esm.js +108 -0
  255. package/dist/chunks/helperFunctions-Bm1PSts6.esm.js.map +1 -0
  256. package/dist/chunks/helperFunctions-CqNsMT4d.esm.min.js +2 -0
  257. package/dist/chunks/helperFunctions-CqNsMT4d.esm.min.js.map +1 -0
  258. package/dist/chunks/index-ByqPlgGf.esm.js +72106 -0
  259. package/dist/chunks/index-ByqPlgGf.esm.js.map +1 -0
  260. package/dist/chunks/index-DPuAKXwn.esm.min.js +57 -0
  261. package/dist/chunks/index-DPuAKXwn.esm.min.js.map +1 -0
  262. package/dist/chunks/ktxTextureLoader-2vQETX4d.esm.js +814 -0
  263. package/dist/chunks/ktxTextureLoader-2vQETX4d.esm.js.map +1 -0
  264. package/dist/chunks/ktxTextureLoader-D97p2qzj.esm.min.js +2 -0
  265. package/dist/chunks/ktxTextureLoader-D97p2qzj.esm.min.js.map +1 -0
  266. package/dist/chunks/logDepthDeclaration-BKKLIeIA.esm.js +20 -0
  267. package/dist/chunks/logDepthDeclaration-BKKLIeIA.esm.js.map +1 -0
  268. package/dist/chunks/logDepthDeclaration-C0fhsb0C.esm.min.js +2 -0
  269. package/dist/chunks/logDepthDeclaration-C0fhsb0C.esm.min.js.map +1 -0
  270. package/dist/chunks/logDepthDeclaration-CHp3lFEW.esm.min.js +2 -0
  271. package/dist/chunks/logDepthDeclaration-CHp3lFEW.esm.min.js.map +1 -0
  272. package/dist/chunks/logDepthDeclaration-Do91zFth.esm.js +35 -0
  273. package/dist/chunks/logDepthDeclaration-Do91zFth.esm.js.map +1 -0
  274. package/dist/chunks/logDepthVertex-B-7kj-3y.esm.min.js +2 -0
  275. package/dist/chunks/logDepthVertex-B-7kj-3y.esm.min.js.map +1 -0
  276. package/dist/chunks/logDepthVertex-D3mPozkB.esm.js +488 -0
  277. package/dist/chunks/logDepthVertex-D3mPozkB.esm.js.map +1 -0
  278. package/dist/chunks/logDepthVertex-DL6XlVbh.esm.js +77 -0
  279. package/dist/chunks/logDepthVertex-DL6XlVbh.esm.js.map +1 -0
  280. package/dist/chunks/logDepthVertex-yU0rnFjt.esm.min.js +2 -0
  281. package/dist/chunks/logDepthVertex-yU0rnFjt.esm.min.js.map +1 -0
  282. package/dist/chunks/mainUVVaryingDeclaration-BltpVhQi.esm.min.js +2 -0
  283. package/dist/chunks/mainUVVaryingDeclaration-BltpVhQi.esm.min.js.map +1 -0
  284. package/dist/chunks/mainUVVaryingDeclaration-jir-aCNu.esm.js +11 -0
  285. package/dist/chunks/mainUVVaryingDeclaration-jir-aCNu.esm.js.map +1 -0
  286. package/dist/chunks/meshUboDeclaration-CDuX-5yo.esm.min.js +2 -0
  287. package/dist/chunks/meshUboDeclaration-CDuX-5yo.esm.min.js.map +1 -0
  288. package/dist/chunks/meshUboDeclaration-D-WNLe-f.esm.js +24 -0
  289. package/dist/chunks/meshUboDeclaration-D-WNLe-f.esm.js.map +1 -0
  290. package/dist/chunks/objFileLoader-BDOFeMen.esm.min.js +2 -0
  291. package/dist/chunks/objFileLoader-BDOFeMen.esm.min.js.map +1 -0
  292. package/dist/chunks/objFileLoader-_JLh3j9p.esm.js +1338 -0
  293. package/dist/chunks/objFileLoader-_JLh3j9p.esm.js.map +1 -0
  294. package/dist/chunks/oitFragment-24dXuq-Q.esm.js +1210 -0
  295. package/dist/chunks/oitFragment-24dXuq-Q.esm.js.map +1 -0
  296. package/dist/chunks/oitFragment-DJh1sV_q.esm.min.js +2 -0
  297. package/dist/chunks/oitFragment-DJh1sV_q.esm.min.js.map +1 -0
  298. package/dist/chunks/oitFragment-GKZN5NeN.esm.min.js +2 -0
  299. package/dist/chunks/oitFragment-GKZN5NeN.esm.min.js.map +1 -0
  300. package/dist/chunks/oitFragment-V_hEa1Hy.esm.js +1150 -0
  301. package/dist/chunks/oitFragment-V_hEa1Hy.esm.js.map +1 -0
  302. package/dist/chunks/pass.fragment-BgaGZPQr.esm.js +15 -0
  303. package/dist/chunks/pass.fragment-BgaGZPQr.esm.js.map +1 -0
  304. package/dist/chunks/pass.fragment-Cq5o99EQ.esm.js +15 -0
  305. package/dist/chunks/pass.fragment-Cq5o99EQ.esm.js.map +1 -0
  306. package/dist/chunks/pass.fragment-DoEOiSt_.esm.min.js +2 -0
  307. package/dist/chunks/pass.fragment-DoEOiSt_.esm.min.js.map +1 -0
  308. package/dist/chunks/pass.fragment-cU8cfFI-.esm.min.js +2 -0
  309. package/dist/chunks/pass.fragment-cU8cfFI-.esm.min.js.map +1 -0
  310. package/dist/chunks/pbr.fragment-BwCxYjsw.esm.js +3165 -0
  311. package/dist/chunks/pbr.fragment-BwCxYjsw.esm.js.map +1 -0
  312. package/dist/chunks/pbr.fragment-CEG-YtMg.esm.min.js +2 -0
  313. package/dist/chunks/pbr.fragment-CEG-YtMg.esm.min.js.map +1 -0
  314. package/dist/chunks/pbr.fragment-DNKjQ3cr.esm.min.js +2 -0
  315. package/dist/chunks/pbr.fragment-DNKjQ3cr.esm.min.js.map +1 -0
  316. package/dist/chunks/pbr.fragment-zzWqx8ql.esm.js +3219 -0
  317. package/dist/chunks/pbr.fragment-zzWqx8ql.esm.js.map +1 -0
  318. package/dist/chunks/pbr.vertex-BkRqW37U.esm.js +210 -0
  319. package/dist/chunks/pbr.vertex-BkRqW37U.esm.js.map +1 -0
  320. package/dist/chunks/pbr.vertex-CtzKcKA3.esm.js +338 -0
  321. package/dist/chunks/pbr.vertex-CtzKcKA3.esm.js.map +1 -0
  322. package/dist/chunks/pbr.vertex-DWa21sFW.esm.min.js +2 -0
  323. package/dist/chunks/pbr.vertex-DWa21sFW.esm.min.js.map +1 -0
  324. package/dist/chunks/pbr.vertex-Dud-ssa0.esm.min.js +2 -0
  325. package/dist/chunks/pbr.vertex-Dud-ssa0.esm.min.js.map +1 -0
  326. package/dist/chunks/postprocess.vertex-Ci5PKrzE.esm.min.js +2 -0
  327. package/dist/chunks/postprocess.vertex-Ci5PKrzE.esm.min.js.map +1 -0
  328. package/dist/chunks/postprocess.vertex-DE8R21-J.esm.js +18 -0
  329. package/dist/chunks/postprocess.vertex-DE8R21-J.esm.js.map +1 -0
  330. package/dist/chunks/postprocess.vertex-Un1QraiQ.esm.min.js +2 -0
  331. package/dist/chunks/postprocess.vertex-Un1QraiQ.esm.min.js.map +1 -0
  332. package/dist/chunks/postprocess.vertex-WUTUgxc2.esm.js +20 -0
  333. package/dist/chunks/postprocess.vertex-WUTUgxc2.esm.js.map +1 -0
  334. package/dist/chunks/rawTexture-CuSzaUaF.esm.js +191 -0
  335. package/dist/chunks/rawTexture-CuSzaUaF.esm.js.map +1 -0
  336. package/dist/chunks/rawTexture-LSnUJCfU.esm.min.js +2 -0
  337. package/dist/chunks/rawTexture-LSnUJCfU.esm.min.js.map +1 -0
  338. package/dist/chunks/rgbdDecode.fragment-KxeWL_IG.esm.js +17 -0
  339. package/dist/chunks/rgbdDecode.fragment-KxeWL_IG.esm.js.map +1 -0
  340. package/dist/chunks/rgbdDecode.fragment-jlPvnFLf.esm.js +17 -0
  341. package/dist/chunks/rgbdDecode.fragment-jlPvnFLf.esm.js.map +1 -0
  342. package/dist/chunks/rgbdDecode.fragment-oOBoPBFW.esm.min.js +2 -0
  343. package/dist/chunks/rgbdDecode.fragment-oOBoPBFW.esm.min.js.map +1 -0
  344. package/dist/chunks/rgbdDecode.fragment-p7rlxivn.esm.min.js +2 -0
  345. package/dist/chunks/rgbdDecode.fragment-p7rlxivn.esm.min.js.map +1 -0
  346. package/dist/chunks/rgbdEncode.fragment-Bnol48De.esm.js +17 -0
  347. package/dist/chunks/rgbdEncode.fragment-Bnol48De.esm.js.map +1 -0
  348. package/dist/chunks/rgbdEncode.fragment-CvrE0t7x.esm.min.js +2 -0
  349. package/dist/chunks/rgbdEncode.fragment-CvrE0t7x.esm.min.js.map +1 -0
  350. package/dist/chunks/rgbdEncode.fragment-DQHV0aF-.esm.js +17 -0
  351. package/dist/chunks/rgbdEncode.fragment-DQHV0aF-.esm.js.map +1 -0
  352. package/dist/chunks/rgbdEncode.fragment-HmJa7ce-.esm.min.js +2 -0
  353. package/dist/chunks/rgbdEncode.fragment-HmJa7ce-.esm.min.js.map +1 -0
  354. package/dist/chunks/splatFileLoader-Bg-eE_ig.esm.js +3534 -0
  355. package/dist/chunks/splatFileLoader-Bg-eE_ig.esm.js.map +1 -0
  356. package/dist/chunks/splatFileLoader-f1fIwgoj.esm.min.js +2 -0
  357. package/dist/chunks/splatFileLoader-f1fIwgoj.esm.min.js.map +1 -0
  358. package/dist/chunks/standardMaterial-CUPiiMA3.esm.min.js +2 -0
  359. package/dist/chunks/standardMaterial-CUPiiMA3.esm.min.js.map +1 -0
  360. package/dist/chunks/standardMaterial-DFXdS_Rz.esm.js +1800 -0
  361. package/dist/chunks/standardMaterial-DFXdS_Rz.esm.js.map +1 -0
  362. package/dist/chunks/stlFileLoader-BmzL0e6r.esm.js +238 -0
  363. package/dist/chunks/stlFileLoader-BmzL0e6r.esm.js.map +1 -0
  364. package/dist/chunks/stlFileLoader-U7lSanwx.esm.min.js +2 -0
  365. package/dist/chunks/stlFileLoader-U7lSanwx.esm.min.js.map +1 -0
  366. package/dist/chunks/tgaTextureLoader-Cu9vzvI4.esm.js +349 -0
  367. package/dist/chunks/tgaTextureLoader-Cu9vzvI4.esm.js.map +1 -0
  368. package/dist/chunks/tgaTextureLoader-DAHIPxuT.esm.min.js +2 -0
  369. package/dist/chunks/tgaTextureLoader-DAHIPxuT.esm.min.js.map +1 -0
  370. package/dist/chunks/thinEngine-Dpmt-o3Q.esm.min.js +2 -0
  371. package/dist/chunks/thinEngine-Dpmt-o3Q.esm.min.js.map +1 -0
  372. package/dist/chunks/thinEngine-TkAEP0Bu.esm.js +3721 -0
  373. package/dist/chunks/thinEngine-TkAEP0Bu.esm.js.map +1 -0
  374. package/dist/chunks/thinInstanceMesh-BRIc4_sA.esm.min.js +2 -0
  375. package/dist/chunks/thinInstanceMesh-BRIc4_sA.esm.min.js.map +1 -0
  376. package/dist/chunks/thinInstanceMesh-fJzQpbwJ.esm.js +314 -0
  377. package/dist/chunks/thinInstanceMesh-fJzQpbwJ.esm.js.map +1 -0
  378. package/dist/chunks/vertexColorMixing-QZAPCh7S.esm.min.js +2 -0
  379. package/dist/chunks/vertexColorMixing-QZAPCh7S.esm.min.js.map +1 -0
  380. package/dist/chunks/vertexColorMixing-ufoLav4M.esm.js +528 -0
  381. package/dist/chunks/vertexColorMixing-ufoLav4M.esm.js.map +1 -0
  382. package/dist/chunks/webgpuEngine-BQZSxi1G.esm.js +11214 -0
  383. package/dist/chunks/webgpuEngine-BQZSxi1G.esm.js.map +1 -0
  384. package/dist/chunks/webgpuEngine-BxVp3hgd.esm.min.js +2 -0
  385. package/dist/chunks/webgpuEngine-BxVp3hgd.esm.min.js.map +1 -0
  386. package/dist/chunks/workerPool-BUOov2K1.esm.js +122 -0
  387. package/dist/chunks/workerPool-BUOov2K1.esm.js.map +1 -0
  388. package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js +2 -0
  389. package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js.map +1 -0
  390. package/docs/ViewerDefault.jpg +0 -0
  391. package/docs/ViewerParts.jpg +0 -0
  392. package/docs/ViewerSlots.jpg +0 -0
  393. package/docs/ViewerStyled.jpg +0 -0
  394. package/lib/index.d.ts +325 -0
  395. package/lib/index.js +1117 -0
  396. package/lib/index.js.map +1 -0
  397. package/package.json +18 -27
  398. package/readme.md +145 -21
  399. package/configuration/configuration.d.ts +0 -107
  400. package/configuration/configuration.js +0 -16
  401. package/configuration/configuration.js.map +0 -1
  402. package/configuration/configurationCompatibility.d.ts +0 -8
  403. package/configuration/configurationCompatibility.js +0 -66
  404. package/configuration/configurationCompatibility.js.map +0 -1
  405. package/configuration/configurationContainer.d.ts +0 -10
  406. package/configuration/configurationContainer.js +0 -10
  407. package/configuration/configurationContainer.js.map +0 -1
  408. package/configuration/globals.d.ts +0 -6
  409. package/configuration/globals.js +0 -18
  410. package/configuration/globals.js.map +0 -1
  411. package/configuration/index.d.ts +0 -2
  412. package/configuration/index.js +0 -4
  413. package/configuration/index.js.map +0 -1
  414. package/configuration/interfaces/cameraConfiguration.d.ts +0 -31
  415. package/configuration/interfaces/cameraConfiguration.js +0 -2
  416. package/configuration/interfaces/cameraConfiguration.js.map +0 -1
  417. package/configuration/interfaces/colorGradingConfiguration.d.ts +0 -81
  418. package/configuration/interfaces/colorGradingConfiguration.js +0 -2
  419. package/configuration/interfaces/colorGradingConfiguration.js.map +0 -1
  420. package/configuration/interfaces/defaultRenderingPipelineConfiguration.d.ts +0 -20
  421. package/configuration/interfaces/defaultRenderingPipelineConfiguration.js +0 -2
  422. package/configuration/interfaces/defaultRenderingPipelineConfiguration.js.map +0 -1
  423. package/configuration/interfaces/environmentMapConfiguration.d.ts +0 -22
  424. package/configuration/interfaces/environmentMapConfiguration.js +0 -2
  425. package/configuration/interfaces/environmentMapConfiguration.js.map +0 -1
  426. package/configuration/interfaces/groundConfiguration.d.ts +0 -24
  427. package/configuration/interfaces/groundConfiguration.js +0 -2
  428. package/configuration/interfaces/groundConfiguration.js.map +0 -1
  429. package/configuration/interfaces/imageProcessingConfiguration.d.ts +0 -45
  430. package/configuration/interfaces/imageProcessingConfiguration.js +0 -2
  431. package/configuration/interfaces/imageProcessingConfiguration.js.map +0 -1
  432. package/configuration/interfaces/index.d.ts +0 -15
  433. package/configuration/interfaces/index.js +0 -16
  434. package/configuration/interfaces/index.js.map +0 -1
  435. package/configuration/interfaces/lightConfiguration.d.ts +0 -60
  436. package/configuration/interfaces/lightConfiguration.js +0 -2
  437. package/configuration/interfaces/lightConfiguration.js.map +0 -1
  438. package/configuration/interfaces/modelAnimationConfiguration.d.ts +0 -26
  439. package/configuration/interfaces/modelAnimationConfiguration.js +0 -2
  440. package/configuration/interfaces/modelAnimationConfiguration.js.map +0 -1
  441. package/configuration/interfaces/modelConfiguration.d.ts +0 -65
  442. package/configuration/interfaces/modelConfiguration.js +0 -2
  443. package/configuration/interfaces/modelConfiguration.js.map +0 -1
  444. package/configuration/interfaces/observersConfiguration.d.ts +0 -5
  445. package/configuration/interfaces/observersConfiguration.js +0 -2
  446. package/configuration/interfaces/observersConfiguration.js.map +0 -1
  447. package/configuration/interfaces/sceneConfiguration.d.ts +0 -48
  448. package/configuration/interfaces/sceneConfiguration.js +0 -2
  449. package/configuration/interfaces/sceneConfiguration.js.map +0 -1
  450. package/configuration/interfaces/sceneOptimizerConfiguration.d.ts +0 -23
  451. package/configuration/interfaces/sceneOptimizerConfiguration.js +0 -2
  452. package/configuration/interfaces/sceneOptimizerConfiguration.js.map +0 -1
  453. package/configuration/interfaces/skyboxConfiguration.d.ts +0 -21
  454. package/configuration/interfaces/skyboxConfiguration.js +0 -2
  455. package/configuration/interfaces/skyboxConfiguration.js.map +0 -1
  456. package/configuration/interfaces/templateConfiguration.d.ts +0 -67
  457. package/configuration/interfaces/templateConfiguration.js +0 -2
  458. package/configuration/interfaces/templateConfiguration.js.map +0 -1
  459. package/configuration/interfaces/vrConfiguration.d.ts +0 -16
  460. package/configuration/interfaces/vrConfiguration.js +0 -2
  461. package/configuration/interfaces/vrConfiguration.js.map +0 -1
  462. package/configuration/loader.d.ts +0 -4
  463. package/configuration/loader.js +0 -17
  464. package/configuration/loader.js.map +0 -1
  465. package/configuration/mappers.d.ts +0 -43
  466. package/configuration/mappers.js +0 -192
  467. package/configuration/mappers.js.map +0 -1
  468. package/configuration/renderOnlyLoader.d.ts +0 -33
  469. package/configuration/renderOnlyLoader.js +0 -162
  470. package/configuration/renderOnlyLoader.js.map +0 -1
  471. package/configuration/types/default.d.ts +0 -6
  472. package/configuration/types/default.js +0 -121
  473. package/configuration/types/default.js.map +0 -1
  474. package/configuration/types/environmentMap.d.ts +0 -5
  475. package/configuration/types/environmentMap.js +0 -14
  476. package/configuration/types/environmentMap.js.map +0 -1
  477. package/configuration/types/extended.d.ts +0 -6
  478. package/configuration/types/extended.js +0 -317
  479. package/configuration/types/extended.js.map +0 -1
  480. package/configuration/types/index.d.ts +0 -14
  481. package/configuration/types/index.js +0 -51
  482. package/configuration/types/index.js.map +0 -1
  483. package/configuration/types/minimal.d.ts +0 -6
  484. package/configuration/types/minimal.js +0 -43
  485. package/configuration/types/minimal.js.map +0 -1
  486. package/configuration/types/renderOnlyDefault.d.ts +0 -30
  487. package/configuration/types/renderOnlyDefault.js +0 -31
  488. package/configuration/types/renderOnlyDefault.js.map +0 -1
  489. package/configuration/types/shadowLight.d.ts +0 -9
  490. package/configuration/types/shadowLight.js +0 -64
  491. package/configuration/types/shadowLight.js.map +0 -1
  492. package/helper/index.d.ts +0 -29
  493. package/helper/index.js +0 -66
  494. package/helper/index.js.map +0 -1
  495. package/index.d.ts +0 -30
  496. package/index.js +0 -46
  497. package/index.js.map +0 -1
  498. package/initializer.d.ts +0 -11
  499. package/initializer.js +0 -35
  500. package/initializer.js.map +0 -1
  501. package/interfaces.d.ts +0 -5
  502. package/interfaces.js +0 -7
  503. package/interfaces.js.map +0 -1
  504. package/labs/environmentSerializer.d.ts +0 -126
  505. package/labs/environmentSerializer.js +0 -191
  506. package/labs/environmentSerializer.js.map +0 -1
  507. package/labs/texture.d.ts +0 -183
  508. package/labs/texture.js +0 -350
  509. package/labs/texture.js.map +0 -1
  510. package/labs/viewerLabs.d.ts +0 -51
  511. package/labs/viewerLabs.js +0 -134
  512. package/labs/viewerLabs.js.map +0 -1
  513. package/loader/modelLoader.d.ts +0 -56
  514. package/loader/modelLoader.js +0 -199
  515. package/loader/modelLoader.js.map +0 -1
  516. package/loader/plugins/applyMaterialConfig.d.ts +0 -12
  517. package/loader/plugins/applyMaterialConfig.js +0 -16
  518. package/loader/plugins/applyMaterialConfig.js.map +0 -1
  519. package/loader/plugins/extendedMaterialLoaderPlugin.d.ts +0 -9
  520. package/loader/plugins/extendedMaterialLoaderPlugin.js +0 -16
  521. package/loader/plugins/extendedMaterialLoaderPlugin.js.map +0 -1
  522. package/loader/plugins/index.d.ts +0 -19
  523. package/loader/plugins/index.js +0 -44
  524. package/loader/plugins/index.js.map +0 -1
  525. package/loader/plugins/loaderPlugin.d.ts +0 -24
  526. package/loader/plugins/loaderPlugin.js +0 -2
  527. package/loader/plugins/loaderPlugin.js.map +0 -1
  528. package/loader/plugins/msftLodLoaderPlugin.d.ts +0 -12
  529. package/loader/plugins/msftLodLoaderPlugin.js +0 -21
  530. package/loader/plugins/msftLodLoaderPlugin.js.map +0 -1
  531. package/loader/plugins/telemetryLoaderPlugin.d.ts +0 -12
  532. package/loader/plugins/telemetryLoaderPlugin.js +0 -36
  533. package/loader/plugins/telemetryLoaderPlugin.js.map +0 -1
  534. package/managers/observablesManager.d.ts +0 -66
  535. package/managers/observablesManager.js +0 -35
  536. package/managers/observablesManager.js.map +0 -1
  537. package/managers/sceneManager.d.ts +0 -245
  538. package/managers/sceneManager.js +0 -1375
  539. package/managers/sceneManager.js.map +0 -1
  540. package/managers/telemetryManager.d.ts +0 -78
  541. package/managers/telemetryManager.js +0 -117
  542. package/managers/telemetryManager.js.map +0 -1
  543. package/model/modelAnimation.d.ts +0 -215
  544. package/model/modelAnimation.js +0 -237
  545. package/model/modelAnimation.js.map +0 -1
  546. package/model/viewerModel.d.ts +0 -233
  547. package/model/viewerModel.js +0 -673
  548. package/model/viewerModel.js.map +0 -1
  549. package/optimizer/custom/extended.d.ts +0 -13
  550. package/optimizer/custom/extended.js +0 -101
  551. package/optimizer/custom/extended.js.map +0 -1
  552. package/optimizer/custom/index.d.ts +0 -9
  553. package/optimizer/custom/index.js +0 -26
  554. package/optimizer/custom/index.js.map +0 -1
  555. package/renderOnlyIndex.d.ts +0 -11
  556. package/renderOnlyIndex.js +0 -18
  557. package/renderOnlyIndex.js.map +0 -1
  558. package/templating/eventManager.d.ts +0 -35
  559. package/templating/eventManager.js +0 -66
  560. package/templating/eventManager.js.map +0 -1
  561. package/templating/plugins/hdButtonPlugin.d.ts +0 -9
  562. package/templating/plugins/hdButtonPlugin.js +0 -21
  563. package/templating/plugins/hdButtonPlugin.js.map +0 -1
  564. package/templating/plugins/printButton.d.ts +0 -9
  565. package/templating/plugins/printButton.js +0 -40
  566. package/templating/plugins/printButton.js.map +0 -1
  567. package/templating/templateManager.d.ts +0 -197
  568. package/templating/templateManager.js +0 -561
  569. package/templating/templateManager.js.map +0 -1
  570. package/templating/viewerTemplatePlugin.d.ts +0 -21
  571. package/templating/viewerTemplatePlugin.js +0 -69
  572. package/templating/viewerTemplatePlugin.js.map +0 -1
  573. package/viewer/defaultViewer.d.ts +0 -130
  574. package/viewer/defaultViewer.js +0 -672
  575. package/viewer/defaultViewer.js.map +0 -1
  576. package/viewer/renderOnlyViewer.d.ts +0 -9
  577. package/viewer/renderOnlyViewer.js +0 -46
  578. package/viewer/renderOnlyViewer.js.map +0 -1
  579. package/viewer/viewer.d.ts +0 -258
  580. package/viewer/viewer.js +0 -783
  581. package/viewer/viewer.js.map +0 -1
  582. package/viewer/viewerManager.d.ts +0 -58
  583. package/viewer/viewerManager.js +0 -91
  584. package/viewer/viewerManager.js.map +0 -1
  585. package/viewer/viewerWithTemplate.d.ts +0 -9
  586. package/viewer/viewerWithTemplate.js +0 -20
  587. package/viewer/viewerWithTemplate.js.map +0 -1
@@ -0,0 +1,3219 @@
1
+ import { i as ShaderStore } from './index-ByqPlgGf.esm.js';
2
+ import './oitFragment-24dXuq-Q.esm.js';
3
+ import './harmonicsFunctions-DffaFQxD.esm.js';
4
+ import './mainUVVaryingDeclaration-jir-aCNu.esm.js';
5
+ import './fogFragment-us2nPbnR.esm.js';
6
+ import './logDepthDeclaration-Do91zFth.esm.js';
7
+ import './helperFunctions-Bm1PSts6.esm.js';
8
+
9
+ // Do not edit.
10
+ const name$z = "pbrFragmentDeclaration";
11
+ const shader$z = `uniform vec4 vEyePosition;uniform vec3 vReflectionColor;uniform vec4 vAlbedoColor;uniform vec4 vLightingIntensity;uniform vec4 vReflectivityColor;uniform vec4 vMetallicReflectanceFactors;uniform vec3 vEmissiveColor;uniform float visibility;uniform vec3 vAmbientColor;
12
+ #ifdef ALBEDO
13
+ uniform vec2 vAlbedoInfos;
14
+ #endif
15
+ #ifdef AMBIENT
16
+ uniform vec4 vAmbientInfos;
17
+ #endif
18
+ #ifdef BUMP
19
+ uniform vec3 vBumpInfos;uniform vec2 vTangentSpaceParams;
20
+ #endif
21
+ #ifdef OPACITY
22
+ uniform vec2 vOpacityInfos;
23
+ #endif
24
+ #ifdef EMISSIVE
25
+ uniform vec2 vEmissiveInfos;
26
+ #endif
27
+ #ifdef LIGHTMAP
28
+ uniform vec2 vLightmapInfos;
29
+ #endif
30
+ #ifdef REFLECTIVITY
31
+ uniform vec3 vReflectivityInfos;
32
+ #endif
33
+ #ifdef MICROSURFACEMAP
34
+ uniform vec2 vMicroSurfaceSamplerInfos;
35
+ #endif
36
+ #if defined(REFLECTIONMAP_SPHERICAL) || defined(REFLECTIONMAP_PROJECTION) || defined(SS_REFRACTION) || defined(PREPASS)
37
+ uniform mat4 view;
38
+ #endif
39
+ #ifdef REFLECTION
40
+ uniform vec2 vReflectionInfos;
41
+ #ifdef REALTIME_FILTERING
42
+ uniform vec2 vReflectionFilteringInfo;
43
+ #endif
44
+ uniform mat4 reflectionMatrix;uniform vec3 vReflectionMicrosurfaceInfos;
45
+ #if defined(USE_LOCAL_REFLECTIONMAP_CUBIC) && defined(REFLECTIONMAP_CUBIC)
46
+ uniform vec3 vReflectionPosition;uniform vec3 vReflectionSize;
47
+ #endif
48
+ #endif
49
+ #if defined(SS_REFRACTION) && defined(SS_USE_LOCAL_REFRACTIONMAP_CUBIC)
50
+ uniform vec3 vRefractionPosition;uniform vec3 vRefractionSize;
51
+ #endif
52
+ #ifdef CLEARCOAT
53
+ uniform vec2 vClearCoatParams;uniform vec4 vClearCoatRefractionParams;
54
+ #if defined(CLEARCOAT_TEXTURE) || defined(CLEARCOAT_TEXTURE_ROUGHNESS)
55
+ uniform vec4 vClearCoatInfos;
56
+ #endif
57
+ #ifdef CLEARCOAT_TEXTURE
58
+ uniform mat4 clearCoatMatrix;
59
+ #endif
60
+ #ifdef CLEARCOAT_TEXTURE_ROUGHNESS
61
+ uniform mat4 clearCoatRoughnessMatrix;
62
+ #endif
63
+ #ifdef CLEARCOAT_BUMP
64
+ uniform vec2 vClearCoatBumpInfos;uniform vec2 vClearCoatTangentSpaceParams;uniform mat4 clearCoatBumpMatrix;
65
+ #endif
66
+ #ifdef CLEARCOAT_TINT
67
+ uniform vec4 vClearCoatTintParams;uniform float clearCoatColorAtDistance;
68
+ #ifdef CLEARCOAT_TINT_TEXTURE
69
+ uniform vec2 vClearCoatTintInfos;uniform mat4 clearCoatTintMatrix;
70
+ #endif
71
+ #endif
72
+ #endif
73
+ #ifdef IRIDESCENCE
74
+ uniform vec4 vIridescenceParams;
75
+ #if defined(IRIDESCENCE_TEXTURE) || defined(IRIDESCENCE_THICKNESS_TEXTURE)
76
+ uniform vec4 vIridescenceInfos;
77
+ #endif
78
+ #ifdef IRIDESCENCE_TEXTURE
79
+ uniform mat4 iridescenceMatrix;
80
+ #endif
81
+ #ifdef IRIDESCENCE_THICKNESS_TEXTURE
82
+ uniform mat4 iridescenceThicknessMatrix;
83
+ #endif
84
+ #endif
85
+ #ifdef ANISOTROPIC
86
+ uniform vec3 vAnisotropy;
87
+ #ifdef ANISOTROPIC_TEXTURE
88
+ uniform vec2 vAnisotropyInfos;uniform mat4 anisotropyMatrix;
89
+ #endif
90
+ #endif
91
+ #ifdef SHEEN
92
+ uniform vec4 vSheenColor;
93
+ #ifdef SHEEN_ROUGHNESS
94
+ uniform float vSheenRoughness;
95
+ #endif
96
+ #if defined(SHEEN_TEXTURE) || defined(SHEEN_TEXTURE_ROUGHNESS)
97
+ uniform vec4 vSheenInfos;
98
+ #endif
99
+ #ifdef SHEEN_TEXTURE
100
+ uniform mat4 sheenMatrix;
101
+ #endif
102
+ #ifdef SHEEN_TEXTURE_ROUGHNESS
103
+ uniform mat4 sheenRoughnessMatrix;
104
+ #endif
105
+ #endif
106
+ #ifdef SUBSURFACE
107
+ #ifdef SS_REFRACTION
108
+ uniform vec4 vRefractionMicrosurfaceInfos;uniform vec4 vRefractionInfos;uniform mat4 refractionMatrix;
109
+ #ifdef REALTIME_FILTERING
110
+ uniform vec2 vRefractionFilteringInfo;
111
+ #endif
112
+ #ifdef SS_DISPERSION
113
+ uniform float dispersion;
114
+ #endif
115
+ #endif
116
+ #ifdef SS_THICKNESSANDMASK_TEXTURE
117
+ uniform vec2 vThicknessInfos;uniform mat4 thicknessMatrix;
118
+ #endif
119
+ #ifdef SS_REFRACTIONINTENSITY_TEXTURE
120
+ uniform vec2 vRefractionIntensityInfos;uniform mat4 refractionIntensityMatrix;
121
+ #endif
122
+ #ifdef SS_TRANSLUCENCYINTENSITY_TEXTURE
123
+ uniform vec2 vTranslucencyIntensityInfos;uniform mat4 translucencyIntensityMatrix;
124
+ #endif
125
+ uniform vec2 vThicknessParam;uniform vec3 vDiffusionDistance;uniform vec4 vTintColor;uniform vec3 vSubSurfaceIntensity;uniform vec4 vTranslucencyColor;
126
+ #ifdef SS_TRANSLUCENCYCOLOR_TEXTURE
127
+ uniform vec2 vTranslucencyColorInfos;uniform mat4 translucencyColorMatrix;
128
+ #endif
129
+ #endif
130
+ #ifdef PREPASS
131
+ #ifdef SS_SCATTERING
132
+ uniform float scatteringDiffusionProfile;
133
+ #endif
134
+ #endif
135
+ #if DEBUGMODE>0
136
+ uniform vec2 vDebugMode;
137
+ #endif
138
+ #ifdef DETAIL
139
+ uniform vec4 vDetailInfos;
140
+ #endif
141
+ #include<decalFragmentDeclaration>
142
+ #ifdef USESPHERICALFROMREFLECTIONMAP
143
+ #ifdef SPHERICAL_HARMONICS
144
+ uniform vec3 vSphericalL00;uniform vec3 vSphericalL1_1;uniform vec3 vSphericalL10;uniform vec3 vSphericalL11;uniform vec3 vSphericalL2_2;uniform vec3 vSphericalL2_1;uniform vec3 vSphericalL20;uniform vec3 vSphericalL21;uniform vec3 vSphericalL22;
145
+ #else
146
+ uniform vec3 vSphericalX;uniform vec3 vSphericalY;uniform vec3 vSphericalZ;uniform vec3 vSphericalXX_ZZ;uniform vec3 vSphericalYY_ZZ;uniform vec3 vSphericalZZ;uniform vec3 vSphericalXY;uniform vec3 vSphericalYZ;uniform vec3 vSphericalZX;
147
+ #endif
148
+ #endif
149
+ #define ADDITIONAL_FRAGMENT_DECLARATION
150
+ `;
151
+ // Sideeffect
152
+ ShaderStore.IncludesShadersStore[name$z] = shader$z;
153
+
154
+ // Do not edit.
155
+ const name$y = "pbrFragmentExtraDeclaration";
156
+ const shader$y = `varying vec3 vPositionW;
157
+ #if DEBUGMODE>0
158
+ varying vec4 vClipSpacePosition;
159
+ #endif
160
+ #include<mainUVVaryingDeclaration>[1..7]
161
+ #ifdef NORMAL
162
+ varying vec3 vNormalW;
163
+ #if defined(USESPHERICALFROMREFLECTIONMAP) && defined(USESPHERICALINVERTEX)
164
+ varying vec3 vEnvironmentIrradiance;
165
+ #endif
166
+ #endif
167
+ #if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)
168
+ varying vec4 vColor;
169
+ #endif
170
+ `;
171
+ // Sideeffect
172
+ ShaderStore.IncludesShadersStore[name$y] = shader$y;
173
+
174
+ // Do not edit.
175
+ const name$x = "samplerFragmentAlternateDeclaration";
176
+ const shader$x = `#ifdef _DEFINENAME_
177
+ #if _DEFINENAME_DIRECTUV==1
178
+ #define v_VARYINGNAME_UV vMainUV1
179
+ #elif _DEFINENAME_DIRECTUV==2
180
+ #define v_VARYINGNAME_UV vMainUV2
181
+ #elif _DEFINENAME_DIRECTUV==3
182
+ #define v_VARYINGNAME_UV vMainUV3
183
+ #elif _DEFINENAME_DIRECTUV==4
184
+ #define v_VARYINGNAME_UV vMainUV4
185
+ #elif _DEFINENAME_DIRECTUV==5
186
+ #define v_VARYINGNAME_UV vMainUV5
187
+ #elif _DEFINENAME_DIRECTUV==6
188
+ #define v_VARYINGNAME_UV vMainUV6
189
+ #else
190
+ varying vec2 v_VARYINGNAME_UV;
191
+ #endif
192
+ #endif
193
+ `;
194
+ // Sideeffect
195
+ ShaderStore.IncludesShadersStore[name$x] = shader$x;
196
+
197
+ // Do not edit.
198
+ const name$w = "pbrFragmentSamplersDeclaration";
199
+ const shader$w = `#include<samplerFragmentDeclaration>(_DEFINENAME_,ALBEDO,_VARYINGNAME_,Albedo,_SAMPLERNAME_,albedo)
200
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,AMBIENT,_VARYINGNAME_,Ambient,_SAMPLERNAME_,ambient)
201
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,OPACITY,_VARYINGNAME_,Opacity,_SAMPLERNAME_,opacity)
202
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,EMISSIVE,_VARYINGNAME_,Emissive,_SAMPLERNAME_,emissive)
203
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,LIGHTMAP,_VARYINGNAME_,Lightmap,_SAMPLERNAME_,lightmap)
204
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,REFLECTIVITY,_VARYINGNAME_,Reflectivity,_SAMPLERNAME_,reflectivity)
205
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,MICROSURFACEMAP,_VARYINGNAME_,MicroSurfaceSampler,_SAMPLERNAME_,microSurface)
206
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,METALLIC_REFLECTANCE,_VARYINGNAME_,MetallicReflectance,_SAMPLERNAME_,metallicReflectance)
207
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,REFLECTANCE,_VARYINGNAME_,Reflectance,_SAMPLERNAME_,reflectance)
208
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,DECAL,_VARYINGNAME_,Decal,_SAMPLERNAME_,decal)
209
+ #ifdef CLEARCOAT
210
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,CLEARCOAT_TEXTURE,_VARYINGNAME_,ClearCoat,_SAMPLERNAME_,clearCoat)
211
+ #include<samplerFragmentAlternateDeclaration>(_DEFINENAME_,CLEARCOAT_TEXTURE_ROUGHNESS,_VARYINGNAME_,ClearCoatRoughness)
212
+ #if defined(CLEARCOAT_TEXTURE_ROUGHNESS)
213
+ uniform sampler2D clearCoatRoughnessSampler;
214
+ #endif
215
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,CLEARCOAT_BUMP,_VARYINGNAME_,ClearCoatBump,_SAMPLERNAME_,clearCoatBump)
216
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,CLEARCOAT_TINT_TEXTURE,_VARYINGNAME_,ClearCoatTint,_SAMPLERNAME_,clearCoatTint)
217
+ #endif
218
+ #ifdef IRIDESCENCE
219
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,IRIDESCENCE_TEXTURE,_VARYINGNAME_,Iridescence,_SAMPLERNAME_,iridescence)
220
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,IRIDESCENCE_THICKNESS_TEXTURE,_VARYINGNAME_,IridescenceThickness,_SAMPLERNAME_,iridescenceThickness)
221
+ #endif
222
+ #ifdef SHEEN
223
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,SHEEN_TEXTURE,_VARYINGNAME_,Sheen,_SAMPLERNAME_,sheen)
224
+ #include<samplerFragmentAlternateDeclaration>(_DEFINENAME_,SHEEN_TEXTURE_ROUGHNESS,_VARYINGNAME_,SheenRoughness)
225
+ #if defined(SHEEN_ROUGHNESS) && defined(SHEEN_TEXTURE_ROUGHNESS)
226
+ uniform sampler2D sheenRoughnessSampler;
227
+ #endif
228
+ #endif
229
+ #ifdef ANISOTROPIC
230
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,ANISOTROPIC_TEXTURE,_VARYINGNAME_,Anisotropy,_SAMPLERNAME_,anisotropy)
231
+ #endif
232
+ #ifdef REFLECTION
233
+ #ifdef REFLECTIONMAP_3D
234
+ #define sampleReflection(s,c) textureCube(s,c)
235
+ uniform samplerCube reflectionSampler;
236
+ #ifdef LODBASEDMICROSFURACE
237
+ #define sampleReflectionLod(s,c,l) textureCubeLodEXT(s,c,l)
238
+ #else
239
+ uniform samplerCube reflectionSamplerLow;uniform samplerCube reflectionSamplerHigh;
240
+ #endif
241
+ #ifdef USEIRRADIANCEMAP
242
+ uniform samplerCube irradianceSampler;
243
+ #endif
244
+ #else
245
+ #define sampleReflection(s,c) texture2D(s,c)
246
+ uniform sampler2D reflectionSampler;
247
+ #ifdef LODBASEDMICROSFURACE
248
+ #define sampleReflectionLod(s,c,l) texture2DLodEXT(s,c,l)
249
+ #else
250
+ uniform sampler2D reflectionSamplerLow;uniform sampler2D reflectionSamplerHigh;
251
+ #endif
252
+ #ifdef USEIRRADIANCEMAP
253
+ uniform sampler2D irradianceSampler;
254
+ #endif
255
+ #endif
256
+ #ifdef REFLECTIONMAP_SKYBOX
257
+ varying vec3 vPositionUVW;
258
+ #else
259
+ #if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)
260
+ varying vec3 vDirectionW;
261
+ #endif
262
+ #endif
263
+ #endif
264
+ #ifdef ENVIRONMENTBRDF
265
+ uniform sampler2D environmentBrdfSampler;
266
+ #endif
267
+ #ifdef SUBSURFACE
268
+ #ifdef SS_REFRACTION
269
+ #ifdef SS_REFRACTIONMAP_3D
270
+ #define sampleRefraction(s,c) textureCube(s,c)
271
+ uniform samplerCube refractionSampler;
272
+ #ifdef LODBASEDMICROSFURACE
273
+ #define sampleRefractionLod(s,c,l) textureCubeLodEXT(s,c,l)
274
+ #else
275
+ uniform samplerCube refractionSamplerLow;uniform samplerCube refractionSamplerHigh;
276
+ #endif
277
+ #else
278
+ #define sampleRefraction(s,c) texture2D(s,c)
279
+ uniform sampler2D refractionSampler;
280
+ #ifdef LODBASEDMICROSFURACE
281
+ #define sampleRefractionLod(s,c,l) texture2DLodEXT(s,c,l)
282
+ #else
283
+ uniform sampler2D refractionSamplerLow;uniform sampler2D refractionSamplerHigh;
284
+ #endif
285
+ #endif
286
+ #endif
287
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,SS_THICKNESSANDMASK_TEXTURE,_VARYINGNAME_,Thickness,_SAMPLERNAME_,thickness)
288
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,SS_REFRACTIONINTENSITY_TEXTURE,_VARYINGNAME_,RefractionIntensity,_SAMPLERNAME_,refractionIntensity)
289
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,SS_TRANSLUCENCYINTENSITY_TEXTURE,_VARYINGNAME_,TranslucencyIntensity,_SAMPLERNAME_,translucencyIntensity)
290
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,SS_TRANSLUCENCYCOLOR_TEXTURE,_VARYINGNAME_,TranslucencyColor,_SAMPLERNAME_,translucencyColor)
291
+ #endif
292
+ `;
293
+ // Sideeffect
294
+ ShaderStore.IncludesShadersStore[name$w] = shader$w;
295
+
296
+ // Do not edit.
297
+ const name$v = "subSurfaceScatteringFunctions";
298
+ const shader$v = `bool testLightingForSSS(float diffusionProfile)
299
+ {return diffusionProfile<1.;}`;
300
+ // Sideeffect
301
+ ShaderStore.IncludesShadersStore[name$v] = shader$v;
302
+
303
+ // Do not edit.
304
+ const name$u = "importanceSampling";
305
+ const shader$u = `vec3 hemisphereCosSample(vec2 u) {float phi=2.*PI*u.x;float cosTheta2=1.-u.y;float cosTheta=sqrt(cosTheta2);float sinTheta=sqrt(1.-cosTheta2);return vec3(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}
306
+ vec3 hemisphereImportanceSampleDggx(vec2 u,float a) {float phi=2.*PI*u.x;float cosTheta2=(1.-u.y)/(1.+(a+1.)*((a-1.)*u.y));float cosTheta=sqrt(cosTheta2);float sinTheta=sqrt(1.-cosTheta2);return vec3(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}
307
+ vec3 hemisphereImportanceSampleDCharlie(vec2 u,float a) {
308
+ float phi=2.*PI*u.x;float sinTheta=pow(u.y,a/(2.*a+1.));float cosTheta=sqrt(1.-sinTheta*sinTheta);return vec3(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}`;
309
+ // Sideeffect
310
+ ShaderStore.IncludesShadersStore[name$u] = shader$u;
311
+
312
+ // Do not edit.
313
+ const name$t = "pbrHelperFunctions";
314
+ const shader$t = `#define MINIMUMVARIANCE 0.0005
315
+ float convertRoughnessToAverageSlope(float roughness)
316
+ {return square(roughness)+MINIMUMVARIANCE;}
317
+ float fresnelGrazingReflectance(float reflectance0) {float reflectance90=saturate(reflectance0*25.0);return reflectance90;}
318
+ vec2 getAARoughnessFactors(vec3 normalVector) {
319
+ #ifdef SPECULARAA
320
+ vec3 nDfdx=dFdx(normalVector.xyz);vec3 nDfdy=dFdy(normalVector.xyz);float slopeSquare=max(dot(nDfdx,nDfdx),dot(nDfdy,nDfdy));float geometricRoughnessFactor=pow(saturate(slopeSquare),0.333);float geometricAlphaGFactor=sqrt(slopeSquare);geometricAlphaGFactor*=0.75;return vec2(geometricRoughnessFactor,geometricAlphaGFactor);
321
+ #else
322
+ return vec2(0.);
323
+ #endif
324
+ }
325
+ #ifdef ANISOTROPIC
326
+ #ifdef ANISOTROPIC_LEGACY
327
+ vec2 getAnisotropicRoughness(float alphaG,float anisotropy) {float alphaT=max(alphaG*(1.0+anisotropy),MINIMUMVARIANCE);float alphaB=max(alphaG*(1.0-anisotropy),MINIMUMVARIANCE);return vec2(alphaT,alphaB);}
328
+ vec3 getAnisotropicBentNormals(const vec3 T,const vec3 B,const vec3 N,const vec3 V,float anisotropy,float roughness) {vec3 anisotropicFrameDirection;if (anisotropy>=0.0) {anisotropicFrameDirection=B;} else {anisotropicFrameDirection=T;}
329
+ vec3 anisotropicFrameTangent=cross(normalize(anisotropicFrameDirection),V);vec3 anisotropicFrameNormal=cross(anisotropicFrameTangent,anisotropicFrameDirection);vec3 anisotropicNormal=normalize(mix(N,anisotropicFrameNormal,abs(anisotropy)));return anisotropicNormal;}
330
+ #else
331
+ vec2 getAnisotropicRoughness(float alphaG,float anisotropy) {float alphaT=max(mix(alphaG,1.0,anisotropy*anisotropy),MINIMUMVARIANCE);float alphaB=max(alphaG,MINIMUMVARIANCE);return vec2(alphaT,alphaB);}
332
+ vec3 getAnisotropicBentNormals(const vec3 T,const vec3 B,const vec3 N,const vec3 V,float anisotropy,float roughness) {vec3 bentNormal=cross(B,V);bentNormal=normalize(cross(bentNormal,B));float a=square(square(1.0-anisotropy*(1.0-roughness)));bentNormal=normalize(mix(bentNormal,N,a));return bentNormal;}
333
+ #endif
334
+ #endif
335
+ #if defined(CLEARCOAT) || defined(SS_REFRACTION)
336
+ vec3 cocaLambert(vec3 alpha,float distance) {return exp(-alpha*distance);}
337
+ vec3 cocaLambert(float NdotVRefract,float NdotLRefract,vec3 alpha,float thickness) {return cocaLambert(alpha,(thickness*((NdotLRefract+NdotVRefract)/(NdotLRefract*NdotVRefract))));}
338
+ vec3 computeColorAtDistanceInMedia(vec3 color,float distance) {return -log(color)/distance;}
339
+ vec3 computeClearCoatAbsorption(float NdotVRefract,float NdotLRefract,vec3 clearCoatColor,float clearCoatThickness,float clearCoatIntensity) {vec3 clearCoatAbsorption=mix(vec3(1.0),
340
+ cocaLambert(NdotVRefract,NdotLRefract,clearCoatColor,clearCoatThickness),
341
+ clearCoatIntensity);return clearCoatAbsorption;}
342
+ #endif
343
+ #ifdef MICROSURFACEAUTOMATIC
344
+ float computeDefaultMicroSurface(float microSurface,vec3 reflectivityColor)
345
+ {const float kReflectivityNoAlphaWorkflow_SmoothnessMax=0.95;float reflectivityLuminance=getLuminance(reflectivityColor);float reflectivityLuma=sqrt(reflectivityLuminance);microSurface=reflectivityLuma*kReflectivityNoAlphaWorkflow_SmoothnessMax;return microSurface;}
346
+ #endif
347
+ `;
348
+ // Sideeffect
349
+ ShaderStore.IncludesShadersStore[name$t] = shader$t;
350
+
351
+ // Do not edit.
352
+ const name$s = "pbrDirectLightingSetupFunctions";
353
+ const shader$s = `struct preLightingInfo
354
+ {vec3 lightOffset;float lightDistanceSquared;float lightDistance;float attenuation;vec3 L;vec3 H;float NdotV;float NdotLUnclamped;float NdotL;float VdotH;float roughness;
355
+ #ifdef IRIDESCENCE
356
+ float iridescenceIntensity;
357
+ #endif
358
+ };preLightingInfo computePointAndSpotPreLightingInfo(vec4 lightData,vec3 V,vec3 N,vec3 posW) {preLightingInfo result;result.lightOffset=lightData.xyz-posW;result.lightDistanceSquared=dot(result.lightOffset,result.lightOffset);result.lightDistance=sqrt(result.lightDistanceSquared);result.L=normalize(result.lightOffset);result.H=normalize(V+result.L);result.VdotH=saturate(dot(V,result.H));result.NdotLUnclamped=dot(N,result.L);result.NdotL=saturateEps(result.NdotLUnclamped);return result;}
359
+ preLightingInfo computeDirectionalPreLightingInfo(vec4 lightData,vec3 V,vec3 N) {preLightingInfo result;result.lightDistance=length(-lightData.xyz);result.L=normalize(-lightData.xyz);result.H=normalize(V+result.L);result.VdotH=saturate(dot(V,result.H));result.NdotLUnclamped=dot(N,result.L);result.NdotL=saturateEps(result.NdotLUnclamped);return result;}
360
+ preLightingInfo computeHemisphericPreLightingInfo(vec4 lightData,vec3 V,vec3 N) {preLightingInfo result;result.NdotL=dot(N,lightData.xyz)*0.5+0.5;result.NdotL=saturateEps(result.NdotL);result.NdotLUnclamped=result.NdotL;
361
+ #ifdef SPECULARTERM
362
+ result.L=normalize(lightData.xyz);result.H=normalize(V+result.L);result.VdotH=saturate(dot(V,result.H));
363
+ #endif
364
+ return result;}`;
365
+ // Sideeffect
366
+ ShaderStore.IncludesShadersStore[name$s] = shader$s;
367
+
368
+ // Do not edit.
369
+ const name$r = "pbrDirectLightingFalloffFunctions";
370
+ const shader$r = `float computeDistanceLightFalloff_Standard(vec3 lightOffset,float range)
371
+ {return max(0.,1.0-length(lightOffset)/range);}
372
+ float computeDistanceLightFalloff_Physical(float lightDistanceSquared)
373
+ {return 1.0/maxEps(lightDistanceSquared);}
374
+ float computeDistanceLightFalloff_GLTF(float lightDistanceSquared,float inverseSquaredRange)
375
+ {float lightDistanceFalloff=1.0/maxEps(lightDistanceSquared);float factor=lightDistanceSquared*inverseSquaredRange;float attenuation=saturate(1.0-factor*factor);attenuation*=attenuation;lightDistanceFalloff*=attenuation;return lightDistanceFalloff;}
376
+ float computeDistanceLightFalloff(vec3 lightOffset,float lightDistanceSquared,float range,float inverseSquaredRange)
377
+ {
378
+ #ifdef USEPHYSICALLIGHTFALLOFF
379
+ return computeDistanceLightFalloff_Physical(lightDistanceSquared);
380
+ #elif defined(USEGLTFLIGHTFALLOFF)
381
+ return computeDistanceLightFalloff_GLTF(lightDistanceSquared,inverseSquaredRange);
382
+ #else
383
+ return computeDistanceLightFalloff_Standard(lightOffset,range);
384
+ #endif
385
+ }
386
+ float computeDirectionalLightFalloff_Standard(vec3 lightDirection,vec3 directionToLightCenterW,float cosHalfAngle,float exponent)
387
+ {float falloff=0.0;float cosAngle=maxEps(dot(-lightDirection,directionToLightCenterW));if (cosAngle>=cosHalfAngle)
388
+ {falloff=max(0.,pow(cosAngle,exponent));}
389
+ return falloff;}
390
+ float computeDirectionalLightFalloff_Physical(vec3 lightDirection,vec3 directionToLightCenterW,float cosHalfAngle)
391
+ {const float kMinusLog2ConeAngleIntensityRatio=6.64385618977;
392
+ float concentrationKappa=kMinusLog2ConeAngleIntensityRatio/(1.0-cosHalfAngle);vec4 lightDirectionSpreadSG=vec4(-lightDirection*concentrationKappa,-concentrationKappa);float falloff=exp2(dot(vec4(directionToLightCenterW,1.0),lightDirectionSpreadSG));return falloff;}
393
+ float computeDirectionalLightFalloff_GLTF(vec3 lightDirection,vec3 directionToLightCenterW,float lightAngleScale,float lightAngleOffset)
394
+ {float cd=dot(-lightDirection,directionToLightCenterW);float falloff=saturate(cd*lightAngleScale+lightAngleOffset);falloff*=falloff;return falloff;}
395
+ float computeDirectionalLightFalloff(vec3 lightDirection,vec3 directionToLightCenterW,float cosHalfAngle,float exponent,float lightAngleScale,float lightAngleOffset)
396
+ {
397
+ #ifdef USEPHYSICALLIGHTFALLOFF
398
+ return computeDirectionalLightFalloff_Physical(lightDirection,directionToLightCenterW,cosHalfAngle);
399
+ #elif defined(USEGLTFLIGHTFALLOFF)
400
+ return computeDirectionalLightFalloff_GLTF(lightDirection,directionToLightCenterW,lightAngleScale,lightAngleOffset);
401
+ #else
402
+ return computeDirectionalLightFalloff_Standard(lightDirection,directionToLightCenterW,cosHalfAngle,exponent);
403
+ #endif
404
+ }`;
405
+ // Sideeffect
406
+ ShaderStore.IncludesShadersStore[name$r] = shader$r;
407
+
408
+ // Do not edit.
409
+ const name$q = "pbrBRDFFunctions";
410
+ const shader$q = `#define FRESNEL_MAXIMUM_ON_ROUGH 0.25
411
+ #ifdef MS_BRDF_ENERGY_CONSERVATION
412
+ vec3 getEnergyConservationFactor(const vec3 specularEnvironmentR0,const vec3 environmentBrdf) {return 1.0+specularEnvironmentR0*(1.0/environmentBrdf.y-1.0);}
413
+ #endif
414
+ #ifdef ENVIRONMENTBRDF
415
+ vec3 getBRDFLookup(float NdotV,float perceptualRoughness) {vec2 UV=vec2(NdotV,perceptualRoughness);vec4 brdfLookup=texture2D(environmentBrdfSampler,UV);
416
+ #ifdef ENVIRONMENTBRDF_RGBD
417
+ brdfLookup.rgb=fromRGBD(brdfLookup.rgba);
418
+ #endif
419
+ return brdfLookup.rgb;}
420
+ vec3 getReflectanceFromBRDFLookup(const vec3 specularEnvironmentR0,const vec3 specularEnvironmentR90,const vec3 environmentBrdf) {
421
+ #ifdef BRDF_V_HEIGHT_CORRELATED
422
+ vec3 reflectance=(specularEnvironmentR90-specularEnvironmentR0)*environmentBrdf.x+specularEnvironmentR0*environmentBrdf.y;
423
+ #else
424
+ vec3 reflectance=specularEnvironmentR0*environmentBrdf.x+specularEnvironmentR90*environmentBrdf.y;
425
+ #endif
426
+ return reflectance;}
427
+ vec3 getReflectanceFromBRDFLookup(const vec3 specularEnvironmentR0,const vec3 environmentBrdf) {
428
+ #ifdef BRDF_V_HEIGHT_CORRELATED
429
+ vec3 reflectance=mix(environmentBrdf.xxx,environmentBrdf.yyy,specularEnvironmentR0);
430
+ #else
431
+ vec3 reflectance=specularEnvironmentR0*environmentBrdf.x+environmentBrdf.y;
432
+ #endif
433
+ return reflectance;}
434
+ #endif
435
+ /* NOT USED
436
+ #if defined(SHEEN) && defined(SHEEN_SOFTER)
437
+ float getBRDFLookupCharlieSheen(float NdotV,float perceptualRoughness)
438
+ {float c=1.0-NdotV;float c3=c*c*c;return 0.65584461*c3+1.0/(4.16526551+exp(-7.97291361*perceptualRoughness+6.33516894));}
439
+ #endif
440
+ */
441
+ #if !defined(ENVIRONMENTBRDF) || defined(REFLECTIONMAP_SKYBOX) || defined(ALPHAFRESNEL)
442
+ vec3 getReflectanceFromAnalyticalBRDFLookup_Jones(float VdotN,vec3 reflectance0,vec3 reflectance90,float smoothness)
443
+ {float weight=mix(FRESNEL_MAXIMUM_ON_ROUGH,1.0,smoothness);return reflectance0+weight*(reflectance90-reflectance0)*pow5(saturate(1.0-VdotN));}
444
+ #endif
445
+ #if defined(SHEEN) && defined(ENVIRONMENTBRDF)
446
+ /**
447
+ * The sheen BRDF not containing F can be easily stored in the blue channel of the BRDF texture.
448
+ * The blue channel contains DCharlie*VAshikhmin*NdotL as a lokkup table
449
+ */
450
+ vec3 getSheenReflectanceFromBRDFLookup(const vec3 reflectance0,const vec3 environmentBrdf) {vec3 sheenEnvironmentReflectance=reflectance0*environmentBrdf.b;return sheenEnvironmentReflectance;}
451
+ #endif
452
+ vec3 fresnelSchlickGGX(float VdotH,vec3 reflectance0,vec3 reflectance90)
453
+ {return reflectance0+(reflectance90-reflectance0)*pow5(1.0-VdotH);}
454
+ float fresnelSchlickGGX(float VdotH,float reflectance0,float reflectance90)
455
+ {return reflectance0+(reflectance90-reflectance0)*pow5(1.0-VdotH);}
456
+ #ifdef CLEARCOAT
457
+ vec3 getR0RemappedForClearCoat(vec3 f0) {
458
+ #ifdef CLEARCOAT_DEFAULTIOR
459
+ #ifdef MOBILE
460
+ return saturate(f0*(f0*0.526868+0.529324)-0.0482256);
461
+ #else
462
+ return saturate(f0*(f0*(0.941892-0.263008*f0)+0.346479)-0.0285998);
463
+ #endif
464
+ #else
465
+ vec3 s=sqrt(f0);vec3 t=(vClearCoatRefractionParams.z+vClearCoatRefractionParams.w*s)/(vClearCoatRefractionParams.w+vClearCoatRefractionParams.z*s);return square(t);
466
+ #endif
467
+ }
468
+ #endif
469
+ #ifdef IRIDESCENCE
470
+ const mat3 XYZ_TO_REC709=mat3(
471
+ 3.2404542,-0.9692660, 0.0556434,
472
+ -1.5371385, 1.8760108,-0.2040259,
473
+ -0.4985314, 0.0415560, 1.0572252
474
+ );vec3 getIORTfromAirToSurfaceR0(vec3 f0) {vec3 sqrtF0=sqrt(f0);return (1.+sqrtF0)/(1.-sqrtF0);}
475
+ vec3 getR0fromIORs(vec3 iorT,float iorI) {return square((iorT-vec3(iorI))/(iorT+vec3(iorI)));}
476
+ float getR0fromIORs(float iorT,float iorI) {return square((iorT-iorI)/(iorT+iorI));}
477
+ vec3 evalSensitivity(float opd,vec3 shift) {float phase=2.0*PI*opd*1.0e-9;const vec3 val=vec3(5.4856e-13,4.4201e-13,5.2481e-13);const vec3 pos=vec3(1.6810e+06,1.7953e+06,2.2084e+06);const vec3 var=vec3(4.3278e+09,9.3046e+09,6.6121e+09);vec3 xyz=val*sqrt(2.0*PI*var)*cos(pos*phase+shift)*exp(-square(phase)*var);xyz.x+=9.7470e-14*sqrt(2.0*PI*4.5282e+09)*cos(2.2399e+06*phase+shift[0])*exp(-4.5282e+09*square(phase));xyz/=1.0685e-7;vec3 srgb=XYZ_TO_REC709*xyz;return srgb;}
478
+ vec3 evalIridescence(float outsideIOR,float eta2,float cosTheta1,float thinFilmThickness,vec3 baseF0) {vec3 I=vec3(1.0);float iridescenceIOR=mix(outsideIOR,eta2,smoothstep(0.0,0.03,thinFilmThickness));float sinTheta2Sq=square(outsideIOR/iridescenceIOR)*(1.0-square(cosTheta1));float cosTheta2Sq=1.0-sinTheta2Sq;if (cosTheta2Sq<0.0) {return I;}
479
+ float cosTheta2=sqrt(cosTheta2Sq);float R0=getR0fromIORs(iridescenceIOR,outsideIOR);float R12=fresnelSchlickGGX(cosTheta1,R0,1.);float R21=R12;float T121=1.0-R12;float phi12=0.0;if (iridescenceIOR<outsideIOR) phi12=PI;float phi21=PI-phi12;vec3 baseIOR=getIORTfromAirToSurfaceR0(clamp(baseF0,0.0,0.9999));
480
+ vec3 R1=getR0fromIORs(baseIOR,iridescenceIOR);vec3 R23=fresnelSchlickGGX(cosTheta2,R1,vec3(1.));vec3 phi23=vec3(0.0);if (baseIOR[0]<iridescenceIOR) phi23[0]=PI;if (baseIOR[1]<iridescenceIOR) phi23[1]=PI;if (baseIOR[2]<iridescenceIOR) phi23[2]=PI;float opd=2.0*iridescenceIOR*thinFilmThickness*cosTheta2;vec3 phi=vec3(phi21)+phi23;vec3 R123=clamp(R12*R23,1e-5,0.9999);vec3 r123=sqrt(R123);vec3 Rs=square(T121)*R23/(vec3(1.0)-R123);vec3 C0=R12+Rs;I=C0;vec3 Cm=Rs-T121;for (int m=1; m<=2; ++m)
481
+ {Cm*=r123;vec3 Sm=2.0*evalSensitivity(float(m)*opd,float(m)*phi);I+=Cm*Sm;}
482
+ return max(I,vec3(0.0));}
483
+ #endif
484
+ float normalDistributionFunction_TrowbridgeReitzGGX(float NdotH,float alphaG)
485
+ {float a2=square(alphaG);float d=NdotH*NdotH*(a2-1.0)+1.0;return a2/(PI*d*d);}
486
+ #ifdef SHEEN
487
+ float normalDistributionFunction_CharlieSheen(float NdotH,float alphaG)
488
+ {float invR=1./alphaG;float cos2h=NdotH*NdotH;float sin2h=1.-cos2h;return (2.+invR)*pow(sin2h,invR*.5)/(2.*PI);}
489
+ #endif
490
+ #ifdef ANISOTROPIC
491
+ float normalDistributionFunction_BurleyGGX_Anisotropic(float NdotH,float TdotH,float BdotH,const vec2 alphaTB) {float a2=alphaTB.x*alphaTB.y;vec3 v=vec3(alphaTB.y*TdotH,alphaTB.x *BdotH,a2*NdotH);float v2=dot(v,v);float w2=a2/v2;return a2*w2*w2*RECIPROCAL_PI;}
492
+ #endif
493
+ #ifdef BRDF_V_HEIGHT_CORRELATED
494
+ float smithVisibility_GGXCorrelated(float NdotL,float NdotV,float alphaG) {
495
+ #ifdef MOBILE
496
+ float GGXV=NdotL*(NdotV*(1.0-alphaG)+alphaG);float GGXL=NdotV*(NdotL*(1.0-alphaG)+alphaG);return 0.5/(GGXV+GGXL);
497
+ #else
498
+ float a2=alphaG*alphaG;float GGXV=NdotL*sqrt(NdotV*(NdotV-a2*NdotV)+a2);float GGXL=NdotV*sqrt(NdotL*(NdotL-a2*NdotL)+a2);return 0.5/(GGXV+GGXL);
499
+ #endif
500
+ }
501
+ #else
502
+ float smithVisibilityG1_TrowbridgeReitzGGXFast(float dot,float alphaG)
503
+ {
504
+ #ifdef MOBILE
505
+ return 1.0/(dot+alphaG+(1.0-alphaG)*dot ));
506
+ #else
507
+ float alphaSquared=alphaG*alphaG;return 1.0/(dot+sqrt(alphaSquared+(1.0-alphaSquared)*dot*dot));
508
+ #endif
509
+ }
510
+ float smithVisibility_TrowbridgeReitzGGXFast(float NdotL,float NdotV,float alphaG)
511
+ {float visibility=smithVisibilityG1_TrowbridgeReitzGGXFast(NdotL,alphaG)*smithVisibilityG1_TrowbridgeReitzGGXFast(NdotV,alphaG);return visibility;}
512
+ #endif
513
+ #ifdef ANISOTROPIC
514
+ float smithVisibility_GGXCorrelated_Anisotropic(float NdotL,float NdotV,float TdotV,float BdotV,float TdotL,float BdotL,const vec2 alphaTB) {float lambdaV=NdotL*length(vec3(alphaTB.x*TdotV,alphaTB.y*BdotV,NdotV));float lambdaL=NdotV*length(vec3(alphaTB.x*TdotL,alphaTB.y*BdotL,NdotL));float v=0.5/(lambdaV+lambdaL);return v;}
515
+ #endif
516
+ #ifdef CLEARCOAT
517
+ float visibility_Kelemen(float VdotH) {return 0.25/(VdotH*VdotH); }
518
+ #endif
519
+ #ifdef SHEEN
520
+ float visibility_Ashikhmin(float NdotL,float NdotV)
521
+ {return 1./(4.*(NdotL+NdotV-NdotL*NdotV));}
522
+ /* NOT USED
523
+ #ifdef SHEEN_SOFTER
524
+ float l(float x,float alphaG)
525
+ {float oneMinusAlphaSq=(1.0-alphaG)*(1.0-alphaG);float a=mix(21.5473,25.3245,oneMinusAlphaSq);float b=mix(3.82987,3.32435,oneMinusAlphaSq);float c=mix(0.19823,0.16801,oneMinusAlphaSq);float d=mix(-1.97760,-1.27393,oneMinusAlphaSq);float e=mix(-4.32054,-4.85967,oneMinusAlphaSq);return a/(1.0+b*pow(x,c))+d*x+e;}
526
+ float lambdaSheen(float cosTheta,float alphaG)
527
+ {return abs(cosTheta)<0.5 ? exp(l(cosTheta,alphaG)) : exp(2.0*l(0.5,alphaG)-l(1.0-cosTheta,alphaG));}
528
+ float visibility_CharlieSheen(float NdotL,float NdotV,float alphaG)
529
+ {float G=1.0/(1.0+lambdaSheen(NdotV,alphaG)+lambdaSheen(NdotL,alphaG));return G/(4.0*NdotV*NdotL);}
530
+ #endif
531
+ */
532
+ #endif
533
+ float diffuseBRDF_Burley(float NdotL,float NdotV,float VdotH,float roughness) {float diffuseFresnelNV=pow5(saturateEps(1.0-NdotL));float diffuseFresnelNL=pow5(saturateEps(1.0-NdotV));float diffuseFresnel90=0.5+2.0*VdotH*VdotH*roughness;float fresnel =
534
+ (1.0+(diffuseFresnel90-1.0)*diffuseFresnelNL) *
535
+ (1.0+(diffuseFresnel90-1.0)*diffuseFresnelNV);return fresnel/PI;}
536
+ #ifdef SS_TRANSLUCENCY
537
+ vec3 transmittanceBRDF_Burley(const vec3 tintColor,const vec3 diffusionDistance,float thickness) {vec3 S=1./maxEps(diffusionDistance);vec3 temp=exp((-0.333333333*thickness)*S);return tintColor.rgb*0.25*(temp*temp*temp+3.0*temp);}
538
+ float computeWrappedDiffuseNdotL(float NdotL,float w) {float t=1.0+w;float invt2=1.0/square(t);return saturate((NdotL+w)*invt2);}
539
+ #endif
540
+ `;
541
+ // Sideeffect
542
+ ShaderStore.IncludesShadersStore[name$q] = shader$q;
543
+
544
+ // Do not edit.
545
+ const name$p = "hdrFilteringFunctions";
546
+ const shader$p = `#ifdef NUM_SAMPLES
547
+ #if NUM_SAMPLES>0
548
+ #if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
549
+ float radicalInverse_VdC(uint bits)
550
+ {bits=(bits<<16u) | (bits>>16u);bits=((bits & 0x55555555u)<<1u) | ((bits & 0xAAAAAAAAu)>>1u);bits=((bits & 0x33333333u)<<2u) | ((bits & 0xCCCCCCCCu)>>2u);bits=((bits & 0x0F0F0F0Fu)<<4u) | ((bits & 0xF0F0F0F0u)>>4u);bits=((bits & 0x00FF00FFu)<<8u) | ((bits & 0xFF00FF00u)>>8u);return float(bits)*2.3283064365386963e-10; }
551
+ vec2 hammersley(uint i,uint N)
552
+ {return vec2(float(i)/float(N),radicalInverse_VdC(i));}
553
+ #else
554
+ float vanDerCorpus(int n,int base)
555
+ {float invBase=1.0/float(base);float denom =1.0;float result =0.0;for(int i=0; i<32; ++i)
556
+ {if(n>0)
557
+ {denom =mod(float(n),2.0);result+=denom*invBase;invBase=invBase/2.0;n =int(float(n)/2.0);}}
558
+ return result;}
559
+ vec2 hammersley(int i,int N)
560
+ {return vec2(float(i)/float(N),vanDerCorpus(i,2));}
561
+ #endif
562
+ float log4(float x) {return log2(x)/2.;}
563
+ const float NUM_SAMPLES_FLOAT=float(NUM_SAMPLES);const float NUM_SAMPLES_FLOAT_INVERSED=1./NUM_SAMPLES_FLOAT;const float K=4.;
564
+ #define inline
565
+ vec3 irradiance(samplerCube inputTexture,vec3 inputN,vec2 filteringInfo)
566
+ {vec3 n=normalize(inputN);vec3 result=vec3(0.0);vec3 tangent=abs(n.z)<0.999 ? vec3(0.,0.,1.) : vec3(1.,0.,0.);tangent=normalize(cross(tangent,n));vec3 bitangent=cross(n,tangent);mat3 tbn=mat3(tangent,bitangent,n);float maxLevel=filteringInfo.y;float dim0=filteringInfo.x;float omegaP=(4.*PI)/(6.*dim0*dim0);
567
+ #if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
568
+ for(uint i=0u; i<NUM_SAMPLES; ++i)
569
+ #else
570
+ for(int i=0; i<NUM_SAMPLES; ++i)
571
+ #endif
572
+ {vec2 Xi=hammersley(i,NUM_SAMPLES);vec3 Ls=hemisphereCosSample(Xi);Ls=normalize(Ls);vec3 Ns=vec3(0.,0.,1.);float NoL=dot(Ns,Ls);if (NoL>0.) {float pdf_inversed=PI/NoL;float omegaS=NUM_SAMPLES_FLOAT_INVERSED*pdf_inversed;float l=log4(omegaS)-log4(omegaP)+log4(K);float mipLevel=clamp(l,0.0,maxLevel);vec3 c=textureCubeLodEXT(inputTexture,tbn*Ls,mipLevel).rgb;
573
+ #ifdef GAMMA_INPUT
574
+ c=toLinearSpace(c);
575
+ #endif
576
+ result+=c;}}
577
+ result=result*NUM_SAMPLES_FLOAT_INVERSED;return result;}
578
+ #define inline
579
+ vec3 radiance(float alphaG,samplerCube inputTexture,vec3 inputN,vec2 filteringInfo)
580
+ {vec3 n=normalize(inputN);vec3 c=textureCube(inputTexture,n).rgb;
581
+ if (alphaG==0.) {
582
+ #ifdef GAMMA_INPUT
583
+ c=toLinearSpace(c);
584
+ #endif
585
+ return c;} else {vec3 result=vec3(0.);vec3 tangent=abs(n.z)<0.999 ? vec3(0.,0.,1.) : vec3(1.,0.,0.);tangent=normalize(cross(tangent,n));vec3 bitangent=cross(n,tangent);mat3 tbn=mat3(tangent,bitangent,n);float maxLevel=filteringInfo.y;float dim0=filteringInfo.x;float omegaP=(4.*PI)/(6.*dim0*dim0);float weight=0.;
586
+ #if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
587
+ for(uint i=0u; i<NUM_SAMPLES; ++i)
588
+ #else
589
+ for(int i=0; i<NUM_SAMPLES; ++i)
590
+ #endif
591
+ {vec2 Xi=hammersley(i,NUM_SAMPLES);vec3 H=hemisphereImportanceSampleDggx(Xi,alphaG);float NoV=1.;float NoH=H.z;float NoH2=H.z*H.z;float NoL=2.*NoH2-1.;vec3 L=vec3(2.*NoH*H.x,2.*NoH*H.y,NoL);L=normalize(L);if (NoL>0.) {float pdf_inversed=4./normalDistributionFunction_TrowbridgeReitzGGX(NoH,alphaG);float omegaS=NUM_SAMPLES_FLOAT_INVERSED*pdf_inversed;float l=log4(omegaS)-log4(omegaP)+log4(K);float mipLevel=clamp(float(l),0.0,maxLevel);weight+=NoL;vec3 c=textureCubeLodEXT(inputTexture,tbn*L,mipLevel).rgb;
592
+ #ifdef GAMMA_INPUT
593
+ c=toLinearSpace(c);
594
+ #endif
595
+ result+=c*NoL;}}
596
+ result=result/weight;return result;}}
597
+ #endif
598
+ #endif
599
+ `;
600
+ // Sideeffect
601
+ ShaderStore.IncludesShadersStore[name$p] = shader$p;
602
+
603
+ // Do not edit.
604
+ const name$o = "pbrDirectLightingFunctions";
605
+ const shader$o = `#define CLEARCOATREFLECTANCE90 1.0
606
+ struct lightingInfo
607
+ {vec3 diffuse;
608
+ #ifdef SPECULARTERM
609
+ vec3 specular;
610
+ #endif
611
+ #ifdef CLEARCOAT
612
+ vec4 clearCoat;
613
+ #endif
614
+ #ifdef SHEEN
615
+ vec3 sheen;
616
+ #endif
617
+ };float adjustRoughnessFromLightProperties(float roughness,float lightRadius,float lightDistance) {
618
+ #if defined(USEPHYSICALLIGHTFALLOFF) || defined(USEGLTFLIGHTFALLOFF)
619
+ float lightRoughness=lightRadius/lightDistance;float totalRoughness=saturate(lightRoughness+roughness);return totalRoughness;
620
+ #else
621
+ return roughness;
622
+ #endif
623
+ }
624
+ vec3 computeHemisphericDiffuseLighting(preLightingInfo info,vec3 lightColor,vec3 groundColor) {return mix(groundColor,lightColor,info.NdotL);}
625
+ vec3 computeDiffuseLighting(preLightingInfo info,vec3 lightColor) {float diffuseTerm=diffuseBRDF_Burley(info.NdotL,info.NdotV,info.VdotH,info.roughness);return diffuseTerm*info.attenuation*info.NdotL*lightColor;}
626
+ #define inline
627
+ vec3 computeProjectionTextureDiffuseLighting(sampler2D projectionLightSampler,mat4 textureProjectionMatrix,vec3 posW){vec4 strq=textureProjectionMatrix*vec4(posW,1.0);strq/=strq.w;vec3 textureColor=texture2D(projectionLightSampler,strq.xy).rgb;return toLinearSpace(textureColor);}
628
+ #ifdef SS_TRANSLUCENCY
629
+ vec3 computeDiffuseAndTransmittedLighting(preLightingInfo info,vec3 lightColor,vec3 transmittance) {float NdotL=absEps(info.NdotLUnclamped);float wrapNdotL=computeWrappedDiffuseNdotL(NdotL,0.02);float trAdapt=step(0.,info.NdotLUnclamped);vec3 transmittanceNdotL=mix(transmittance*wrapNdotL,vec3(wrapNdotL),trAdapt);float diffuseTerm=diffuseBRDF_Burley(NdotL,info.NdotV,info.VdotH,info.roughness);return diffuseTerm*transmittanceNdotL*info.attenuation*lightColor;}
630
+ #endif
631
+ #ifdef SPECULARTERM
632
+ vec3 computeSpecularLighting(preLightingInfo info,vec3 N,vec3 reflectance0,vec3 reflectance90,float geometricRoughnessFactor,vec3 lightColor) {float NdotH=saturateEps(dot(N,info.H));float roughness=max(info.roughness,geometricRoughnessFactor);float alphaG=convertRoughnessToAverageSlope(roughness);vec3 fresnel=fresnelSchlickGGX(info.VdotH,reflectance0,reflectance90);
633
+ #ifdef IRIDESCENCE
634
+ fresnel=mix(fresnel,reflectance0,info.iridescenceIntensity);
635
+ #endif
636
+ float distribution=normalDistributionFunction_TrowbridgeReitzGGX(NdotH,alphaG);
637
+ #ifdef BRDF_V_HEIGHT_CORRELATED
638
+ float smithVisibility=smithVisibility_GGXCorrelated(info.NdotL,info.NdotV,alphaG);
639
+ #else
640
+ float smithVisibility=smithVisibility_TrowbridgeReitzGGXFast(info.NdotL,info.NdotV,alphaG);
641
+ #endif
642
+ vec3 specTerm=fresnel*distribution*smithVisibility;return specTerm*info.attenuation*info.NdotL*lightColor;}
643
+ #endif
644
+ #ifdef ANISOTROPIC
645
+ vec3 computeAnisotropicSpecularLighting(preLightingInfo info,vec3 V,vec3 N,vec3 T,vec3 B,float anisotropy,vec3 reflectance0,vec3 reflectance90,float geometricRoughnessFactor,vec3 lightColor) {float NdotH=saturateEps(dot(N,info.H));float TdotH=dot(T,info.H);float BdotH=dot(B,info.H);float TdotV=dot(T,V);float BdotV=dot(B,V);float TdotL=dot(T,info.L);float BdotL=dot(B,info.L);float alphaG=convertRoughnessToAverageSlope(info.roughness);vec2 alphaTB=getAnisotropicRoughness(alphaG,anisotropy);alphaTB=max(alphaTB,square(geometricRoughnessFactor));vec3 fresnel=fresnelSchlickGGX(info.VdotH,reflectance0,reflectance90);
646
+ #ifdef IRIDESCENCE
647
+ fresnel=mix(fresnel,reflectance0,info.iridescenceIntensity);
648
+ #endif
649
+ float distribution=normalDistributionFunction_BurleyGGX_Anisotropic(NdotH,TdotH,BdotH,alphaTB);float smithVisibility=smithVisibility_GGXCorrelated_Anisotropic(info.NdotL,info.NdotV,TdotV,BdotV,TdotL,BdotL,alphaTB);vec3 specTerm=fresnel*distribution*smithVisibility;return specTerm*info.attenuation*info.NdotL*lightColor;}
650
+ #endif
651
+ #ifdef CLEARCOAT
652
+ vec4 computeClearCoatLighting(preLightingInfo info,vec3 Ncc,float geometricRoughnessFactor,float clearCoatIntensity,vec3 lightColor) {float NccdotL=saturateEps(dot(Ncc,info.L));float NccdotH=saturateEps(dot(Ncc,info.H));float clearCoatRoughness=max(info.roughness,geometricRoughnessFactor);float alphaG=convertRoughnessToAverageSlope(clearCoatRoughness);float fresnel=fresnelSchlickGGX(info.VdotH,vClearCoatRefractionParams.x,CLEARCOATREFLECTANCE90);fresnel*=clearCoatIntensity;float distribution=normalDistributionFunction_TrowbridgeReitzGGX(NccdotH,alphaG);float kelemenVisibility=visibility_Kelemen(info.VdotH);float clearCoatTerm=fresnel*distribution*kelemenVisibility;return vec4(
653
+ clearCoatTerm*info.attenuation*NccdotL*lightColor,
654
+ 1.0-fresnel
655
+ );}
656
+ vec3 computeClearCoatLightingAbsorption(float NdotVRefract,vec3 L,vec3 Ncc,vec3 clearCoatColor,float clearCoatThickness,float clearCoatIntensity) {vec3 LRefract=-refract(L,Ncc,vClearCoatRefractionParams.y);float NdotLRefract=saturateEps(dot(Ncc,LRefract));vec3 absorption=computeClearCoatAbsorption(NdotVRefract,NdotLRefract,clearCoatColor,clearCoatThickness,clearCoatIntensity);return absorption;}
657
+ #endif
658
+ #ifdef SHEEN
659
+ vec3 computeSheenLighting(preLightingInfo info,vec3 N,vec3 reflectance0,vec3 reflectance90,float geometricRoughnessFactor,vec3 lightColor) {float NdotH=saturateEps(dot(N,info.H));float roughness=max(info.roughness,geometricRoughnessFactor);float alphaG=convertRoughnessToAverageSlope(roughness);float fresnel=1.;float distribution=normalDistributionFunction_CharlieSheen(NdotH,alphaG);/*#ifdef SHEEN_SOFTER
660
+ float visibility=visibility_CharlieSheen(info.NdotL,info.NdotV,alphaG);
661
+ #else */
662
+ float visibility=visibility_Ashikhmin(info.NdotL,info.NdotV);/* #endif */
663
+ float sheenTerm=fresnel*distribution*visibility;return sheenTerm*info.attenuation*info.NdotL*lightColor;}
664
+ #endif
665
+ `;
666
+ // Sideeffect
667
+ ShaderStore.IncludesShadersStore[name$o] = shader$o;
668
+
669
+ // Do not edit.
670
+ const name$n = "pbrIBLFunctions";
671
+ const shader$n = `#if defined(REFLECTION) || defined(SS_REFRACTION)
672
+ float getLodFromAlphaG(float cubeMapDimensionPixels,float microsurfaceAverageSlope) {float microsurfaceAverageSlopeTexels=cubeMapDimensionPixels*microsurfaceAverageSlope;float lod=log2(microsurfaceAverageSlopeTexels);return lod;}
673
+ float getLinearLodFromRoughness(float cubeMapDimensionPixels,float roughness) {float lod=log2(cubeMapDimensionPixels)*roughness;return lod;}
674
+ #endif
675
+ #if defined(ENVIRONMENTBRDF) && defined(RADIANCEOCCLUSION)
676
+ float environmentRadianceOcclusion(float ambientOcclusion,float NdotVUnclamped) {float temp=NdotVUnclamped+ambientOcclusion;return saturate(square(temp)-1.0+ambientOcclusion);}
677
+ #endif
678
+ #if defined(ENVIRONMENTBRDF) && defined(HORIZONOCCLUSION)
679
+ float environmentHorizonOcclusion(vec3 view,vec3 normal,vec3 geometricNormal) {vec3 reflection=reflect(view,normal);float temp=saturate(1.0+1.1*dot(reflection,geometricNormal));return square(temp);}
680
+ #endif
681
+ #if defined(LODINREFLECTIONALPHA) || defined(SS_LODINREFRACTIONALPHA)
682
+ #define UNPACK_LOD(x) (1.0-x)*255.0
683
+ float getLodFromAlphaG(float cubeMapDimensionPixels,float alphaG,float NdotV) {float microsurfaceAverageSlope=alphaG;microsurfaceAverageSlope*=sqrt(abs(NdotV));return getLodFromAlphaG(cubeMapDimensionPixels,microsurfaceAverageSlope);}
684
+ #endif
685
+ `;
686
+ // Sideeffect
687
+ ShaderStore.IncludesShadersStore[name$n] = shader$n;
688
+
689
+ // Do not edit.
690
+ const name$m = "pbrBlockAlbedoOpacity";
691
+ const shader$m = `struct albedoOpacityOutParams
692
+ {vec3 surfaceAlbedo;float alpha;};
693
+ #define pbr_inline
694
+ albedoOpacityOutParams albedoOpacityBlock(
695
+ in vec4 vAlbedoColor
696
+ #ifdef ALBEDO
697
+ ,in vec4 albedoTexture
698
+ ,in vec2 albedoInfos
699
+ #endif
700
+ #ifdef OPACITY
701
+ ,in vec4 opacityMap
702
+ ,in vec2 vOpacityInfos
703
+ #endif
704
+ #ifdef DETAIL
705
+ ,in vec4 detailColor
706
+ ,in vec4 vDetailInfos
707
+ #endif
708
+ #ifdef DECAL
709
+ ,in vec4 decalColor
710
+ ,in vec4 vDecalInfos
711
+ #endif
712
+ )
713
+ {albedoOpacityOutParams outParams;vec3 surfaceAlbedo=vAlbedoColor.rgb;float alpha=vAlbedoColor.a;
714
+ #ifdef ALBEDO
715
+ #if defined(ALPHAFROMALBEDO) || defined(ALPHATEST)
716
+ alpha*=albedoTexture.a;
717
+ #endif
718
+ #ifdef GAMMAALBEDO
719
+ surfaceAlbedo*=toLinearSpace(albedoTexture.rgb);
720
+ #else
721
+ surfaceAlbedo*=albedoTexture.rgb;
722
+ #endif
723
+ surfaceAlbedo*=albedoInfos.y;
724
+ #endif
725
+ #ifndef DECAL_AFTER_DETAIL
726
+ #include<decalFragment>
727
+ #endif
728
+ #if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)
729
+ surfaceAlbedo*=vColor.rgb;
730
+ #endif
731
+ #ifdef DETAIL
732
+ float detailAlbedo=2.0*mix(0.5,detailColor.r,vDetailInfos.y);surfaceAlbedo.rgb=surfaceAlbedo.rgb*detailAlbedo*detailAlbedo;
733
+ #endif
734
+ #ifdef DECAL_AFTER_DETAIL
735
+ #include<decalFragment>
736
+ #endif
737
+ #define CUSTOM_FRAGMENT_UPDATE_ALBEDO
738
+ #ifdef OPACITY
739
+ #ifdef OPACITYRGB
740
+ alpha=getLuminance(opacityMap.rgb);
741
+ #else
742
+ alpha*=opacityMap.a;
743
+ #endif
744
+ alpha*=vOpacityInfos.y;
745
+ #endif
746
+ #if defined(VERTEXALPHA) || defined(INSTANCESCOLOR) && defined(INSTANCES)
747
+ alpha*=vColor.a;
748
+ #endif
749
+ #if !defined(SS_LINKREFRACTIONTOTRANSPARENCY) && !defined(ALPHAFRESNEL)
750
+ #ifdef ALPHATEST
751
+ #if DEBUGMODE != 88
752
+ if (alpha<ALPHATESTVALUE)
753
+ discard;
754
+ #endif
755
+ #ifndef ALPHABLEND
756
+ alpha=1.0;
757
+ #endif
758
+ #endif
759
+ #endif
760
+ outParams.surfaceAlbedo=surfaceAlbedo;outParams.alpha=alpha;return outParams;}
761
+ `;
762
+ // Sideeffect
763
+ ShaderStore.IncludesShadersStore[name$m] = shader$m;
764
+
765
+ // Do not edit.
766
+ const name$l = "pbrBlockReflectivity";
767
+ const shader$l = `struct reflectivityOutParams
768
+ {float microSurface;float roughness;vec3 surfaceReflectivityColor;
769
+ #ifdef METALLICWORKFLOW
770
+ vec3 surfaceAlbedo;
771
+ #endif
772
+ #if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)
773
+ vec3 ambientOcclusionColor;
774
+ #endif
775
+ #if DEBUGMODE>0
776
+ #ifdef METALLICWORKFLOW
777
+ vec2 metallicRoughness;
778
+ #ifdef REFLECTIVITY
779
+ vec4 surfaceMetallicColorMap;
780
+ #endif
781
+ #ifndef FROSTBITE_REFLECTANCE
782
+ vec3 metallicF0;
783
+ #endif
784
+ #else
785
+ #ifdef REFLECTIVITY
786
+ vec4 surfaceReflectivityColorMap;
787
+ #endif
788
+ #endif
789
+ #endif
790
+ };
791
+ #define pbr_inline
792
+ reflectivityOutParams reflectivityBlock(
793
+ in vec4 vReflectivityColor
794
+ #ifdef METALLICWORKFLOW
795
+ ,in vec3 surfaceAlbedo
796
+ ,in vec4 metallicReflectanceFactors
797
+ #endif
798
+ #ifdef REFLECTIVITY
799
+ ,in vec3 reflectivityInfos
800
+ ,in vec4 surfaceMetallicOrReflectivityColorMap
801
+ #endif
802
+ #if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)
803
+ ,in vec3 ambientOcclusionColorIn
804
+ #endif
805
+ #ifdef MICROSURFACEMAP
806
+ ,in vec4 microSurfaceTexel
807
+ #endif
808
+ #ifdef DETAIL
809
+ ,in vec4 detailColor
810
+ ,in vec4 vDetailInfos
811
+ #endif
812
+ )
813
+ {reflectivityOutParams outParams;float microSurface=vReflectivityColor.a;vec3 surfaceReflectivityColor=vReflectivityColor.rgb;
814
+ #ifdef METALLICWORKFLOW
815
+ vec2 metallicRoughness=surfaceReflectivityColor.rg;
816
+ #ifdef REFLECTIVITY
817
+ #if DEBUGMODE>0
818
+ outParams.surfaceMetallicColorMap=surfaceMetallicOrReflectivityColorMap;
819
+ #endif
820
+ #ifdef AOSTOREINMETALMAPRED
821
+ vec3 aoStoreInMetalMap=vec3(surfaceMetallicOrReflectivityColorMap.r,surfaceMetallicOrReflectivityColorMap.r,surfaceMetallicOrReflectivityColorMap.r);outParams.ambientOcclusionColor=mix(ambientOcclusionColorIn,aoStoreInMetalMap,reflectivityInfos.z);
822
+ #endif
823
+ #ifdef METALLNESSSTOREINMETALMAPBLUE
824
+ metallicRoughness.r*=surfaceMetallicOrReflectivityColorMap.b;
825
+ #else
826
+ metallicRoughness.r*=surfaceMetallicOrReflectivityColorMap.r;
827
+ #endif
828
+ #ifdef ROUGHNESSSTOREINMETALMAPALPHA
829
+ metallicRoughness.g*=surfaceMetallicOrReflectivityColorMap.a;
830
+ #else
831
+ #ifdef ROUGHNESSSTOREINMETALMAPGREEN
832
+ metallicRoughness.g*=surfaceMetallicOrReflectivityColorMap.g;
833
+ #endif
834
+ #endif
835
+ #endif
836
+ #ifdef DETAIL
837
+ float detailRoughness=mix(0.5,detailColor.b,vDetailInfos.w);float loLerp=mix(0.,metallicRoughness.g,detailRoughness*2.);float hiLerp=mix(metallicRoughness.g,1.,(detailRoughness-0.5)*2.);metallicRoughness.g=mix(loLerp,hiLerp,step(detailRoughness,0.5));
838
+ #endif
839
+ #ifdef MICROSURFACEMAP
840
+ metallicRoughness.g*=microSurfaceTexel.r;
841
+ #endif
842
+ #if DEBUGMODE>0
843
+ outParams.metallicRoughness=metallicRoughness;
844
+ #endif
845
+ #define CUSTOM_FRAGMENT_UPDATE_METALLICROUGHNESS
846
+ microSurface=1.0-metallicRoughness.g;vec3 baseColor=surfaceAlbedo;
847
+ #ifdef FROSTBITE_REFLECTANCE
848
+ outParams.surfaceAlbedo=baseColor.rgb*(1.0-metallicRoughness.r);surfaceReflectivityColor=mix(0.16*reflectance*reflectance,baseColor,metallicRoughness.r);
849
+ #else
850
+ vec3 metallicF0=metallicReflectanceFactors.rgb;
851
+ #if DEBUGMODE>0
852
+ outParams.metallicF0=metallicF0;
853
+ #endif
854
+ outParams.surfaceAlbedo=mix(baseColor.rgb*(1.0-metallicF0),vec3(0.,0.,0.),metallicRoughness.r);surfaceReflectivityColor=mix(metallicF0,baseColor,metallicRoughness.r);
855
+ #endif
856
+ #else
857
+ #ifdef REFLECTIVITY
858
+ surfaceReflectivityColor*=surfaceMetallicOrReflectivityColorMap.rgb;
859
+ #if DEBUGMODE>0
860
+ outParams.surfaceReflectivityColorMap=surfaceMetallicOrReflectivityColorMap;
861
+ #endif
862
+ #ifdef MICROSURFACEFROMREFLECTIVITYMAP
863
+ microSurface*=surfaceMetallicOrReflectivityColorMap.a;microSurface*=reflectivityInfos.z;
864
+ #else
865
+ #ifdef MICROSURFACEAUTOMATIC
866
+ microSurface*=computeDefaultMicroSurface(microSurface,surfaceReflectivityColor);
867
+ #endif
868
+ #ifdef MICROSURFACEMAP
869
+ microSurface*=microSurfaceTexel.r;
870
+ #endif
871
+ #define CUSTOM_FRAGMENT_UPDATE_MICROSURFACE
872
+ #endif
873
+ #endif
874
+ #endif
875
+ microSurface=saturate(microSurface);float roughness=1.-microSurface;outParams.microSurface=microSurface;outParams.roughness=roughness;outParams.surfaceReflectivityColor=surfaceReflectivityColor;return outParams;}
876
+ `;
877
+ // Sideeffect
878
+ ShaderStore.IncludesShadersStore[name$l] = shader$l;
879
+
880
+ // Do not edit.
881
+ const name$k = "pbrBlockAmbientOcclusion";
882
+ const shader$k = `struct ambientOcclusionOutParams
883
+ {vec3 ambientOcclusionColor;
884
+ #if DEBUGMODE>0 && defined(AMBIENT)
885
+ vec3 ambientOcclusionColorMap;
886
+ #endif
887
+ };ambientOcclusionOutParams ambientOcclusionBlock(
888
+ #ifdef AMBIENT
889
+ in vec3 ambientOcclusionColorMap_,
890
+ in vec4 vAmbientInfos
891
+ #endif
892
+ )
893
+ {ambientOcclusionOutParams outParams;vec3 ambientOcclusionColor=vec3(1.,1.,1.);
894
+ #ifdef AMBIENT
895
+ vec3 ambientOcclusionColorMap=ambientOcclusionColorMap_*vAmbientInfos.y;
896
+ #ifdef AMBIENTINGRAYSCALE
897
+ ambientOcclusionColorMap=vec3(ambientOcclusionColorMap.r,ambientOcclusionColorMap.r,ambientOcclusionColorMap.r);
898
+ #endif
899
+ ambientOcclusionColor=mix(ambientOcclusionColor,ambientOcclusionColorMap,vAmbientInfos.z);
900
+ #if DEBUGMODE>0
901
+ outParams.ambientOcclusionColorMap=ambientOcclusionColorMap;
902
+ #endif
903
+ #endif
904
+ outParams.ambientOcclusionColor=ambientOcclusionColor;return outParams;}
905
+ `;
906
+ // Sideeffect
907
+ ShaderStore.IncludesShadersStore[name$k] = shader$k;
908
+
909
+ // Do not edit.
910
+ const name$j = "pbrBlockAlphaFresnel";
911
+ const shader$j = `#ifdef ALPHAFRESNEL
912
+ #if defined(ALPHATEST) || defined(ALPHABLEND)
913
+ struct alphaFresnelOutParams
914
+ {float alpha;};
915
+ #define pbr_inline
916
+ alphaFresnelOutParams alphaFresnelBlock(
917
+ in vec3 normalW,
918
+ in vec3 viewDirectionW,
919
+ in float alpha,
920
+ in float microSurface
921
+ )
922
+ {alphaFresnelOutParams outParams;float opacityPerceptual=alpha;
923
+ #ifdef LINEARALPHAFRESNEL
924
+ float opacity0=opacityPerceptual;
925
+ #else
926
+ float opacity0=opacityPerceptual*opacityPerceptual;
927
+ #endif
928
+ float opacity90=fresnelGrazingReflectance(opacity0);vec3 normalForward=faceforward(normalW,-viewDirectionW,normalW);outParams.alpha=getReflectanceFromAnalyticalBRDFLookup_Jones(saturate(dot(viewDirectionW,normalForward)),vec3(opacity0),vec3(opacity90),sqrt(microSurface)).x;
929
+ #ifdef ALPHATEST
930
+ if (outParams.alpha<ALPHATESTVALUE)
931
+ discard;
932
+ #ifndef ALPHABLEND
933
+ outParams.alpha=1.0;
934
+ #endif
935
+ #endif
936
+ return outParams;}
937
+ #endif
938
+ #endif
939
+ `;
940
+ // Sideeffect
941
+ ShaderStore.IncludesShadersStore[name$j] = shader$j;
942
+
943
+ // Do not edit.
944
+ const name$i = "pbrBlockAnisotropic";
945
+ const shader$i = `#ifdef ANISOTROPIC
946
+ struct anisotropicOutParams
947
+ {float anisotropy;vec3 anisotropicTangent;vec3 anisotropicBitangent;vec3 anisotropicNormal;
948
+ #if DEBUGMODE>0 && defined(ANISOTROPIC_TEXTURE)
949
+ vec3 anisotropyMapData;
950
+ #endif
951
+ };
952
+ #define pbr_inline
953
+ anisotropicOutParams anisotropicBlock(
954
+ in vec3 vAnisotropy,
955
+ in float roughness,
956
+ #ifdef ANISOTROPIC_TEXTURE
957
+ in vec3 anisotropyMapData,
958
+ #endif
959
+ in mat3 TBN,
960
+ in vec3 normalW,
961
+ in vec3 viewDirectionW
962
+ )
963
+ {anisotropicOutParams outParams;float anisotropy=vAnisotropy.b;vec3 anisotropyDirection=vec3(vAnisotropy.xy,0.);
964
+ #ifdef ANISOTROPIC_TEXTURE
965
+ anisotropy*=anisotropyMapData.b;
966
+ #if DEBUGMODE>0
967
+ outParams.anisotropyMapData=anisotropyMapData;
968
+ #endif
969
+ anisotropyMapData.rg=anisotropyMapData.rg*2.0-1.0;
970
+ #ifdef ANISOTROPIC_LEGACY
971
+ anisotropyDirection.rg*=anisotropyMapData.rg;
972
+ #else
973
+ anisotropyDirection.xy=mat2(anisotropyDirection.x,anisotropyDirection.y,-anisotropyDirection.y,anisotropyDirection.x)*normalize(anisotropyMapData.rg);
974
+ #endif
975
+ #endif
976
+ mat3 anisoTBN=mat3(normalize(TBN[0]),normalize(TBN[1]),normalize(TBN[2]));vec3 anisotropicTangent=normalize(anisoTBN*anisotropyDirection);vec3 anisotropicBitangent=normalize(cross(anisoTBN[2],anisotropicTangent));outParams.anisotropy=anisotropy;outParams.anisotropicTangent=anisotropicTangent;outParams.anisotropicBitangent=anisotropicBitangent;outParams.anisotropicNormal=getAnisotropicBentNormals(anisotropicTangent,anisotropicBitangent,normalW,viewDirectionW,anisotropy,roughness);return outParams;}
977
+ #endif
978
+ `;
979
+ // Sideeffect
980
+ ShaderStore.IncludesShadersStore[name$i] = shader$i;
981
+
982
+ // Do not edit.
983
+ const name$h = "pbrBlockReflection";
984
+ const shader$h = `#ifdef REFLECTION
985
+ struct reflectionOutParams
986
+ {vec4 environmentRadiance;vec3 environmentIrradiance;
987
+ #ifdef REFLECTIONMAP_3D
988
+ vec3 reflectionCoords;
989
+ #else
990
+ vec2 reflectionCoords;
991
+ #endif
992
+ #ifdef SS_TRANSLUCENCY
993
+ #ifdef USESPHERICALFROMREFLECTIONMAP
994
+ #if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)
995
+ vec3 irradianceVector;
996
+ #endif
997
+ #endif
998
+ #endif
999
+ };
1000
+ #define pbr_inline
1001
+ void createReflectionCoords(
1002
+ in vec3 vPositionW,
1003
+ in vec3 normalW,
1004
+ #ifdef ANISOTROPIC
1005
+ in anisotropicOutParams anisotropicOut,
1006
+ #endif
1007
+ #ifdef REFLECTIONMAP_3D
1008
+ out vec3 reflectionCoords
1009
+ #else
1010
+ out vec2 reflectionCoords
1011
+ #endif
1012
+ )
1013
+ {
1014
+ #ifdef ANISOTROPIC
1015
+ vec3 reflectionVector=computeReflectionCoords(vec4(vPositionW,1.0),anisotropicOut.anisotropicNormal);
1016
+ #else
1017
+ vec3 reflectionVector=computeReflectionCoords(vec4(vPositionW,1.0),normalW);
1018
+ #endif
1019
+ #ifdef REFLECTIONMAP_OPPOSITEZ
1020
+ reflectionVector.z*=-1.0;
1021
+ #endif
1022
+ #ifdef REFLECTIONMAP_3D
1023
+ reflectionCoords=reflectionVector;
1024
+ #else
1025
+ reflectionCoords=reflectionVector.xy;
1026
+ #ifdef REFLECTIONMAP_PROJECTION
1027
+ reflectionCoords/=reflectionVector.z;
1028
+ #endif
1029
+ reflectionCoords.y=1.0-reflectionCoords.y;
1030
+ #endif
1031
+ }
1032
+ #define pbr_inline
1033
+ #define inline
1034
+ void sampleReflectionTexture(
1035
+ in float alphaG,
1036
+ in vec3 vReflectionMicrosurfaceInfos,
1037
+ in vec2 vReflectionInfos,
1038
+ in vec3 vReflectionColor,
1039
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
1040
+ in float NdotVUnclamped,
1041
+ #endif
1042
+ #ifdef LINEARSPECULARREFLECTION
1043
+ in float roughness,
1044
+ #endif
1045
+ #ifdef REFLECTIONMAP_3D
1046
+ in samplerCube reflectionSampler,
1047
+ const vec3 reflectionCoords,
1048
+ #else
1049
+ in sampler2D reflectionSampler,
1050
+ const vec2 reflectionCoords,
1051
+ #endif
1052
+ #ifndef LODBASEDMICROSFURACE
1053
+ #ifdef REFLECTIONMAP_3D
1054
+ in samplerCube reflectionSamplerLow,
1055
+ in samplerCube reflectionSamplerHigh,
1056
+ #else
1057
+ in sampler2D reflectionSamplerLow,
1058
+ in sampler2D reflectionSamplerHigh,
1059
+ #endif
1060
+ #endif
1061
+ #ifdef REALTIME_FILTERING
1062
+ in vec2 vReflectionFilteringInfo,
1063
+ #endif
1064
+ out vec4 environmentRadiance
1065
+ )
1066
+ {
1067
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
1068
+ float reflectionLOD=getLodFromAlphaG(vReflectionMicrosurfaceInfos.x,alphaG,NdotVUnclamped);
1069
+ #elif defined(LINEARSPECULARREFLECTION)
1070
+ float reflectionLOD=getLinearLodFromRoughness(vReflectionMicrosurfaceInfos.x,roughness);
1071
+ #else
1072
+ float reflectionLOD=getLodFromAlphaG(vReflectionMicrosurfaceInfos.x,alphaG);
1073
+ #endif
1074
+ #ifdef LODBASEDMICROSFURACE
1075
+ reflectionLOD=reflectionLOD*vReflectionMicrosurfaceInfos.y+vReflectionMicrosurfaceInfos.z;
1076
+ #ifdef LODINREFLECTIONALPHA
1077
+ float automaticReflectionLOD=UNPACK_LOD(sampleReflection(reflectionSampler,reflectionCoords).a);float requestedReflectionLOD=max(automaticReflectionLOD,reflectionLOD);
1078
+ #else
1079
+ float requestedReflectionLOD=reflectionLOD;
1080
+ #endif
1081
+ #ifdef REALTIME_FILTERING
1082
+ environmentRadiance=vec4(radiance(alphaG,reflectionSampler,reflectionCoords,vReflectionFilteringInfo),1.0);
1083
+ #else
1084
+ environmentRadiance=sampleReflectionLod(reflectionSampler,reflectionCoords,reflectionLOD);
1085
+ #endif
1086
+ #else
1087
+ float lodReflectionNormalized=saturate(reflectionLOD/log2(vReflectionMicrosurfaceInfos.x));float lodReflectionNormalizedDoubled=lodReflectionNormalized*2.0;vec4 environmentMid=sampleReflection(reflectionSampler,reflectionCoords);if (lodReflectionNormalizedDoubled<1.0){environmentRadiance=mix(
1088
+ sampleReflection(reflectionSamplerHigh,reflectionCoords),
1089
+ environmentMid,
1090
+ lodReflectionNormalizedDoubled
1091
+ );} else {environmentRadiance=mix(
1092
+ environmentMid,
1093
+ sampleReflection(reflectionSamplerLow,reflectionCoords),
1094
+ lodReflectionNormalizedDoubled-1.0
1095
+ );}
1096
+ #endif
1097
+ #ifdef RGBDREFLECTION
1098
+ environmentRadiance.rgb=fromRGBD(environmentRadiance);
1099
+ #endif
1100
+ #ifdef GAMMAREFLECTION
1101
+ environmentRadiance.rgb=toLinearSpace(environmentRadiance.rgb);
1102
+ #endif
1103
+ environmentRadiance.rgb*=vReflectionInfos.x;environmentRadiance.rgb*=vReflectionColor.rgb;}
1104
+ #define pbr_inline
1105
+ #define inline
1106
+ reflectionOutParams reflectionBlock(
1107
+ in vec3 vPositionW
1108
+ ,in vec3 normalW
1109
+ ,in float alphaG
1110
+ ,in vec3 vReflectionMicrosurfaceInfos
1111
+ ,in vec2 vReflectionInfos
1112
+ ,in vec3 vReflectionColor
1113
+ #ifdef ANISOTROPIC
1114
+ ,in anisotropicOutParams anisotropicOut
1115
+ #endif
1116
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
1117
+ ,in float NdotVUnclamped
1118
+ #endif
1119
+ #ifdef LINEARSPECULARREFLECTION
1120
+ ,in float roughness
1121
+ #endif
1122
+ #ifdef REFLECTIONMAP_3D
1123
+ ,in samplerCube reflectionSampler
1124
+ #else
1125
+ ,in sampler2D reflectionSampler
1126
+ #endif
1127
+ #if defined(NORMAL) && defined(USESPHERICALINVERTEX)
1128
+ ,in vec3 vEnvironmentIrradiance
1129
+ #endif
1130
+ #ifdef USESPHERICALFROMREFLECTIONMAP
1131
+ #if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)
1132
+ ,in mat4 reflectionMatrix
1133
+ #endif
1134
+ #endif
1135
+ #ifdef USEIRRADIANCEMAP
1136
+ #ifdef REFLECTIONMAP_3D
1137
+ ,in samplerCube irradianceSampler
1138
+ #else
1139
+ ,in sampler2D irradianceSampler
1140
+ #endif
1141
+ #endif
1142
+ #ifndef LODBASEDMICROSFURACE
1143
+ #ifdef REFLECTIONMAP_3D
1144
+ ,in samplerCube reflectionSamplerLow
1145
+ ,in samplerCube reflectionSamplerHigh
1146
+ #else
1147
+ ,in sampler2D reflectionSamplerLow
1148
+ ,in sampler2D reflectionSamplerHigh
1149
+ #endif
1150
+ #endif
1151
+ #ifdef REALTIME_FILTERING
1152
+ ,in vec2 vReflectionFilteringInfo
1153
+ #endif
1154
+ )
1155
+ {reflectionOutParams outParams;vec4 environmentRadiance=vec4(0.,0.,0.,0.);
1156
+ #ifdef REFLECTIONMAP_3D
1157
+ vec3 reflectionCoords=vec3(0.);
1158
+ #else
1159
+ vec2 reflectionCoords=vec2(0.);
1160
+ #endif
1161
+ createReflectionCoords(
1162
+ vPositionW,
1163
+ normalW,
1164
+ #ifdef ANISOTROPIC
1165
+ anisotropicOut,
1166
+ #endif
1167
+ reflectionCoords
1168
+ );sampleReflectionTexture(
1169
+ alphaG,
1170
+ vReflectionMicrosurfaceInfos,
1171
+ vReflectionInfos,
1172
+ vReflectionColor,
1173
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
1174
+ NdotVUnclamped,
1175
+ #endif
1176
+ #ifdef LINEARSPECULARREFLECTION
1177
+ roughness,
1178
+ #endif
1179
+ #ifdef REFLECTIONMAP_3D
1180
+ reflectionSampler,
1181
+ reflectionCoords,
1182
+ #else
1183
+ reflectionSampler,
1184
+ reflectionCoords,
1185
+ #endif
1186
+ #ifndef LODBASEDMICROSFURACE
1187
+ reflectionSamplerLow,
1188
+ reflectionSamplerHigh,
1189
+ #endif
1190
+ #ifdef REALTIME_FILTERING
1191
+ vReflectionFilteringInfo,
1192
+ #endif
1193
+ environmentRadiance
1194
+ );vec3 environmentIrradiance=vec3(0.,0.,0.);
1195
+ #ifdef USESPHERICALFROMREFLECTIONMAP
1196
+ #if defined(NORMAL) && defined(USESPHERICALINVERTEX)
1197
+ environmentIrradiance=vEnvironmentIrradiance;
1198
+ #else
1199
+ #ifdef ANISOTROPIC
1200
+ vec3 irradianceVector=vec3(reflectionMatrix*vec4(anisotropicOut.anisotropicNormal,0)).xyz;
1201
+ #else
1202
+ vec3 irradianceVector=vec3(reflectionMatrix*vec4(normalW,0)).xyz;
1203
+ #endif
1204
+ #ifdef REFLECTIONMAP_OPPOSITEZ
1205
+ irradianceVector.z*=-1.0;
1206
+ #endif
1207
+ #ifdef INVERTCUBICMAP
1208
+ irradianceVector.y*=-1.0;
1209
+ #endif
1210
+ #if defined(REALTIME_FILTERING)
1211
+ environmentIrradiance=irradiance(reflectionSampler,irradianceVector,vReflectionFilteringInfo);
1212
+ #else
1213
+ environmentIrradiance=computeEnvironmentIrradiance(irradianceVector);
1214
+ #endif
1215
+ #ifdef SS_TRANSLUCENCY
1216
+ outParams.irradianceVector=irradianceVector;
1217
+ #endif
1218
+ #endif
1219
+ #elif defined(USEIRRADIANCEMAP)
1220
+ vec4 environmentIrradiance4=sampleReflection(irradianceSampler,reflectionCoords);environmentIrradiance=environmentIrradiance4.rgb;
1221
+ #ifdef RGBDREFLECTION
1222
+ environmentIrradiance.rgb=fromRGBD(environmentIrradiance4);
1223
+ #endif
1224
+ #ifdef GAMMAREFLECTION
1225
+ environmentIrradiance.rgb=toLinearSpace(environmentIrradiance.rgb);
1226
+ #endif
1227
+ #endif
1228
+ environmentIrradiance*=vReflectionColor.rgb;outParams.environmentRadiance=environmentRadiance;outParams.environmentIrradiance=environmentIrradiance;outParams.reflectionCoords=reflectionCoords;return outParams;}
1229
+ #endif
1230
+ `;
1231
+ // Sideeffect
1232
+ ShaderStore.IncludesShadersStore[name$h] = shader$h;
1233
+
1234
+ // Do not edit.
1235
+ const name$g = "pbrBlockSheen";
1236
+ const shader$g = `#ifdef SHEEN
1237
+ struct sheenOutParams
1238
+ {float sheenIntensity;vec3 sheenColor;float sheenRoughness;
1239
+ #ifdef SHEEN_LINKWITHALBEDO
1240
+ vec3 surfaceAlbedo;
1241
+ #endif
1242
+ #if defined(ENVIRONMENTBRDF) && defined(SHEEN_ALBEDOSCALING)
1243
+ float sheenAlbedoScaling;
1244
+ #endif
1245
+ #if defined(REFLECTION) && defined(ENVIRONMENTBRDF)
1246
+ vec3 finalSheenRadianceScaled;
1247
+ #endif
1248
+ #if DEBUGMODE>0
1249
+ #ifdef SHEEN_TEXTURE
1250
+ vec4 sheenMapData;
1251
+ #endif
1252
+ #if defined(REFLECTION) && defined(ENVIRONMENTBRDF)
1253
+ vec3 sheenEnvironmentReflectance;
1254
+ #endif
1255
+ #endif
1256
+ };
1257
+ #define pbr_inline
1258
+ #define inline
1259
+ sheenOutParams sheenBlock(
1260
+ in vec4 vSheenColor
1261
+ #ifdef SHEEN_ROUGHNESS
1262
+ ,in float vSheenRoughness
1263
+ #if defined(SHEEN_TEXTURE_ROUGHNESS) && !defined(SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE)
1264
+ ,in vec4 sheenMapRoughnessData
1265
+ #endif
1266
+ #endif
1267
+ ,in float roughness
1268
+ #ifdef SHEEN_TEXTURE
1269
+ ,in vec4 sheenMapData
1270
+ ,in float sheenMapLevel
1271
+ #endif
1272
+ ,in float reflectance
1273
+ #ifdef SHEEN_LINKWITHALBEDO
1274
+ ,in vec3 baseColor
1275
+ ,in vec3 surfaceAlbedo
1276
+ #endif
1277
+ #ifdef ENVIRONMENTBRDF
1278
+ ,in float NdotV
1279
+ ,in vec3 environmentBrdf
1280
+ #endif
1281
+ #if defined(REFLECTION) && defined(ENVIRONMENTBRDF)
1282
+ ,in vec2 AARoughnessFactors
1283
+ ,in vec3 vReflectionMicrosurfaceInfos
1284
+ ,in vec2 vReflectionInfos
1285
+ ,in vec3 vReflectionColor
1286
+ ,in vec4 vLightingIntensity
1287
+ #ifdef REFLECTIONMAP_3D
1288
+ ,in samplerCube reflectionSampler
1289
+ ,in vec3 reflectionCoords
1290
+ #else
1291
+ ,in sampler2D reflectionSampler
1292
+ ,in vec2 reflectionCoords
1293
+ #endif
1294
+ ,in float NdotVUnclamped
1295
+ #ifndef LODBASEDMICROSFURACE
1296
+ #ifdef REFLECTIONMAP_3D
1297
+ ,in samplerCube reflectionSamplerLow
1298
+ ,in samplerCube reflectionSamplerHigh
1299
+ #else
1300
+ ,in sampler2D reflectionSamplerLow
1301
+ ,in sampler2D reflectionSamplerHigh
1302
+ #endif
1303
+ #endif
1304
+ #ifdef REALTIME_FILTERING
1305
+ ,in vec2 vReflectionFilteringInfo
1306
+ #endif
1307
+ #if !defined(REFLECTIONMAP_SKYBOX) && defined(RADIANCEOCCLUSION)
1308
+ ,in float seo
1309
+ #endif
1310
+ #if !defined(REFLECTIONMAP_SKYBOX) && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)
1311
+ ,in float eho
1312
+ #endif
1313
+ #endif
1314
+ )
1315
+ {sheenOutParams outParams;float sheenIntensity=vSheenColor.a;
1316
+ #ifdef SHEEN_TEXTURE
1317
+ #if DEBUGMODE>0
1318
+ outParams.sheenMapData=sheenMapData;
1319
+ #endif
1320
+ #endif
1321
+ #ifdef SHEEN_LINKWITHALBEDO
1322
+ float sheenFactor=pow5(1.0-sheenIntensity);vec3 sheenColor=baseColor.rgb*(1.0-sheenFactor);float sheenRoughness=sheenIntensity;outParams.surfaceAlbedo=surfaceAlbedo*sheenFactor;
1323
+ #ifdef SHEEN_TEXTURE
1324
+ sheenIntensity*=sheenMapData.a;
1325
+ #endif
1326
+ #else
1327
+ vec3 sheenColor=vSheenColor.rgb;
1328
+ #ifdef SHEEN_TEXTURE
1329
+ #ifdef SHEEN_GAMMATEXTURE
1330
+ sheenColor.rgb*=toLinearSpace(sheenMapData.rgb);
1331
+ #else
1332
+ sheenColor.rgb*=sheenMapData.rgb;
1333
+ #endif
1334
+ sheenColor.rgb*=sheenMapLevel;
1335
+ #endif
1336
+ #ifdef SHEEN_ROUGHNESS
1337
+ float sheenRoughness=vSheenRoughness;
1338
+ #ifdef SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE
1339
+ #if defined(SHEEN_TEXTURE)
1340
+ sheenRoughness*=sheenMapData.a;
1341
+ #endif
1342
+ #elif defined(SHEEN_TEXTURE_ROUGHNESS)
1343
+ sheenRoughness*=sheenMapRoughnessData.a;
1344
+ #endif
1345
+ #else
1346
+ float sheenRoughness=roughness;
1347
+ #ifdef SHEEN_TEXTURE
1348
+ sheenIntensity*=sheenMapData.a;
1349
+ #endif
1350
+ #endif
1351
+ #if !defined(SHEEN_ALBEDOSCALING)
1352
+ sheenIntensity*=(1.-reflectance);
1353
+ #endif
1354
+ sheenColor*=sheenIntensity;
1355
+ #endif
1356
+ #ifdef ENVIRONMENTBRDF
1357
+ /*#ifdef SHEEN_SOFTER
1358
+ vec3 environmentSheenBrdf=vec3(0.,0.,getBRDFLookupCharlieSheen(NdotV,sheenRoughness));
1359
+ #else*/
1360
+ #ifdef SHEEN_ROUGHNESS
1361
+ vec3 environmentSheenBrdf=getBRDFLookup(NdotV,sheenRoughness);
1362
+ #else
1363
+ vec3 environmentSheenBrdf=environmentBrdf;
1364
+ #endif
1365
+ /*#endif*/
1366
+ #endif
1367
+ #if defined(REFLECTION) && defined(ENVIRONMENTBRDF)
1368
+ float sheenAlphaG=convertRoughnessToAverageSlope(sheenRoughness);
1369
+ #ifdef SPECULARAA
1370
+ sheenAlphaG+=AARoughnessFactors.y;
1371
+ #endif
1372
+ vec4 environmentSheenRadiance=vec4(0.,0.,0.,0.);sampleReflectionTexture(
1373
+ sheenAlphaG,
1374
+ vReflectionMicrosurfaceInfos,
1375
+ vReflectionInfos,
1376
+ vReflectionColor,
1377
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
1378
+ NdotVUnclamped,
1379
+ #endif
1380
+ #ifdef LINEARSPECULARREFLECTION
1381
+ sheenRoughness,
1382
+ #endif
1383
+ reflectionSampler,
1384
+ reflectionCoords,
1385
+ #ifndef LODBASEDMICROSFURACE
1386
+ reflectionSamplerLow,
1387
+ reflectionSamplerHigh,
1388
+ #endif
1389
+ #ifdef REALTIME_FILTERING
1390
+ vReflectionFilteringInfo,
1391
+ #endif
1392
+ environmentSheenRadiance
1393
+ );vec3 sheenEnvironmentReflectance=getSheenReflectanceFromBRDFLookup(sheenColor,environmentSheenBrdf);
1394
+ #if !defined(REFLECTIONMAP_SKYBOX) && defined(RADIANCEOCCLUSION)
1395
+ sheenEnvironmentReflectance*=seo;
1396
+ #endif
1397
+ #if !defined(REFLECTIONMAP_SKYBOX) && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)
1398
+ sheenEnvironmentReflectance*=eho;
1399
+ #endif
1400
+ #if DEBUGMODE>0
1401
+ outParams.sheenEnvironmentReflectance=sheenEnvironmentReflectance;
1402
+ #endif
1403
+ outParams.finalSheenRadianceScaled=
1404
+ environmentSheenRadiance.rgb *
1405
+ sheenEnvironmentReflectance *
1406
+ vLightingIntensity.z;
1407
+ #endif
1408
+ #if defined(ENVIRONMENTBRDF) && defined(SHEEN_ALBEDOSCALING)
1409
+ outParams.sheenAlbedoScaling=1.0-sheenIntensity*max(max(sheenColor.r,sheenColor.g),sheenColor.b)*environmentSheenBrdf.b;
1410
+ #endif
1411
+ outParams.sheenIntensity=sheenIntensity;outParams.sheenColor=sheenColor;outParams.sheenRoughness=sheenRoughness;return outParams;}
1412
+ #endif
1413
+ `;
1414
+ // Sideeffect
1415
+ ShaderStore.IncludesShadersStore[name$g] = shader$g;
1416
+
1417
+ // Do not edit.
1418
+ const name$f = "pbrBlockClearcoat";
1419
+ const shader$f = `struct clearcoatOutParams
1420
+ {vec3 specularEnvironmentR0;float conservationFactor;vec3 clearCoatNormalW;vec2 clearCoatAARoughnessFactors;float clearCoatIntensity;float clearCoatRoughness;
1421
+ #ifdef REFLECTION
1422
+ vec3 finalClearCoatRadianceScaled;
1423
+ #endif
1424
+ #ifdef CLEARCOAT_TINT
1425
+ vec3 absorption;float clearCoatNdotVRefract;vec3 clearCoatColor;float clearCoatThickness;
1426
+ #endif
1427
+ #if defined(ENVIRONMENTBRDF) && defined(MS_BRDF_ENERGY_CONSERVATION)
1428
+ vec3 energyConservationFactorClearCoat;
1429
+ #endif
1430
+ #if DEBUGMODE>0
1431
+ #ifdef CLEARCOAT_BUMP
1432
+ mat3 TBNClearCoat;
1433
+ #endif
1434
+ #ifdef CLEARCOAT_TEXTURE
1435
+ vec2 clearCoatMapData;
1436
+ #endif
1437
+ #if defined(CLEARCOAT_TINT) && defined(CLEARCOAT_TINT_TEXTURE)
1438
+ vec4 clearCoatTintMapData;
1439
+ #endif
1440
+ #ifdef REFLECTION
1441
+ vec4 environmentClearCoatRadiance;vec3 clearCoatEnvironmentReflectance;
1442
+ #endif
1443
+ float clearCoatNdotV;
1444
+ #endif
1445
+ };
1446
+ #ifdef CLEARCOAT
1447
+ #define pbr_inline
1448
+ #define inline
1449
+ clearcoatOutParams clearcoatBlock(
1450
+ in vec3 vPositionW
1451
+ ,in vec3 geometricNormalW
1452
+ ,in vec3 viewDirectionW
1453
+ ,in vec2 vClearCoatParams
1454
+ #if defined(CLEARCOAT_TEXTURE_ROUGHNESS) && !defined(CLEARCOAT_TEXTURE_ROUGHNESS_IDENTICAL) && !defined(CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE)
1455
+ ,in vec4 clearCoatMapRoughnessData
1456
+ #endif
1457
+ ,in vec3 specularEnvironmentR0
1458
+ #ifdef CLEARCOAT_TEXTURE
1459
+ ,in vec2 clearCoatMapData
1460
+ #endif
1461
+ #ifdef CLEARCOAT_TINT
1462
+ ,in vec4 vClearCoatTintParams
1463
+ ,in float clearCoatColorAtDistance
1464
+ ,in vec4 vClearCoatRefractionParams
1465
+ #ifdef CLEARCOAT_TINT_TEXTURE
1466
+ ,in vec4 clearCoatTintMapData
1467
+ #endif
1468
+ #endif
1469
+ #ifdef CLEARCOAT_BUMP
1470
+ ,in vec2 vClearCoatBumpInfos
1471
+ ,in vec4 clearCoatBumpMapData
1472
+ ,in vec2 vClearCoatBumpUV
1473
+ #if defined(TANGENT) && defined(NORMAL)
1474
+ ,in mat3 vTBN
1475
+ #else
1476
+ ,in vec2 vClearCoatTangentSpaceParams
1477
+ #endif
1478
+ #ifdef OBJECTSPACE_NORMALMAP
1479
+ ,in mat4 normalMatrix
1480
+ #endif
1481
+ #endif
1482
+ #if defined(FORCENORMALFORWARD) && defined(NORMAL)
1483
+ ,in vec3 faceNormal
1484
+ #endif
1485
+ #ifdef REFLECTION
1486
+ ,in vec3 vReflectionMicrosurfaceInfos
1487
+ ,in vec2 vReflectionInfos
1488
+ ,in vec3 vReflectionColor
1489
+ ,in vec4 vLightingIntensity
1490
+ #ifdef REFLECTIONMAP_3D
1491
+ ,in samplerCube reflectionSampler
1492
+ #else
1493
+ ,in sampler2D reflectionSampler
1494
+ #endif
1495
+ #ifndef LODBASEDMICROSFURACE
1496
+ #ifdef REFLECTIONMAP_3D
1497
+ ,in samplerCube reflectionSamplerLow
1498
+ ,in samplerCube reflectionSamplerHigh
1499
+ #else
1500
+ ,in sampler2D reflectionSamplerLow
1501
+ ,in sampler2D reflectionSamplerHigh
1502
+ #endif
1503
+ #endif
1504
+ #ifdef REALTIME_FILTERING
1505
+ ,in vec2 vReflectionFilteringInfo
1506
+ #endif
1507
+ #endif
1508
+ #if defined(CLEARCOAT_BUMP) || defined(TWOSIDEDLIGHTING)
1509
+ ,in float frontFacingMultiplier
1510
+ #endif
1511
+ )
1512
+ {clearcoatOutParams outParams;float clearCoatIntensity=vClearCoatParams.x;float clearCoatRoughness=vClearCoatParams.y;
1513
+ #ifdef CLEARCOAT_TEXTURE
1514
+ clearCoatIntensity*=clearCoatMapData.x;
1515
+ #ifdef CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE
1516
+ clearCoatRoughness*=clearCoatMapData.y;
1517
+ #endif
1518
+ #if DEBUGMODE>0
1519
+ outParams.clearCoatMapData=clearCoatMapData;
1520
+ #endif
1521
+ #endif
1522
+ #if defined(CLEARCOAT_TEXTURE_ROUGHNESS) && !defined(CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE)
1523
+ clearCoatRoughness*=clearCoatMapRoughnessData.y;
1524
+ #endif
1525
+ outParams.clearCoatIntensity=clearCoatIntensity;outParams.clearCoatRoughness=clearCoatRoughness;
1526
+ #ifdef CLEARCOAT_TINT
1527
+ vec3 clearCoatColor=vClearCoatTintParams.rgb;float clearCoatThickness=vClearCoatTintParams.a;
1528
+ #ifdef CLEARCOAT_TINT_TEXTURE
1529
+ #ifdef CLEARCOAT_TINT_GAMMATEXTURE
1530
+ clearCoatColor*=toLinearSpace(clearCoatTintMapData.rgb);
1531
+ #else
1532
+ clearCoatColor*=clearCoatTintMapData.rgb;
1533
+ #endif
1534
+ clearCoatThickness*=clearCoatTintMapData.a;
1535
+ #if DEBUGMODE>0
1536
+ outParams.clearCoatTintMapData=clearCoatTintMapData;
1537
+ #endif
1538
+ #endif
1539
+ outParams.clearCoatColor=computeColorAtDistanceInMedia(clearCoatColor,clearCoatColorAtDistance);outParams.clearCoatThickness=clearCoatThickness;
1540
+ #endif
1541
+ #ifdef CLEARCOAT_REMAP_F0
1542
+ vec3 specularEnvironmentR0Updated=getR0RemappedForClearCoat(specularEnvironmentR0);
1543
+ #else
1544
+ vec3 specularEnvironmentR0Updated=specularEnvironmentR0;
1545
+ #endif
1546
+ outParams.specularEnvironmentR0=mix(specularEnvironmentR0,specularEnvironmentR0Updated,clearCoatIntensity);vec3 clearCoatNormalW=geometricNormalW;
1547
+ #ifdef CLEARCOAT_BUMP
1548
+ #ifdef NORMALXYSCALE
1549
+ float clearCoatNormalScale=1.0;
1550
+ #else
1551
+ float clearCoatNormalScale=vClearCoatBumpInfos.y;
1552
+ #endif
1553
+ #if defined(TANGENT) && defined(NORMAL)
1554
+ mat3 TBNClearCoat=vTBN;
1555
+ #else
1556
+ vec2 TBNClearCoatUV=vClearCoatBumpUV*frontFacingMultiplier;mat3 TBNClearCoat=cotangent_frame(clearCoatNormalW*clearCoatNormalScale,vPositionW,TBNClearCoatUV,vClearCoatTangentSpaceParams);
1557
+ #endif
1558
+ #if DEBUGMODE>0
1559
+ outParams.TBNClearCoat=TBNClearCoat;
1560
+ #endif
1561
+ #ifdef OBJECTSPACE_NORMALMAP
1562
+ clearCoatNormalW=normalize(clearCoatBumpMapData.xyz *2.0-1.0);clearCoatNormalW=normalize(mat3(normalMatrix)*clearCoatNormalW);
1563
+ #else
1564
+ clearCoatNormalW=perturbNormal(TBNClearCoat,clearCoatBumpMapData.xyz,vClearCoatBumpInfos.y);
1565
+ #endif
1566
+ #endif
1567
+ #if defined(FORCENORMALFORWARD) && defined(NORMAL)
1568
+ clearCoatNormalW*=sign(dot(clearCoatNormalW,faceNormal));
1569
+ #endif
1570
+ #if defined(TWOSIDEDLIGHTING) && defined(NORMAL)
1571
+ clearCoatNormalW=clearCoatNormalW*frontFacingMultiplier;
1572
+ #endif
1573
+ outParams.clearCoatNormalW=clearCoatNormalW;outParams.clearCoatAARoughnessFactors=getAARoughnessFactors(clearCoatNormalW.xyz);float clearCoatNdotVUnclamped=dot(clearCoatNormalW,viewDirectionW);float clearCoatNdotV=absEps(clearCoatNdotVUnclamped);
1574
+ #if DEBUGMODE>0
1575
+ outParams.clearCoatNdotV=clearCoatNdotV;
1576
+ #endif
1577
+ #ifdef CLEARCOAT_TINT
1578
+ vec3 clearCoatVRefract=refract(-viewDirectionW,clearCoatNormalW,vClearCoatRefractionParams.y);outParams.clearCoatNdotVRefract=absEps(dot(clearCoatNormalW,clearCoatVRefract));
1579
+ #endif
1580
+ #if defined(ENVIRONMENTBRDF) && (!defined(REFLECTIONMAP_SKYBOX) || defined(MS_BRDF_ENERGY_CONSERVATION))
1581
+ vec3 environmentClearCoatBrdf=getBRDFLookup(clearCoatNdotV,clearCoatRoughness);
1582
+ #endif
1583
+ #if defined(REFLECTION)
1584
+ float clearCoatAlphaG=convertRoughnessToAverageSlope(clearCoatRoughness);
1585
+ #ifdef SPECULARAA
1586
+ clearCoatAlphaG+=outParams.clearCoatAARoughnessFactors.y;
1587
+ #endif
1588
+ vec4 environmentClearCoatRadiance=vec4(0.,0.,0.,0.);vec3 clearCoatReflectionVector=computeReflectionCoords(vec4(vPositionW,1.0),clearCoatNormalW);
1589
+ #ifdef REFLECTIONMAP_OPPOSITEZ
1590
+ clearCoatReflectionVector.z*=-1.0;
1591
+ #endif
1592
+ #ifdef REFLECTIONMAP_3D
1593
+ vec3 clearCoatReflectionCoords=clearCoatReflectionVector;
1594
+ #else
1595
+ vec2 clearCoatReflectionCoords=clearCoatReflectionVector.xy;
1596
+ #ifdef REFLECTIONMAP_PROJECTION
1597
+ clearCoatReflectionCoords/=clearCoatReflectionVector.z;
1598
+ #endif
1599
+ clearCoatReflectionCoords.y=1.0-clearCoatReflectionCoords.y;
1600
+ #endif
1601
+ sampleReflectionTexture(
1602
+ clearCoatAlphaG,
1603
+ vReflectionMicrosurfaceInfos,
1604
+ vReflectionInfos,
1605
+ vReflectionColor,
1606
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
1607
+ clearCoatNdotVUnclamped,
1608
+ #endif
1609
+ #ifdef LINEARSPECULARREFLECTION
1610
+ clearCoatRoughness,
1611
+ #endif
1612
+ reflectionSampler,
1613
+ clearCoatReflectionCoords,
1614
+ #ifndef LODBASEDMICROSFURACE
1615
+ reflectionSamplerLow,
1616
+ reflectionSamplerHigh,
1617
+ #endif
1618
+ #ifdef REALTIME_FILTERING
1619
+ vReflectionFilteringInfo,
1620
+ #endif
1621
+ environmentClearCoatRadiance
1622
+ );
1623
+ #if DEBUGMODE>0
1624
+ outParams.environmentClearCoatRadiance=environmentClearCoatRadiance;
1625
+ #endif
1626
+ #if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
1627
+ vec3 clearCoatEnvironmentReflectance=getReflectanceFromBRDFLookup(vec3(vClearCoatRefractionParams.x),environmentClearCoatBrdf);
1628
+ #ifdef HORIZONOCCLUSION
1629
+ #ifdef BUMP
1630
+ #ifdef REFLECTIONMAP_3D
1631
+ float clearCoatEho=environmentHorizonOcclusion(-viewDirectionW,clearCoatNormalW,geometricNormalW);clearCoatEnvironmentReflectance*=clearCoatEho;
1632
+ #endif
1633
+ #endif
1634
+ #endif
1635
+ #else
1636
+ vec3 clearCoatEnvironmentReflectance=getReflectanceFromAnalyticalBRDFLookup_Jones(clearCoatNdotV,vec3(1.),vec3(1.),sqrt(1.-clearCoatRoughness));
1637
+ #endif
1638
+ clearCoatEnvironmentReflectance*=clearCoatIntensity;
1639
+ #if DEBUGMODE>0
1640
+ outParams.clearCoatEnvironmentReflectance=clearCoatEnvironmentReflectance;
1641
+ #endif
1642
+ outParams.finalClearCoatRadianceScaled=
1643
+ environmentClearCoatRadiance.rgb *
1644
+ clearCoatEnvironmentReflectance *
1645
+ vLightingIntensity.z;
1646
+ #endif
1647
+ #if defined(CLEARCOAT_TINT)
1648
+ outParams.absorption=computeClearCoatAbsorption(outParams.clearCoatNdotVRefract,outParams.clearCoatNdotVRefract,outParams.clearCoatColor,clearCoatThickness,clearCoatIntensity);
1649
+ #endif
1650
+ float fresnelIBLClearCoat=fresnelSchlickGGX(clearCoatNdotV,vClearCoatRefractionParams.x,CLEARCOATREFLECTANCE90);fresnelIBLClearCoat*=clearCoatIntensity;outParams.conservationFactor=(1.-fresnelIBLClearCoat);
1651
+ #if defined(ENVIRONMENTBRDF) && defined(MS_BRDF_ENERGY_CONSERVATION)
1652
+ outParams.energyConservationFactorClearCoat=getEnergyConservationFactor(outParams.specularEnvironmentR0,environmentClearCoatBrdf);
1653
+ #endif
1654
+ return outParams;}
1655
+ #endif
1656
+ `;
1657
+ // Sideeffect
1658
+ ShaderStore.IncludesShadersStore[name$f] = shader$f;
1659
+
1660
+ // Do not edit.
1661
+ const name$e = "pbrBlockIridescence";
1662
+ const shader$e = `struct iridescenceOutParams
1663
+ {float iridescenceIntensity;float iridescenceIOR;float iridescenceThickness;vec3 specularEnvironmentR0;};
1664
+ #ifdef IRIDESCENCE
1665
+ #define pbr_inline
1666
+ #define inline
1667
+ iridescenceOutParams iridescenceBlock(
1668
+ in vec4 vIridescenceParams
1669
+ ,in float viewAngle
1670
+ ,in vec3 specularEnvironmentR0
1671
+ #ifdef IRIDESCENCE_TEXTURE
1672
+ ,in vec2 iridescenceMapData
1673
+ #endif
1674
+ #ifdef IRIDESCENCE_THICKNESS_TEXTURE
1675
+ ,in vec2 iridescenceThicknessMapData
1676
+ #endif
1677
+ #ifdef CLEARCOAT
1678
+ ,in float NdotVUnclamped
1679
+ #ifdef CLEARCOAT_TEXTURE
1680
+ ,in vec2 clearCoatMapData
1681
+ #endif
1682
+ #endif
1683
+ )
1684
+ {iridescenceOutParams outParams;float iridescenceIntensity=vIridescenceParams.x;float iridescenceIOR=vIridescenceParams.y;float iridescenceThicknessMin=vIridescenceParams.z;float iridescenceThicknessMax=vIridescenceParams.w;float iridescenceThicknessWeight=1.;
1685
+ #ifdef IRIDESCENCE_TEXTURE
1686
+ iridescenceIntensity*=iridescenceMapData.x;
1687
+ #endif
1688
+ #if defined(IRIDESCENCE_THICKNESS_TEXTURE)
1689
+ iridescenceThicknessWeight=iridescenceThicknessMapData.g;
1690
+ #endif
1691
+ float iridescenceThickness=mix(iridescenceThicknessMin,iridescenceThicknessMax,iridescenceThicknessWeight);float topIor=1.;
1692
+ #ifdef CLEARCOAT
1693
+ float clearCoatIntensity=vClearCoatParams.x;
1694
+ #ifdef CLEARCOAT_TEXTURE
1695
+ clearCoatIntensity*=clearCoatMapData.x;
1696
+ #endif
1697
+ topIor=mix(1.0,vClearCoatRefractionParams.w-1.,clearCoatIntensity);viewAngle=sqrt(1.0+square(1.0/topIor)*(square(NdotVUnclamped)-1.0));
1698
+ #endif
1699
+ vec3 iridescenceFresnel=evalIridescence(topIor,iridescenceIOR,viewAngle,iridescenceThickness,specularEnvironmentR0);outParams.specularEnvironmentR0=mix(specularEnvironmentR0,iridescenceFresnel,iridescenceIntensity);outParams.iridescenceIntensity=iridescenceIntensity;outParams.iridescenceThickness=iridescenceThickness;outParams.iridescenceIOR=iridescenceIOR;return outParams;}
1700
+ #endif
1701
+ `;
1702
+ // Sideeffect
1703
+ ShaderStore.IncludesShadersStore[name$e] = shader$e;
1704
+
1705
+ // Do not edit.
1706
+ const name$d = "pbrBlockSubSurface";
1707
+ const shader$d = `struct subSurfaceOutParams
1708
+ {vec3 specularEnvironmentReflectance;
1709
+ #ifdef SS_REFRACTION
1710
+ vec3 finalRefraction;vec3 surfaceAlbedo;
1711
+ #ifdef SS_LINKREFRACTIONTOTRANSPARENCY
1712
+ float alpha;
1713
+ #endif
1714
+ #ifdef REFLECTION
1715
+ float refractionFactorForIrradiance;
1716
+ #endif
1717
+ #endif
1718
+ #ifdef SS_TRANSLUCENCY
1719
+ vec3 transmittance;float translucencyIntensity;
1720
+ #ifdef REFLECTION
1721
+ vec3 refractionIrradiance;
1722
+ #endif
1723
+ #endif
1724
+ #if DEBUGMODE>0
1725
+ #ifdef SS_THICKNESSANDMASK_TEXTURE
1726
+ vec4 thicknessMap;
1727
+ #endif
1728
+ #ifdef SS_REFRACTION
1729
+ vec4 environmentRefraction;vec3 refractionTransmittance;
1730
+ #endif
1731
+ #endif
1732
+ };
1733
+ #ifdef SUBSURFACE
1734
+ #ifdef SS_REFRACTION
1735
+ #define pbr_inline
1736
+ #define inline
1737
+ vec4 sampleEnvironmentRefraction(
1738
+ in float ior
1739
+ ,in float thickness
1740
+ ,in float refractionLOD
1741
+ ,in vec3 normalW
1742
+ ,in vec3 vPositionW
1743
+ ,in vec3 viewDirectionW
1744
+ ,in mat4 view
1745
+ ,in vec4 vRefractionInfos
1746
+ ,in mat4 refractionMatrix
1747
+ ,in vec4 vRefractionMicrosurfaceInfos
1748
+ ,in float alphaG
1749
+ #ifdef SS_REFRACTIONMAP_3D
1750
+ ,in samplerCube refractionSampler
1751
+ #ifndef LODBASEDMICROSFURACE
1752
+ ,in samplerCube refractionSamplerLow
1753
+ ,in samplerCube refractionSamplerHigh
1754
+ #endif
1755
+ #else
1756
+ ,in sampler2D refractionSampler
1757
+ #ifndef LODBASEDMICROSFURACE
1758
+ ,in sampler2D refractionSamplerLow
1759
+ ,in sampler2D refractionSamplerHigh
1760
+ #endif
1761
+ #endif
1762
+ #ifdef ANISOTROPIC
1763
+ ,in anisotropicOutParams anisotropicOut
1764
+ #endif
1765
+ #ifdef REALTIME_FILTERING
1766
+ ,in vec2 vRefractionFilteringInfo
1767
+ #endif
1768
+ #ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC
1769
+ ,in vec3 refractionPosition
1770
+ ,in vec3 refractionSize
1771
+ #endif
1772
+ ) {vec4 environmentRefraction=vec4(0.,0.,0.,0.);
1773
+ #ifdef ANISOTROPIC
1774
+ vec3 refractionVector=refract(-viewDirectionW,anisotropicOut.anisotropicNormal,ior);
1775
+ #else
1776
+ vec3 refractionVector=refract(-viewDirectionW,normalW,ior);
1777
+ #endif
1778
+ #ifdef SS_REFRACTIONMAP_OPPOSITEZ
1779
+ refractionVector.z*=-1.0;
1780
+ #endif
1781
+ #ifdef SS_REFRACTIONMAP_3D
1782
+ #ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC
1783
+ refractionVector=parallaxCorrectNormal(vPositionW,refractionVector,refractionSize,refractionPosition);
1784
+ #endif
1785
+ refractionVector.y=refractionVector.y*vRefractionInfos.w;vec3 refractionCoords=refractionVector;refractionCoords=vec3(refractionMatrix*vec4(refractionCoords,0));
1786
+ #else
1787
+ #ifdef SS_USE_THICKNESS_AS_DEPTH
1788
+ vec3 vRefractionUVW=vec3(refractionMatrix*(view*vec4(vPositionW+refractionVector*thickness,1.0)));
1789
+ #else
1790
+ vec3 vRefractionUVW=vec3(refractionMatrix*(view*vec4(vPositionW+refractionVector*vRefractionInfos.z,1.0)));
1791
+ #endif
1792
+ vec2 refractionCoords=vRefractionUVW.xy/vRefractionUVW.z;refractionCoords.y=1.0-refractionCoords.y;
1793
+ #endif
1794
+ #ifdef LODBASEDMICROSFURACE
1795
+ refractionLOD=refractionLOD*vRefractionMicrosurfaceInfos.y+vRefractionMicrosurfaceInfos.z;
1796
+ #ifdef SS_LODINREFRACTIONALPHA
1797
+ float automaticRefractionLOD=UNPACK_LOD(sampleRefraction(refractionSampler,refractionCoords).a);float requestedRefractionLOD=max(automaticRefractionLOD,refractionLOD);
1798
+ #else
1799
+ float requestedRefractionLOD=refractionLOD;
1800
+ #endif
1801
+ #if defined(REALTIME_FILTERING) && defined(SS_REFRACTIONMAP_3D)
1802
+ environmentRefraction=vec4(radiance(alphaG,refractionSampler,refractionCoords,vRefractionFilteringInfo),1.0);
1803
+ #else
1804
+ environmentRefraction=sampleRefractionLod(refractionSampler,refractionCoords,requestedRefractionLOD);
1805
+ #endif
1806
+ #else
1807
+ float lodRefractionNormalized=saturate(refractionLOD/log2(vRefractionMicrosurfaceInfos.x));float lodRefractionNormalizedDoubled=lodRefractionNormalized*2.0;vec4 environmentRefractionMid=sampleRefraction(refractionSampler,refractionCoords);if (lodRefractionNormalizedDoubled<1.0){environmentRefraction=mix(
1808
+ sampleRefraction(refractionSamplerHigh,refractionCoords),
1809
+ environmentRefractionMid,
1810
+ lodRefractionNormalizedDoubled
1811
+ );} else {environmentRefraction=mix(
1812
+ environmentRefractionMid,
1813
+ sampleRefraction(refractionSamplerLow,refractionCoords),
1814
+ lodRefractionNormalizedDoubled-1.0
1815
+ );}
1816
+ #endif
1817
+ #ifdef SS_RGBDREFRACTION
1818
+ environmentRefraction.rgb=fromRGBD(environmentRefraction);
1819
+ #endif
1820
+ #ifdef SS_GAMMAREFRACTION
1821
+ environmentRefraction.rgb=toLinearSpace(environmentRefraction.rgb);
1822
+ #endif
1823
+ return environmentRefraction;}
1824
+ #endif
1825
+ #define pbr_inline
1826
+ #define inline
1827
+ subSurfaceOutParams subSurfaceBlock(
1828
+ in vec3 vSubSurfaceIntensity
1829
+ ,in vec2 vThicknessParam
1830
+ ,in vec4 vTintColor
1831
+ ,in vec3 normalW
1832
+ ,in vec3 specularEnvironmentReflectance
1833
+ #ifdef SS_THICKNESSANDMASK_TEXTURE
1834
+ ,in vec4 thicknessMap
1835
+ #endif
1836
+ #ifdef SS_REFRACTIONINTENSITY_TEXTURE
1837
+ ,in vec4 refractionIntensityMap
1838
+ #endif
1839
+ #ifdef SS_TRANSLUCENCYINTENSITY_TEXTURE
1840
+ ,in vec4 translucencyIntensityMap
1841
+ #endif
1842
+ #ifdef REFLECTION
1843
+ #ifdef SS_TRANSLUCENCY
1844
+ ,in mat4 reflectionMatrix
1845
+ #ifdef USESPHERICALFROMREFLECTIONMAP
1846
+ #if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)
1847
+ ,in vec3 irradianceVector_
1848
+ #endif
1849
+ #if defined(REALTIME_FILTERING)
1850
+ ,in samplerCube reflectionSampler
1851
+ ,in vec2 vReflectionFilteringInfo
1852
+ #endif
1853
+ #endif
1854
+ #ifdef USEIRRADIANCEMAP
1855
+ #ifdef REFLECTIONMAP_3D
1856
+ ,in samplerCube irradianceSampler
1857
+ #else
1858
+ ,in sampler2D irradianceSampler
1859
+ #endif
1860
+ #endif
1861
+ #endif
1862
+ #endif
1863
+ #if defined(SS_REFRACTION) || defined(SS_TRANSLUCENCY)
1864
+ ,in vec3 surfaceAlbedo
1865
+ #endif
1866
+ #ifdef SS_REFRACTION
1867
+ ,in vec3 vPositionW
1868
+ ,in vec3 viewDirectionW
1869
+ ,in mat4 view
1870
+ ,in vec4 vRefractionInfos
1871
+ ,in mat4 refractionMatrix
1872
+ ,in vec4 vRefractionMicrosurfaceInfos
1873
+ ,in vec4 vLightingIntensity
1874
+ #ifdef SS_LINKREFRACTIONTOTRANSPARENCY
1875
+ ,in float alpha
1876
+ #endif
1877
+ #ifdef SS_LODINREFRACTIONALPHA
1878
+ ,in float NdotVUnclamped
1879
+ #endif
1880
+ #ifdef SS_LINEARSPECULARREFRACTION
1881
+ ,in float roughness
1882
+ #endif
1883
+ ,in float alphaG
1884
+ #ifdef SS_REFRACTIONMAP_3D
1885
+ ,in samplerCube refractionSampler
1886
+ #ifndef LODBASEDMICROSFURACE
1887
+ ,in samplerCube refractionSamplerLow
1888
+ ,in samplerCube refractionSamplerHigh
1889
+ #endif
1890
+ #else
1891
+ ,in sampler2D refractionSampler
1892
+ #ifndef LODBASEDMICROSFURACE
1893
+ ,in sampler2D refractionSamplerLow
1894
+ ,in sampler2D refractionSamplerHigh
1895
+ #endif
1896
+ #endif
1897
+ #ifdef ANISOTROPIC
1898
+ ,in anisotropicOutParams anisotropicOut
1899
+ #endif
1900
+ #ifdef REALTIME_FILTERING
1901
+ ,in vec2 vRefractionFilteringInfo
1902
+ #endif
1903
+ #ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC
1904
+ ,in vec3 refractionPosition
1905
+ ,in vec3 refractionSize
1906
+ #endif
1907
+ #ifdef SS_DISPERSION
1908
+ ,in float dispersion
1909
+ #endif
1910
+ #endif
1911
+ #ifdef SS_TRANSLUCENCY
1912
+ ,in vec3 vDiffusionDistance
1913
+ ,in vec4 vTranslucencyColor
1914
+ #ifdef SS_TRANSLUCENCYCOLOR_TEXTURE
1915
+ ,in vec4 translucencyColorMap
1916
+ #endif
1917
+ #endif
1918
+ )
1919
+ {subSurfaceOutParams outParams;outParams.specularEnvironmentReflectance=specularEnvironmentReflectance;
1920
+ #ifdef SS_REFRACTION
1921
+ float refractionIntensity=vSubSurfaceIntensity.x;
1922
+ #ifdef SS_LINKREFRACTIONTOTRANSPARENCY
1923
+ refractionIntensity*=(1.0-alpha);outParams.alpha=1.0;
1924
+ #endif
1925
+ #endif
1926
+ #ifdef SS_TRANSLUCENCY
1927
+ float translucencyIntensity=vSubSurfaceIntensity.y;
1928
+ #endif
1929
+ #ifdef SS_THICKNESSANDMASK_TEXTURE
1930
+ #ifdef SS_USE_GLTF_TEXTURES
1931
+ float thickness=thicknessMap.g*vThicknessParam.y+vThicknessParam.x;
1932
+ #else
1933
+ float thickness=thicknessMap.r*vThicknessParam.y+vThicknessParam.x;
1934
+ #endif
1935
+ #if DEBUGMODE>0
1936
+ outParams.thicknessMap=thicknessMap;
1937
+ #endif
1938
+ #if defined(SS_REFRACTION) && defined(SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS)
1939
+ #ifdef SS_USE_GLTF_TEXTURES
1940
+ refractionIntensity*=thicknessMap.r;
1941
+ #else
1942
+ refractionIntensity*=thicknessMap.g;
1943
+ #endif
1944
+ #endif
1945
+ #if defined(SS_TRANSLUCENCY) && defined(SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS)
1946
+ #ifdef SS_USE_GLTF_TEXTURES
1947
+ translucencyIntensity*=thicknessMap.a;
1948
+ #else
1949
+ translucencyIntensity*=thicknessMap.b;
1950
+ #endif
1951
+ #endif
1952
+ #else
1953
+ float thickness=vThicknessParam.y;
1954
+ #endif
1955
+ #if defined(SS_REFRACTION) && defined(SS_REFRACTIONINTENSITY_TEXTURE)
1956
+ #ifdef SS_USE_GLTF_TEXTURES
1957
+ refractionIntensity*=refractionIntensityMap.r;
1958
+ #else
1959
+ refractionIntensity*=refractionIntensityMap.g;
1960
+ #endif
1961
+ #endif
1962
+ #if defined(SS_TRANSLUCENCY) && defined(SS_TRANSLUCENCYINTENSITY_TEXTURE)
1963
+ #ifdef SS_USE_GLTF_TEXTURES
1964
+ translucencyIntensity*=translucencyIntensityMap.a;
1965
+ #else
1966
+ translucencyIntensity*=translucencyIntensityMap.b;
1967
+ #endif
1968
+ #endif
1969
+ #ifdef SS_TRANSLUCENCY
1970
+ thickness=maxEps(thickness);vec4 translucencyColor=vTranslucencyColor;
1971
+ #ifdef SS_TRANSLUCENCYCOLOR_TEXTURE
1972
+ translucencyColor*=translucencyColorMap;
1973
+ #endif
1974
+ vec3 transmittance=transmittanceBRDF_Burley(translucencyColor.rgb,vDiffusionDistance,thickness);transmittance*=translucencyIntensity;outParams.transmittance=transmittance;outParams.translucencyIntensity=translucencyIntensity;
1975
+ #endif
1976
+ #ifdef SS_REFRACTION
1977
+ vec4 environmentRefraction=vec4(0.,0.,0.,0.);
1978
+ #ifdef SS_HAS_THICKNESS
1979
+ float ior=vRefractionInfos.y;
1980
+ #else
1981
+ float ior=vRefractionMicrosurfaceInfos.w;
1982
+ #endif
1983
+ #ifdef SS_LODINREFRACTIONALPHA
1984
+ float refractionAlphaG=alphaG;refractionAlphaG=mix(alphaG,0.0,clamp(ior*3.0-2.0,0.0,1.0));float refractionLOD=getLodFromAlphaG(vRefractionMicrosurfaceInfos.x,refractionAlphaG,NdotVUnclamped);
1985
+ #elif defined(SS_LINEARSPECULARREFRACTION)
1986
+ float refractionRoughness=alphaG;refractionRoughness=mix(alphaG,0.0,clamp(ior*3.0-2.0,0.0,1.0));float refractionLOD=getLinearLodFromRoughness(vRefractionMicrosurfaceInfos.x,refractionRoughness);
1987
+ #else
1988
+ float refractionAlphaG=alphaG;refractionAlphaG=mix(alphaG,0.0,clamp(ior*3.0-2.0,0.0,1.0));float refractionLOD=getLodFromAlphaG(vRefractionMicrosurfaceInfos.x,refractionAlphaG);
1989
+ #endif
1990
+ float refraction_ior=vRefractionInfos.y;
1991
+ #ifdef SS_DISPERSION
1992
+ float realIOR=1.0/refraction_ior;float iorDispersionSpread=0.04*dispersion*(realIOR-1.0);vec3 iors=vec3(1.0/(realIOR-iorDispersionSpread),refraction_ior,1.0/(realIOR+iorDispersionSpread));for (int i=0; i<3; i++) {refraction_ior=iors[i];
1993
+ #endif
1994
+ vec4 envSample=sampleEnvironmentRefraction(refraction_ior,thickness,refractionLOD,normalW,vPositionW,viewDirectionW,view,vRefractionInfos,refractionMatrix,vRefractionMicrosurfaceInfos,alphaG
1995
+ #ifdef SS_REFRACTIONMAP_3D
1996
+ ,refractionSampler
1997
+ #ifndef LODBASEDMICROSFURACE
1998
+ ,refractionSamplerLow
1999
+ ,refractionSamplerHigh
2000
+ #endif
2001
+ #else
2002
+ ,refractionSampler
2003
+ #ifndef LODBASEDMICROSFURACE
2004
+ ,refractionSamplerLow
2005
+ ,refractionSamplerHigh
2006
+ #endif
2007
+ #endif
2008
+ #ifdef ANISOTROPIC
2009
+ ,anisotropicOut
2010
+ #endif
2011
+ #ifdef REALTIME_FILTERING
2012
+ ,vRefractionFilteringInfo
2013
+ #endif
2014
+ #ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC
2015
+ ,refractionPosition
2016
+ ,refractionSize
2017
+ #endif
2018
+ );
2019
+ #ifdef SS_DISPERSION
2020
+ environmentRefraction[i]=envSample[i];}
2021
+ #else
2022
+ environmentRefraction=envSample;
2023
+ #endif
2024
+ environmentRefraction.rgb*=vRefractionInfos.x;
2025
+ #endif
2026
+ #ifdef SS_REFRACTION
2027
+ vec3 refractionTransmittance=vec3(refractionIntensity);
2028
+ #ifdef SS_THICKNESSANDMASK_TEXTURE
2029
+ vec3 volumeAlbedo=computeColorAtDistanceInMedia(vTintColor.rgb,vTintColor.w);refractionTransmittance*=cocaLambert(volumeAlbedo,thickness);
2030
+ #elif defined(SS_LINKREFRACTIONTOTRANSPARENCY)
2031
+ float maxChannel=max(max(surfaceAlbedo.r,surfaceAlbedo.g),surfaceAlbedo.b);vec3 volumeAlbedo=saturate(maxChannel*surfaceAlbedo);environmentRefraction.rgb*=volumeAlbedo;
2032
+ #else
2033
+ vec3 volumeAlbedo=computeColorAtDistanceInMedia(vTintColor.rgb,vTintColor.w);refractionTransmittance*=cocaLambert(volumeAlbedo,vThicknessParam.y);
2034
+ #endif
2035
+ #ifdef SS_ALBEDOFORREFRACTIONTINT
2036
+ environmentRefraction.rgb*=surfaceAlbedo.rgb;
2037
+ #endif
2038
+ outParams.surfaceAlbedo=surfaceAlbedo*(1.-refractionIntensity);
2039
+ #ifdef REFLECTION
2040
+ outParams.refractionFactorForIrradiance=(1.-refractionIntensity);
2041
+ #endif
2042
+ #ifdef UNUSED_MULTIPLEBOUNCES
2043
+ vec3 bounceSpecularEnvironmentReflectance=(2.0*specularEnvironmentReflectance)/(1.0+specularEnvironmentReflectance);outParams.specularEnvironmentReflectance=mix(bounceSpecularEnvironmentReflectance,specularEnvironmentReflectance,refractionIntensity);
2044
+ #endif
2045
+ refractionTransmittance*=1.0-outParams.specularEnvironmentReflectance;
2046
+ #if DEBUGMODE>0
2047
+ outParams.refractionTransmittance=refractionTransmittance;
2048
+ #endif
2049
+ outParams.finalRefraction=environmentRefraction.rgb*refractionTransmittance*vLightingIntensity.z;
2050
+ #if DEBUGMODE>0
2051
+ outParams.environmentRefraction=environmentRefraction;
2052
+ #endif
2053
+ #endif
2054
+ #if defined(REFLECTION) && defined(SS_TRANSLUCENCY)
2055
+ #if defined(NORMAL) && defined(USESPHERICALINVERTEX) || !defined(USESPHERICALFROMREFLECTIONMAP)
2056
+ vec3 irradianceVector=vec3(reflectionMatrix*vec4(normalW,0)).xyz;
2057
+ #ifdef REFLECTIONMAP_OPPOSITEZ
2058
+ irradianceVector.z*=-1.0;
2059
+ #endif
2060
+ #ifdef INVERTCUBICMAP
2061
+ irradianceVector.y*=-1.0;
2062
+ #endif
2063
+ #else
2064
+ vec3 irradianceVector=irradianceVector_;
2065
+ #endif
2066
+ #if defined(USESPHERICALFROMREFLECTIONMAP)
2067
+ #if defined(REALTIME_FILTERING)
2068
+ vec3 refractionIrradiance=irradiance(reflectionSampler,-irradianceVector,vReflectionFilteringInfo);
2069
+ #else
2070
+ vec3 refractionIrradiance=computeEnvironmentIrradiance(-irradianceVector);
2071
+ #endif
2072
+ #elif defined(USEIRRADIANCEMAP)
2073
+ #ifdef REFLECTIONMAP_3D
2074
+ vec3 irradianceCoords=irradianceVector;
2075
+ #else
2076
+ vec2 irradianceCoords=irradianceVector.xy;
2077
+ #ifdef REFLECTIONMAP_PROJECTION
2078
+ irradianceCoords/=irradianceVector.z;
2079
+ #endif
2080
+ irradianceCoords.y=1.0-irradianceCoords.y;
2081
+ #endif
2082
+ vec4 refractionIrradiance=sampleReflection(irradianceSampler,-irradianceCoords);
2083
+ #ifdef RGBDREFLECTION
2084
+ refractionIrradiance.rgb=fromRGBD(refractionIrradiance);
2085
+ #endif
2086
+ #ifdef GAMMAREFLECTION
2087
+ refractionIrradiance.rgb=toLinearSpace(refractionIrradiance.rgb);
2088
+ #endif
2089
+ #else
2090
+ vec4 refractionIrradiance=vec4(0.);
2091
+ #endif
2092
+ refractionIrradiance.rgb*=transmittance;
2093
+ #ifdef SS_ALBEDOFORTRANSLUCENCYTINT
2094
+ refractionIrradiance.rgb*=surfaceAlbedo.rgb;
2095
+ #endif
2096
+ outParams.refractionIrradiance=refractionIrradiance.rgb;
2097
+ #endif
2098
+ return outParams;}
2099
+ #endif
2100
+ `;
2101
+ // Sideeffect
2102
+ ShaderStore.IncludesShadersStore[name$d] = shader$d;
2103
+
2104
+ // Do not edit.
2105
+ const name$c = "pbrBlockNormalGeometric";
2106
+ const shader$c = `vec3 viewDirectionW=normalize(vEyePosition.xyz-vPositionW);
2107
+ #ifdef NORMAL
2108
+ vec3 normalW=normalize(vNormalW);
2109
+ #else
2110
+ vec3 normalW=normalize(cross(dFdx(vPositionW),dFdy(vPositionW)))*vEyePosition.w;
2111
+ #endif
2112
+ vec3 geometricNormalW=normalW;
2113
+ #if defined(TWOSIDEDLIGHTING) && defined(NORMAL)
2114
+ geometricNormalW=gl_FrontFacing ? geometricNormalW : -geometricNormalW;
2115
+ #endif
2116
+ `;
2117
+ // Sideeffect
2118
+ ShaderStore.IncludesShadersStore[name$c] = shader$c;
2119
+
2120
+ // Do not edit.
2121
+ const name$b = "pbrBlockNormalFinal";
2122
+ const shader$b = `#if defined(FORCENORMALFORWARD) && defined(NORMAL)
2123
+ vec3 faceNormal=normalize(cross(dFdx(vPositionW),dFdy(vPositionW)))*vEyePosition.w;
2124
+ #if defined(TWOSIDEDLIGHTING)
2125
+ faceNormal=gl_FrontFacing ? faceNormal : -faceNormal;
2126
+ #endif
2127
+ normalW*=sign(dot(normalW,faceNormal));
2128
+ #endif
2129
+ #if defined(TWOSIDEDLIGHTING) && defined(NORMAL)
2130
+ normalW=gl_FrontFacing ? normalW : -normalW;
2131
+ #endif
2132
+ `;
2133
+ // Sideeffect
2134
+ ShaderStore.IncludesShadersStore[name$b] = shader$b;
2135
+
2136
+ // Do not edit.
2137
+ const name$a = "pbrBlockLightmapInit";
2138
+ const shader$a = `#ifdef LIGHTMAP
2139
+ vec4 lightmapColor=texture2D(lightmapSampler,vLightmapUV+uvOffset);
2140
+ #ifdef RGBDLIGHTMAP
2141
+ lightmapColor.rgb=fromRGBD(lightmapColor);
2142
+ #endif
2143
+ #ifdef GAMMALIGHTMAP
2144
+ lightmapColor.rgb=toLinearSpace(lightmapColor.rgb);
2145
+ #endif
2146
+ lightmapColor.rgb*=vLightmapInfos.y;
2147
+ #endif
2148
+ `;
2149
+ // Sideeffect
2150
+ ShaderStore.IncludesShadersStore[name$a] = shader$a;
2151
+
2152
+ // Do not edit.
2153
+ const name$9 = "pbrBlockGeometryInfo";
2154
+ const shader$9 = `float NdotVUnclamped=dot(normalW,viewDirectionW);float NdotV=absEps(NdotVUnclamped);float alphaG=convertRoughnessToAverageSlope(roughness);vec2 AARoughnessFactors=getAARoughnessFactors(normalW.xyz);
2155
+ #ifdef SPECULARAA
2156
+ alphaG+=AARoughnessFactors.y;
2157
+ #endif
2158
+ #if defined(ENVIRONMENTBRDF)
2159
+ vec3 environmentBrdf=getBRDFLookup(NdotV,roughness);
2160
+ #endif
2161
+ #if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
2162
+ #ifdef RADIANCEOCCLUSION
2163
+ #ifdef AMBIENTINGRAYSCALE
2164
+ float ambientMonochrome=aoOut.ambientOcclusionColor.r;
2165
+ #else
2166
+ float ambientMonochrome=getLuminance(aoOut.ambientOcclusionColor);
2167
+ #endif
2168
+ float seo=environmentRadianceOcclusion(ambientMonochrome,NdotVUnclamped);
2169
+ #endif
2170
+ #ifdef HORIZONOCCLUSION
2171
+ #ifdef BUMP
2172
+ #ifdef REFLECTIONMAP_3D
2173
+ float eho=environmentHorizonOcclusion(-viewDirectionW,normalW,geometricNormalW);
2174
+ #endif
2175
+ #endif
2176
+ #endif
2177
+ #endif
2178
+ `;
2179
+ // Sideeffect
2180
+ ShaderStore.IncludesShadersStore[name$9] = shader$9;
2181
+
2182
+ // Do not edit.
2183
+ const name$8 = "pbrBlockReflectance0";
2184
+ const shader$8 = `float reflectance=max(max(reflectivityOut.surfaceReflectivityColor.r,reflectivityOut.surfaceReflectivityColor.g),reflectivityOut.surfaceReflectivityColor.b);vec3 specularEnvironmentR0=reflectivityOut.surfaceReflectivityColor.rgb;
2185
+ #ifdef METALLICWORKFLOW
2186
+ vec3 specularEnvironmentR90=vec3(metallicReflectanceFactors.a);
2187
+ #else
2188
+ vec3 specularEnvironmentR90=vec3(1.0,1.0,1.0);
2189
+ #endif
2190
+ #ifdef ALPHAFRESNEL
2191
+ float reflectance90=fresnelGrazingReflectance(reflectance);specularEnvironmentR90=specularEnvironmentR90*reflectance90;
2192
+ #endif
2193
+ `;
2194
+ // Sideeffect
2195
+ ShaderStore.IncludesShadersStore[name$8] = shader$8;
2196
+
2197
+ // Do not edit.
2198
+ const name$7 = "pbrBlockReflectance";
2199
+ const shader$7 = `#if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
2200
+ vec3 specularEnvironmentReflectance=getReflectanceFromBRDFLookup(clearcoatOut.specularEnvironmentR0,specularEnvironmentR90,environmentBrdf);
2201
+ #ifdef RADIANCEOCCLUSION
2202
+ specularEnvironmentReflectance*=seo;
2203
+ #endif
2204
+ #ifdef HORIZONOCCLUSION
2205
+ #ifdef BUMP
2206
+ #ifdef REFLECTIONMAP_3D
2207
+ specularEnvironmentReflectance*=eho;
2208
+ #endif
2209
+ #endif
2210
+ #endif
2211
+ #else
2212
+ vec3 specularEnvironmentReflectance=getReflectanceFromAnalyticalBRDFLookup_Jones(NdotV,clearcoatOut.specularEnvironmentR0,specularEnvironmentR90,sqrt(microSurface));
2213
+ #endif
2214
+ #ifdef CLEARCOAT
2215
+ specularEnvironmentReflectance*=clearcoatOut.conservationFactor;
2216
+ #if defined(CLEARCOAT_TINT)
2217
+ specularEnvironmentReflectance*=clearcoatOut.absorption;
2218
+ #endif
2219
+ #endif
2220
+ `;
2221
+ // Sideeffect
2222
+ ShaderStore.IncludesShadersStore[name$7] = shader$7;
2223
+
2224
+ // Do not edit.
2225
+ const name$6 = "pbrBlockDirectLighting";
2226
+ const shader$6 = `vec3 diffuseBase=vec3(0.,0.,0.);
2227
+ #ifdef SPECULARTERM
2228
+ vec3 specularBase=vec3(0.,0.,0.);
2229
+ #endif
2230
+ #ifdef CLEARCOAT
2231
+ vec3 clearCoatBase=vec3(0.,0.,0.);
2232
+ #endif
2233
+ #ifdef SHEEN
2234
+ vec3 sheenBase=vec3(0.,0.,0.);
2235
+ #endif
2236
+ preLightingInfo preInfo;lightingInfo info;float shadow=1.;
2237
+ float aggShadow=0.;float numLights=0.;
2238
+ #if defined(CLEARCOAT) && defined(CLEARCOAT_TINT)
2239
+ vec3 absorption=vec3(0.);
2240
+ #endif
2241
+ `;
2242
+ // Sideeffect
2243
+ ShaderStore.IncludesShadersStore[name$6] = shader$6;
2244
+
2245
+ // Do not edit.
2246
+ const name$5 = "pbrBlockFinalLitComponents";
2247
+ const shader$5 = `aggShadow=aggShadow/numLights;
2248
+ #if defined(ENVIRONMENTBRDF)
2249
+ #ifdef MS_BRDF_ENERGY_CONSERVATION
2250
+ vec3 energyConservationFactor=getEnergyConservationFactor(clearcoatOut.specularEnvironmentR0,environmentBrdf);
2251
+ #endif
2252
+ #endif
2253
+ #ifndef METALLICWORKFLOW
2254
+ #ifdef SPECULAR_GLOSSINESS_ENERGY_CONSERVATION
2255
+ surfaceAlbedo.rgb=(1.-reflectance)*surfaceAlbedo.rgb;
2256
+ #endif
2257
+ #endif
2258
+ #if defined(SHEEN) && defined(SHEEN_ALBEDOSCALING) && defined(ENVIRONMENTBRDF)
2259
+ surfaceAlbedo.rgb=sheenOut.sheenAlbedoScaling*surfaceAlbedo.rgb;
2260
+ #endif
2261
+ #ifdef REFLECTION
2262
+ vec3 finalIrradiance=reflectionOut.environmentIrradiance;
2263
+ #if defined(CLEARCOAT)
2264
+ finalIrradiance*=clearcoatOut.conservationFactor;
2265
+ #if defined(CLEARCOAT_TINT)
2266
+ finalIrradiance*=clearcoatOut.absorption;
2267
+ #endif
2268
+ #endif
2269
+ #if defined(SS_REFRACTION)
2270
+ finalIrradiance*=subSurfaceOut.refractionFactorForIrradiance;
2271
+ #endif
2272
+ #if defined(SS_TRANSLUCENCY)
2273
+ finalIrradiance*=(1.0-subSurfaceOut.translucencyIntensity);finalIrradiance+=subSurfaceOut.refractionIrradiance;
2274
+ #endif
2275
+ finalIrradiance*=surfaceAlbedo.rgb;finalIrradiance*=vLightingIntensity.z;finalIrradiance*=aoOut.ambientOcclusionColor;
2276
+ #endif
2277
+ #ifdef SPECULARTERM
2278
+ vec3 finalSpecular=specularBase;finalSpecular=max(finalSpecular,0.0);vec3 finalSpecularScaled=finalSpecular*vLightingIntensity.x*vLightingIntensity.w;
2279
+ #if defined(ENVIRONMENTBRDF) && defined(MS_BRDF_ENERGY_CONSERVATION)
2280
+ finalSpecularScaled*=energyConservationFactor;
2281
+ #endif
2282
+ #if defined(SHEEN) && defined(ENVIRONMENTBRDF) && defined(SHEEN_ALBEDOSCALING)
2283
+ finalSpecularScaled*=sheenOut.sheenAlbedoScaling;
2284
+ #endif
2285
+ #endif
2286
+ #ifdef REFLECTION
2287
+ vec3 finalRadiance=reflectionOut.environmentRadiance.rgb;finalRadiance*=subSurfaceOut.specularEnvironmentReflectance;vec3 finalRadianceScaled=finalRadiance*vLightingIntensity.z;
2288
+ #if defined(ENVIRONMENTBRDF) && defined(MS_BRDF_ENERGY_CONSERVATION)
2289
+ finalRadianceScaled*=energyConservationFactor;
2290
+ #endif
2291
+ #if defined(SHEEN) && defined(ENVIRONMENTBRDF) && defined(SHEEN_ALBEDOSCALING)
2292
+ finalRadianceScaled*=sheenOut.sheenAlbedoScaling;
2293
+ #endif
2294
+ #endif
2295
+ #ifdef SHEEN
2296
+ vec3 finalSheen=sheenBase*sheenOut.sheenColor;finalSheen=max(finalSheen,0.0);vec3 finalSheenScaled=finalSheen*vLightingIntensity.x*vLightingIntensity.w;
2297
+ #if defined(CLEARCOAT) && defined(REFLECTION) && defined(ENVIRONMENTBRDF)
2298
+ sheenOut.finalSheenRadianceScaled*=clearcoatOut.conservationFactor;
2299
+ #if defined(CLEARCOAT_TINT)
2300
+ sheenOut.finalSheenRadianceScaled*=clearcoatOut.absorption;
2301
+ #endif
2302
+ #endif
2303
+ #endif
2304
+ #ifdef CLEARCOAT
2305
+ vec3 finalClearCoat=clearCoatBase;finalClearCoat=max(finalClearCoat,0.0);vec3 finalClearCoatScaled=finalClearCoat*vLightingIntensity.x*vLightingIntensity.w;
2306
+ #if defined(ENVIRONMENTBRDF) && defined(MS_BRDF_ENERGY_CONSERVATION)
2307
+ finalClearCoatScaled*=clearcoatOut.energyConservationFactorClearCoat;
2308
+ #endif
2309
+ #ifdef SS_REFRACTION
2310
+ subSurfaceOut.finalRefraction*=clearcoatOut.conservationFactor;
2311
+ #ifdef CLEARCOAT_TINT
2312
+ subSurfaceOut.finalRefraction*=clearcoatOut.absorption;
2313
+ #endif
2314
+ #endif
2315
+ #endif
2316
+ #ifdef ALPHABLEND
2317
+ float luminanceOverAlpha=0.0;
2318
+ #if defined(REFLECTION) && defined(RADIANCEOVERALPHA)
2319
+ luminanceOverAlpha+=getLuminance(finalRadianceScaled);
2320
+ #if defined(CLEARCOAT)
2321
+ luminanceOverAlpha+=getLuminance(clearcoatOut.finalClearCoatRadianceScaled);
2322
+ #endif
2323
+ #endif
2324
+ #if defined(SPECULARTERM) && defined(SPECULAROVERALPHA)
2325
+ luminanceOverAlpha+=getLuminance(finalSpecularScaled);
2326
+ #endif
2327
+ #if defined(CLEARCOAT) && defined(CLEARCOATOVERALPHA)
2328
+ luminanceOverAlpha+=getLuminance(finalClearCoatScaled);
2329
+ #endif
2330
+ #if defined(RADIANCEOVERALPHA) || defined(SPECULAROVERALPHA) || defined(CLEARCOATOVERALPHA)
2331
+ alpha=saturate(alpha+luminanceOverAlpha*luminanceOverAlpha);
2332
+ #endif
2333
+ #endif
2334
+ `;
2335
+ // Sideeffect
2336
+ ShaderStore.IncludesShadersStore[name$5] = shader$5;
2337
+
2338
+ // Do not edit.
2339
+ const name$4 = "pbrBlockFinalUnlitComponents";
2340
+ const shader$4 = `vec3 finalDiffuse=diffuseBase;finalDiffuse*=surfaceAlbedo.rgb;finalDiffuse=max(finalDiffuse,0.0);finalDiffuse*=vLightingIntensity.x;vec3 finalAmbient=vAmbientColor;finalAmbient*=surfaceAlbedo.rgb;vec3 finalEmissive=vEmissiveColor;
2341
+ #ifdef EMISSIVE
2342
+ vec3 emissiveColorTex=texture2D(emissiveSampler,vEmissiveUV+uvOffset).rgb;
2343
+ #ifdef GAMMAEMISSIVE
2344
+ finalEmissive*=toLinearSpace(emissiveColorTex.rgb);
2345
+ #else
2346
+ finalEmissive*=emissiveColorTex.rgb;
2347
+ #endif
2348
+ finalEmissive*= vEmissiveInfos.y;
2349
+ #endif
2350
+ finalEmissive*=vLightingIntensity.y;
2351
+ #ifdef AMBIENT
2352
+ vec3 ambientOcclusionForDirectDiffuse=mix(vec3(1.),aoOut.ambientOcclusionColor,vAmbientInfos.w);
2353
+ #else
2354
+ vec3 ambientOcclusionForDirectDiffuse=aoOut.ambientOcclusionColor;
2355
+ #endif
2356
+ finalAmbient*=aoOut.ambientOcclusionColor;finalDiffuse*=ambientOcclusionForDirectDiffuse;
2357
+ `;
2358
+ // Sideeffect
2359
+ ShaderStore.IncludesShadersStore[name$4] = shader$4;
2360
+
2361
+ // Do not edit.
2362
+ const name$3 = "pbrBlockFinalColorComposition";
2363
+ const shader$3 = `vec4 finalColor=vec4(
2364
+ #ifndef UNLIT
2365
+ #ifdef REFLECTION
2366
+ finalIrradiance +
2367
+ #endif
2368
+ #ifdef SPECULARTERM
2369
+ finalSpecularScaled +
2370
+ #endif
2371
+ #ifdef SHEEN
2372
+ finalSheenScaled +
2373
+ #endif
2374
+ #ifdef CLEARCOAT
2375
+ finalClearCoatScaled +
2376
+ #endif
2377
+ #ifdef REFLECTION
2378
+ finalRadianceScaled +
2379
+ #if defined(SHEEN) && defined(ENVIRONMENTBRDF)
2380
+ sheenOut.finalSheenRadianceScaled +
2381
+ #endif
2382
+ #ifdef CLEARCOAT
2383
+ clearcoatOut.finalClearCoatRadianceScaled +
2384
+ #endif
2385
+ #endif
2386
+ #ifdef SS_REFRACTION
2387
+ subSurfaceOut.finalRefraction +
2388
+ #endif
2389
+ #endif
2390
+ finalAmbient +
2391
+ finalDiffuse,
2392
+ alpha);
2393
+ #ifdef LIGHTMAP
2394
+ #ifndef LIGHTMAPEXCLUDED
2395
+ #ifdef USELIGHTMAPASSHADOWMAP
2396
+ finalColor.rgb*=lightmapColor.rgb;
2397
+ #else
2398
+ finalColor.rgb+=lightmapColor.rgb;
2399
+ #endif
2400
+ #endif
2401
+ #endif
2402
+ finalColor.rgb+=finalEmissive;
2403
+ #define CUSTOM_FRAGMENT_BEFORE_FOG
2404
+ finalColor=max(finalColor,0.0);
2405
+ `;
2406
+ // Sideeffect
2407
+ ShaderStore.IncludesShadersStore[name$3] = shader$3;
2408
+
2409
+ // Do not edit.
2410
+ const name$2 = "pbrBlockImageProcessing";
2411
+ const shader$2 = `#if defined(IMAGEPROCESSINGPOSTPROCESS) || defined(SS_SCATTERING)
2412
+ #if !defined(SKIPFINALCOLORCLAMP)
2413
+ finalColor.rgb=clamp(finalColor.rgb,0.,30.0);
2414
+ #endif
2415
+ #else
2416
+ finalColor=applyImageProcessing(finalColor);
2417
+ #endif
2418
+ finalColor.a*=visibility;
2419
+ #ifdef PREMULTIPLYALPHA
2420
+ finalColor.rgb*=finalColor.a;
2421
+ #endif
2422
+ `;
2423
+ // Sideeffect
2424
+ ShaderStore.IncludesShadersStore[name$2] = shader$2;
2425
+
2426
+ // Do not edit.
2427
+ const name$1 = "pbrDebug";
2428
+ const shader$1 = `#if DEBUGMODE>0
2429
+ if (vClipSpacePosition.x/vClipSpacePosition.w>=vDebugMode.x) {
2430
+ #if DEBUGMODE==1
2431
+ gl_FragColor.rgb=vPositionW.rgb;
2432
+ #define DEBUGMODE_NORMALIZE
2433
+ #elif DEBUGMODE==2 && defined(NORMAL)
2434
+ gl_FragColor.rgb=vNormalW.rgb;
2435
+ #define DEBUGMODE_NORMALIZE
2436
+ #elif DEBUGMODE==3 && defined(BUMP) || DEBUGMODE==3 && defined(PARALLAX) || DEBUGMODE==3 && defined(ANISOTROPIC)
2437
+ gl_FragColor.rgb=TBN[0];
2438
+ #define DEBUGMODE_NORMALIZE
2439
+ #elif DEBUGMODE==4 && defined(BUMP) || DEBUGMODE==4 && defined(PARALLAX) || DEBUGMODE==4 && defined(ANISOTROPIC)
2440
+ gl_FragColor.rgb=TBN[1];
2441
+ #define DEBUGMODE_NORMALIZE
2442
+ #elif DEBUGMODE==5
2443
+ gl_FragColor.rgb=normalW;
2444
+ #define DEBUGMODE_NORMALIZE
2445
+ #elif DEBUGMODE==6 && defined(MAINUV1)
2446
+ gl_FragColor.rgb=vec3(vMainUV1,0.0);
2447
+ #elif DEBUGMODE==7 && defined(MAINUV2)
2448
+ gl_FragColor.rgb=vec3(vMainUV2,0.0);
2449
+ #elif DEBUGMODE==8 && defined(CLEARCOAT) && defined(CLEARCOAT_BUMP)
2450
+ gl_FragColor.rgb=clearcoatOut.TBNClearCoat[0];
2451
+ #define DEBUGMODE_NORMALIZE
2452
+ #elif DEBUGMODE==9 && defined(CLEARCOAT) && defined(CLEARCOAT_BUMP)
2453
+ gl_FragColor.rgb=clearcoatOut.TBNClearCoat[1];
2454
+ #define DEBUGMODE_NORMALIZE
2455
+ #elif DEBUGMODE==10 && defined(CLEARCOAT)
2456
+ gl_FragColor.rgb=clearcoatOut.clearCoatNormalW;
2457
+ #define DEBUGMODE_NORMALIZE
2458
+ #elif DEBUGMODE==11 && defined(ANISOTROPIC)
2459
+ gl_FragColor.rgb=anisotropicOut.anisotropicNormal;
2460
+ #define DEBUGMODE_NORMALIZE
2461
+ #elif DEBUGMODE==12 && defined(ANISOTROPIC)
2462
+ gl_FragColor.rgb=anisotropicOut.anisotropicTangent;
2463
+ #define DEBUGMODE_NORMALIZE
2464
+ #elif DEBUGMODE==13 && defined(ANISOTROPIC)
2465
+ gl_FragColor.rgb=anisotropicOut.anisotropicBitangent;
2466
+ #define DEBUGMODE_NORMALIZE
2467
+ #elif DEBUGMODE==20 && defined(ALBEDO)
2468
+ gl_FragColor.rgb=albedoTexture.rgb;
2469
+ #ifndef GAMMAALBEDO
2470
+ #define DEBUGMODE_GAMMA
2471
+ #endif
2472
+ #elif DEBUGMODE==21 && defined(AMBIENT)
2473
+ gl_FragColor.rgb=aoOut.ambientOcclusionColorMap.rgb;
2474
+ #elif DEBUGMODE==22 && defined(OPACITY)
2475
+ gl_FragColor.rgb=opacityMap.rgb;
2476
+ #elif DEBUGMODE==23 && defined(EMISSIVE)
2477
+ gl_FragColor.rgb=emissiveColorTex.rgb;
2478
+ #ifndef GAMMAEMISSIVE
2479
+ #define DEBUGMODE_GAMMA
2480
+ #endif
2481
+ #elif DEBUGMODE==24 && defined(LIGHTMAP)
2482
+ gl_FragColor.rgb=lightmapColor.rgb;
2483
+ #ifndef GAMMALIGHTMAP
2484
+ #define DEBUGMODE_GAMMA
2485
+ #endif
2486
+ #elif DEBUGMODE==25 && defined(REFLECTIVITY) && defined(METALLICWORKFLOW)
2487
+ gl_FragColor.rgb=reflectivityOut.surfaceMetallicColorMap.rgb;
2488
+ #elif DEBUGMODE==26 && defined(REFLECTIVITY) && !defined(METALLICWORKFLOW)
2489
+ gl_FragColor.rgb=reflectivityOut.surfaceReflectivityColorMap.rgb;
2490
+ #define DEBUGMODE_GAMMA
2491
+ #elif DEBUGMODE==27 && defined(CLEARCOAT) && defined(CLEARCOAT_TEXTURE)
2492
+ gl_FragColor.rgb=vec3(clearcoatOut.clearCoatMapData.rg,0.0);
2493
+ #elif DEBUGMODE==28 && defined(CLEARCOAT) && defined(CLEARCOAT_TINT) && defined(CLEARCOAT_TINT_TEXTURE)
2494
+ gl_FragColor.rgb=clearcoatOut.clearCoatTintMapData.rgb;
2495
+ #elif DEBUGMODE==29 && defined(SHEEN) && defined(SHEEN_TEXTURE)
2496
+ gl_FragColor.rgb=sheenOut.sheenMapData.rgb;
2497
+ #elif DEBUGMODE==30 && defined(ANISOTROPIC) && defined(ANISOTROPIC_TEXTURE)
2498
+ gl_FragColor.rgb=anisotropicOut.anisotropyMapData.rgb;
2499
+ #elif DEBUGMODE==31 && defined(SUBSURFACE) && defined(SS_THICKNESSANDMASK_TEXTURE)
2500
+ gl_FragColor.rgb=subSurfaceOut.thicknessMap.rgb;
2501
+ #elif DEBUGMODE==32 && defined(BUMP)
2502
+ gl_FragColor.rgb=texture2D(bumpSampler,vBumpUV).rgb;
2503
+ #elif DEBUGMODE==40 && defined(SS_REFRACTION)
2504
+ gl_FragColor.rgb=subSurfaceOut.environmentRefraction.rgb;
2505
+ #define DEBUGMODE_GAMMA
2506
+ #elif DEBUGMODE==41 && defined(REFLECTION)
2507
+ gl_FragColor.rgb=reflectionOut.environmentRadiance.rgb;
2508
+ #ifndef GAMMAREFLECTION
2509
+ #define DEBUGMODE_GAMMA
2510
+ #endif
2511
+ #elif DEBUGMODE==42 && defined(CLEARCOAT) && defined(REFLECTION)
2512
+ gl_FragColor.rgb=clearcoatOut.environmentClearCoatRadiance.rgb;
2513
+ #define DEBUGMODE_GAMMA
2514
+ #elif DEBUGMODE==50
2515
+ gl_FragColor.rgb=diffuseBase.rgb;
2516
+ #define DEBUGMODE_GAMMA
2517
+ #elif DEBUGMODE==51 && defined(SPECULARTERM)
2518
+ gl_FragColor.rgb=specularBase.rgb;
2519
+ #define DEBUGMODE_GAMMA
2520
+ #elif DEBUGMODE==52 && defined(CLEARCOAT)
2521
+ gl_FragColor.rgb=clearCoatBase.rgb;
2522
+ #define DEBUGMODE_GAMMA
2523
+ #elif DEBUGMODE==53 && defined(SHEEN)
2524
+ gl_FragColor.rgb=sheenBase.rgb;
2525
+ #define DEBUGMODE_GAMMA
2526
+ #elif DEBUGMODE==54 && defined(REFLECTION)
2527
+ gl_FragColor.rgb=reflectionOut.environmentIrradiance.rgb;
2528
+ #ifndef GAMMAREFLECTION
2529
+ #define DEBUGMODE_GAMMA
2530
+ #endif
2531
+ #elif DEBUGMODE==60
2532
+ gl_FragColor.rgb=surfaceAlbedo.rgb;
2533
+ #define DEBUGMODE_GAMMA
2534
+ #elif DEBUGMODE==61
2535
+ gl_FragColor.rgb=clearcoatOut.specularEnvironmentR0;
2536
+ #define DEBUGMODE_GAMMA
2537
+ #elif DEBUGMODE==62 && defined(METALLICWORKFLOW)
2538
+ gl_FragColor.rgb=vec3(reflectivityOut.metallicRoughness.r);
2539
+ #elif DEBUGMODE==71 && defined(METALLICWORKFLOW)
2540
+ gl_FragColor.rgb=reflectivityOut.metallicF0;
2541
+ #elif DEBUGMODE==63
2542
+ gl_FragColor.rgb=vec3(roughness);
2543
+ #elif DEBUGMODE==64
2544
+ gl_FragColor.rgb=vec3(alphaG);
2545
+ #elif DEBUGMODE==65
2546
+ gl_FragColor.rgb=vec3(NdotV);
2547
+ #elif DEBUGMODE==66 && defined(CLEARCOAT) && defined(CLEARCOAT_TINT)
2548
+ gl_FragColor.rgb=clearcoatOut.clearCoatColor.rgb;
2549
+ #define DEBUGMODE_GAMMA
2550
+ #elif DEBUGMODE==67 && defined(CLEARCOAT)
2551
+ gl_FragColor.rgb=vec3(clearcoatOut.clearCoatRoughness);
2552
+ #elif DEBUGMODE==68 && defined(CLEARCOAT)
2553
+ gl_FragColor.rgb=vec3(clearcoatOut.clearCoatNdotV);
2554
+ #elif DEBUGMODE==69 && defined(SUBSURFACE) && defined(SS_TRANSLUCENCY)
2555
+ gl_FragColor.rgb=subSurfaceOut.transmittance;
2556
+ #elif DEBUGMODE==70 && defined(SUBSURFACE) && defined(SS_REFRACTION)
2557
+ gl_FragColor.rgb=subSurfaceOut.refractionTransmittance;
2558
+ #elif DEBUGMODE==72
2559
+ gl_FragColor.rgb=vec3(microSurface);
2560
+ #elif DEBUGMODE==73
2561
+ gl_FragColor.rgb=vAlbedoColor.rgb;
2562
+ #define DEBUGMODE_GAMMA
2563
+ #elif DEBUGMODE==74 && !defined(METALLICWORKFLOW)
2564
+ gl_FragColor.rgb=vReflectivityColor.rgb;
2565
+ #define DEBUGMODE_GAMMA
2566
+ #elif DEBUGMODE==75
2567
+ gl_FragColor.rgb=vEmissiveColor.rgb;
2568
+ #define DEBUGMODE_GAMMA
2569
+ #elif DEBUGMODE==80 && defined(RADIANCEOCCLUSION)
2570
+ gl_FragColor.rgb=vec3(seo);
2571
+ #elif DEBUGMODE==81 && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)
2572
+ gl_FragColor.rgb=vec3(eho);
2573
+ #elif DEBUGMODE==82 && defined(MS_BRDF_ENERGY_CONSERVATION)
2574
+ gl_FragColor.rgb=vec3(energyConservationFactor);
2575
+ #elif DEBUGMODE==83 && defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
2576
+ gl_FragColor.rgb=specularEnvironmentReflectance;
2577
+ #define DEBUGMODE_GAMMA
2578
+ #elif DEBUGMODE==84 && defined(CLEARCOAT) && defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
2579
+ gl_FragColor.rgb=clearcoatOut.clearCoatEnvironmentReflectance;
2580
+ #define DEBUGMODE_GAMMA
2581
+ #elif DEBUGMODE==85 && defined(SHEEN) && defined(REFLECTION)
2582
+ gl_FragColor.rgb=sheenOut.sheenEnvironmentReflectance;
2583
+ #define DEBUGMODE_GAMMA
2584
+ #elif DEBUGMODE==86 && defined(ALPHABLEND)
2585
+ gl_FragColor.rgb=vec3(luminanceOverAlpha);
2586
+ #elif DEBUGMODE==87
2587
+ gl_FragColor.rgb=vec3(alpha);
2588
+ #elif DEBUGMODE==88 && defined(ALBEDO)
2589
+ gl_FragColor.rgb=vec3(albedoTexture.a);
2590
+ #elif DEBUGMODE==89
2591
+ gl_FragColor.rgb=aoOut.ambientOcclusionColor.rgb;
2592
+ #else
2593
+ float stripeWidth=30.;float stripePos=floor(gl_FragCoord.x/stripeWidth);float whichColor=mod(stripePos,2.);vec3 color1=vec3(.6,.2,.2);vec3 color2=vec3(.3,.1,.1);gl_FragColor.rgb=mix(color1,color2,whichColor);
2594
+ #endif
2595
+ gl_FragColor.rgb*=vDebugMode.y;
2596
+ #ifdef DEBUGMODE_NORMALIZE
2597
+ gl_FragColor.rgb=normalize(gl_FragColor.rgb)*0.5+0.5;
2598
+ #endif
2599
+ #ifdef DEBUGMODE_GAMMA
2600
+ gl_FragColor.rgb=toGammaSpace(gl_FragColor.rgb);
2601
+ #endif
2602
+ gl_FragColor.a=1.0;
2603
+ #ifdef PREPASS
2604
+ gl_FragData[0]=toLinearSpace(gl_FragColor);
2605
+ gl_FragData[1]=vec4(0.,0.,0.,0.);
2606
+ #endif
2607
+ #ifdef DEBUGMODE_FORCERETURN
2608
+ return;
2609
+ #endif
2610
+ }
2611
+ #endif
2612
+ `;
2613
+ // Sideeffect
2614
+ ShaderStore.IncludesShadersStore[name$1] = shader$1;
2615
+
2616
+ // Do not edit.
2617
+ const name = "pbrPixelShader";
2618
+ const shader = `#if defined(BUMP) || !defined(NORMAL) || defined(FORCENORMALFORWARD) || defined(SPECULARAA) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC)
2619
+ #extension GL_OES_standard_derivatives : enable
2620
+ #endif
2621
+ #ifdef LODBASEDMICROSFURACE
2622
+ #extension GL_EXT_shader_texture_lod : enable
2623
+ #endif
2624
+ #define CUSTOM_FRAGMENT_BEGIN
2625
+ #ifdef LOGARITHMICDEPTH
2626
+ #extension GL_EXT_frag_depth : enable
2627
+ #endif
2628
+ #include<prePassDeclaration>[SCENE_MRT_COUNT]
2629
+ precision highp float;
2630
+ #include<oitDeclaration>
2631
+ #ifndef FROMLINEARSPACE
2632
+ #define FROMLINEARSPACE
2633
+ #endif
2634
+ #include<__decl__pbrFragment>
2635
+ #include<pbrFragmentExtraDeclaration>
2636
+ #include<__decl__lightFragment>[0..maxSimultaneousLights]
2637
+ #include<pbrFragmentSamplersDeclaration>
2638
+ #include<imageProcessingDeclaration>
2639
+ #include<clipPlaneFragmentDeclaration>
2640
+ #include<logDepthDeclaration>
2641
+ #include<fogFragmentDeclaration>
2642
+ #include<helperFunctions>
2643
+ #include<subSurfaceScatteringFunctions>
2644
+ #include<importanceSampling>
2645
+ #include<pbrHelperFunctions>
2646
+ #include<imageProcessingFunctions>
2647
+ #include<shadowsFragmentFunctions>
2648
+ #include<harmonicsFunctions>
2649
+ #include<pbrDirectLightingSetupFunctions>
2650
+ #include<pbrDirectLightingFalloffFunctions>
2651
+ #include<pbrBRDFFunctions>
2652
+ #include<hdrFilteringFunctions>
2653
+ #include<pbrDirectLightingFunctions>
2654
+ #include<pbrIBLFunctions>
2655
+ #include<bumpFragmentMainFunctions>
2656
+ #include<bumpFragmentFunctions>
2657
+ #ifdef REFLECTION
2658
+ #include<reflectionFunction>
2659
+ #endif
2660
+ #define CUSTOM_FRAGMENT_DEFINITIONS
2661
+ #include<pbrBlockAlbedoOpacity>
2662
+ #include<pbrBlockReflectivity>
2663
+ #include<pbrBlockAmbientOcclusion>
2664
+ #include<pbrBlockAlphaFresnel>
2665
+ #include<pbrBlockAnisotropic>
2666
+ #include<pbrBlockReflection>
2667
+ #include<pbrBlockSheen>
2668
+ #include<pbrBlockClearcoat>
2669
+ #include<pbrBlockIridescence>
2670
+ #include<pbrBlockSubSurface>
2671
+ void main(void) {
2672
+ #define CUSTOM_FRAGMENT_MAIN_BEGIN
2673
+ #include<clipPlaneFragment>
2674
+ #include<pbrBlockNormalGeometric>
2675
+ #include<bumpFragment>
2676
+ #include<pbrBlockNormalFinal>
2677
+ albedoOpacityOutParams albedoOpacityOut;
2678
+ #ifdef ALBEDO
2679
+ vec4 albedoTexture=texture2D(albedoSampler,vAlbedoUV+uvOffset);
2680
+ #endif
2681
+ #ifdef OPACITY
2682
+ vec4 opacityMap=texture2D(opacitySampler,vOpacityUV+uvOffset);
2683
+ #endif
2684
+ #ifdef DECAL
2685
+ vec4 decalColor=texture2D(decalSampler,vDecalUV+uvOffset);
2686
+ #endif
2687
+ albedoOpacityOut=albedoOpacityBlock(
2688
+ vAlbedoColor
2689
+ #ifdef ALBEDO
2690
+ ,albedoTexture
2691
+ ,vAlbedoInfos
2692
+ #endif
2693
+ #ifdef OPACITY
2694
+ ,opacityMap
2695
+ ,vOpacityInfos
2696
+ #endif
2697
+ #ifdef DETAIL
2698
+ ,detailColor
2699
+ ,vDetailInfos
2700
+ #endif
2701
+ #ifdef DECAL
2702
+ ,decalColor
2703
+ ,vDecalInfos
2704
+ #endif
2705
+ );vec3 surfaceAlbedo=albedoOpacityOut.surfaceAlbedo;float alpha=albedoOpacityOut.alpha;
2706
+ #define CUSTOM_FRAGMENT_UPDATE_ALPHA
2707
+ #include<depthPrePass>
2708
+ #define CUSTOM_FRAGMENT_BEFORE_LIGHTS
2709
+ ambientOcclusionOutParams aoOut;
2710
+ #ifdef AMBIENT
2711
+ vec3 ambientOcclusionColorMap=texture2D(ambientSampler,vAmbientUV+uvOffset).rgb;
2712
+ #endif
2713
+ aoOut=ambientOcclusionBlock(
2714
+ #ifdef AMBIENT
2715
+ ambientOcclusionColorMap,
2716
+ vAmbientInfos
2717
+ #endif
2718
+ );
2719
+ #include<pbrBlockLightmapInit>
2720
+ #ifdef UNLIT
2721
+ vec3 diffuseBase=vec3(1.,1.,1.);
2722
+ #else
2723
+ vec3 baseColor=surfaceAlbedo;reflectivityOutParams reflectivityOut;
2724
+ #if defined(REFLECTIVITY)
2725
+ vec4 surfaceMetallicOrReflectivityColorMap=texture2D(reflectivitySampler,vReflectivityUV+uvOffset);vec4 baseReflectivity=surfaceMetallicOrReflectivityColorMap;
2726
+ #ifndef METALLICWORKFLOW
2727
+ #ifdef REFLECTIVITY_GAMMA
2728
+ surfaceMetallicOrReflectivityColorMap=toLinearSpace(surfaceMetallicOrReflectivityColorMap);
2729
+ #endif
2730
+ surfaceMetallicOrReflectivityColorMap.rgb*=vReflectivityInfos.y;
2731
+ #endif
2732
+ #endif
2733
+ #if defined(MICROSURFACEMAP)
2734
+ vec4 microSurfaceTexel=texture2D(microSurfaceSampler,vMicroSurfaceSamplerUV+uvOffset)*vMicroSurfaceSamplerInfos.y;
2735
+ #endif
2736
+ #ifdef METALLICWORKFLOW
2737
+ vec4 metallicReflectanceFactors=vMetallicReflectanceFactors;
2738
+ #ifdef REFLECTANCE
2739
+ vec4 reflectanceFactorsMap=texture2D(reflectanceSampler,vReflectanceUV+uvOffset);
2740
+ #ifdef REFLECTANCE_GAMMA
2741
+ reflectanceFactorsMap=toLinearSpace(reflectanceFactorsMap);
2742
+ #endif
2743
+ metallicReflectanceFactors.rgb*=reflectanceFactorsMap.rgb;
2744
+ #endif
2745
+ #ifdef METALLIC_REFLECTANCE
2746
+ vec4 metallicReflectanceFactorsMap=texture2D(metallicReflectanceSampler,vMetallicReflectanceUV+uvOffset);
2747
+ #ifdef METALLIC_REFLECTANCE_GAMMA
2748
+ metallicReflectanceFactorsMap=toLinearSpace(metallicReflectanceFactorsMap);
2749
+ #endif
2750
+ #ifndef METALLIC_REFLECTANCE_USE_ALPHA_ONLY
2751
+ metallicReflectanceFactors.rgb*=metallicReflectanceFactorsMap.rgb;
2752
+ #endif
2753
+ metallicReflectanceFactors*=metallicReflectanceFactorsMap.a;
2754
+ #endif
2755
+ #endif
2756
+ reflectivityOut=reflectivityBlock(
2757
+ vReflectivityColor
2758
+ #ifdef METALLICWORKFLOW
2759
+ ,surfaceAlbedo
2760
+ ,metallicReflectanceFactors
2761
+ #endif
2762
+ #ifdef REFLECTIVITY
2763
+ ,vReflectivityInfos
2764
+ ,surfaceMetallicOrReflectivityColorMap
2765
+ #endif
2766
+ #if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)
2767
+ ,aoOut.ambientOcclusionColor
2768
+ #endif
2769
+ #ifdef MICROSURFACEMAP
2770
+ ,microSurfaceTexel
2771
+ #endif
2772
+ #ifdef DETAIL
2773
+ ,detailColor
2774
+ ,vDetailInfos
2775
+ #endif
2776
+ );float microSurface=reflectivityOut.microSurface;float roughness=reflectivityOut.roughness;
2777
+ #ifdef METALLICWORKFLOW
2778
+ surfaceAlbedo=reflectivityOut.surfaceAlbedo;
2779
+ #endif
2780
+ #if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)
2781
+ aoOut.ambientOcclusionColor=reflectivityOut.ambientOcclusionColor;
2782
+ #endif
2783
+ #ifdef ALPHAFRESNEL
2784
+ #if defined(ALPHATEST) || defined(ALPHABLEND)
2785
+ alphaFresnelOutParams alphaFresnelOut;alphaFresnelOut=alphaFresnelBlock(
2786
+ normalW,
2787
+ viewDirectionW,
2788
+ alpha,
2789
+ microSurface
2790
+ );alpha=alphaFresnelOut.alpha;
2791
+ #endif
2792
+ #endif
2793
+ #include<pbrBlockGeometryInfo>
2794
+ #ifdef ANISOTROPIC
2795
+ anisotropicOutParams anisotropicOut;
2796
+ #ifdef ANISOTROPIC_TEXTURE
2797
+ vec3 anisotropyMapData=texture2D(anisotropySampler,vAnisotropyUV+uvOffset).rgb*vAnisotropyInfos.y;
2798
+ #endif
2799
+ anisotropicOut=anisotropicBlock(
2800
+ vAnisotropy,
2801
+ roughness,
2802
+ #ifdef ANISOTROPIC_TEXTURE
2803
+ anisotropyMapData,
2804
+ #endif
2805
+ TBN,
2806
+ normalW,
2807
+ viewDirectionW
2808
+ );
2809
+ #endif
2810
+ #ifdef REFLECTION
2811
+ reflectionOutParams reflectionOut;
2812
+ #ifndef USE_CUSTOM_REFLECTION
2813
+ reflectionOut=reflectionBlock(
2814
+ vPositionW
2815
+ ,normalW
2816
+ ,alphaG
2817
+ ,vReflectionMicrosurfaceInfos
2818
+ ,vReflectionInfos
2819
+ ,vReflectionColor
2820
+ #ifdef ANISOTROPIC
2821
+ ,anisotropicOut
2822
+ #endif
2823
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
2824
+ ,NdotVUnclamped
2825
+ #endif
2826
+ #ifdef LINEARSPECULARREFLECTION
2827
+ ,roughness
2828
+ #endif
2829
+ ,reflectionSampler
2830
+ #if defined(NORMAL) && defined(USESPHERICALINVERTEX)
2831
+ ,vEnvironmentIrradiance
2832
+ #endif
2833
+ #ifdef USESPHERICALFROMREFLECTIONMAP
2834
+ #if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)
2835
+ ,reflectionMatrix
2836
+ #endif
2837
+ #endif
2838
+ #ifdef USEIRRADIANCEMAP
2839
+ ,irradianceSampler
2840
+ #endif
2841
+ #ifndef LODBASEDMICROSFURACE
2842
+ ,reflectionSamplerLow
2843
+ ,reflectionSamplerHigh
2844
+ #endif
2845
+ #ifdef REALTIME_FILTERING
2846
+ ,vReflectionFilteringInfo
2847
+ #endif
2848
+ );
2849
+ #else
2850
+ #define CUSTOM_REFLECTION
2851
+ #endif
2852
+ #endif
2853
+ #include<pbrBlockReflectance0>
2854
+ #ifdef SHEEN
2855
+ sheenOutParams sheenOut;
2856
+ #ifdef SHEEN_TEXTURE
2857
+ vec4 sheenMapData=texture2D(sheenSampler,vSheenUV+uvOffset);
2858
+ #endif
2859
+ #if defined(SHEEN_ROUGHNESS) && defined(SHEEN_TEXTURE_ROUGHNESS) && !defined(SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE)
2860
+ vec4 sheenMapRoughnessData=texture2D(sheenRoughnessSampler,vSheenRoughnessUV+uvOffset)*vSheenInfos.w;
2861
+ #endif
2862
+ sheenOut=sheenBlock(
2863
+ vSheenColor
2864
+ #ifdef SHEEN_ROUGHNESS
2865
+ ,vSheenRoughness
2866
+ #if defined(SHEEN_TEXTURE_ROUGHNESS) && !defined(SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE)
2867
+ ,sheenMapRoughnessData
2868
+ #endif
2869
+ #endif
2870
+ ,roughness
2871
+ #ifdef SHEEN_TEXTURE
2872
+ ,sheenMapData
2873
+ ,vSheenInfos.y
2874
+ #endif
2875
+ ,reflectance
2876
+ #ifdef SHEEN_LINKWITHALBEDO
2877
+ ,baseColor
2878
+ ,surfaceAlbedo
2879
+ #endif
2880
+ #ifdef ENVIRONMENTBRDF
2881
+ ,NdotV
2882
+ ,environmentBrdf
2883
+ #endif
2884
+ #if defined(REFLECTION) && defined(ENVIRONMENTBRDF)
2885
+ ,AARoughnessFactors
2886
+ ,vReflectionMicrosurfaceInfos
2887
+ ,vReflectionInfos
2888
+ ,vReflectionColor
2889
+ ,vLightingIntensity
2890
+ ,reflectionSampler
2891
+ ,reflectionOut.reflectionCoords
2892
+ ,NdotVUnclamped
2893
+ #ifndef LODBASEDMICROSFURACE
2894
+ ,reflectionSamplerLow
2895
+ ,reflectionSamplerHigh
2896
+ #endif
2897
+ #ifdef REALTIME_FILTERING
2898
+ ,vReflectionFilteringInfo
2899
+ #endif
2900
+ #if !defined(REFLECTIONMAP_SKYBOX) && defined(RADIANCEOCCLUSION)
2901
+ ,seo
2902
+ #endif
2903
+ #if !defined(REFLECTIONMAP_SKYBOX) && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)
2904
+ ,eho
2905
+ #endif
2906
+ #endif
2907
+ );
2908
+ #ifdef SHEEN_LINKWITHALBEDO
2909
+ surfaceAlbedo=sheenOut.surfaceAlbedo;
2910
+ #endif
2911
+ #endif
2912
+ #ifdef CLEARCOAT
2913
+ #ifdef CLEARCOAT_TEXTURE
2914
+ vec2 clearCoatMapData=texture2D(clearCoatSampler,vClearCoatUV+uvOffset).rg*vClearCoatInfos.y;
2915
+ #endif
2916
+ #endif
2917
+ #ifdef IRIDESCENCE
2918
+ iridescenceOutParams iridescenceOut;
2919
+ #ifdef IRIDESCENCE_TEXTURE
2920
+ vec2 iridescenceMapData=texture2D(iridescenceSampler,vIridescenceUV+uvOffset).rg*vIridescenceInfos.y;
2921
+ #endif
2922
+ #ifdef IRIDESCENCE_THICKNESS_TEXTURE
2923
+ vec2 iridescenceThicknessMapData=texture2D(iridescenceThicknessSampler,vIridescenceThicknessUV+uvOffset).rg*vIridescenceInfos.w;
2924
+ #endif
2925
+ iridescenceOut=iridescenceBlock(
2926
+ vIridescenceParams
2927
+ ,NdotV
2928
+ ,specularEnvironmentR0
2929
+ #ifdef IRIDESCENCE_TEXTURE
2930
+ ,iridescenceMapData
2931
+ #endif
2932
+ #ifdef IRIDESCENCE_THICKNESS_TEXTURE
2933
+ ,iridescenceThicknessMapData
2934
+ #endif
2935
+ #ifdef CLEARCOAT
2936
+ ,NdotVUnclamped
2937
+ #ifdef CLEARCOAT_TEXTURE
2938
+ ,clearCoatMapData
2939
+ #endif
2940
+ #endif
2941
+ );float iridescenceIntensity=iridescenceOut.iridescenceIntensity;specularEnvironmentR0=iridescenceOut.specularEnvironmentR0;
2942
+ #endif
2943
+ clearcoatOutParams clearcoatOut;
2944
+ #ifdef CLEARCOAT
2945
+ #if defined(CLEARCOAT_TEXTURE_ROUGHNESS) && !defined(CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE)
2946
+ vec4 clearCoatMapRoughnessData=texture2D(clearCoatRoughnessSampler,vClearCoatRoughnessUV+uvOffset)*vClearCoatInfos.w;
2947
+ #endif
2948
+ #if defined(CLEARCOAT_TINT) && defined(CLEARCOAT_TINT_TEXTURE)
2949
+ vec4 clearCoatTintMapData=texture2D(clearCoatTintSampler,vClearCoatTintUV+uvOffset);
2950
+ #endif
2951
+ #ifdef CLEARCOAT_BUMP
2952
+ vec4 clearCoatBumpMapData=texture2D(clearCoatBumpSampler,vClearCoatBumpUV+uvOffset);
2953
+ #endif
2954
+ clearcoatOut=clearcoatBlock(
2955
+ vPositionW
2956
+ ,geometricNormalW
2957
+ ,viewDirectionW
2958
+ ,vClearCoatParams
2959
+ #if defined(CLEARCOAT_TEXTURE_ROUGHNESS) && !defined(CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE)
2960
+ ,clearCoatMapRoughnessData
2961
+ #endif
2962
+ ,specularEnvironmentR0
2963
+ #ifdef CLEARCOAT_TEXTURE
2964
+ ,clearCoatMapData
2965
+ #endif
2966
+ #ifdef CLEARCOAT_TINT
2967
+ ,vClearCoatTintParams
2968
+ ,clearCoatColorAtDistance
2969
+ ,vClearCoatRefractionParams
2970
+ #ifdef CLEARCOAT_TINT_TEXTURE
2971
+ ,clearCoatTintMapData
2972
+ #endif
2973
+ #endif
2974
+ #ifdef CLEARCOAT_BUMP
2975
+ ,vClearCoatBumpInfos
2976
+ ,clearCoatBumpMapData
2977
+ ,vClearCoatBumpUV
2978
+ #if defined(TANGENT) && defined(NORMAL)
2979
+ ,vTBN
2980
+ #else
2981
+ ,vClearCoatTangentSpaceParams
2982
+ #endif
2983
+ #ifdef OBJECTSPACE_NORMALMAP
2984
+ ,normalMatrix
2985
+ #endif
2986
+ #endif
2987
+ #if defined(FORCENORMALFORWARD) && defined(NORMAL)
2988
+ ,faceNormal
2989
+ #endif
2990
+ #ifdef REFLECTION
2991
+ ,vReflectionMicrosurfaceInfos
2992
+ ,vReflectionInfos
2993
+ ,vReflectionColor
2994
+ ,vLightingIntensity
2995
+ ,reflectionSampler
2996
+ #ifndef LODBASEDMICROSFURACE
2997
+ ,reflectionSamplerLow
2998
+ ,reflectionSamplerHigh
2999
+ #endif
3000
+ #ifdef REALTIME_FILTERING
3001
+ ,vReflectionFilteringInfo
3002
+ #endif
3003
+ #endif
3004
+ #if defined(CLEARCOAT_BUMP) || defined(TWOSIDEDLIGHTING)
3005
+ ,(gl_FrontFacing ? 1. : -1.)
3006
+ #endif
3007
+ );
3008
+ #else
3009
+ clearcoatOut.specularEnvironmentR0=specularEnvironmentR0;
3010
+ #endif
3011
+ #include<pbrBlockReflectance>
3012
+ subSurfaceOutParams subSurfaceOut;
3013
+ #ifdef SUBSURFACE
3014
+ #ifdef SS_THICKNESSANDMASK_TEXTURE
3015
+ vec4 thicknessMap=texture2D(thicknessSampler,vThicknessUV+uvOffset);
3016
+ #endif
3017
+ #ifdef SS_REFRACTIONINTENSITY_TEXTURE
3018
+ vec4 refractionIntensityMap=texture2D(refractionIntensitySampler,vRefractionIntensityUV+uvOffset);
3019
+ #endif
3020
+ #ifdef SS_TRANSLUCENCYINTENSITY_TEXTURE
3021
+ vec4 translucencyIntensityMap=texture2D(translucencyIntensitySampler,vTranslucencyIntensityUV+uvOffset);
3022
+ #endif
3023
+ #ifdef SS_TRANSLUCENCYCOLOR_TEXTURE
3024
+ vec4 translucencyColorMap=texture2D(translucencyColorSampler,vTranslucencyColorUV+uvOffset);
3025
+ #endif
3026
+ subSurfaceOut=subSurfaceBlock(
3027
+ vSubSurfaceIntensity
3028
+ ,vThicknessParam
3029
+ ,vTintColor
3030
+ ,normalW
3031
+ ,specularEnvironmentReflectance
3032
+ #ifdef SS_THICKNESSANDMASK_TEXTURE
3033
+ ,thicknessMap
3034
+ #endif
3035
+ #ifdef SS_REFRACTIONINTENSITY_TEXTURE
3036
+ ,refractionIntensityMap
3037
+ #endif
3038
+ #ifdef SS_TRANSLUCENCYINTENSITY_TEXTURE
3039
+ ,translucencyIntensityMap
3040
+ #endif
3041
+ #ifdef REFLECTION
3042
+ #ifdef SS_TRANSLUCENCY
3043
+ ,reflectionMatrix
3044
+ #ifdef USESPHERICALFROMREFLECTIONMAP
3045
+ #if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)
3046
+ ,reflectionOut.irradianceVector
3047
+ #endif
3048
+ #if defined(REALTIME_FILTERING)
3049
+ ,reflectionSampler
3050
+ ,vReflectionFilteringInfo
3051
+ #endif
3052
+ #endif
3053
+ #ifdef USEIRRADIANCEMAP
3054
+ ,irradianceSampler
3055
+ #endif
3056
+ #endif
3057
+ #endif
3058
+ #if defined(SS_REFRACTION) || defined(SS_TRANSLUCENCY)
3059
+ ,surfaceAlbedo
3060
+ #endif
3061
+ #ifdef SS_REFRACTION
3062
+ ,vPositionW
3063
+ ,viewDirectionW
3064
+ ,view
3065
+ ,vRefractionInfos
3066
+ ,refractionMatrix
3067
+ ,vRefractionMicrosurfaceInfos
3068
+ ,vLightingIntensity
3069
+ #ifdef SS_LINKREFRACTIONTOTRANSPARENCY
3070
+ ,alpha
3071
+ #endif
3072
+ #ifdef SS_LODINREFRACTIONALPHA
3073
+ ,NdotVUnclamped
3074
+ #endif
3075
+ #ifdef SS_LINEARSPECULARREFRACTION
3076
+ ,roughness
3077
+ #endif
3078
+ ,alphaG
3079
+ ,refractionSampler
3080
+ #ifndef LODBASEDMICROSFURACE
3081
+ ,refractionSamplerLow
3082
+ ,refractionSamplerHigh
3083
+ #endif
3084
+ #ifdef ANISOTROPIC
3085
+ ,anisotropicOut
3086
+ #endif
3087
+ #ifdef REALTIME_FILTERING
3088
+ ,vRefractionFilteringInfo
3089
+ #endif
3090
+ #ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC
3091
+ ,vRefractionPosition
3092
+ ,vRefractionSize
3093
+ #endif
3094
+ #ifdef SS_DISPERSION
3095
+ ,dispersion
3096
+ #endif
3097
+ #endif
3098
+ #ifdef SS_TRANSLUCENCY
3099
+ ,vDiffusionDistance
3100
+ ,vTranslucencyColor
3101
+ #ifdef SS_TRANSLUCENCYCOLOR_TEXTURE
3102
+ ,translucencyColorMap
3103
+ #endif
3104
+ #endif
3105
+ );
3106
+ #ifdef SS_REFRACTION
3107
+ surfaceAlbedo=subSurfaceOut.surfaceAlbedo;
3108
+ #ifdef SS_LINKREFRACTIONTOTRANSPARENCY
3109
+ alpha=subSurfaceOut.alpha;
3110
+ #endif
3111
+ #endif
3112
+ #else
3113
+ subSurfaceOut.specularEnvironmentReflectance=specularEnvironmentReflectance;
3114
+ #endif
3115
+ #include<pbrBlockDirectLighting>
3116
+ #include<lightFragment>[0..maxSimultaneousLights]
3117
+ #include<pbrBlockFinalLitComponents>
3118
+ #endif
3119
+ #include<pbrBlockFinalUnlitComponents>
3120
+ #define CUSTOM_FRAGMENT_BEFORE_FINALCOLORCOMPOSITION
3121
+ #include<pbrBlockFinalColorComposition>
3122
+ #include<logDepthFragment>
3123
+ #include<fogFragment>(color,finalColor)
3124
+ #include<pbrBlockImageProcessing>
3125
+ #define CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR
3126
+ #ifdef PREPASS
3127
+ float writeGeometryInfo=finalColor.a>ALPHATESTVALUE ? 1.0 : 0.0;
3128
+ #ifdef PREPASS_POSITION
3129
+ gl_FragData[PREPASS_POSITION_INDEX]=vec4(vPositionW,writeGeometryInfo);
3130
+ #endif
3131
+ #ifdef PREPASS_LOCAL_POSITION
3132
+ gl_FragData[PREPASS_LOCAL_POSITION_INDEX] =
3133
+ vec4(vPosition,writeGeometryInfo);
3134
+ #endif
3135
+ #if defined(PREPASS_VELOCITY)
3136
+ vec2 a=(vCurrentPosition.xy/vCurrentPosition.w)*0.5+0.5;vec2 b=(vPreviousPosition.xy/vPreviousPosition.w)*0.5+0.5;vec2 velocity=abs(a-b);velocity=vec2(pow(velocity.x,1.0/3.0),pow(velocity.y,1.0/3.0)) *
3137
+ sign(a-b)*0.5 +
3138
+ 0.5;gl_FragData[PREPASS_VELOCITY_INDEX] =
3139
+ vec4(velocity,0.0,writeGeometryInfo);
3140
+ #elif defined(PREPASS_VELOCITY_LINEAR)
3141
+ vec2 velocity=vec2(0.5)*((vPreviousPosition.xy/vPreviousPosition.w) -
3142
+ (vCurrentPosition.xy/vCurrentPosition.w));gl_FragData[PREPASS_VELOCITY_LINEAR_INDEX] =
3143
+ vec4(velocity,0.0,writeGeometryInfo);
3144
+ #endif
3145
+ #ifdef PREPASS_ALBEDO_SQRT
3146
+ vec3 sqAlbedo=sqrt(surfaceAlbedo);
3147
+ #endif
3148
+ #ifdef PREPASS_IRRADIANCE
3149
+ vec3 irradiance=finalDiffuse;
3150
+ #ifndef UNLIT
3151
+ #ifdef REFLECTION
3152
+ irradiance+=finalIrradiance;
3153
+ #endif
3154
+ #endif
3155
+ #ifdef SS_SCATTERING
3156
+ gl_FragData[0]=vec4(finalColor.rgb-irradiance,
3157
+ finalColor.a);
3158
+ irradiance/=sqAlbedo;
3159
+ #else
3160
+ gl_FragData[0]=finalColor;
3161
+ float scatteringDiffusionProfile=255.;
3162
+ #endif
3163
+ gl_FragData[PREPASS_IRRADIANCE_INDEX] =
3164
+ vec4(clamp(irradiance,vec3(0.),vec3(1.)),
3165
+ writeGeometryInfo*scatteringDiffusionProfile /
3166
+ 255.);
3167
+ #else
3168
+ gl_FragData[0]=vec4(finalColor.rgb,finalColor.a);
3169
+ #endif
3170
+ #ifdef PREPASS_DEPTH
3171
+ gl_FragData[PREPASS_DEPTH_INDEX] =
3172
+ vec4(vViewPos.z,0.0,0.0,writeGeometryInfo);
3173
+ #endif
3174
+ #ifdef PREPASS_SCREENSPACE_DEPTH
3175
+ gl_FragData[PREPASS_SCREENSPACE_DEPTH_INDEX] =
3176
+ vec4(gl_FragCoord.z,0.0,0.0,writeGeometryInfo);
3177
+ #endif
3178
+ #ifdef PREPASS_NORMAL
3179
+ #ifdef PREPASS_NORMAL_WORLDSPACE
3180
+ gl_FragData[PREPASS_NORMAL_INDEX] =
3181
+ vec4(normalW,writeGeometryInfo);
3182
+ #else
3183
+ gl_FragData[PREPASS_NORMAL_INDEX] =
3184
+ vec4(normalize((view*vec4(normalW,0.0)).rgb),
3185
+ writeGeometryInfo);
3186
+ #endif
3187
+ #endif
3188
+ #ifdef PREPASS_WORLD_NORMAL
3189
+ gl_FragData[PREPASS_WORLD_NORMAL_INDEX]=vec4(normalW*0.5+0.5,writeGeometryInfo);
3190
+ #endif
3191
+ #ifdef PREPASS_ALBEDO_SQRT
3192
+ gl_FragData[PREPASS_ALBEDO_SQRT_INDEX]=vec4(sqAlbedo,writeGeometryInfo);
3193
+ #endif
3194
+ #ifdef PREPASS_REFLECTIVITY
3195
+ #ifndef UNLIT
3196
+ gl_FragData[PREPASS_REFLECTIVITY_INDEX]=vec4(specularEnvironmentR0,microSurface)*writeGeometryInfo;
3197
+ #else
3198
+ gl_FragData[PREPASS_REFLECTIVITY_INDEX]=vec4( 0.0,0.0,0.0,1.0 )*writeGeometryInfo;
3199
+ #endif
3200
+ #endif
3201
+ #endif
3202
+ #if !defined(PREPASS) || defined(WEBGL2)
3203
+ gl_FragColor=finalColor;
3204
+ #endif
3205
+ #include<oitFragment>
3206
+ #if ORDER_INDEPENDENT_TRANSPARENCY
3207
+ if (fragDepth==nearestDepth) {frontColor.rgb+=finalColor.rgb*finalColor.a*alphaMultiplier;frontColor.a=1.0-alphaMultiplier*(1.0-finalColor.a);} else {backColor+=finalColor;}
3208
+ #endif
3209
+ #include<pbrDebug>
3210
+ #define CUSTOM_FRAGMENT_MAIN_END
3211
+ }
3212
+ `;
3213
+ // Sideeffect
3214
+ ShaderStore.ShadersStore[name] = shader;
3215
+ /** @internal */
3216
+ const pbrPixelShader = { name, shader };
3217
+
3218
+ export { pbrPixelShader };
3219
+ //# sourceMappingURL=pbr.fragment-zzWqx8ql.esm.js.map