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