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