@babylonjs/viewer 7.36.0-alpha → 7.36.0

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