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