@babylonjs/viewer 7.24.0-alpha → 7.24.0

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