@onerjs/core 8.26.1 → 8.26.3

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 (269) hide show
  1. package/Engines/abstractEngine.js +2 -2
  2. package/Engines/abstractEngine.js.map +1 -1
  3. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +6 -0
  4. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  5. package/FrameGraph/frameGraphContext.d.ts +2 -1
  6. package/FrameGraph/frameGraphContext.js +4 -1
  7. package/FrameGraph/frameGraphContext.js.map +1 -1
  8. package/Lights/Clustered/clusteredLightContainer.d.ts +1 -1
  9. package/Lights/Clustered/clusteredLightContainer.js +4 -5
  10. package/Lights/Clustered/clusteredLightContainer.js.map +1 -1
  11. package/Lights/pointLight.js +4 -4
  12. package/Lights/pointLight.js.map +1 -1
  13. package/Lights/rectAreaLight.js +4 -4
  14. package/Lights/rectAreaLight.js.map +1 -1
  15. package/Lights/spotLight.js +2 -2
  16. package/Lights/spotLight.js.map +1 -1
  17. package/Materials/Background/backgroundMaterial.d.ts +19 -91
  18. package/Materials/Background/backgroundMaterial.js +17 -245
  19. package/Materials/Background/backgroundMaterial.js.map +1 -1
  20. package/Materials/Node/Blocks/Dual/lightBlock.js +15 -4
  21. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  22. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +28 -5
  23. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  24. package/Materials/Node/nodeMaterial.d.ts +57 -69
  25. package/Materials/Node/nodeMaterial.js +9 -86
  26. package/Materials/Node/nodeMaterial.js.map +1 -1
  27. package/Materials/Node/nodeMaterialBuildState.d.ts +3 -1
  28. package/Materials/Node/nodeMaterialBuildState.js +35 -15
  29. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  30. package/Materials/PBR/index.d.ts +5 -0
  31. package/Materials/PBR/index.js +5 -0
  32. package/Materials/PBR/index.js.map +1 -1
  33. package/Materials/PBR/openPbrMaterial.d.ts +998 -0
  34. package/Materials/PBR/openPbrMaterial.js +2069 -0
  35. package/Materials/PBR/openPbrMaterial.js.map +1 -0
  36. package/Materials/PBR/pbrBaseMaterial.d.ts +57 -43
  37. package/Materials/PBR/pbrBaseMaterial.js +21 -304
  38. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  39. package/Materials/PBR/pbrMaterial.d.ts +0 -78
  40. package/Materials/PBR/pbrMaterial.js +0 -110
  41. package/Materials/PBR/pbrMaterial.js.map +1 -1
  42. package/Materials/floatingOriginMatrixOverrides.d.ts +3 -0
  43. package/Materials/floatingOriginMatrixOverrides.js +91 -0
  44. package/Materials/floatingOriginMatrixOverrides.js.map +1 -0
  45. package/Materials/imageProcessing.d.ts +65 -0
  46. package/Materials/imageProcessing.js +162 -0
  47. package/Materials/imageProcessing.js.map +1 -0
  48. package/Materials/imageProcessingConfiguration.defines.d.ts +25 -0
  49. package/Materials/imageProcessingConfiguration.defines.js +27 -0
  50. package/Materials/imageProcessingConfiguration.defines.js.map +1 -1
  51. package/Materials/index.d.ts +2 -0
  52. package/Materials/index.js +2 -0
  53. package/Materials/index.js.map +1 -1
  54. package/Materials/material.d.ts +14 -0
  55. package/Materials/material.js +14 -0
  56. package/Materials/material.js.map +1 -1
  57. package/Materials/materialHelper.functions.d.ts +53 -0
  58. package/Materials/materialHelper.functions.js +297 -0
  59. package/Materials/materialHelper.functions.js.map +1 -1
  60. package/Materials/standardMaterial.d.ts +57 -121
  61. package/Materials/standardMaterial.js +21 -250
  62. package/Materials/standardMaterial.js.map +1 -1
  63. package/Materials/uv.defines.d.ts +22 -0
  64. package/Materials/uv.defines.js +24 -0
  65. package/Materials/uv.defines.js.map +1 -0
  66. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +1 -0
  67. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  68. package/Meshes/transformNode.d.ts +2 -0
  69. package/Meshes/transformNode.js +7 -4
  70. package/Meshes/transformNode.js.map +1 -1
  71. package/Misc/decorators.d.ts +7 -0
  72. package/Misc/decorators.js +34 -0
  73. package/Misc/decorators.js.map +1 -1
  74. package/Particles/Node/Blocks/Emitters/createParticleBlock.js +10 -1
  75. package/Particles/Node/Blocks/Emitters/createParticleBlock.js.map +1 -1
  76. package/Particles/Node/Blocks/index.d.ts +2 -0
  77. package/Particles/Node/Blocks/index.js +2 -0
  78. package/Particles/Node/Blocks/index.js.map +1 -1
  79. package/Particles/Node/Blocks/particleInputBlock.js +4 -1
  80. package/Particles/Node/Blocks/particleInputBlock.js.map +1 -1
  81. package/Particles/Node/Blocks/particleLocalVariableBlock.d.ts +38 -0
  82. package/Particles/Node/Blocks/particleLocalVariableBlock.js +108 -0
  83. package/Particles/Node/Blocks/particleLocalVariableBlock.js.map +1 -0
  84. package/Particles/Node/Blocks/particleVectorLengthBlock.d.ts +26 -0
  85. package/Particles/Node/Blocks/particleVectorLengthBlock.js +50 -0
  86. package/Particles/Node/Blocks/particleVectorLengthBlock.js.map +1 -0
  87. package/Rendering/IBLShadows/iblShadowsPluginMaterial.d.ts +2 -1
  88. package/Rendering/IBLShadows/iblShadowsPluginMaterial.js +45 -0
  89. package/Rendering/IBLShadows/iblShadowsPluginMaterial.js.map +1 -1
  90. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +2 -1
  91. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
  92. package/Rendering/geometryBufferRenderer.js +6 -4
  93. package/Rendering/geometryBufferRenderer.js.map +1 -1
  94. package/Rendering/iblCdfGenerator.js +28 -20
  95. package/Rendering/iblCdfGenerator.js.map +1 -1
  96. package/Rendering/reflectiveShadowMap.d.ts +3 -3
  97. package/Shaders/ShadersInclude/backgroundUboDeclaration.js +1 -1
  98. package/Shaders/ShadersInclude/backgroundUboDeclaration.js.map +1 -1
  99. package/Shaders/ShadersInclude/clusteredLightingFunctions.js +3 -1
  100. package/Shaders/ShadersInclude/clusteredLightingFunctions.js.map +1 -1
  101. package/Shaders/ShadersInclude/defaultUboDeclaration.js +1 -1
  102. package/Shaders/ShadersInclude/defaultUboDeclaration.js.map +1 -1
  103. package/Shaders/ShadersInclude/hdrFilteringFunctions.js +34 -0
  104. package/Shaders/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
  105. package/Shaders/ShadersInclude/helperFunctions.js +1 -1
  106. package/Shaders/ShadersInclude/helperFunctions.js.map +1 -1
  107. package/Shaders/ShadersInclude/importanceSampling.js +4 -0
  108. package/Shaders/ShadersInclude/importanceSampling.js.map +1 -1
  109. package/Shaders/ShadersInclude/lightsFragmentFunctions.js +1 -0
  110. package/Shaders/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  111. package/Shaders/ShadersInclude/openpbrBaseLayerData.d.ts +5 -0
  112. package/Shaders/ShadersInclude/openpbrBaseLayerData.js +127 -0
  113. package/Shaders/ShadersInclude/openpbrBaseLayerData.js.map +1 -0
  114. package/Shaders/ShadersInclude/openpbrBlockAmbientOcclusion.d.ts +5 -0
  115. package/Shaders/ShadersInclude/openpbrBlockAmbientOcclusion.js +35 -0
  116. package/Shaders/ShadersInclude/openpbrBlockAmbientOcclusion.js.map +1 -0
  117. package/Shaders/ShadersInclude/openpbrBlockNormalFinal.d.ts +5 -0
  118. package/Shaders/ShadersInclude/openpbrBlockNormalFinal.js +25 -0
  119. package/Shaders/ShadersInclude/openpbrBlockNormalFinal.js.map +1 -0
  120. package/Shaders/ShadersInclude/openpbrCoatLayerData.d.ts +5 -0
  121. package/Shaders/ShadersInclude/openpbrCoatLayerData.js +59 -0
  122. package/Shaders/ShadersInclude/openpbrCoatLayerData.js.map +1 -0
  123. package/Shaders/ShadersInclude/openpbrConductorReflectance.d.ts +5 -0
  124. package/Shaders/ShadersInclude/openpbrConductorReflectance.js +19 -0
  125. package/Shaders/ShadersInclude/openpbrConductorReflectance.js.map +1 -0
  126. package/Shaders/ShadersInclude/openpbrDielectricReflectance.d.ts +5 -0
  127. package/Shaders/ShadersInclude/openpbrDielectricReflectance.js +30 -0
  128. package/Shaders/ShadersInclude/openpbrDielectricReflectance.js.map +1 -0
  129. package/Shaders/ShadersInclude/openpbrDirectLighting.d.ts +5 -0
  130. package/Shaders/ShadersInclude/openpbrDirectLighting.js +69 -0
  131. package/Shaders/ShadersInclude/openpbrDirectLighting.js.map +1 -0
  132. package/Shaders/ShadersInclude/openpbrDirectLightingInit.d.ts +5 -0
  133. package/Shaders/ShadersInclude/openpbrDirectLightingInit.js +80 -0
  134. package/Shaders/ShadersInclude/openpbrDirectLightingInit.js.map +1 -0
  135. package/Shaders/ShadersInclude/openpbrDirectLightingShadow.d.ts +5 -0
  136. package/Shaders/ShadersInclude/openpbrDirectLightingShadow.js +129 -0
  137. package/Shaders/ShadersInclude/openpbrDirectLightingShadow.js.map +1 -0
  138. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.d.ts +5 -0
  139. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js +106 -0
  140. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -0
  141. package/Shaders/ShadersInclude/openpbrFragmentDeclaration.d.ts +6 -0
  142. package/Shaders/ShadersInclude/openpbrFragmentDeclaration.js +115 -0
  143. package/Shaders/ShadersInclude/openpbrFragmentDeclaration.js.map +1 -0
  144. package/Shaders/ShadersInclude/openpbrFragmentSamplersDeclaration.d.ts +6 -0
  145. package/Shaders/ShadersInclude/openpbrFragmentSamplersDeclaration.js +72 -0
  146. package/Shaders/ShadersInclude/openpbrFragmentSamplersDeclaration.js.map +1 -0
  147. package/Shaders/ShadersInclude/openpbrGeometryInfo.d.ts +5 -0
  148. package/Shaders/ShadersInclude/openpbrGeometryInfo.js +46 -0
  149. package/Shaders/ShadersInclude/openpbrGeometryInfo.js.map +1 -0
  150. package/Shaders/ShadersInclude/openpbrIblFunctions.d.ts +5 -0
  151. package/Shaders/ShadersInclude/openpbrIblFunctions.js +221 -0
  152. package/Shaders/ShadersInclude/openpbrIblFunctions.js.map +1 -0
  153. package/Shaders/ShadersInclude/openpbrNormalMapFragment.d.ts +5 -0
  154. package/Shaders/ShadersInclude/openpbrNormalMapFragment.js +64 -0
  155. package/Shaders/ShadersInclude/openpbrNormalMapFragment.js.map +1 -0
  156. package/Shaders/ShadersInclude/openpbrNormalMapFragmentFunctions.d.ts +6 -0
  157. package/Shaders/ShadersInclude/openpbrNormalMapFragmentFunctions.js +45 -0
  158. package/Shaders/ShadersInclude/openpbrNormalMapFragmentFunctions.js.map +1 -0
  159. package/Shaders/ShadersInclude/openpbrNormalMapFragmentMainFunctions.d.ts +5 -0
  160. package/Shaders/ShadersInclude/openpbrNormalMapFragmentMainFunctions.js +72 -0
  161. package/Shaders/ShadersInclude/openpbrNormalMapFragmentMainFunctions.js.map +1 -0
  162. package/Shaders/ShadersInclude/openpbrNormalMapVertex.d.ts +5 -0
  163. package/Shaders/ShadersInclude/openpbrNormalMapVertex.js +16 -0
  164. package/Shaders/ShadersInclude/openpbrNormalMapVertex.js.map +1 -0
  165. package/Shaders/ShadersInclude/openpbrNormalMapVertexDeclaration.d.ts +5 -0
  166. package/Shaders/ShadersInclude/openpbrNormalMapVertexDeclaration.js +16 -0
  167. package/Shaders/ShadersInclude/openpbrNormalMapVertexDeclaration.js.map +1 -0
  168. package/Shaders/ShadersInclude/openpbrUboDeclaration.d.ts +7 -0
  169. package/Shaders/ShadersInclude/openpbrUboDeclaration.js +18 -0
  170. package/Shaders/ShadersInclude/openpbrUboDeclaration.js.map +1 -0
  171. package/Shaders/ShadersInclude/openpbrVertexDeclaration.d.ts +6 -0
  172. package/Shaders/ShadersInclude/openpbrVertexDeclaration.js +103 -0
  173. package/Shaders/ShadersInclude/openpbrVertexDeclaration.js.map +1 -0
  174. package/Shaders/ShadersInclude/pbrBRDFFunctions.js +1 -1
  175. package/Shaders/ShadersInclude/pbrBRDFFunctions.js.map +1 -1
  176. package/Shaders/ShadersInclude/pbrClusteredLightingFunctions.js +1 -0
  177. package/Shaders/ShadersInclude/pbrClusteredLightingFunctions.js.map +1 -1
  178. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +3 -1
  179. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  180. package/Shaders/ShadersInclude/pbrHelperFunctions.js +2 -0
  181. package/Shaders/ShadersInclude/pbrHelperFunctions.js.map +1 -1
  182. package/Shaders/ShadersInclude/pbrUboDeclaration.js +1 -1
  183. package/Shaders/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  184. package/Shaders/openpbr.fragment.d.ts +54 -0
  185. package/Shaders/openpbr.fragment.js +206 -0
  186. package/Shaders/openpbr.fragment.js.map +1 -0
  187. package/Shaders/openpbr.vertex.d.ts +39 -0
  188. package/Shaders/openpbr.vertex.js +238 -0
  189. package/Shaders/openpbr.vertex.js.map +1 -0
  190. package/ShadersWGSL/ShadersInclude/backgroundUboDeclaration.js +1 -1
  191. package/ShadersWGSL/ShadersInclude/backgroundUboDeclaration.js.map +1 -1
  192. package/ShadersWGSL/ShadersInclude/defaultUboDeclaration.js +1 -1
  193. package/ShadersWGSL/ShadersInclude/defaultUboDeclaration.js.map +1 -1
  194. package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js +28 -0
  195. package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
  196. package/ShadersWGSL/ShadersInclude/importanceSampling.js +4 -0
  197. package/ShadersWGSL/ShadersInclude/importanceSampling.js.map +1 -1
  198. package/ShadersWGSL/ShadersInclude/openpbrBaseLayerData.d.ts +5 -0
  199. package/ShadersWGSL/ShadersInclude/openpbrBaseLayerData.js +126 -0
  200. package/ShadersWGSL/ShadersInclude/openpbrBaseLayerData.js.map +1 -0
  201. package/ShadersWGSL/ShadersInclude/openpbrBlockAmbientOcclusion.d.ts +5 -0
  202. package/ShadersWGSL/ShadersInclude/openpbrBlockAmbientOcclusion.js +36 -0
  203. package/ShadersWGSL/ShadersInclude/openpbrBlockAmbientOcclusion.js.map +1 -0
  204. package/ShadersWGSL/ShadersInclude/openpbrBlockNormalFinal.d.ts +5 -0
  205. package/ShadersWGSL/ShadersInclude/openpbrBlockNormalFinal.js +25 -0
  206. package/ShadersWGSL/ShadersInclude/openpbrBlockNormalFinal.js.map +1 -0
  207. package/ShadersWGSL/ShadersInclude/openpbrCoatLayerData.d.ts +5 -0
  208. package/ShadersWGSL/ShadersInclude/openpbrCoatLayerData.js +59 -0
  209. package/ShadersWGSL/ShadersInclude/openpbrCoatLayerData.js.map +1 -0
  210. package/ShadersWGSL/ShadersInclude/openpbrConductorReflectance.d.ts +5 -0
  211. package/ShadersWGSL/ShadersInclude/openpbrConductorReflectance.js +19 -0
  212. package/ShadersWGSL/ShadersInclude/openpbrConductorReflectance.js.map +1 -0
  213. package/ShadersWGSL/ShadersInclude/openpbrDielectricReflectance.d.ts +5 -0
  214. package/ShadersWGSL/ShadersInclude/openpbrDielectricReflectance.js +33 -0
  215. package/ShadersWGSL/ShadersInclude/openpbrDielectricReflectance.js.map +1 -0
  216. package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.d.ts +5 -0
  217. package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js +69 -0
  218. package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js.map +1 -0
  219. package/ShadersWGSL/ShadersInclude/openpbrDirectLightingInit.d.ts +5 -0
  220. package/ShadersWGSL/ShadersInclude/openpbrDirectLightingInit.js +80 -0
  221. package/ShadersWGSL/ShadersInclude/openpbrDirectLightingInit.js.map +1 -0
  222. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.d.ts +5 -0
  223. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js +112 -0
  224. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -0
  225. package/ShadersWGSL/ShadersInclude/openpbrFragmentSamplersDeclaration.d.ts +6 -0
  226. package/ShadersWGSL/ShadersInclude/openpbrFragmentSamplersDeclaration.js +68 -0
  227. package/ShadersWGSL/ShadersInclude/openpbrFragmentSamplersDeclaration.js.map +1 -0
  228. package/ShadersWGSL/ShadersInclude/openpbrGeometryInfo.d.ts +5 -0
  229. package/ShadersWGSL/ShadersInclude/openpbrGeometryInfo.js +54 -0
  230. package/ShadersWGSL/ShadersInclude/openpbrGeometryInfo.js.map +1 -0
  231. package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.d.ts +5 -0
  232. package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js +218 -0
  233. package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js.map +1 -0
  234. package/ShadersWGSL/ShadersInclude/openpbrNormalMapFragment.d.ts +5 -0
  235. package/ShadersWGSL/ShadersInclude/openpbrNormalMapFragment.js +64 -0
  236. package/ShadersWGSL/ShadersInclude/openpbrNormalMapFragment.js.map +1 -0
  237. package/ShadersWGSL/ShadersInclude/openpbrNormalMapFragmentFunctions.d.ts +6 -0
  238. package/ShadersWGSL/ShadersInclude/openpbrNormalMapFragmentFunctions.js +45 -0
  239. package/ShadersWGSL/ShadersInclude/openpbrNormalMapFragmentFunctions.js.map +1 -0
  240. package/ShadersWGSL/ShadersInclude/openpbrNormalMapFragmentMainFunctions.d.ts +5 -0
  241. package/ShadersWGSL/ShadersInclude/openpbrNormalMapFragmentMainFunctions.js +51 -0
  242. package/ShadersWGSL/ShadersInclude/openpbrNormalMapFragmentMainFunctions.js.map +1 -0
  243. package/ShadersWGSL/ShadersInclude/openpbrNormalMapVertex.d.ts +5 -0
  244. package/ShadersWGSL/ShadersInclude/openpbrNormalMapVertex.js +16 -0
  245. package/ShadersWGSL/ShadersInclude/openpbrNormalMapVertex.js.map +1 -0
  246. package/ShadersWGSL/ShadersInclude/openpbrNormalMapVertexDeclaration.d.ts +5 -0
  247. package/ShadersWGSL/ShadersInclude/openpbrNormalMapVertexDeclaration.js +16 -0
  248. package/ShadersWGSL/ShadersInclude/openpbrNormalMapVertexDeclaration.js.map +1 -0
  249. package/ShadersWGSL/ShadersInclude/openpbrUboDeclaration.d.ts +7 -0
  250. package/ShadersWGSL/ShadersInclude/openpbrUboDeclaration.js +17 -0
  251. package/ShadersWGSL/ShadersInclude/openpbrUboDeclaration.js.map +1 -0
  252. package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.js +1 -1
  253. package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.js.map +1 -1
  254. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js +3 -1
  255. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  256. package/ShadersWGSL/ShadersInclude/pbrHelperFunctions.js +2 -0
  257. package/ShadersWGSL/ShadersInclude/pbrHelperFunctions.js.map +1 -1
  258. package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.js +1 -1
  259. package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  260. package/ShadersWGSL/openpbr.fragment.d.ts +52 -0
  261. package/ShadersWGSL/openpbr.fragment.js +193 -0
  262. package/ShadersWGSL/openpbr.fragment.js.map +1 -0
  263. package/ShadersWGSL/openpbr.vertex.d.ts +37 -0
  264. package/ShadersWGSL/openpbr.vertex.js +227 -0
  265. package/ShadersWGSL/openpbr.vertex.js.map +1 -0
  266. package/package.json +1 -1
  267. package/scene.d.ts +21 -0
  268. package/scene.js +29 -3
  269. package/scene.js.map +1 -1
@@ -1,6 +1,6 @@
1
1
  import { __decorate } from "../../tslib.es6.js";
2
2
  /* eslint-disable @typescript-eslint/naming-convention */
3
- import { serializeAsImageProcessingConfiguration, expandToProperty } from "../../Misc/decorators.js";
3
+ import { expandToProperty } from "../../Misc/decorators.js";
4
4
  import { Logger } from "../../Misc/logger.js";
5
5
  import { SmartArray } from "../../Misc/smartArray.js";
6
6
  import { GetEnvironmentBRDFTexture } from "../../Misc/brdfTextureTools.js";
@@ -10,11 +10,11 @@ import { VertexBuffer } from "../../Buffers/buffer.js";
10
10
  import { PBRBRDFConfiguration } from "./pbrBRDFConfiguration.js";
11
11
  import { PrePassConfiguration } from "../prePassConfiguration.js";
12
12
  import { Color3, TmpColors } from "../../Maths/math.color.js";
13
+ import { ImageProcessingDefinesMixin } from "../../Materials/imageProcessingConfiguration.defines.js";
13
14
  import { ImageProcessingConfiguration } from "../../Materials/imageProcessingConfiguration.js";
14
15
  import { Material } from "../../Materials/material.js";
15
16
  import { MaterialDefines } from "../../Materials/materialDefines.js";
16
17
  import { PushMaterial } from "../../Materials/pushMaterial.js";
17
- import { Texture } from "../../Materials/Textures/texture.js";
18
18
  import { MaterialFlags } from "../materialFlags.js";
19
19
 
20
20
  import "../../Materials/Textures/baseTexture.polynomial.js";
@@ -26,14 +26,18 @@ import { PBRSheenConfiguration } from "./pbrSheenConfiguration.js";
26
26
  import { PBRSubSurfaceConfiguration } from "./pbrSubSurfaceConfiguration.js";
27
27
  import { DetailMapConfiguration } from "../material.detailMapConfiguration.js";
28
28
  import { AddClipPlaneUniforms, BindClipPlane } from "../clipPlaneMaterialHelper.js";
29
- import { BindBonesParameters, BindFogParameters, BindLights, BindLogDepth, BindMorphTargetParameters, BindTextureMatrix, HandleFallbacksForShadows, PrepareAttributesForBakedVertexAnimation, PrepareAttributesForBones, PrepareAttributesForInstances, PrepareAttributesForMorphTargets, PrepareDefinesForAttributes, PrepareDefinesForFrameBoundValues, PrepareDefinesForLights, PrepareDefinesForMergedUV, PrepareDefinesForMisc, PrepareDefinesForMultiview, PrepareDefinesForOIT, PrepareDefinesForPrePass, PrepareUniformsAndSamplersList, } from "../materialHelper.functions.js";
29
+ import { BindBonesParameters, BindFogParameters, BindLights, BindLogDepth, BindMorphTargetParameters, BindTextureMatrix, BindIBLParameters, BindIBLSamplers, HandleFallbacksForShadows, PrepareAttributesForBakedVertexAnimation, PrepareAttributesForBones, PrepareAttributesForInstances, PrepareAttributesForMorphTargets, PrepareDefinesForAttributes, PrepareDefinesForFrameBoundValues, PrepareDefinesForLights, PrepareDefinesForIBL, PrepareDefinesForMergedUV, PrepareDefinesForMisc, PrepareDefinesForMultiview, PrepareDefinesForOIT, PrepareDefinesForPrePass, PrepareUniformsAndSamplersList, PrepareUniformsAndSamplersForIBL, PrepareUniformLayoutForIBL, } from "../materialHelper.functions.js";
30
30
  import { MaterialHelperGeometryRendering } from "../materialHelper.geometryrendering.js";
31
+ import { UVDefinesMixin } from "../uv.defines.js";
32
+ import { ImageProcessingMixin } from "../imageProcessing.js";
31
33
  const onCreatedEffectParameters = { effect: null, subMesh: null };
34
+ class PBRMaterialDefinesBase extends UVDefinesMixin(MaterialDefines) {
35
+ }
32
36
  /**
33
37
  * Manages the defines for the PBR Material.
34
38
  * @internal
35
39
  */
36
- export class PBRMaterialDefines extends MaterialDefines {
40
+ export class PBRMaterialDefines extends ImageProcessingDefinesMixin(PBRMaterialDefinesBase) {
37
41
  /**
38
42
  * Initializes the PBR Material defines.
39
43
  * @param externalProperties The external properties
@@ -44,18 +48,6 @@ export class PBRMaterialDefines extends MaterialDefines {
44
48
  this.NUM_SAMPLES = "0";
45
49
  this.REALTIME_FILTERING = false;
46
50
  this.IBL_CDF_FILTERING = false;
47
- this.MAINUV1 = false;
48
- this.MAINUV2 = false;
49
- this.MAINUV3 = false;
50
- this.MAINUV4 = false;
51
- this.MAINUV5 = false;
52
- this.MAINUV6 = false;
53
- this.UV1 = false;
54
- this.UV2 = false;
55
- this.UV3 = false;
56
- this.UV4 = false;
57
- this.UV5 = false;
58
- this.UV6 = false;
59
51
  this.ALBEDO = false;
60
52
  this.GAMMAALBEDO = false;
61
53
  this.ALBEDODIRECTUV = 0;
@@ -200,21 +192,6 @@ export class PBRMaterialDefines extends MaterialDefines {
200
192
  this.MORPHTARGETTEXTURE_HASCOLORS = false;
201
193
  this.NUM_MORPH_INFLUENCERS = 0;
202
194
  this.MORPHTARGETS_TEXTURE = false;
203
- this.IMAGEPROCESSING = false;
204
- this.VIGNETTE = false;
205
- this.VIGNETTEBLENDMODEMULTIPLY = false;
206
- this.VIGNETTEBLENDMODEOPAQUE = false;
207
- this.TONEMAPPING = 0;
208
- this.CONTRAST = false;
209
- this.COLORCURVES = false;
210
- this.COLORGRADING = false;
211
- this.COLORGRADING3D = false;
212
- this.SAMPLER3DGREENDEPTH = false;
213
- this.SAMPLER3DBGRMAP = false;
214
- this.DITHER = false;
215
- this.IMAGEPROCESSINGPOSTPROCESS = false;
216
- this.SKIPFINALCOLORCLAMP = false;
217
- this.EXPOSURE = false;
218
195
  this.MULTIVIEW = false;
219
196
  this.ORDER_INDEPENDENT_TRANSPARENCY = false;
220
197
  this.ORDER_INDEPENDENT_TRANSPARENCY_16BITS = false;
@@ -253,6 +230,8 @@ export class PBRMaterialDefines extends MaterialDefines {
253
230
  this.NORMALXYSCALE = true;
254
231
  }
255
232
  }
233
+ class PBRBaseMaterialBase extends ImageProcessingMixin(PushMaterial) {
234
+ }
256
235
  /**
257
236
  * The Physically based material base class of BJS.
258
237
  *
@@ -262,7 +241,7 @@ export class PBRMaterialDefines extends MaterialDefines {
262
241
  * @see [WebGL](https://playground.babylonjs.com/#CGHTSM#1)
263
242
  * @see [WebGPU](https://playground.babylonjs.com/#CGHTSM#2)
264
243
  */
265
- export class PBRBaseMaterial extends PushMaterial {
244
+ export class PBRBaseMaterial extends PBRBaseMaterialBase {
266
245
  /**
267
246
  * Enables realtime filtering on the texture.
268
247
  */
@@ -289,32 +268,6 @@ export class PBRBaseMaterial extends PushMaterial {
289
268
  get canRenderToMRT() {
290
269
  return true;
291
270
  }
292
- /**
293
- * Attaches a new image processing configuration to the PBR Material.
294
- * @param configuration
295
- */
296
- _attachImageProcessingConfiguration(configuration) {
297
- if (configuration === this._imageProcessingConfiguration) {
298
- return;
299
- }
300
- // Detaches observer.
301
- if (this._imageProcessingConfiguration && this._imageProcessingObserver) {
302
- this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver);
303
- }
304
- // Pick the scene configuration if needed.
305
- if (!configuration) {
306
- this._imageProcessingConfiguration = this.getScene().imageProcessingConfiguration;
307
- }
308
- else {
309
- this._imageProcessingConfiguration = configuration;
310
- }
311
- // Attaches observer.
312
- if (this._imageProcessingConfiguration) {
313
- this._imageProcessingObserver = this._imageProcessingConfiguration.onUpdateParameters.add(() => {
314
- this._markAllSubMeshesAsImageProcessingDirty();
315
- });
316
- }
317
- }
318
271
  /**
319
272
  * Instantiates a new PBRMaterial instance.
320
273
  *
@@ -689,10 +642,6 @@ export class PBRBaseMaterial extends PushMaterial {
689
642
  * @internal
690
643
  */
691
644
  this._enableSpecularAntiAliasing = false;
692
- /**
693
- * Keep track of the image processing observer to allow dispose and replace.
694
- */
695
- this._imageProcessingObserver = null;
696
645
  /**
697
646
  * Stores the available render targets.
698
647
  */
@@ -1132,7 +1081,6 @@ export class PBRBaseMaterial extends PushMaterial {
1132
1081
  "vMetallicReflectanceFactors",
1133
1082
  "vEmissiveColor",
1134
1083
  "visibility",
1135
- "vReflectionColor",
1136
1084
  "vFogInfos",
1137
1085
  "vFogColor",
1138
1086
  "pointSize",
@@ -1141,12 +1089,8 @@ export class PBRBaseMaterial extends PushMaterial {
1141
1089
  "vBaseDiffuseRoughnessInfos",
1142
1090
  "vAmbientInfos",
1143
1091
  "vOpacityInfos",
1144
- "vReflectionInfos",
1145
- "vReflectionPosition",
1146
- "vReflectionSize",
1147
1092
  "vEmissiveInfos",
1148
1093
  "vReflectivityInfos",
1149
- "vReflectionFilteringInfo",
1150
1094
  "vMetallicReflectanceInfos",
1151
1095
  "vReflectanceInfos",
1152
1096
  "vMicroSurfaceSamplerInfos",
@@ -1158,7 +1102,6 @@ export class PBRBaseMaterial extends PushMaterial {
1158
1102
  "baseDiffuseRoughnessMatrix",
1159
1103
  "ambientMatrix",
1160
1104
  "opacityMatrix",
1161
- "reflectionMatrix",
1162
1105
  "emissiveMatrix",
1163
1106
  "reflectivityMatrix",
1164
1107
  "normalMatrix",
@@ -1169,26 +1112,6 @@ export class PBRBaseMaterial extends PushMaterial {
1169
1112
  "reflectanceMatrix",
1170
1113
  "vLightingIntensity",
1171
1114
  "logarithmicDepthConstant",
1172
- "vSphericalX",
1173
- "vSphericalY",
1174
- "vSphericalZ",
1175
- "vSphericalXX_ZZ",
1176
- "vSphericalYY_ZZ",
1177
- "vSphericalZZ",
1178
- "vSphericalXY",
1179
- "vSphericalYZ",
1180
- "vSphericalZX",
1181
- "vSphericalL00",
1182
- "vSphericalL1_1",
1183
- "vSphericalL10",
1184
- "vSphericalL11",
1185
- "vSphericalL2_2",
1186
- "vSphericalL2_1",
1187
- "vSphericalL20",
1188
- "vSphericalL21",
1189
- "vSphericalL22",
1190
- "vReflectionMicrosurfaceInfos",
1191
- "vReflectionDominantDirection",
1192
1115
  "vTangentSpaceParams",
1193
1116
  "boneTextureWidth",
1194
1117
  "vDebugMode",
@@ -1206,10 +1129,6 @@ export class PBRBaseMaterial extends PushMaterial {
1206
1129
  "bumpSampler",
1207
1130
  "lightmapSampler",
1208
1131
  "opacitySampler",
1209
- "reflectionSampler",
1210
- "reflectionSamplerLow",
1211
- "reflectionSamplerHigh",
1212
- "irradianceSampler",
1213
1132
  "microSurfaceSampler",
1214
1133
  "environmentBrdfSampler",
1215
1134
  "boneSampler",
@@ -1218,10 +1137,10 @@ export class PBRBaseMaterial extends PushMaterial {
1218
1137
  "morphTargets",
1219
1138
  "oitDepthSampler",
1220
1139
  "oitFrontColorSampler",
1221
- "icdfSampler",
1222
1140
  "areaLightsLTC1Sampler",
1223
1141
  "areaLightsLTC2Sampler",
1224
1142
  ];
1143
+ PrepareUniformsAndSamplersForIBL(uniforms, samplers, true);
1225
1144
  const uniformBuffers = ["Material", "Scene", "Mesh"];
1226
1145
  const indexParameters = { maxSimultaneousLights: this._maxSimultaneousLights, maxSimultaneousMorphTargets: defines.NUM_MORPH_INFLUENCERS };
1227
1146
  this._eventInfo.fallbacks = fallbacks;
@@ -1356,121 +1275,12 @@ export class PBRBaseMaterial extends PushMaterial {
1356
1275
  defines.OPACITY = false;
1357
1276
  }
1358
1277
  const reflectionTexture = this._getReflectionTexture();
1359
- if (reflectionTexture && MaterialFlags.ReflectionTextureEnabled) {
1360
- defines.REFLECTION = true;
1361
- defines.GAMMAREFLECTION = reflectionTexture.gammaSpace;
1362
- defines.RGBDREFLECTION = reflectionTexture.isRGBD;
1363
- defines.LODINREFLECTIONALPHA = reflectionTexture.lodLevelInAlpha;
1364
- defines.LINEARSPECULARREFLECTION = reflectionTexture.linearSpecularLOD;
1365
- defines.USEIRRADIANCEMAP = false;
1366
- if (this.realTimeFiltering && this.realTimeFilteringQuality > 0) {
1367
- defines.NUM_SAMPLES = "" + this.realTimeFilteringQuality;
1368
- if (engine._features.needTypeSuffixInShaderConstants) {
1369
- defines.NUM_SAMPLES = defines.NUM_SAMPLES + "u";
1370
- }
1371
- defines.REALTIME_FILTERING = true;
1372
- if (this.getScene().iblCdfGenerator) {
1373
- defines.IBL_CDF_FILTERING = true;
1374
- }
1375
- }
1376
- else {
1377
- defines.REALTIME_FILTERING = false;
1378
- }
1379
- defines.INVERTCUBICMAP = reflectionTexture.coordinatesMode === Texture.INVCUBIC_MODE;
1380
- defines.REFLECTIONMAP_3D = reflectionTexture.isCube;
1381
- defines.REFLECTIONMAP_OPPOSITEZ = defines.REFLECTIONMAP_3D && this.getScene().useRightHandedSystem ? !reflectionTexture.invertZ : reflectionTexture.invertZ;
1382
- defines.REFLECTIONMAP_CUBIC = false;
1383
- defines.REFLECTIONMAP_EXPLICIT = false;
1384
- defines.REFLECTIONMAP_PLANAR = false;
1385
- defines.REFLECTIONMAP_PROJECTION = false;
1386
- defines.REFLECTIONMAP_SKYBOX = false;
1387
- defines.REFLECTIONMAP_SPHERICAL = false;
1388
- defines.REFLECTIONMAP_EQUIRECTANGULAR = false;
1389
- defines.REFLECTIONMAP_EQUIRECTANGULAR_FIXED = false;
1390
- defines.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED = false;
1391
- switch (reflectionTexture.coordinatesMode) {
1392
- case Texture.EXPLICIT_MODE:
1393
- defines.REFLECTIONMAP_EXPLICIT = true;
1394
- break;
1395
- case Texture.PLANAR_MODE:
1396
- defines.REFLECTIONMAP_PLANAR = true;
1397
- break;
1398
- case Texture.PROJECTION_MODE:
1399
- defines.REFLECTIONMAP_PROJECTION = true;
1400
- break;
1401
- case Texture.SKYBOX_MODE:
1402
- defines.REFLECTIONMAP_SKYBOX = true;
1403
- break;
1404
- case Texture.SPHERICAL_MODE:
1405
- defines.REFLECTIONMAP_SPHERICAL = true;
1406
- break;
1407
- case Texture.EQUIRECTANGULAR_MODE:
1408
- defines.REFLECTIONMAP_EQUIRECTANGULAR = true;
1409
- break;
1410
- case Texture.FIXED_EQUIRECTANGULAR_MODE:
1411
- defines.REFLECTIONMAP_EQUIRECTANGULAR_FIXED = true;
1412
- break;
1413
- case Texture.FIXED_EQUIRECTANGULAR_MIRRORED_MODE:
1414
- defines.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED = true;
1415
- break;
1416
- case Texture.CUBIC_MODE:
1417
- case Texture.INVCUBIC_MODE:
1418
- default:
1419
- defines.REFLECTIONMAP_CUBIC = true;
1420
- defines.USE_LOCAL_REFLECTIONMAP_CUBIC = reflectionTexture.boundingBoxSize ? true : false;
1421
- break;
1422
- }
1423
- if (reflectionTexture.coordinatesMode !== Texture.SKYBOX_MODE) {
1424
- if (reflectionTexture.irradianceTexture) {
1425
- defines.USEIRRADIANCEMAP = true;
1426
- defines.USESPHERICALFROMREFLECTIONMAP = false;
1427
- defines.USESPHERICALINVERTEX = false;
1428
- if (reflectionTexture.irradianceTexture._dominantDirection) {
1429
- defines.USE_IRRADIANCE_DOMINANT_DIRECTION = true;
1430
- }
1431
- }
1432
- // Assume using spherical polynomial if the reflection texture is a cube map
1433
- else if (reflectionTexture.isCube) {
1434
- defines.USESPHERICALFROMREFLECTIONMAP = true;
1435
- defines.USEIRRADIANCEMAP = false;
1436
- defines.USE_IRRADIANCE_DOMINANT_DIRECTION = false;
1437
- if (this._forceIrradianceInFragment ||
1438
- this.realTimeFiltering ||
1439
- this._twoSidedLighting ||
1440
- engine.getCaps().maxVaryingVectors <= 8 ||
1441
- this._baseDiffuseRoughnessTexture) {
1442
- defines.USESPHERICALINVERTEX = false;
1443
- }
1444
- else {
1445
- defines.USESPHERICALINVERTEX = true;
1446
- }
1447
- }
1448
- }
1449
- }
1450
- else {
1451
- defines.REFLECTION = false;
1452
- defines.REFLECTIONMAP_3D = false;
1453
- defines.REFLECTIONMAP_SPHERICAL = false;
1454
- defines.REFLECTIONMAP_PLANAR = false;
1455
- defines.REFLECTIONMAP_CUBIC = false;
1456
- defines.USE_LOCAL_REFLECTIONMAP_CUBIC = false;
1457
- defines.REFLECTIONMAP_PROJECTION = false;
1458
- defines.REFLECTIONMAP_SKYBOX = false;
1459
- defines.REFLECTIONMAP_EXPLICIT = false;
1460
- defines.REFLECTIONMAP_EQUIRECTANGULAR = false;
1461
- defines.REFLECTIONMAP_EQUIRECTANGULAR_FIXED = false;
1462
- defines.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED = false;
1463
- defines.INVERTCUBICMAP = false;
1464
- defines.USESPHERICALFROMREFLECTIONMAP = false;
1465
- defines.USEIRRADIANCEMAP = false;
1466
- defines.USE_IRRADIANCE_DOMINANT_DIRECTION = false;
1467
- defines.USESPHERICALINVERTEX = false;
1468
- defines.REFLECTIONMAP_OPPOSITEZ = false;
1469
- defines.LODINREFLECTIONALPHA = false;
1470
- defines.GAMMAREFLECTION = false;
1471
- defines.RGBDREFLECTION = false;
1472
- defines.LINEARSPECULARREFLECTION = false;
1473
- }
1278
+ const useSHInFragment = this._forceIrradianceInFragment ||
1279
+ this.realTimeFiltering ||
1280
+ this._twoSidedLighting ||
1281
+ engine.getCaps().maxVaryingVectors <= 8 ||
1282
+ this._baseDiffuseRoughnessTexture != null;
1283
+ PrepareDefinesForIBL(scene, reflectionTexture, defines, this.realTimeFiltering, this.realTimeFilteringQuality, !useSHInFragment);
1474
1284
  if (this._lightmapTexture && MaterialFlags.LightmapTextureEnabled) {
1475
1285
  PrepareDefinesForMergedUV(this._lightmapTexture, defines, "LIGHTMAP");
1476
1286
  defines.USELIGHTMAPASSHADOWMAP = this._useLightmapAsShadowmap;
@@ -1683,10 +1493,6 @@ export class PBRBaseMaterial extends PushMaterial {
1683
1493
  ubo.addUniform("vLightmapInfos", 2);
1684
1494
  ubo.addUniform("vReflectivityInfos", 3);
1685
1495
  ubo.addUniform("vMicroSurfaceSamplerInfos", 2);
1686
- ubo.addUniform("vReflectionInfos", 2);
1687
- ubo.addUniform("vReflectionFilteringInfo", 2);
1688
- ubo.addUniform("vReflectionPosition", 3);
1689
- ubo.addUniform("vReflectionSize", 3);
1690
1496
  ubo.addUniform("vBumpInfos", 3);
1691
1497
  ubo.addUniform("albedoMatrix", 16);
1692
1498
  ubo.addUniform("baseWeightMatrix", 16);
@@ -1699,14 +1505,10 @@ export class PBRBaseMaterial extends PushMaterial {
1699
1505
  ubo.addUniform("microSurfaceSamplerMatrix", 16);
1700
1506
  ubo.addUniform("bumpMatrix", 16);
1701
1507
  ubo.addUniform("vTangentSpaceParams", 2);
1702
- ubo.addUniform("reflectionMatrix", 16);
1703
- ubo.addUniform("vReflectionColor", 3);
1704
1508
  ubo.addUniform("vAlbedoColor", 4);
1705
1509
  ubo.addUniform("baseWeight", 1);
1706
1510
  ubo.addUniform("baseDiffuseRoughness", 1);
1707
1511
  ubo.addUniform("vLightingIntensity", 4);
1708
- ubo.addUniform("vReflectionMicrosurfaceInfos", 3);
1709
- ubo.addUniform("vReflectionDominantDirection", 3);
1710
1512
  ubo.addUniform("pointSize", 1);
1711
1513
  ubo.addUniform("vReflectivityColor", 4);
1712
1514
  ubo.addUniform("vEmissiveColor", 3);
@@ -1717,25 +1519,8 @@ export class PBRBaseMaterial extends PushMaterial {
1717
1519
  ubo.addUniform("metallicReflectanceMatrix", 16);
1718
1520
  ubo.addUniform("vReflectanceInfos", 2);
1719
1521
  ubo.addUniform("reflectanceMatrix", 16);
1720
- ubo.addUniform("vSphericalL00", 3);
1721
- ubo.addUniform("vSphericalL1_1", 3);
1722
- ubo.addUniform("vSphericalL10", 3);
1723
- ubo.addUniform("vSphericalL11", 3);
1724
- ubo.addUniform("vSphericalL2_2", 3);
1725
- ubo.addUniform("vSphericalL2_1", 3);
1726
- ubo.addUniform("vSphericalL20", 3);
1727
- ubo.addUniform("vSphericalL21", 3);
1728
- ubo.addUniform("vSphericalL22", 3);
1729
- ubo.addUniform("vSphericalX", 3);
1730
- ubo.addUniform("vSphericalY", 3);
1731
- ubo.addUniform("vSphericalZ", 3);
1732
- ubo.addUniform("vSphericalXX_ZZ", 3);
1733
- ubo.addUniform("vSphericalYY_ZZ", 3);
1734
- ubo.addUniform("vSphericalZZ", 3);
1735
- ubo.addUniform("vSphericalXY", 3);
1736
- ubo.addUniform("vSphericalYZ", 3);
1737
- ubo.addUniform("vSphericalZX", 3);
1738
1522
  ubo.addUniform("cameraInfo", 4);
1523
+ PrepareUniformLayoutForIBL(ubo, true, true, true, true, true);
1739
1524
  super.buildUniformLayout();
1740
1525
  }
1741
1526
  /**
@@ -1808,54 +1593,6 @@ export class PBRBaseMaterial extends PushMaterial {
1808
1593
  ubo.updateFloat2("vOpacityInfos", this._opacityTexture.coordinatesIndex, this._opacityTexture.level);
1809
1594
  BindTextureMatrix(this._opacityTexture, ubo, "opacity");
1810
1595
  }
1811
- if (reflectionTexture && MaterialFlags.ReflectionTextureEnabled) {
1812
- ubo.updateMatrix("reflectionMatrix", reflectionTexture.getReflectionTextureMatrix());
1813
- ubo.updateFloat2("vReflectionInfos", reflectionTexture.level * scene.iblIntensity, 0);
1814
- if (reflectionTexture.boundingBoxSize) {
1815
- const cubeTexture = reflectionTexture;
1816
- ubo.updateVector3("vReflectionPosition", cubeTexture.boundingBoxPosition);
1817
- ubo.updateVector3("vReflectionSize", cubeTexture.boundingBoxSize);
1818
- }
1819
- if (this.realTimeFiltering) {
1820
- const width = reflectionTexture.getSize().width;
1821
- ubo.updateFloat2("vReflectionFilteringInfo", width, Math.log2(width));
1822
- }
1823
- if (!defines.USEIRRADIANCEMAP) {
1824
- const polynomials = reflectionTexture.sphericalPolynomial;
1825
- if (defines.USESPHERICALFROMREFLECTIONMAP && polynomials) {
1826
- if (defines.SPHERICAL_HARMONICS) {
1827
- const preScaledHarmonics = polynomials.preScaledHarmonics;
1828
- ubo.updateVector3("vSphericalL00", preScaledHarmonics.l00);
1829
- ubo.updateVector3("vSphericalL1_1", preScaledHarmonics.l1_1);
1830
- ubo.updateVector3("vSphericalL10", preScaledHarmonics.l10);
1831
- ubo.updateVector3("vSphericalL11", preScaledHarmonics.l11);
1832
- ubo.updateVector3("vSphericalL2_2", preScaledHarmonics.l2_2);
1833
- ubo.updateVector3("vSphericalL2_1", preScaledHarmonics.l2_1);
1834
- ubo.updateVector3("vSphericalL20", preScaledHarmonics.l20);
1835
- ubo.updateVector3("vSphericalL21", preScaledHarmonics.l21);
1836
- ubo.updateVector3("vSphericalL22", preScaledHarmonics.l22);
1837
- }
1838
- else {
1839
- ubo.updateFloat3("vSphericalX", polynomials.x.x, polynomials.x.y, polynomials.x.z);
1840
- ubo.updateFloat3("vSphericalY", polynomials.y.x, polynomials.y.y, polynomials.y.z);
1841
- ubo.updateFloat3("vSphericalZ", polynomials.z.x, polynomials.z.y, polynomials.z.z);
1842
- ubo.updateFloat3("vSphericalXX_ZZ", polynomials.xx.x - polynomials.zz.x, polynomials.xx.y - polynomials.zz.y, polynomials.xx.z - polynomials.zz.z);
1843
- ubo.updateFloat3("vSphericalYY_ZZ", polynomials.yy.x - polynomials.zz.x, polynomials.yy.y - polynomials.zz.y, polynomials.yy.z - polynomials.zz.z);
1844
- ubo.updateFloat3("vSphericalZZ", polynomials.zz.x, polynomials.zz.y, polynomials.zz.z);
1845
- ubo.updateFloat3("vSphericalXY", polynomials.xy.x, polynomials.xy.y, polynomials.xy.z);
1846
- ubo.updateFloat3("vSphericalYZ", polynomials.yz.x, polynomials.yz.y, polynomials.yz.z);
1847
- ubo.updateFloat3("vSphericalZX", polynomials.zx.x, polynomials.zx.y, polynomials.zx.z);
1848
- }
1849
- }
1850
- }
1851
- else {
1852
- // If we're using an irradiance map with a dominant direction assigned, set it.
1853
- if (defines.USEIRRADIANCEMAP && defines.USE_IRRADIANCE_DOMINANT_DIRECTION) {
1854
- ubo.updateVector3("vReflectionDominantDirection", reflectionTexture.irradianceTexture._dominantDirection);
1855
- }
1856
- }
1857
- ubo.updateFloat3("vReflectionMicrosurfaceInfos", reflectionTexture.getSize().width, reflectionTexture.lodGenerationScale, reflectionTexture.lodGenerationOffset);
1858
- }
1859
1596
  if (this._emissiveTexture && MaterialFlags.EmissiveTextureEnabled) {
1860
1597
  ubo.updateFloat2("vEmissiveInfos", this._emissiveTexture.coordinatesIndex, this._emissiveTexture.level);
1861
1598
  BindTextureMatrix(this._emissiveTexture, ubo, "emissive");
@@ -1896,6 +1633,7 @@ export class PBRBaseMaterial extends PushMaterial {
1896
1633
  ubo.updateFloat2("vTangentSpaceParams", this._invertNormalMapX ? -1.0 : 1.0, this._invertNormalMapY ? -1.0 : 1.0);
1897
1634
  }
1898
1635
  }
1636
+ BindIBLParameters(scene, defines, ubo, reflectionTexture, this.realTimeFiltering, true, true, true, true, true, this._reflectionColor);
1899
1637
  }
1900
1638
  // Point size
1901
1639
  if (this.pointsCloud) {
@@ -1920,7 +1658,6 @@ export class PBRBaseMaterial extends PushMaterial {
1920
1658
  ubo.updateColor4("vReflectivityColor", this._reflectivityColor, this._microSurface);
1921
1659
  }
1922
1660
  ubo.updateColor3("vEmissiveColor", MaterialFlags.EmissiveTextureEnabled ? this._emissiveColor : Color3.BlackReadOnly);
1923
- ubo.updateColor3("vReflectionColor", this._reflectionColor);
1924
1661
  if (!defines.SS_REFRACTION && this.subSurface?._linkRefractionWithTransparency) {
1925
1662
  ubo.updateColor4("vAlbedoColor", this._albedoColor, 1);
1926
1663
  }
@@ -1957,24 +1694,7 @@ export class PBRBaseMaterial extends PushMaterial {
1957
1694
  if (this._opacityTexture && MaterialFlags.OpacityTextureEnabled) {
1958
1695
  ubo.setTexture("opacitySampler", this._opacityTexture);
1959
1696
  }
1960
- if (reflectionTexture && MaterialFlags.ReflectionTextureEnabled) {
1961
- if (defines.LODBASEDMICROSFURACE) {
1962
- ubo.setTexture("reflectionSampler", reflectionTexture);
1963
- }
1964
- else {
1965
- ubo.setTexture("reflectionSampler", reflectionTexture._lodTextureMid || reflectionTexture);
1966
- ubo.setTexture("reflectionSamplerLow", reflectionTexture._lodTextureLow || reflectionTexture);
1967
- ubo.setTexture("reflectionSamplerHigh", reflectionTexture._lodTextureHigh || reflectionTexture);
1968
- }
1969
- if (defines.USEIRRADIANCEMAP) {
1970
- ubo.setTexture("irradianceSampler", reflectionTexture.irradianceTexture);
1971
- }
1972
- //if realtime filtering and using CDF maps, set them.
1973
- const cdfGenerator = this.getScene().iblCdfGenerator;
1974
- if (this.realTimeFiltering && cdfGenerator) {
1975
- ubo.setTexture("icdfSampler", cdfGenerator.getIcdfTexture());
1976
- }
1977
- }
1697
+ BindIBLSamplers(scene, defines, ubo, reflectionTexture, this.realTimeFiltering);
1978
1698
  if (defines.ENVIRONMENTBRDF) {
1979
1699
  ubo.setTexture("environmentBrdfSampler", this._environmentBRDFTexture);
1980
1700
  }
@@ -2303,9 +2023,6 @@ PBRBaseMaterial.LIGHTFALLOFF_STANDARD = 2;
2303
2023
  * False by default. This is mostly meant for backward compatibility.
2304
2024
  */
2305
2025
  PBRBaseMaterial.ForceGLSL = false;
2306
- __decorate([
2307
- serializeAsImageProcessingConfiguration()
2308
- ], PBRBaseMaterial.prototype, "_imageProcessingConfiguration", void 0);
2309
2026
  __decorate([
2310
2027
  expandToProperty("_markAllSubMeshesAsMiscDirty")
2311
2028
  ], PBRBaseMaterial.prototype, "debugMode", void 0);