@babylonjs/viewer 7.34.1-alpha → 7.34.2

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