@babylonjs/viewer 7.40.1-alpha → 7.40.1

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