@babylonjs/viewer 7.32.4-alpha → 7.32.4

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