@babylonjs/viewer 7.42.0 → 7.44.0

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