@babylonjs/viewer 7.31.0 → 7.31.1-alpha

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