@babylonjs/core 7.53.2 → 7.54.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1278) hide show
  1. package/AudioV2/abstractAudio/abstractSound.d.ts +1 -1
  2. package/AudioV2/abstractAudio/abstractSound.js +12 -12
  3. package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
  4. package/AudioV2/abstractAudio/audioEngineV2.d.ts +11 -1
  5. package/AudioV2/abstractAudio/audioEngineV2.js +14 -1
  6. package/AudioV2/abstractAudio/audioEngineV2.js.map +1 -1
  7. package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.d.ts +15 -8
  8. package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.js +23 -11
  9. package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.js.map +1 -1
  10. package/AudioV2/abstractAudio/staticSound.js +8 -0
  11. package/AudioV2/abstractAudio/staticSound.js.map +1 -1
  12. package/AudioV2/abstractAudio/staticSoundInstance.d.ts +2 -0
  13. package/AudioV2/abstractAudio/staticSoundInstance.js.map +1 -1
  14. package/AudioV2/abstractAudio/subNodes/spatialAudioSubNode.d.ts +4 -4
  15. package/AudioV2/abstractAudio/subNodes/spatialAudioSubNode.js +3 -3
  16. package/AudioV2/abstractAudio/subNodes/spatialAudioSubNode.js.map +1 -1
  17. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.d.ts +23 -16
  18. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js +3 -3
  19. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js.map +1 -1
  20. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.d.ts +13 -6
  21. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.js.map +1 -1
  22. package/AudioV2/abstractAudio/subProperties/spatialAudio.d.ts +13 -8
  23. package/AudioV2/abstractAudio/subProperties/spatialAudio.js +18 -14
  24. package/AudioV2/abstractAudio/subProperties/spatialAudio.js.map +1 -1
  25. package/AudioV2/abstractAudio/subProperties/spatialAudioListener.d.ts +10 -6
  26. package/AudioV2/abstractAudio/subProperties/spatialAudioListener.js +7 -3
  27. package/AudioV2/abstractAudio/subProperties/spatialAudioListener.js.map +1 -1
  28. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.d.ts +7 -5
  29. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js +15 -15
  30. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js.map +1 -1
  31. package/AudioV2/webAudio/subNodes/stereoWebAudioSubNode.d.ts +3 -0
  32. package/AudioV2/webAudio/subNodes/stereoWebAudioSubNode.js +4 -2
  33. package/AudioV2/webAudio/subNodes/stereoWebAudioSubNode.js.map +1 -1
  34. package/AudioV2/webAudio/subNodes/volumeWebAudioSubNode.d.ts +3 -0
  35. package/AudioV2/webAudio/subNodes/volumeWebAudioSubNode.js +4 -2
  36. package/AudioV2/webAudio/subNodes/volumeWebAudioSubNode.js.map +1 -1
  37. package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js +14 -13
  38. package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js.map +1 -1
  39. package/AudioV2/webAudio/webAudioEngine.d.ts +12 -0
  40. package/AudioV2/webAudio/webAudioEngine.js +16 -2
  41. package/AudioV2/webAudio/webAudioEngine.js.map +1 -1
  42. package/AudioV2/webAudio/webAudioMainOut.d.ts +3 -0
  43. package/AudioV2/webAudio/webAudioMainOut.js +4 -2
  44. package/AudioV2/webAudio/webAudioMainOut.js.map +1 -1
  45. package/AudioV2/webAudio/webAudioStaticSound.d.ts +4 -0
  46. package/AudioV2/webAudio/webAudioStaticSound.js +14 -0
  47. package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
  48. package/AudioV2/webAudio/webAudioUnmuteUI.d.ts +15 -0
  49. package/AudioV2/webAudio/webAudioUnmuteUI.js +45 -0
  50. package/AudioV2/webAudio/webAudioUnmuteUI.js.map +1 -0
  51. package/Behaviors/Meshes/pointerDragBehavior.js +10 -0
  52. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  53. package/Cameras/Inputs/BaseCameraPointersInput.d.ts +4 -1
  54. package/Cameras/Inputs/BaseCameraPointersInput.js +10 -7
  55. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  56. package/DeviceInput/webDeviceInputSystem.js +21 -3
  57. package/DeviceInput/webDeviceInputSystem.js.map +1 -1
  58. package/Engines/abstractEngine.js +2 -3
  59. package/Engines/abstractEngine.js.map +1 -1
  60. package/Engines/thinEngine.d.ts +2 -1
  61. package/Engines/thinEngine.js +10 -2
  62. package/Engines/thinEngine.js.map +1 -1
  63. package/Engines/webgpuEngine.d.ts +2 -1
  64. package/Engines/webgpuEngine.js +3 -2
  65. package/Engines/webgpuEngine.js.map +1 -1
  66. package/FlowGraph/Blocks/Data/Math/flowGraphVectorMathBlocks.js +3 -0
  67. package/FlowGraph/Blocks/Data/Math/flowGraphVectorMathBlocks.js.map +1 -1
  68. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js +1 -1
  69. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js.map +1 -1
  70. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.d.ts +16 -1
  71. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js +33 -1
  72. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js.map +1 -1
  73. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.js +4 -4
  74. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.js.map +1 -1
  75. package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.js +4 -4
  76. package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.js.map +1 -1
  77. package/FrameGraph/Node/Blocks/PostProcesses/anaglyphPostProcessBlock.js +2 -2
  78. package/FrameGraph/Node/Blocks/PostProcesses/anaglyphPostProcessBlock.js.map +1 -1
  79. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js +4 -4
  80. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js.map +1 -1
  81. package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.js +25 -15
  82. package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.js.map +1 -1
  83. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +6 -6
  84. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
  85. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js +4 -2
  86. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js.map +1 -1
  87. package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.js +2 -0
  88. package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.js.map +1 -1
  89. package/FrameGraph/Node/Blocks/Rendering/taaObjectRendererBlock.js +2 -0
  90. package/FrameGraph/Node/Blocks/Rendering/taaObjectRendererBlock.js.map +1 -1
  91. package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.js +4 -2
  92. package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.js.map +1 -1
  93. package/FrameGraph/Node/Blocks/Textures/clearBlock.js +4 -4
  94. package/FrameGraph/Node/Blocks/Textures/clearBlock.js.map +1 -1
  95. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.js +4 -4
  96. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.js.map +1 -1
  97. package/FrameGraph/Node/Blocks/Textures/generateMipmapsBlock.js +2 -2
  98. package/FrameGraph/Node/Blocks/Textures/generateMipmapsBlock.js.map +1 -1
  99. package/FrameGraph/Node/Blocks/{Rendering/cullObjectsBlock.d.ts → cullObjectsBlock.d.ts} +3 -3
  100. package/FrameGraph/Node/Blocks/{Rendering/cullObjectsBlock.js → cullObjectsBlock.js} +4 -4
  101. package/FrameGraph/Node/Blocks/cullObjectsBlock.js.map +1 -0
  102. package/FrameGraph/Node/Blocks/executeBlock.js +1 -2
  103. package/FrameGraph/Node/Blocks/executeBlock.js.map +1 -1
  104. package/FrameGraph/Node/Blocks/index.d.ts +1 -1
  105. package/FrameGraph/Node/Blocks/index.js +1 -1
  106. package/FrameGraph/Node/Blocks/index.js.map +1 -1
  107. package/FrameGraph/Node/Blocks/resourceContainerBlock.js +16 -16
  108. package/FrameGraph/Node/Blocks/resourceContainerBlock.js.map +1 -1
  109. package/FrameGraph/Node/nodeRenderGraphBlock.d.ts +1 -1
  110. package/FrameGraph/Node/nodeRenderGraphBlock.js +5 -4
  111. package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
  112. package/FrameGraph/Tasks/Layers/baseLayerTask.js +4 -4
  113. package/FrameGraph/Tasks/Layers/baseLayerTask.js.map +1 -1
  114. package/FrameGraph/Tasks/Misc/cullObjectsTask.js.map +1 -0
  115. package/FrameGraph/Tasks/PostProcesses/bloomTask.js +2 -2
  116. package/FrameGraph/Tasks/PostProcesses/bloomTask.js.map +1 -1
  117. package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js +2 -2
  118. package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js.map +1 -1
  119. package/FrameGraph/Tasks/PostProcesses/ssrRenderingPipelineTask.js +4 -4
  120. package/FrameGraph/Tasks/PostProcesses/ssrRenderingPipelineTask.js.map +1 -1
  121. package/FrameGraph/index.d.ts +1 -1
  122. package/FrameGraph/index.js +1 -1
  123. package/FrameGraph/index.js.map +1 -1
  124. package/Gizmos/gizmo.js +25 -17
  125. package/Gizmos/gizmo.js.map +1 -1
  126. package/Lights/IES/iesLoader.d.ts +1 -1
  127. package/Lights/IES/iesLoader.js +1 -1
  128. package/Lights/IES/iesLoader.js.map +1 -1
  129. package/Lights/Shadows/shadowGenerator.d.ts +2 -2
  130. package/Lights/Shadows/shadowGenerator.js +2 -2
  131. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  132. package/Lights/spotLight.d.ts +1 -1
  133. package/Lights/spotLight.js +1 -1
  134. package/Lights/spotLight.js.map +1 -1
  135. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.d.ts +1 -1
  136. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.js +1 -1
  137. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.js.map +1 -1
  138. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.d.ts +1 -1
  139. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +1 -1
  140. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  141. package/Materials/PBR/pbrBaseMaterial.d.ts +2 -2
  142. package/Materials/PBR/pbrBaseMaterial.js +2 -2
  143. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  144. package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +1 -0
  145. package/Materials/PBR/pbrSubSurfaceConfiguration.js +3 -0
  146. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  147. package/Materials/Textures/Loaders/basisTextureLoader.d.ts +1 -0
  148. package/Materials/Textures/Loaders/basisTextureLoader.js +1 -0
  149. package/Materials/Textures/Loaders/basisTextureLoader.js.map +1 -1
  150. package/Materials/Textures/Loaders/exrTextureLoader.d.ts +5 -4
  151. package/Materials/Textures/Loaders/exrTextureLoader.js +5 -4
  152. package/Materials/Textures/Loaders/exrTextureLoader.js.map +1 -1
  153. package/Materials/material.js +1 -1
  154. package/Materials/material.js.map +1 -1
  155. package/Maths/math.scalar.d.ts +1 -0
  156. package/Maths/math.scalar.functions.d.ts +9 -0
  157. package/Maths/math.scalar.functions.js +11 -0
  158. package/Maths/math.scalar.functions.js.map +1 -1
  159. package/Meshes/Node/Blocks/conditionBlock.d.ts +4 -0
  160. package/Meshes/Node/Blocks/conditionBlock.js +19 -8
  161. package/Meshes/Node/Blocks/conditionBlock.js.map +1 -1
  162. package/Meshes/Node/Blocks/geometryEaseBlock.d.ts +96 -0
  163. package/Meshes/Node/Blocks/geometryEaseBlock.js +318 -0
  164. package/Meshes/Node/Blocks/geometryEaseBlock.js.map +1 -0
  165. package/Meshes/Node/index.d.ts +1 -0
  166. package/Meshes/Node/index.js +1 -0
  167. package/Meshes/Node/index.js.map +1 -1
  168. package/Meshes/csg2.d.ts +3 -3
  169. package/Meshes/csg2.js +3 -3
  170. package/Meshes/csg2.js.map +1 -1
  171. package/Meshes/lattice.d.ts +2 -2
  172. package/Meshes/lattice.js +5 -4
  173. package/Meshes/lattice.js.map +1 -1
  174. package/Meshes/lattice.material.d.ts +2 -2
  175. package/Meshes/lattice.material.js +2 -2
  176. package/Meshes/lattice.material.js.map +1 -1
  177. package/Meshes/mesh.d.ts +2 -2
  178. package/Meshes/mesh.js +2 -2
  179. package/Meshes/mesh.js.map +1 -1
  180. package/Misc/decorators.js +2 -2
  181. package/Misc/decorators.js.map +1 -1
  182. package/Misc/fileTools.d.ts +1 -1
  183. package/Misc/fileTools.js +1 -1
  184. package/Misc/fileTools.js.map +1 -1
  185. package/Physics/v2/Plugins/havokPlugin.js +1 -0
  186. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  187. package/PostProcesses/subSurfaceScatteringPostProcess.d.ts +3 -0
  188. package/PostProcesses/subSurfaceScatteringPostProcess.js +16 -1
  189. package/PostProcesses/subSurfaceScatteringPostProcess.js.map +1 -1
  190. package/Rendering/IBLShadows/iblShadowsRenderPipeline.d.ts +4 -0
  191. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +11 -16
  192. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
  193. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.d.ts +6 -1
  194. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js +7 -1
  195. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js.map +1 -1
  196. package/Rendering/subSurfaceConfiguration.js +5 -1
  197. package/Rendering/subSurfaceConfiguration.js.map +1 -1
  198. package/Shaders/ShadersInclude/backgroundFragmentDeclaration.js +3 -1
  199. package/Shaders/ShadersInclude/backgroundFragmentDeclaration.js.map +1 -1
  200. package/Shaders/ShadersInclude/backgroundUboDeclaration.js +3 -1
  201. package/Shaders/ShadersInclude/backgroundUboDeclaration.js.map +1 -1
  202. package/Shaders/ShadersInclude/backgroundVertexDeclaration.js +3 -1
  203. package/Shaders/ShadersInclude/backgroundVertexDeclaration.js.map +1 -1
  204. package/Shaders/ShadersInclude/bakedVertexAnimation.js +3 -1
  205. package/Shaders/ShadersInclude/bakedVertexAnimation.js.map +1 -1
  206. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js +3 -1
  207. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js.map +1 -1
  208. package/Shaders/ShadersInclude/bayerDitherFunctions.js +3 -1
  209. package/Shaders/ShadersInclude/bayerDitherFunctions.js.map +1 -1
  210. package/Shaders/ShadersInclude/bonesDeclaration.js +3 -1
  211. package/Shaders/ShadersInclude/bonesDeclaration.js.map +1 -1
  212. package/Shaders/ShadersInclude/bonesVertex.js +3 -1
  213. package/Shaders/ShadersInclude/bonesVertex.js.map +1 -1
  214. package/Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.js +3 -1
  215. package/Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.js.map +1 -1
  216. package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.js +3 -1
  217. package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.js.map +1 -1
  218. package/Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.js +3 -1
  219. package/Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.js.map +1 -1
  220. package/Shaders/ShadersInclude/bumpFragment.js +3 -1
  221. package/Shaders/ShadersInclude/bumpFragment.js.map +1 -1
  222. package/Shaders/ShadersInclude/bumpFragmentFunctions.js +3 -1
  223. package/Shaders/ShadersInclude/bumpFragmentFunctions.js.map +1 -1
  224. package/Shaders/ShadersInclude/bumpFragmentMainFunctions.js +3 -1
  225. package/Shaders/ShadersInclude/bumpFragmentMainFunctions.js.map +1 -1
  226. package/Shaders/ShadersInclude/bumpVertex.js +3 -1
  227. package/Shaders/ShadersInclude/bumpVertex.js.map +1 -1
  228. package/Shaders/ShadersInclude/bumpVertexDeclaration.js +3 -1
  229. package/Shaders/ShadersInclude/bumpVertexDeclaration.js.map +1 -1
  230. package/Shaders/ShadersInclude/clipPlaneFragment.js +3 -1
  231. package/Shaders/ShadersInclude/clipPlaneFragment.js.map +1 -1
  232. package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration.js +3 -1
  233. package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration.js.map +1 -1
  234. package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration2.js +3 -1
  235. package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration2.js.map +1 -1
  236. package/Shaders/ShadersInclude/clipPlaneVertex.js +3 -1
  237. package/Shaders/ShadersInclude/clipPlaneVertex.js.map +1 -1
  238. package/Shaders/ShadersInclude/clipPlaneVertexDeclaration.js +3 -1
  239. package/Shaders/ShadersInclude/clipPlaneVertexDeclaration.js.map +1 -1
  240. package/Shaders/ShadersInclude/clipPlaneVertexDeclaration2.js +3 -1
  241. package/Shaders/ShadersInclude/clipPlaneVertexDeclaration2.js.map +1 -1
  242. package/Shaders/ShadersInclude/decalFragment.js +3 -1
  243. package/Shaders/ShadersInclude/decalFragment.js.map +1 -1
  244. package/Shaders/ShadersInclude/decalFragmentDeclaration.js +3 -1
  245. package/Shaders/ShadersInclude/decalFragmentDeclaration.js.map +1 -1
  246. package/Shaders/ShadersInclude/decalVertexDeclaration.js +3 -1
  247. package/Shaders/ShadersInclude/decalVertexDeclaration.js.map +1 -1
  248. package/Shaders/ShadersInclude/defaultFragmentDeclaration.js +3 -1
  249. package/Shaders/ShadersInclude/defaultFragmentDeclaration.js.map +1 -1
  250. package/Shaders/ShadersInclude/defaultUboDeclaration.js +3 -1
  251. package/Shaders/ShadersInclude/defaultUboDeclaration.js.map +1 -1
  252. package/Shaders/ShadersInclude/defaultVertexDeclaration.js +3 -1
  253. package/Shaders/ShadersInclude/defaultVertexDeclaration.js.map +1 -1
  254. package/Shaders/ShadersInclude/depthPrePass.js +3 -1
  255. package/Shaders/ShadersInclude/depthPrePass.js.map +1 -1
  256. package/Shaders/ShadersInclude/diffusionProfile.js +3 -1
  257. package/Shaders/ShadersInclude/diffusionProfile.js.map +1 -1
  258. package/Shaders/ShadersInclude/fibonacci.js +3 -2
  259. package/Shaders/ShadersInclude/fibonacci.js.map +1 -1
  260. package/Shaders/ShadersInclude/fogFragment.js +3 -1
  261. package/Shaders/ShadersInclude/fogFragment.js.map +1 -1
  262. package/Shaders/ShadersInclude/fogFragmentDeclaration.js +3 -1
  263. package/Shaders/ShadersInclude/fogFragmentDeclaration.js.map +1 -1
  264. package/Shaders/ShadersInclude/fogVertex.js +3 -1
  265. package/Shaders/ShadersInclude/fogVertex.js.map +1 -1
  266. package/Shaders/ShadersInclude/fogVertexDeclaration.js +3 -1
  267. package/Shaders/ShadersInclude/fogVertexDeclaration.js.map +1 -1
  268. package/Shaders/ShadersInclude/fresnelFunction.js +3 -1
  269. package/Shaders/ShadersInclude/fresnelFunction.js.map +1 -1
  270. package/Shaders/ShadersInclude/gaussianSplatting.js +3 -1
  271. package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
  272. package/Shaders/ShadersInclude/gaussianSplattingFragmentDeclaration.js +3 -1
  273. package/Shaders/ShadersInclude/gaussianSplattingFragmentDeclaration.js.map +1 -1
  274. package/Shaders/ShadersInclude/gaussianSplattingUboDeclaration.js +3 -1
  275. package/Shaders/ShadersInclude/gaussianSplattingUboDeclaration.js.map +1 -1
  276. package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js +3 -1
  277. package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js.map +1 -1
  278. package/Shaders/ShadersInclude/geometryUboDeclaration.js +3 -1
  279. package/Shaders/ShadersInclude/geometryUboDeclaration.js.map +1 -1
  280. package/Shaders/ShadersInclude/geometryVertexDeclaration.js +3 -1
  281. package/Shaders/ShadersInclude/geometryVertexDeclaration.js.map +1 -1
  282. package/Shaders/ShadersInclude/harmonicsFunctions.js +3 -1
  283. package/Shaders/ShadersInclude/harmonicsFunctions.js.map +1 -1
  284. package/Shaders/ShadersInclude/hdrFilteringFunctions.js +3 -1
  285. package/Shaders/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
  286. package/Shaders/ShadersInclude/helperFunctions.js +3 -1
  287. package/Shaders/ShadersInclude/helperFunctions.js.map +1 -1
  288. package/Shaders/ShadersInclude/imageProcessingCompatibility.js +3 -1
  289. package/Shaders/ShadersInclude/imageProcessingCompatibility.js.map +1 -1
  290. package/Shaders/ShadersInclude/imageProcessingDeclaration.js +3 -1
  291. package/Shaders/ShadersInclude/imageProcessingDeclaration.js.map +1 -1
  292. package/Shaders/ShadersInclude/imageProcessingFunctions.js +3 -1
  293. package/Shaders/ShadersInclude/imageProcessingFunctions.js.map +1 -1
  294. package/Shaders/ShadersInclude/importanceSampling.js +3 -1
  295. package/Shaders/ShadersInclude/importanceSampling.js.map +1 -1
  296. package/Shaders/ShadersInclude/instancesDeclaration.js +3 -1
  297. package/Shaders/ShadersInclude/instancesDeclaration.js.map +1 -1
  298. package/Shaders/ShadersInclude/instancesVertex.js +3 -1
  299. package/Shaders/ShadersInclude/instancesVertex.js.map +1 -1
  300. package/Shaders/ShadersInclude/intersectionFunctions.js +3 -1
  301. package/Shaders/ShadersInclude/intersectionFunctions.js.map +1 -1
  302. package/Shaders/ShadersInclude/kernelBlurFragment.js +3 -1
  303. package/Shaders/ShadersInclude/kernelBlurFragment.js.map +1 -1
  304. package/Shaders/ShadersInclude/kernelBlurFragment2.js +3 -1
  305. package/Shaders/ShadersInclude/kernelBlurFragment2.js.map +1 -1
  306. package/Shaders/ShadersInclude/kernelBlurVaryingDeclaration.js +3 -1
  307. package/Shaders/ShadersInclude/kernelBlurVaryingDeclaration.js.map +1 -1
  308. package/Shaders/ShadersInclude/kernelBlurVertex.js +3 -1
  309. package/Shaders/ShadersInclude/kernelBlurVertex.js.map +1 -1
  310. package/Shaders/ShadersInclude/lightFragment.js +3 -1
  311. package/Shaders/ShadersInclude/lightFragment.js.map +1 -1
  312. package/Shaders/ShadersInclude/lightFragmentDeclaration.js +3 -1
  313. package/Shaders/ShadersInclude/lightFragmentDeclaration.js.map +1 -1
  314. package/Shaders/ShadersInclude/lightUboDeclaration.js +3 -1
  315. package/Shaders/ShadersInclude/lightUboDeclaration.js.map +1 -1
  316. package/Shaders/ShadersInclude/lightVxFragmentDeclaration.js +3 -1
  317. package/Shaders/ShadersInclude/lightVxFragmentDeclaration.js.map +1 -1
  318. package/Shaders/ShadersInclude/lightVxUboDeclaration.js +3 -1
  319. package/Shaders/ShadersInclude/lightVxUboDeclaration.js.map +1 -1
  320. package/Shaders/ShadersInclude/lightsFragmentFunctions.js +3 -1
  321. package/Shaders/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  322. package/Shaders/ShadersInclude/lineUboDeclaration.js +3 -1
  323. package/Shaders/ShadersInclude/lineUboDeclaration.js.map +1 -1
  324. package/Shaders/ShadersInclude/lineVertexDeclaration.js +3 -1
  325. package/Shaders/ShadersInclude/lineVertexDeclaration.js.map +1 -1
  326. package/Shaders/ShadersInclude/logDepthDeclaration.js +3 -1
  327. package/Shaders/ShadersInclude/logDepthDeclaration.js.map +1 -1
  328. package/Shaders/ShadersInclude/logDepthFragment.js +3 -1
  329. package/Shaders/ShadersInclude/logDepthFragment.js.map +1 -1
  330. package/Shaders/ShadersInclude/logDepthVertex.js +3 -1
  331. package/Shaders/ShadersInclude/logDepthVertex.js.map +1 -1
  332. package/Shaders/ShadersInclude/ltcHelperFunctions.js +3 -1
  333. package/Shaders/ShadersInclude/ltcHelperFunctions.js.map +1 -1
  334. package/Shaders/ShadersInclude/mainUVVaryingDeclaration.js +3 -1
  335. package/Shaders/ShadersInclude/mainUVVaryingDeclaration.js.map +1 -1
  336. package/Shaders/ShadersInclude/meshFragmentDeclaration.js +3 -1
  337. package/Shaders/ShadersInclude/meshFragmentDeclaration.js.map +1 -1
  338. package/Shaders/ShadersInclude/meshUboDeclaration.js +3 -1
  339. package/Shaders/ShadersInclude/meshUboDeclaration.js.map +1 -1
  340. package/Shaders/ShadersInclude/meshVertexDeclaration.js +3 -1
  341. package/Shaders/ShadersInclude/meshVertexDeclaration.js.map +1 -1
  342. package/Shaders/ShadersInclude/morphTargetsVertex.js +3 -1
  343. package/Shaders/ShadersInclude/morphTargetsVertex.js.map +1 -1
  344. package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js +3 -1
  345. package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js.map +1 -1
  346. package/Shaders/ShadersInclude/morphTargetsVertexGlobal.js +3 -1
  347. package/Shaders/ShadersInclude/morphTargetsVertexGlobal.js.map +1 -1
  348. package/Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration.js +3 -1
  349. package/Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration.js.map +1 -1
  350. package/Shaders/ShadersInclude/mrtFragmentDeclaration.js +3 -1
  351. package/Shaders/ShadersInclude/mrtFragmentDeclaration.js.map +1 -1
  352. package/Shaders/ShadersInclude/oitDeclaration.js +3 -1
  353. package/Shaders/ShadersInclude/oitDeclaration.js.map +1 -1
  354. package/Shaders/ShadersInclude/oitFragment.js +3 -1
  355. package/Shaders/ShadersInclude/oitFragment.js.map +1 -1
  356. package/Shaders/ShadersInclude/packingFunctions.js +3 -1
  357. package/Shaders/ShadersInclude/packingFunctions.js.map +1 -1
  358. package/Shaders/ShadersInclude/pbrBRDFFunctions.js +3 -1
  359. package/Shaders/ShadersInclude/pbrBRDFFunctions.js.map +1 -1
  360. package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js +3 -1
  361. package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js.map +1 -1
  362. package/Shaders/ShadersInclude/pbrBlockAlphaFresnel.js +3 -1
  363. package/Shaders/ShadersInclude/pbrBlockAlphaFresnel.js.map +1 -1
  364. package/Shaders/ShadersInclude/pbrBlockAmbientOcclusion.js +3 -1
  365. package/Shaders/ShadersInclude/pbrBlockAmbientOcclusion.js.map +1 -1
  366. package/Shaders/ShadersInclude/pbrBlockAnisotropic.js +3 -1
  367. package/Shaders/ShadersInclude/pbrBlockAnisotropic.js.map +1 -1
  368. package/Shaders/ShadersInclude/pbrBlockClearcoat.js +3 -1
  369. package/Shaders/ShadersInclude/pbrBlockClearcoat.js.map +1 -1
  370. package/Shaders/ShadersInclude/pbrBlockDirectLighting.js +3 -1
  371. package/Shaders/ShadersInclude/pbrBlockDirectLighting.js.map +1 -1
  372. package/Shaders/ShadersInclude/pbrBlockFinalColorComposition.js +3 -1
  373. package/Shaders/ShadersInclude/pbrBlockFinalColorComposition.js.map +1 -1
  374. package/Shaders/ShadersInclude/pbrBlockFinalLitComponents.js +5 -2
  375. package/Shaders/ShadersInclude/pbrBlockFinalLitComponents.js.map +1 -1
  376. package/Shaders/ShadersInclude/pbrBlockFinalUnlitComponents.js +3 -1
  377. package/Shaders/ShadersInclude/pbrBlockFinalUnlitComponents.js.map +1 -1
  378. package/Shaders/ShadersInclude/pbrBlockGeometryInfo.js +3 -1
  379. package/Shaders/ShadersInclude/pbrBlockGeometryInfo.js.map +1 -1
  380. package/Shaders/ShadersInclude/pbrBlockImageProcessing.js +3 -1
  381. package/Shaders/ShadersInclude/pbrBlockImageProcessing.js.map +1 -1
  382. package/Shaders/ShadersInclude/pbrBlockIridescence.js +3 -1
  383. package/Shaders/ShadersInclude/pbrBlockIridescence.js.map +1 -1
  384. package/Shaders/ShadersInclude/pbrBlockLightmapInit.js +3 -1
  385. package/Shaders/ShadersInclude/pbrBlockLightmapInit.js.map +1 -1
  386. package/Shaders/ShadersInclude/pbrBlockNormalFinal.js +3 -1
  387. package/Shaders/ShadersInclude/pbrBlockNormalFinal.js.map +1 -1
  388. package/Shaders/ShadersInclude/pbrBlockNormalGeometric.js +3 -1
  389. package/Shaders/ShadersInclude/pbrBlockNormalGeometric.js.map +1 -1
  390. package/Shaders/ShadersInclude/pbrBlockPrePass.js +3 -1
  391. package/Shaders/ShadersInclude/pbrBlockPrePass.js.map +1 -1
  392. package/Shaders/ShadersInclude/pbrBlockReflectance.js +3 -1
  393. package/Shaders/ShadersInclude/pbrBlockReflectance.js.map +1 -1
  394. package/Shaders/ShadersInclude/pbrBlockReflectance0.js +3 -1
  395. package/Shaders/ShadersInclude/pbrBlockReflectance0.js.map +1 -1
  396. package/Shaders/ShadersInclude/pbrBlockReflection.js +3 -1
  397. package/Shaders/ShadersInclude/pbrBlockReflection.js.map +1 -1
  398. package/Shaders/ShadersInclude/pbrBlockReflectivity.js +3 -1
  399. package/Shaders/ShadersInclude/pbrBlockReflectivity.js.map +1 -1
  400. package/Shaders/ShadersInclude/pbrBlockSheen.js +3 -1
  401. package/Shaders/ShadersInclude/pbrBlockSheen.js.map +1 -1
  402. package/Shaders/ShadersInclude/pbrBlockSubSurface.js +3 -1
  403. package/Shaders/ShadersInclude/pbrBlockSubSurface.js.map +1 -1
  404. package/Shaders/ShadersInclude/pbrDebug.js +3 -1
  405. package/Shaders/ShadersInclude/pbrDebug.js.map +1 -1
  406. package/Shaders/ShadersInclude/pbrDirectLightingFalloffFunctions.js +3 -1
  407. package/Shaders/ShadersInclude/pbrDirectLightingFalloffFunctions.js.map +1 -1
  408. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +3 -1
  409. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  410. package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js +3 -1
  411. package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js.map +1 -1
  412. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js +3 -1
  413. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js.map +1 -1
  414. package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js +3 -1
  415. package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js.map +1 -1
  416. package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js +3 -1
  417. package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js.map +1 -1
  418. package/Shaders/ShadersInclude/pbrHelperFunctions.js +3 -1
  419. package/Shaders/ShadersInclude/pbrHelperFunctions.js.map +1 -1
  420. package/Shaders/ShadersInclude/pbrIBLFunctions.js +3 -1
  421. package/Shaders/ShadersInclude/pbrIBLFunctions.js.map +1 -1
  422. package/Shaders/ShadersInclude/pbrUboDeclaration.js +3 -1
  423. package/Shaders/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  424. package/Shaders/ShadersInclude/pbrVertexDeclaration.js +3 -1
  425. package/Shaders/ShadersInclude/pbrVertexDeclaration.js.map +1 -1
  426. package/Shaders/ShadersInclude/pointCloudVertex.js +3 -1
  427. package/Shaders/ShadersInclude/pointCloudVertex.js.map +1 -1
  428. package/Shaders/ShadersInclude/pointCloudVertexDeclaration.js +3 -1
  429. package/Shaders/ShadersInclude/pointCloudVertexDeclaration.js.map +1 -1
  430. package/Shaders/ShadersInclude/prePassDeclaration.js +3 -1
  431. package/Shaders/ShadersInclude/prePassDeclaration.js.map +1 -1
  432. package/Shaders/ShadersInclude/prePassVertex.js +3 -1
  433. package/Shaders/ShadersInclude/prePassVertex.js.map +1 -1
  434. package/Shaders/ShadersInclude/prePassVertexDeclaration.js +3 -1
  435. package/Shaders/ShadersInclude/prePassVertexDeclaration.js.map +1 -1
  436. package/Shaders/ShadersInclude/reflectionFunction.js +3 -1
  437. package/Shaders/ShadersInclude/reflectionFunction.js.map +1 -1
  438. package/Shaders/ShadersInclude/samplerFragmentAlternateDeclaration.js +3 -1
  439. package/Shaders/ShadersInclude/samplerFragmentAlternateDeclaration.js.map +1 -1
  440. package/Shaders/ShadersInclude/samplerFragmentDeclaration.js +3 -1
  441. package/Shaders/ShadersInclude/samplerFragmentDeclaration.js.map +1 -1
  442. package/Shaders/ShadersInclude/samplerVertexDeclaration.js +3 -1
  443. package/Shaders/ShadersInclude/samplerVertexDeclaration.js.map +1 -1
  444. package/Shaders/ShadersInclude/samplerVertexImplementation.js +3 -1
  445. package/Shaders/ShadersInclude/samplerVertexImplementation.js.map +1 -1
  446. package/Shaders/ShadersInclude/sceneFragmentDeclaration.js +3 -1
  447. package/Shaders/ShadersInclude/sceneFragmentDeclaration.js.map +1 -1
  448. package/Shaders/ShadersInclude/sceneUboDeclaration.js +3 -1
  449. package/Shaders/ShadersInclude/sceneUboDeclaration.js.map +1 -1
  450. package/Shaders/ShadersInclude/sceneVertexDeclaration.js +3 -1
  451. package/Shaders/ShadersInclude/sceneVertexDeclaration.js.map +1 -1
  452. package/Shaders/ShadersInclude/screenSpaceRayTrace.js +3 -1
  453. package/Shaders/ShadersInclude/screenSpaceRayTrace.js.map +1 -1
  454. package/Shaders/ShadersInclude/shadowMapFragment.js +3 -1
  455. package/Shaders/ShadersInclude/shadowMapFragment.js.map +1 -1
  456. package/Shaders/ShadersInclude/shadowMapFragmentExtraDeclaration.js +3 -1
  457. package/Shaders/ShadersInclude/shadowMapFragmentExtraDeclaration.js.map +1 -1
  458. package/Shaders/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js +3 -1
  459. package/Shaders/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js.map +1 -1
  460. package/Shaders/ShadersInclude/shadowMapUboDeclaration.js +3 -1
  461. package/Shaders/ShadersInclude/shadowMapUboDeclaration.js.map +1 -1
  462. package/Shaders/ShadersInclude/shadowMapVertexDeclaration.js +3 -1
  463. package/Shaders/ShadersInclude/shadowMapVertexDeclaration.js.map +1 -1
  464. package/Shaders/ShadersInclude/shadowMapVertexExtraDeclaration.js +3 -1
  465. package/Shaders/ShadersInclude/shadowMapVertexExtraDeclaration.js.map +1 -1
  466. package/Shaders/ShadersInclude/shadowMapVertexMetric.js +3 -1
  467. package/Shaders/ShadersInclude/shadowMapVertexMetric.js.map +1 -1
  468. package/Shaders/ShadersInclude/shadowMapVertexNormalBias.js +3 -1
  469. package/Shaders/ShadersInclude/shadowMapVertexNormalBias.js.map +1 -1
  470. package/Shaders/ShadersInclude/shadowsFragmentFunctions.js +3 -1
  471. package/Shaders/ShadersInclude/shadowsFragmentFunctions.js.map +1 -1
  472. package/Shaders/ShadersInclude/shadowsVertex.js +3 -1
  473. package/Shaders/ShadersInclude/shadowsVertex.js.map +1 -1
  474. package/Shaders/ShadersInclude/subSurfaceScatteringFunctions.js +3 -1
  475. package/Shaders/ShadersInclude/subSurfaceScatteringFunctions.js.map +1 -1
  476. package/Shaders/ShadersInclude/uvAttributeDeclaration.js +3 -1
  477. package/Shaders/ShadersInclude/uvAttributeDeclaration.js.map +1 -1
  478. package/Shaders/ShadersInclude/uvVariableDeclaration.js +3 -1
  479. package/Shaders/ShadersInclude/uvVariableDeclaration.js.map +1 -1
  480. package/Shaders/ShadersInclude/vertexColorMixing.js +3 -1
  481. package/Shaders/ShadersInclude/vertexColorMixing.js.map +1 -1
  482. package/Shaders/anaglyph.fragment.js +3 -1
  483. package/Shaders/anaglyph.fragment.js.map +1 -1
  484. package/Shaders/background.fragment.js +3 -1
  485. package/Shaders/background.fragment.js.map +1 -1
  486. package/Shaders/background.vertex.js +3 -1
  487. package/Shaders/background.vertex.js.map +1 -1
  488. package/Shaders/bilateralBlur.fragment.js +3 -1
  489. package/Shaders/bilateralBlur.fragment.js.map +1 -1
  490. package/Shaders/bilateralBlurQuality.fragment.js +3 -1
  491. package/Shaders/bilateralBlurQuality.fragment.js.map +1 -1
  492. package/Shaders/blackAndWhite.fragment.js +3 -1
  493. package/Shaders/blackAndWhite.fragment.js.map +1 -1
  494. package/Shaders/bloomMerge.fragment.js +3 -1
  495. package/Shaders/bloomMerge.fragment.js.map +1 -1
  496. package/Shaders/boundingBoxRenderer.fragment.js +3 -1
  497. package/Shaders/boundingBoxRenderer.fragment.js.map +1 -1
  498. package/Shaders/boundingBoxRenderer.vertex.js +3 -1
  499. package/Shaders/boundingBoxRenderer.vertex.js.map +1 -1
  500. package/Shaders/chromaticAberration.fragment.js +3 -1
  501. package/Shaders/chromaticAberration.fragment.js.map +1 -1
  502. package/Shaders/circleOfConfusion.fragment.js +3 -1
  503. package/Shaders/circleOfConfusion.fragment.js.map +1 -1
  504. package/Shaders/color.fragment.js +3 -1
  505. package/Shaders/color.fragment.js.map +1 -1
  506. package/Shaders/color.vertex.js +3 -1
  507. package/Shaders/color.vertex.js.map +1 -1
  508. package/Shaders/colorCorrection.fragment.js +3 -1
  509. package/Shaders/colorCorrection.fragment.js.map +1 -1
  510. package/Shaders/convolution.fragment.js +3 -1
  511. package/Shaders/convolution.fragment.js.map +1 -1
  512. package/Shaders/copyTexture3DLayerToTexture.fragment.js +3 -1
  513. package/Shaders/copyTexture3DLayerToTexture.fragment.js.map +1 -1
  514. package/Shaders/copyTextureToTexture.fragment.js +3 -1
  515. package/Shaders/copyTextureToTexture.fragment.js.map +1 -1
  516. package/Shaders/default.fragment.js +3 -1
  517. package/Shaders/default.fragment.js.map +1 -1
  518. package/Shaders/default.vertex.js +3 -1
  519. package/Shaders/default.vertex.js.map +1 -1
  520. package/Shaders/depth.fragment.js +3 -1
  521. package/Shaders/depth.fragment.js.map +1 -1
  522. package/Shaders/depth.vertex.js +3 -1
  523. package/Shaders/depth.vertex.js.map +1 -1
  524. package/Shaders/depthBoxBlur.fragment.js +3 -1
  525. package/Shaders/depthBoxBlur.fragment.js.map +1 -1
  526. package/Shaders/depthOfField.fragment.js +3 -1
  527. package/Shaders/depthOfField.fragment.js.map +1 -1
  528. package/Shaders/depthOfFieldMerge.fragment.js +3 -1
  529. package/Shaders/depthOfFieldMerge.fragment.js.map +1 -1
  530. package/Shaders/displayPass.fragment.js +3 -1
  531. package/Shaders/displayPass.fragment.js.map +1 -1
  532. package/Shaders/equirectangularPanorama.fragment.js +3 -1
  533. package/Shaders/equirectangularPanorama.fragment.js.map +1 -1
  534. package/Shaders/extractHighlights.fragment.js +3 -1
  535. package/Shaders/extractHighlights.fragment.js.map +1 -1
  536. package/Shaders/filter.fragment.js +3 -1
  537. package/Shaders/filter.fragment.js.map +1 -1
  538. package/Shaders/fluidRenderingBilateralBlur.fragment.js +3 -1
  539. package/Shaders/fluidRenderingBilateralBlur.fragment.js.map +1 -1
  540. package/Shaders/fluidRenderingParticleDepth.fragment.js +3 -1
  541. package/Shaders/fluidRenderingParticleDepth.fragment.js.map +1 -1
  542. package/Shaders/fluidRenderingParticleDepth.vertex.js +3 -1
  543. package/Shaders/fluidRenderingParticleDepth.vertex.js.map +1 -1
  544. package/Shaders/fluidRenderingParticleDiffuse.fragment.js +3 -1
  545. package/Shaders/fluidRenderingParticleDiffuse.fragment.js.map +1 -1
  546. package/Shaders/fluidRenderingParticleDiffuse.vertex.js +3 -1
  547. package/Shaders/fluidRenderingParticleDiffuse.vertex.js.map +1 -1
  548. package/Shaders/fluidRenderingParticleThickness.fragment.js +3 -1
  549. package/Shaders/fluidRenderingParticleThickness.fragment.js.map +1 -1
  550. package/Shaders/fluidRenderingParticleThickness.vertex.js +3 -1
  551. package/Shaders/fluidRenderingParticleThickness.vertex.js.map +1 -1
  552. package/Shaders/fluidRenderingRender.fragment.js +3 -1
  553. package/Shaders/fluidRenderingRender.fragment.js.map +1 -1
  554. package/Shaders/fluidRenderingStandardBlur.fragment.js +3 -1
  555. package/Shaders/fluidRenderingStandardBlur.fragment.js.map +1 -1
  556. package/Shaders/fxaa.fragment.js +3 -1
  557. package/Shaders/fxaa.fragment.js.map +1 -1
  558. package/Shaders/fxaa.vertex.js +3 -1
  559. package/Shaders/fxaa.vertex.js.map +1 -1
  560. package/Shaders/gaussianSplatting.fragment.js +3 -1
  561. package/Shaders/gaussianSplatting.fragment.js.map +1 -1
  562. package/Shaders/gaussianSplatting.vertex.js +3 -1
  563. package/Shaders/gaussianSplatting.vertex.js.map +1 -1
  564. package/Shaders/geometry.fragment.js +3 -1
  565. package/Shaders/geometry.fragment.js.map +1 -1
  566. package/Shaders/geometry.vertex.js +3 -1
  567. package/Shaders/geometry.vertex.js.map +1 -1
  568. package/Shaders/glowBlurPostProcess.fragment.js +3 -1
  569. package/Shaders/glowBlurPostProcess.fragment.js.map +1 -1
  570. package/Shaders/glowMapGeneration.fragment.js +3 -1
  571. package/Shaders/glowMapGeneration.fragment.js.map +1 -1
  572. package/Shaders/glowMapGeneration.vertex.js +3 -1
  573. package/Shaders/glowMapGeneration.vertex.js.map +1 -1
  574. package/Shaders/glowMapMerge.fragment.js +3 -1
  575. package/Shaders/glowMapMerge.fragment.js.map +1 -1
  576. package/Shaders/glowMapMerge.vertex.js +3 -1
  577. package/Shaders/glowMapMerge.vertex.js.map +1 -1
  578. package/Shaders/gpuRenderParticles.fragment.js +3 -1
  579. package/Shaders/gpuRenderParticles.fragment.js.map +1 -1
  580. package/Shaders/gpuRenderParticles.vertex.js +3 -1
  581. package/Shaders/gpuRenderParticles.vertex.js.map +1 -1
  582. package/Shaders/gpuTransform.fragment.js +3 -1
  583. package/Shaders/gpuTransform.fragment.js.map +1 -1
  584. package/Shaders/gpuTransform.vertex.js +3 -1
  585. package/Shaders/gpuTransform.vertex.js.map +1 -1
  586. package/Shaders/gpuUpdateParticles.fragment.js +3 -1
  587. package/Shaders/gpuUpdateParticles.fragment.js.map +1 -1
  588. package/Shaders/gpuUpdateParticles.vertex.js +3 -1
  589. package/Shaders/gpuUpdateParticles.vertex.js.map +1 -1
  590. package/Shaders/grain.fragment.js +3 -1
  591. package/Shaders/grain.fragment.js.map +1 -1
  592. package/Shaders/greasedLine.fragment.js +3 -1
  593. package/Shaders/greasedLine.fragment.js.map +1 -1
  594. package/Shaders/greasedLine.vertex.js +3 -1
  595. package/Shaders/greasedLine.vertex.js.map +1 -1
  596. package/Shaders/hdrFiltering.fragment.js +3 -1
  597. package/Shaders/hdrFiltering.fragment.js.map +1 -1
  598. package/Shaders/hdrFiltering.vertex.js +3 -1
  599. package/Shaders/hdrFiltering.vertex.js.map +1 -1
  600. package/Shaders/hdrIrradianceFiltering.fragment.js +3 -1
  601. package/Shaders/hdrIrradianceFiltering.fragment.js.map +1 -1
  602. package/Shaders/hdrIrradianceFiltering.vertex.js +3 -1
  603. package/Shaders/hdrIrradianceFiltering.vertex.js.map +1 -1
  604. package/Shaders/highlights.fragment.js +3 -1
  605. package/Shaders/highlights.fragment.js.map +1 -1
  606. package/Shaders/iblCdfDebug.fragment.js +3 -1
  607. package/Shaders/iblCdfDebug.fragment.js.map +1 -1
  608. package/Shaders/iblCdfx.fragment.js +3 -1
  609. package/Shaders/iblCdfx.fragment.js.map +1 -1
  610. package/Shaders/iblCdfy.fragment.js +3 -1
  611. package/Shaders/iblCdfy.fragment.js.map +1 -1
  612. package/Shaders/iblCombineVoxelGrids.fragment.js +3 -1
  613. package/Shaders/iblCombineVoxelGrids.fragment.js.map +1 -1
  614. package/Shaders/iblGenerateVoxelMip.fragment.js +3 -1
  615. package/Shaders/iblGenerateVoxelMip.fragment.js.map +1 -1
  616. package/Shaders/iblIcdf.fragment.js +3 -1
  617. package/Shaders/iblIcdf.fragment.js.map +1 -1
  618. package/Shaders/iblScaledLuminance.fragment.js +3 -1
  619. package/Shaders/iblScaledLuminance.fragment.js.map +1 -1
  620. package/Shaders/iblShadowAccumulation.fragment.js +3 -1
  621. package/Shaders/iblShadowAccumulation.fragment.js.map +1 -1
  622. package/Shaders/iblShadowDebug.fragment.js +3 -1
  623. package/Shaders/iblShadowDebug.fragment.js.map +1 -1
  624. package/Shaders/iblShadowGBufferDebug.fragment.js +3 -1
  625. package/Shaders/iblShadowGBufferDebug.fragment.js.map +1 -1
  626. package/Shaders/iblShadowSpatialBlur.fragment.js +3 -1
  627. package/Shaders/iblShadowSpatialBlur.fragment.js.map +1 -1
  628. package/Shaders/iblShadowVoxelTracing.fragment.js +3 -1
  629. package/Shaders/iblShadowVoxelTracing.fragment.js.map +1 -1
  630. package/Shaders/iblShadowsCombine.fragment.js +3 -1
  631. package/Shaders/iblShadowsCombine.fragment.js.map +1 -1
  632. package/Shaders/iblVoxelGrid.fragment.js +3 -1
  633. package/Shaders/iblVoxelGrid.fragment.js.map +1 -1
  634. package/Shaders/iblVoxelGrid.vertex.js +3 -1
  635. package/Shaders/iblVoxelGrid.vertex.js.map +1 -1
  636. package/Shaders/iblVoxelGrid2dArrayDebug.fragment.js +3 -1
  637. package/Shaders/iblVoxelGrid2dArrayDebug.fragment.js.map +1 -1
  638. package/Shaders/iblVoxelGrid3dDebug.fragment.js +3 -1
  639. package/Shaders/iblVoxelGrid3dDebug.fragment.js.map +1 -1
  640. package/Shaders/iblVoxelSlabDebug.fragment.js +3 -1
  641. package/Shaders/iblVoxelSlabDebug.fragment.js.map +1 -1
  642. package/Shaders/iblVoxelSlabDebug.vertex.js +3 -1
  643. package/Shaders/iblVoxelSlabDebug.vertex.js.map +1 -1
  644. package/Shaders/imageProcessing.fragment.js +3 -1
  645. package/Shaders/imageProcessing.fragment.js.map +1 -1
  646. package/Shaders/kernelBlur.fragment.js +3 -1
  647. package/Shaders/kernelBlur.fragment.js.map +1 -1
  648. package/Shaders/kernelBlur.vertex.js +3 -1
  649. package/Shaders/kernelBlur.vertex.js.map +1 -1
  650. package/Shaders/layer.fragment.js +3 -1
  651. package/Shaders/layer.fragment.js.map +1 -1
  652. package/Shaders/layer.vertex.js +3 -1
  653. package/Shaders/layer.vertex.js.map +1 -1
  654. package/Shaders/lensFlare.fragment.js +3 -1
  655. package/Shaders/lensFlare.fragment.js.map +1 -1
  656. package/Shaders/lensFlare.vertex.js +3 -1
  657. package/Shaders/lensFlare.vertex.js.map +1 -1
  658. package/Shaders/lensHighlights.fragment.js +3 -1
  659. package/Shaders/lensHighlights.fragment.js.map +1 -1
  660. package/Shaders/line.fragment.js +3 -1
  661. package/Shaders/line.fragment.js.map +1 -1
  662. package/Shaders/line.vertex.js +3 -1
  663. package/Shaders/line.vertex.js.map +1 -1
  664. package/Shaders/lod.fragment.js +3 -1
  665. package/Shaders/lod.fragment.js.map +1 -1
  666. package/Shaders/lodCube.fragment.js +3 -1
  667. package/Shaders/lodCube.fragment.js.map +1 -1
  668. package/Shaders/meshUVSpaceRenderer.fragment.js +3 -1
  669. package/Shaders/meshUVSpaceRenderer.fragment.js.map +1 -1
  670. package/Shaders/meshUVSpaceRenderer.vertex.js +3 -1
  671. package/Shaders/meshUVSpaceRenderer.vertex.js.map +1 -1
  672. package/Shaders/meshUVSpaceRendererFinaliser.fragment.js +3 -1
  673. package/Shaders/meshUVSpaceRendererFinaliser.fragment.js.map +1 -1
  674. package/Shaders/meshUVSpaceRendererFinaliser.vertex.js +3 -1
  675. package/Shaders/meshUVSpaceRendererFinaliser.vertex.js.map +1 -1
  676. package/Shaders/meshUVSpaceRendererMasker.fragment.js +3 -1
  677. package/Shaders/meshUVSpaceRendererMasker.fragment.js.map +1 -1
  678. package/Shaders/meshUVSpaceRendererMasker.vertex.js +3 -1
  679. package/Shaders/meshUVSpaceRendererMasker.vertex.js.map +1 -1
  680. package/Shaders/minmaxRedux.fragment.js +3 -1
  681. package/Shaders/minmaxRedux.fragment.js.map +1 -1
  682. package/Shaders/motionBlur.fragment.js +3 -1
  683. package/Shaders/motionBlur.fragment.js.map +1 -1
  684. package/Shaders/noise.fragment.js +3 -1
  685. package/Shaders/noise.fragment.js.map +1 -1
  686. package/Shaders/oitBackBlend.fragment.js +3 -1
  687. package/Shaders/oitBackBlend.fragment.js.map +1 -1
  688. package/Shaders/oitFinal.fragment.js +3 -1
  689. package/Shaders/oitFinal.fragment.js.map +1 -1
  690. package/Shaders/outline.fragment.js +3 -1
  691. package/Shaders/outline.fragment.js.map +1 -1
  692. package/Shaders/outline.vertex.js +3 -1
  693. package/Shaders/outline.vertex.js.map +1 -1
  694. package/Shaders/particles.fragment.js +3 -1
  695. package/Shaders/particles.fragment.js.map +1 -1
  696. package/Shaders/particles.vertex.js +3 -1
  697. package/Shaders/particles.vertex.js.map +1 -1
  698. package/Shaders/pass.fragment.js +3 -1
  699. package/Shaders/pass.fragment.js.map +1 -1
  700. package/Shaders/passCube.fragment.js +3 -1
  701. package/Shaders/passCube.fragment.js.map +1 -1
  702. package/Shaders/pbr.fragment.js +6 -1
  703. package/Shaders/pbr.fragment.js.map +1 -1
  704. package/Shaders/pbr.vertex.js +3 -1
  705. package/Shaders/pbr.vertex.js.map +1 -1
  706. package/Shaders/picking.fragment.js +3 -1
  707. package/Shaders/picking.fragment.js.map +1 -1
  708. package/Shaders/picking.vertex.js +3 -1
  709. package/Shaders/picking.vertex.js.map +1 -1
  710. package/Shaders/postprocess.vertex.js +3 -1
  711. package/Shaders/postprocess.vertex.js.map +1 -1
  712. package/Shaders/procedural.vertex.js +3 -1
  713. package/Shaders/procedural.vertex.js.map +1 -1
  714. package/Shaders/refraction.fragment.js +3 -1
  715. package/Shaders/refraction.fragment.js.map +1 -1
  716. package/Shaders/rgbdDecode.fragment.js +3 -1
  717. package/Shaders/rgbdDecode.fragment.js.map +1 -1
  718. package/Shaders/rgbdEncode.fragment.js +3 -1
  719. package/Shaders/rgbdEncode.fragment.js.map +1 -1
  720. package/Shaders/rsmFullGlobalIllumination.fragment.js +3 -1
  721. package/Shaders/rsmFullGlobalIllumination.fragment.js.map +1 -1
  722. package/Shaders/rsmGlobalIllumination.fragment.js +3 -1
  723. package/Shaders/rsmGlobalIllumination.fragment.js.map +1 -1
  724. package/Shaders/screenSpaceCurvature.fragment.js +3 -1
  725. package/Shaders/screenSpaceCurvature.fragment.js.map +1 -1
  726. package/Shaders/screenSpaceReflection.fragment.js +3 -1
  727. package/Shaders/screenSpaceReflection.fragment.js.map +1 -1
  728. package/Shaders/screenSpaceReflection2.fragment.js +3 -1
  729. package/Shaders/screenSpaceReflection2.fragment.js.map +1 -1
  730. package/Shaders/screenSpaceReflection2Blur.fragment.js +3 -1
  731. package/Shaders/screenSpaceReflection2Blur.fragment.js.map +1 -1
  732. package/Shaders/screenSpaceReflection2BlurCombiner.fragment.js +3 -1
  733. package/Shaders/screenSpaceReflection2BlurCombiner.fragment.js.map +1 -1
  734. package/Shaders/shadowMap.fragment.js +3 -1
  735. package/Shaders/shadowMap.fragment.js.map +1 -1
  736. package/Shaders/shadowMap.vertex.js +3 -1
  737. package/Shaders/shadowMap.vertex.js.map +1 -1
  738. package/Shaders/sharpen.fragment.js +3 -1
  739. package/Shaders/sharpen.fragment.js.map +1 -1
  740. package/Shaders/spriteMap.fragment.js +3 -1
  741. package/Shaders/spriteMap.fragment.js.map +1 -1
  742. package/Shaders/spriteMap.vertex.js +3 -1
  743. package/Shaders/spriteMap.vertex.js.map +1 -1
  744. package/Shaders/sprites.fragment.js +3 -1
  745. package/Shaders/sprites.fragment.js.map +1 -1
  746. package/Shaders/sprites.vertex.js +3 -1
  747. package/Shaders/sprites.vertex.js.map +1 -1
  748. package/Shaders/ssao.fragment.js +3 -1
  749. package/Shaders/ssao.fragment.js.map +1 -1
  750. package/Shaders/ssao2.fragment.js +3 -1
  751. package/Shaders/ssao2.fragment.js.map +1 -1
  752. package/Shaders/ssaoCombine.fragment.js +3 -1
  753. package/Shaders/ssaoCombine.fragment.js.map +1 -1
  754. package/Shaders/standard.fragment.js +3 -1
  755. package/Shaders/standard.fragment.js.map +1 -1
  756. package/Shaders/stereoscopicInterlace.fragment.js +3 -1
  757. package/Shaders/stereoscopicInterlace.fragment.js.map +1 -1
  758. package/Shaders/subSurfaceScattering.fragment.d.ts +1 -1
  759. package/Shaders/subSurfaceScattering.fragment.js +8 -6
  760. package/Shaders/subSurfaceScattering.fragment.js.map +1 -1
  761. package/Shaders/taa.fragment.js +3 -1
  762. package/Shaders/taa.fragment.js.map +1 -1
  763. package/Shaders/tonemap.fragment.js +3 -1
  764. package/Shaders/tonemap.fragment.js.map +1 -1
  765. package/Shaders/velocity.fragment.js +3 -1
  766. package/Shaders/velocity.fragment.js.map +1 -1
  767. package/Shaders/velocity.vertex.js +3 -1
  768. package/Shaders/velocity.vertex.js.map +1 -1
  769. package/Shaders/volumetricLightScattering.fragment.js +3 -1
  770. package/Shaders/volumetricLightScattering.fragment.js.map +1 -1
  771. package/Shaders/volumetricLightScatteringPass.fragment.js +3 -1
  772. package/Shaders/volumetricLightScatteringPass.fragment.js.map +1 -1
  773. package/Shaders/volumetricLightScatteringPass.vertex.js +3 -1
  774. package/Shaders/volumetricLightScatteringPass.vertex.js.map +1 -1
  775. package/Shaders/vrDistortionCorrection.fragment.js +3 -1
  776. package/Shaders/vrDistortionCorrection.fragment.js.map +1 -1
  777. package/Shaders/vrMultiviewToSingleview.fragment.js +3 -1
  778. package/Shaders/vrMultiviewToSingleview.fragment.js.map +1 -1
  779. package/ShadersWGSL/ShadersInclude/backgroundUboDeclaration.js +3 -1
  780. package/ShadersWGSL/ShadersInclude/backgroundUboDeclaration.js.map +1 -1
  781. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.js +3 -1
  782. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.js.map +1 -1
  783. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.js +3 -1
  784. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.js.map +1 -1
  785. package/ShadersWGSL/ShadersInclude/bayerDitherFunctions.js +3 -1
  786. package/ShadersWGSL/ShadersInclude/bayerDitherFunctions.js.map +1 -1
  787. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js +3 -1
  788. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js.map +1 -1
  789. package/ShadersWGSL/ShadersInclude/bonesVertex.js +3 -1
  790. package/ShadersWGSL/ShadersInclude/bonesVertex.js.map +1 -1
  791. package/ShadersWGSL/ShadersInclude/bumpFragment.js +3 -1
  792. package/ShadersWGSL/ShadersInclude/bumpFragment.js.map +1 -1
  793. package/ShadersWGSL/ShadersInclude/bumpFragmentFunctions.js +3 -1
  794. package/ShadersWGSL/ShadersInclude/bumpFragmentFunctions.js.map +1 -1
  795. package/ShadersWGSL/ShadersInclude/bumpFragmentMainFunctions.js +3 -1
  796. package/ShadersWGSL/ShadersInclude/bumpFragmentMainFunctions.js.map +1 -1
  797. package/ShadersWGSL/ShadersInclude/bumpVertex.js +3 -1
  798. package/ShadersWGSL/ShadersInclude/bumpVertex.js.map +1 -1
  799. package/ShadersWGSL/ShadersInclude/bumpVertexDeclaration.js +3 -1
  800. package/ShadersWGSL/ShadersInclude/bumpVertexDeclaration.js.map +1 -1
  801. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.js +3 -1
  802. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.js.map +1 -1
  803. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.js +3 -1
  804. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.js.map +1 -1
  805. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.js +3 -1
  806. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.js.map +1 -1
  807. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.js +3 -1
  808. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.js.map +1 -1
  809. package/ShadersWGSL/ShadersInclude/decalFragment.js +3 -1
  810. package/ShadersWGSL/ShadersInclude/decalFragment.js.map +1 -1
  811. package/ShadersWGSL/ShadersInclude/decalFragmentDeclaration.js +3 -1
  812. package/ShadersWGSL/ShadersInclude/decalFragmentDeclaration.js.map +1 -1
  813. package/ShadersWGSL/ShadersInclude/decalVertexDeclaration.js +3 -1
  814. package/ShadersWGSL/ShadersInclude/decalVertexDeclaration.js.map +1 -1
  815. package/ShadersWGSL/ShadersInclude/defaultUboDeclaration.js +3 -1
  816. package/ShadersWGSL/ShadersInclude/defaultUboDeclaration.js.map +1 -1
  817. package/ShadersWGSL/ShadersInclude/depthPrePass.js +3 -1
  818. package/ShadersWGSL/ShadersInclude/depthPrePass.js.map +1 -1
  819. package/ShadersWGSL/ShadersInclude/diffusionProfile.d.ts +5 -0
  820. package/ShadersWGSL/ShadersInclude/diffusionProfile.js +12 -0
  821. package/ShadersWGSL/ShadersInclude/diffusionProfile.js.map +1 -0
  822. package/ShadersWGSL/ShadersInclude/fibonacci.d.ts +5 -0
  823. package/ShadersWGSL/ShadersInclude/fibonacci.js +17 -0
  824. package/ShadersWGSL/ShadersInclude/fibonacci.js.map +1 -0
  825. package/ShadersWGSL/ShadersInclude/fogFragment.js +3 -1
  826. package/ShadersWGSL/ShadersInclude/fogFragment.js.map +1 -1
  827. package/ShadersWGSL/ShadersInclude/fogFragmentDeclaration.js +3 -1
  828. package/ShadersWGSL/ShadersInclude/fogFragmentDeclaration.js.map +1 -1
  829. package/ShadersWGSL/ShadersInclude/fogVertex.js +3 -1
  830. package/ShadersWGSL/ShadersInclude/fogVertex.js.map +1 -1
  831. package/ShadersWGSL/ShadersInclude/fogVertexDeclaration.js +3 -1
  832. package/ShadersWGSL/ShadersInclude/fogVertexDeclaration.js.map +1 -1
  833. package/ShadersWGSL/ShadersInclude/fresnelFunction.js +3 -1
  834. package/ShadersWGSL/ShadersInclude/fresnelFunction.js.map +1 -1
  835. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js +3 -1
  836. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js.map +1 -1
  837. package/ShadersWGSL/ShadersInclude/gaussianSplattingFragmentDeclaration.js +3 -1
  838. package/ShadersWGSL/ShadersInclude/gaussianSplattingFragmentDeclaration.js.map +1 -1
  839. package/ShadersWGSL/ShadersInclude/gaussianSplattingUboDeclaration.js +3 -1
  840. package/ShadersWGSL/ShadersInclude/gaussianSplattingUboDeclaration.js.map +1 -1
  841. package/ShadersWGSL/ShadersInclude/gaussianSplattingVertexDeclaration.js +3 -1
  842. package/ShadersWGSL/ShadersInclude/gaussianSplattingVertexDeclaration.js.map +1 -1
  843. package/ShadersWGSL/ShadersInclude/harmonicsFunctions.js +3 -1
  844. package/ShadersWGSL/ShadersInclude/harmonicsFunctions.js.map +1 -1
  845. package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js +3 -1
  846. package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
  847. package/ShadersWGSL/ShadersInclude/helperFunctions.js +3 -1
  848. package/ShadersWGSL/ShadersInclude/helperFunctions.js.map +1 -1
  849. package/ShadersWGSL/ShadersInclude/imageProcessingCompatibility.js +3 -1
  850. package/ShadersWGSL/ShadersInclude/imageProcessingCompatibility.js.map +1 -1
  851. package/ShadersWGSL/ShadersInclude/imageProcessingDeclaration.js +3 -1
  852. package/ShadersWGSL/ShadersInclude/imageProcessingDeclaration.js.map +1 -1
  853. package/ShadersWGSL/ShadersInclude/imageProcessingFunctions.js +3 -1
  854. package/ShadersWGSL/ShadersInclude/imageProcessingFunctions.js.map +1 -1
  855. package/ShadersWGSL/ShadersInclude/importanceSampling.js +3 -1
  856. package/ShadersWGSL/ShadersInclude/importanceSampling.js.map +1 -1
  857. package/ShadersWGSL/ShadersInclude/instancesDeclaration.js +3 -1
  858. package/ShadersWGSL/ShadersInclude/instancesDeclaration.js.map +1 -1
  859. package/ShadersWGSL/ShadersInclude/instancesVertex.js +3 -1
  860. package/ShadersWGSL/ShadersInclude/instancesVertex.js.map +1 -1
  861. package/ShadersWGSL/ShadersInclude/intersectionFunctions.js +3 -1
  862. package/ShadersWGSL/ShadersInclude/intersectionFunctions.js.map +1 -1
  863. package/ShadersWGSL/ShadersInclude/kernelBlurFragment.js +3 -1
  864. package/ShadersWGSL/ShadersInclude/kernelBlurFragment.js.map +1 -1
  865. package/ShadersWGSL/ShadersInclude/kernelBlurFragment2.js +3 -1
  866. package/ShadersWGSL/ShadersInclude/kernelBlurFragment2.js.map +1 -1
  867. package/ShadersWGSL/ShadersInclude/kernelBlurVaryingDeclaration.js +3 -1
  868. package/ShadersWGSL/ShadersInclude/kernelBlurVaryingDeclaration.js.map +1 -1
  869. package/ShadersWGSL/ShadersInclude/kernelBlurVertex.js +3 -1
  870. package/ShadersWGSL/ShadersInclude/kernelBlurVertex.js.map +1 -1
  871. package/ShadersWGSL/ShadersInclude/lightFragment.js +3 -1
  872. package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
  873. package/ShadersWGSL/ShadersInclude/lightUboDeclaration.js +3 -1
  874. package/ShadersWGSL/ShadersInclude/lightUboDeclaration.js.map +1 -1
  875. package/ShadersWGSL/ShadersInclude/lightVxFragmentDeclaration.js +3 -1
  876. package/ShadersWGSL/ShadersInclude/lightVxFragmentDeclaration.js.map +1 -1
  877. package/ShadersWGSL/ShadersInclude/lightVxUboDeclaration.js +3 -1
  878. package/ShadersWGSL/ShadersInclude/lightVxUboDeclaration.js.map +1 -1
  879. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js +3 -1
  880. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  881. package/ShadersWGSL/ShadersInclude/logDepthDeclaration.js +3 -1
  882. package/ShadersWGSL/ShadersInclude/logDepthDeclaration.js.map +1 -1
  883. package/ShadersWGSL/ShadersInclude/logDepthFragment.js +3 -1
  884. package/ShadersWGSL/ShadersInclude/logDepthFragment.js.map +1 -1
  885. package/ShadersWGSL/ShadersInclude/logDepthVertex.js +3 -1
  886. package/ShadersWGSL/ShadersInclude/logDepthVertex.js.map +1 -1
  887. package/ShadersWGSL/ShadersInclude/ltcHelperFunctions.js +3 -1
  888. package/ShadersWGSL/ShadersInclude/ltcHelperFunctions.js.map +1 -1
  889. package/ShadersWGSL/ShadersInclude/mainUVVaryingDeclaration.js +3 -1
  890. package/ShadersWGSL/ShadersInclude/mainUVVaryingDeclaration.js.map +1 -1
  891. package/ShadersWGSL/ShadersInclude/meshUboDeclaration.js +3 -1
  892. package/ShadersWGSL/ShadersInclude/meshUboDeclaration.js.map +1 -1
  893. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js +3 -1
  894. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js.map +1 -1
  895. package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js +3 -1
  896. package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js.map +1 -1
  897. package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal.js +3 -1
  898. package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal.js.map +1 -1
  899. package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration.js +3 -1
  900. package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration.js.map +1 -1
  901. package/ShadersWGSL/ShadersInclude/oitDeclaration.js +3 -1
  902. package/ShadersWGSL/ShadersInclude/oitDeclaration.js.map +1 -1
  903. package/ShadersWGSL/ShadersInclude/oitFragment.js +3 -1
  904. package/ShadersWGSL/ShadersInclude/oitFragment.js.map +1 -1
  905. package/ShadersWGSL/ShadersInclude/packingFunctions.js +3 -1
  906. package/ShadersWGSL/ShadersInclude/packingFunctions.js.map +1 -1
  907. package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.js +3 -1
  908. package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.js.map +1 -1
  909. package/ShadersWGSL/ShadersInclude/pbrBlockAlbedoOpacity.js +3 -1
  910. package/ShadersWGSL/ShadersInclude/pbrBlockAlbedoOpacity.js.map +1 -1
  911. package/ShadersWGSL/ShadersInclude/pbrBlockAlphaFresnel.js +3 -1
  912. package/ShadersWGSL/ShadersInclude/pbrBlockAlphaFresnel.js.map +1 -1
  913. package/ShadersWGSL/ShadersInclude/pbrBlockAmbientOcclusion.js +3 -1
  914. package/ShadersWGSL/ShadersInclude/pbrBlockAmbientOcclusion.js.map +1 -1
  915. package/ShadersWGSL/ShadersInclude/pbrBlockAnisotropic.js +3 -1
  916. package/ShadersWGSL/ShadersInclude/pbrBlockAnisotropic.js.map +1 -1
  917. package/ShadersWGSL/ShadersInclude/pbrBlockClearcoat.js +3 -1
  918. package/ShadersWGSL/ShadersInclude/pbrBlockClearcoat.js.map +1 -1
  919. package/ShadersWGSL/ShadersInclude/pbrBlockDirectLighting.js +3 -1
  920. package/ShadersWGSL/ShadersInclude/pbrBlockDirectLighting.js.map +1 -1
  921. package/ShadersWGSL/ShadersInclude/pbrBlockFinalColorComposition.js +3 -1
  922. package/ShadersWGSL/ShadersInclude/pbrBlockFinalColorComposition.js.map +1 -1
  923. package/ShadersWGSL/ShadersInclude/pbrBlockFinalLitComponents.js +5 -2
  924. package/ShadersWGSL/ShadersInclude/pbrBlockFinalLitComponents.js.map +1 -1
  925. package/ShadersWGSL/ShadersInclude/pbrBlockFinalUnlitComponents.js +3 -1
  926. package/ShadersWGSL/ShadersInclude/pbrBlockFinalUnlitComponents.js.map +1 -1
  927. package/ShadersWGSL/ShadersInclude/pbrBlockGeometryInfo.js +3 -1
  928. package/ShadersWGSL/ShadersInclude/pbrBlockGeometryInfo.js.map +1 -1
  929. package/ShadersWGSL/ShadersInclude/pbrBlockImageProcessing.js +3 -1
  930. package/ShadersWGSL/ShadersInclude/pbrBlockImageProcessing.js.map +1 -1
  931. package/ShadersWGSL/ShadersInclude/pbrBlockIridescence.js +3 -1
  932. package/ShadersWGSL/ShadersInclude/pbrBlockIridescence.js.map +1 -1
  933. package/ShadersWGSL/ShadersInclude/pbrBlockLightmapInit.js +3 -1
  934. package/ShadersWGSL/ShadersInclude/pbrBlockLightmapInit.js.map +1 -1
  935. package/ShadersWGSL/ShadersInclude/pbrBlockNormalFinal.js +3 -1
  936. package/ShadersWGSL/ShadersInclude/pbrBlockNormalFinal.js.map +1 -1
  937. package/ShadersWGSL/ShadersInclude/pbrBlockNormalGeometric.js +3 -1
  938. package/ShadersWGSL/ShadersInclude/pbrBlockNormalGeometric.js.map +1 -1
  939. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js +3 -1
  940. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js.map +1 -1
  941. package/ShadersWGSL/ShadersInclude/pbrBlockReflectance.js +3 -1
  942. package/ShadersWGSL/ShadersInclude/pbrBlockReflectance.js.map +1 -1
  943. package/ShadersWGSL/ShadersInclude/pbrBlockReflectance0.js +3 -1
  944. package/ShadersWGSL/ShadersInclude/pbrBlockReflectance0.js.map +1 -1
  945. package/ShadersWGSL/ShadersInclude/pbrBlockReflection.js +3 -1
  946. package/ShadersWGSL/ShadersInclude/pbrBlockReflection.js.map +1 -1
  947. package/ShadersWGSL/ShadersInclude/pbrBlockReflectivity.js +3 -1
  948. package/ShadersWGSL/ShadersInclude/pbrBlockReflectivity.js.map +1 -1
  949. package/ShadersWGSL/ShadersInclude/pbrBlockSheen.js +3 -1
  950. package/ShadersWGSL/ShadersInclude/pbrBlockSheen.js.map +1 -1
  951. package/ShadersWGSL/ShadersInclude/pbrBlockSubSurface.js +3 -1
  952. package/ShadersWGSL/ShadersInclude/pbrBlockSubSurface.js.map +1 -1
  953. package/ShadersWGSL/ShadersInclude/pbrDebug.js +3 -1
  954. package/ShadersWGSL/ShadersInclude/pbrDebug.js.map +1 -1
  955. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFalloffFunctions.js +3 -1
  956. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFalloffFunctions.js.map +1 -1
  957. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js +3 -1
  958. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  959. package/ShadersWGSL/ShadersInclude/pbrDirectLightingSetupFunctions.js +3 -1
  960. package/ShadersWGSL/ShadersInclude/pbrDirectLightingSetupFunctions.js.map +1 -1
  961. package/ShadersWGSL/ShadersInclude/pbrFragmentExtraDeclaration.js +3 -1
  962. package/ShadersWGSL/ShadersInclude/pbrFragmentExtraDeclaration.js.map +1 -1
  963. package/ShadersWGSL/ShadersInclude/pbrFragmentSamplersDeclaration.js +3 -1
  964. package/ShadersWGSL/ShadersInclude/pbrFragmentSamplersDeclaration.js.map +1 -1
  965. package/ShadersWGSL/ShadersInclude/pbrHelperFunctions.js +3 -1
  966. package/ShadersWGSL/ShadersInclude/pbrHelperFunctions.js.map +1 -1
  967. package/ShadersWGSL/ShadersInclude/pbrIBLFunctions.js +3 -1
  968. package/ShadersWGSL/ShadersInclude/pbrIBLFunctions.js.map +1 -1
  969. package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.js +3 -1
  970. package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  971. package/ShadersWGSL/ShadersInclude/pointCloudVertex.js +3 -1
  972. package/ShadersWGSL/ShadersInclude/pointCloudVertex.js.map +1 -1
  973. package/ShadersWGSL/ShadersInclude/pointCloudVertexDeclaration.js +3 -1
  974. package/ShadersWGSL/ShadersInclude/pointCloudVertexDeclaration.js.map +1 -1
  975. package/ShadersWGSL/ShadersInclude/prePassDeclaration.js +3 -1
  976. package/ShadersWGSL/ShadersInclude/prePassDeclaration.js.map +1 -1
  977. package/ShadersWGSL/ShadersInclude/prePassVertex.js +3 -1
  978. package/ShadersWGSL/ShadersInclude/prePassVertex.js.map +1 -1
  979. package/ShadersWGSL/ShadersInclude/prePassVertexDeclaration.js +3 -1
  980. package/ShadersWGSL/ShadersInclude/prePassVertexDeclaration.js.map +1 -1
  981. package/ShadersWGSL/ShadersInclude/reflectionFunction.js +3 -1
  982. package/ShadersWGSL/ShadersInclude/reflectionFunction.js.map +1 -1
  983. package/ShadersWGSL/ShadersInclude/samplerFragmentAlternateDeclaration.js +3 -1
  984. package/ShadersWGSL/ShadersInclude/samplerFragmentAlternateDeclaration.js.map +1 -1
  985. package/ShadersWGSL/ShadersInclude/samplerFragmentDeclaration.js +3 -1
  986. package/ShadersWGSL/ShadersInclude/samplerFragmentDeclaration.js.map +1 -1
  987. package/ShadersWGSL/ShadersInclude/samplerVertexDeclaration.js +3 -1
  988. package/ShadersWGSL/ShadersInclude/samplerVertexDeclaration.js.map +1 -1
  989. package/ShadersWGSL/ShadersInclude/samplerVertexImplementation.js +3 -1
  990. package/ShadersWGSL/ShadersInclude/samplerVertexImplementation.js.map +1 -1
  991. package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js +3 -1
  992. package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js.map +1 -1
  993. package/ShadersWGSL/ShadersInclude/screenSpaceRayTrace.js +3 -1
  994. package/ShadersWGSL/ShadersInclude/screenSpaceRayTrace.js.map +1 -1
  995. package/ShadersWGSL/ShadersInclude/shadowMapFragment.js +3 -1
  996. package/ShadersWGSL/ShadersInclude/shadowMapFragment.js.map +1 -1
  997. package/ShadersWGSL/ShadersInclude/shadowMapFragmentExtraDeclaration.js +3 -1
  998. package/ShadersWGSL/ShadersInclude/shadowMapFragmentExtraDeclaration.js.map +1 -1
  999. package/ShadersWGSL/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js +3 -1
  1000. package/ShadersWGSL/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js.map +1 -1
  1001. package/ShadersWGSL/ShadersInclude/shadowMapVertexExtraDeclaration.js +3 -1
  1002. package/ShadersWGSL/ShadersInclude/shadowMapVertexExtraDeclaration.js.map +1 -1
  1003. package/ShadersWGSL/ShadersInclude/shadowMapVertexMetric.js +3 -1
  1004. package/ShadersWGSL/ShadersInclude/shadowMapVertexMetric.js.map +1 -1
  1005. package/ShadersWGSL/ShadersInclude/shadowMapVertexNormalBias.js +3 -1
  1006. package/ShadersWGSL/ShadersInclude/shadowMapVertexNormalBias.js.map +1 -1
  1007. package/ShadersWGSL/ShadersInclude/shadowsFragmentFunctions.js +3 -1
  1008. package/ShadersWGSL/ShadersInclude/shadowsFragmentFunctions.js.map +1 -1
  1009. package/ShadersWGSL/ShadersInclude/shadowsVertex.js +3 -1
  1010. package/ShadersWGSL/ShadersInclude/shadowsVertex.js.map +1 -1
  1011. package/ShadersWGSL/ShadersInclude/subSurfaceScatteringFunctions.js +3 -1
  1012. package/ShadersWGSL/ShadersInclude/subSurfaceScatteringFunctions.js.map +1 -1
  1013. package/ShadersWGSL/ShadersInclude/uvAttributeDeclaration.js +3 -1
  1014. package/ShadersWGSL/ShadersInclude/uvAttributeDeclaration.js.map +1 -1
  1015. package/ShadersWGSL/ShadersInclude/uvVariableDeclaration.js +3 -1
  1016. package/ShadersWGSL/ShadersInclude/uvVariableDeclaration.js.map +1 -1
  1017. package/ShadersWGSL/ShadersInclude/vertexColorMixing.js +3 -1
  1018. package/ShadersWGSL/ShadersInclude/vertexColorMixing.js.map +1 -1
  1019. package/ShadersWGSL/anaglyph.fragment.js +3 -1
  1020. package/ShadersWGSL/anaglyph.fragment.js.map +1 -1
  1021. package/ShadersWGSL/background.fragment.js +3 -1
  1022. package/ShadersWGSL/background.fragment.js.map +1 -1
  1023. package/ShadersWGSL/background.vertex.js +3 -1
  1024. package/ShadersWGSL/background.vertex.js.map +1 -1
  1025. package/ShadersWGSL/bilateralBlur.fragment.js +3 -1
  1026. package/ShadersWGSL/bilateralBlur.fragment.js.map +1 -1
  1027. package/ShadersWGSL/bilateralBlurQuality.fragment.js +3 -1
  1028. package/ShadersWGSL/bilateralBlurQuality.fragment.js.map +1 -1
  1029. package/ShadersWGSL/blackAndWhite.fragment.js +3 -1
  1030. package/ShadersWGSL/blackAndWhite.fragment.js.map +1 -1
  1031. package/ShadersWGSL/bloomMerge.fragment.js +3 -1
  1032. package/ShadersWGSL/bloomMerge.fragment.js.map +1 -1
  1033. package/ShadersWGSL/boundingBoxRenderer.fragment.js +3 -1
  1034. package/ShadersWGSL/boundingBoxRenderer.fragment.js.map +1 -1
  1035. package/ShadersWGSL/boundingBoxRenderer.vertex.js +3 -1
  1036. package/ShadersWGSL/boundingBoxRenderer.vertex.js.map +1 -1
  1037. package/ShadersWGSL/boundingInfo.compute.js +3 -1
  1038. package/ShadersWGSL/boundingInfo.compute.js.map +1 -1
  1039. package/ShadersWGSL/chromaticAberration.fragment.js +3 -1
  1040. package/ShadersWGSL/chromaticAberration.fragment.js.map +1 -1
  1041. package/ShadersWGSL/circleOfConfusion.fragment.js +3 -1
  1042. package/ShadersWGSL/circleOfConfusion.fragment.js.map +1 -1
  1043. package/ShadersWGSL/clearQuad.fragment.js +3 -1
  1044. package/ShadersWGSL/clearQuad.fragment.js.map +1 -1
  1045. package/ShadersWGSL/clearQuad.vertex.js +3 -1
  1046. package/ShadersWGSL/clearQuad.vertex.js.map +1 -1
  1047. package/ShadersWGSL/color.fragment.js +3 -1
  1048. package/ShadersWGSL/color.fragment.js.map +1 -1
  1049. package/ShadersWGSL/color.vertex.js +3 -1
  1050. package/ShadersWGSL/color.vertex.js.map +1 -1
  1051. package/ShadersWGSL/colorCorrection.fragment.js +3 -1
  1052. package/ShadersWGSL/colorCorrection.fragment.js.map +1 -1
  1053. package/ShadersWGSL/convolution.fragment.js +3 -1
  1054. package/ShadersWGSL/convolution.fragment.js.map +1 -1
  1055. package/ShadersWGSL/copyTexture3DLayerToTexture.fragment.js +3 -1
  1056. package/ShadersWGSL/copyTexture3DLayerToTexture.fragment.js.map +1 -1
  1057. package/ShadersWGSL/copyTextureToTexture.fragment.js +3 -1
  1058. package/ShadersWGSL/copyTextureToTexture.fragment.js.map +1 -1
  1059. package/ShadersWGSL/default.fragment.js +3 -1
  1060. package/ShadersWGSL/default.fragment.js.map +1 -1
  1061. package/ShadersWGSL/default.vertex.js +3 -1
  1062. package/ShadersWGSL/default.vertex.js.map +1 -1
  1063. package/ShadersWGSL/depth.fragment.js +3 -1
  1064. package/ShadersWGSL/depth.fragment.js.map +1 -1
  1065. package/ShadersWGSL/depth.vertex.js +3 -1
  1066. package/ShadersWGSL/depth.vertex.js.map +1 -1
  1067. package/ShadersWGSL/depthBoxBlur.fragment.js +3 -1
  1068. package/ShadersWGSL/depthBoxBlur.fragment.js.map +1 -1
  1069. package/ShadersWGSL/depthOfFieldMerge.fragment.js +3 -1
  1070. package/ShadersWGSL/depthOfFieldMerge.fragment.js.map +1 -1
  1071. package/ShadersWGSL/displayPass.fragment.js +3 -1
  1072. package/ShadersWGSL/displayPass.fragment.js.map +1 -1
  1073. package/ShadersWGSL/extractHighlights.fragment.js +3 -1
  1074. package/ShadersWGSL/extractHighlights.fragment.js.map +1 -1
  1075. package/ShadersWGSL/filter.fragment.js +3 -1
  1076. package/ShadersWGSL/filter.fragment.js.map +1 -1
  1077. package/ShadersWGSL/fluidRenderingBilateralBlur.fragment.js +3 -1
  1078. package/ShadersWGSL/fluidRenderingBilateralBlur.fragment.js.map +1 -1
  1079. package/ShadersWGSL/fluidRenderingParticleDepth.fragment.js +3 -1
  1080. package/ShadersWGSL/fluidRenderingParticleDepth.fragment.js.map +1 -1
  1081. package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js +3 -1
  1082. package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js.map +1 -1
  1083. package/ShadersWGSL/fluidRenderingParticleDiffuse.fragment.js +3 -1
  1084. package/ShadersWGSL/fluidRenderingParticleDiffuse.fragment.js.map +1 -1
  1085. package/ShadersWGSL/fluidRenderingParticleDiffuse.vertex.js +3 -1
  1086. package/ShadersWGSL/fluidRenderingParticleDiffuse.vertex.js.map +1 -1
  1087. package/ShadersWGSL/fluidRenderingParticleThickness.fragment.js +3 -1
  1088. package/ShadersWGSL/fluidRenderingParticleThickness.fragment.js.map +1 -1
  1089. package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js +3 -1
  1090. package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js.map +1 -1
  1091. package/ShadersWGSL/fluidRenderingRender.fragment.js +3 -1
  1092. package/ShadersWGSL/fluidRenderingRender.fragment.js.map +1 -1
  1093. package/ShadersWGSL/fluidRenderingStandardBlur.fragment.js +3 -1
  1094. package/ShadersWGSL/fluidRenderingStandardBlur.fragment.js.map +1 -1
  1095. package/ShadersWGSL/fxaa.fragment.js +3 -1
  1096. package/ShadersWGSL/fxaa.fragment.js.map +1 -1
  1097. package/ShadersWGSL/fxaa.vertex.js +3 -1
  1098. package/ShadersWGSL/fxaa.vertex.js.map +1 -1
  1099. package/ShadersWGSL/gaussianSplatting.fragment.js +3 -1
  1100. package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
  1101. package/ShadersWGSL/gaussianSplatting.vertex.js +3 -1
  1102. package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
  1103. package/ShadersWGSL/geometry.fragment.js +3 -1
  1104. package/ShadersWGSL/geometry.fragment.js.map +1 -1
  1105. package/ShadersWGSL/geometry.vertex.js +3 -1
  1106. package/ShadersWGSL/geometry.vertex.js.map +1 -1
  1107. package/ShadersWGSL/glowBlurPostProcess.fragment.js +3 -1
  1108. package/ShadersWGSL/glowBlurPostProcess.fragment.js.map +1 -1
  1109. package/ShadersWGSL/glowMapGeneration.fragment.js +3 -1
  1110. package/ShadersWGSL/glowMapGeneration.fragment.js.map +1 -1
  1111. package/ShadersWGSL/glowMapGeneration.vertex.js +3 -1
  1112. package/ShadersWGSL/glowMapGeneration.vertex.js.map +1 -1
  1113. package/ShadersWGSL/glowMapMerge.fragment.js +3 -1
  1114. package/ShadersWGSL/glowMapMerge.fragment.js.map +1 -1
  1115. package/ShadersWGSL/glowMapMerge.vertex.js +3 -1
  1116. package/ShadersWGSL/glowMapMerge.vertex.js.map +1 -1
  1117. package/ShadersWGSL/gpuUpdateParticles.compute.js +3 -1
  1118. package/ShadersWGSL/gpuUpdateParticles.compute.js.map +1 -1
  1119. package/ShadersWGSL/grain.fragment.js +3 -1
  1120. package/ShadersWGSL/grain.fragment.js.map +1 -1
  1121. package/ShadersWGSL/greasedLine.fragment.js +3 -1
  1122. package/ShadersWGSL/greasedLine.fragment.js.map +1 -1
  1123. package/ShadersWGSL/greasedLine.vertex.js +3 -1
  1124. package/ShadersWGSL/greasedLine.vertex.js.map +1 -1
  1125. package/ShadersWGSL/hdrFiltering.fragment.js +3 -1
  1126. package/ShadersWGSL/hdrFiltering.fragment.js.map +1 -1
  1127. package/ShadersWGSL/hdrFiltering.vertex.js +3 -1
  1128. package/ShadersWGSL/hdrFiltering.vertex.js.map +1 -1
  1129. package/ShadersWGSL/hdrIrradianceFiltering.fragment.js +3 -1
  1130. package/ShadersWGSL/hdrIrradianceFiltering.fragment.js.map +1 -1
  1131. package/ShadersWGSL/hdrIrradianceFiltering.vertex.js +3 -1
  1132. package/ShadersWGSL/hdrIrradianceFiltering.vertex.js.map +1 -1
  1133. package/ShadersWGSL/highlights.fragment.js +3 -1
  1134. package/ShadersWGSL/highlights.fragment.js.map +1 -1
  1135. package/ShadersWGSL/iblCdfDebug.fragment.js +3 -1
  1136. package/ShadersWGSL/iblCdfDebug.fragment.js.map +1 -1
  1137. package/ShadersWGSL/iblCdfx.fragment.js +3 -1
  1138. package/ShadersWGSL/iblCdfx.fragment.js.map +1 -1
  1139. package/ShadersWGSL/iblCdfy.fragment.js +3 -1
  1140. package/ShadersWGSL/iblCdfy.fragment.js.map +1 -1
  1141. package/ShadersWGSL/iblCombineVoxelGrids.fragment.js +3 -1
  1142. package/ShadersWGSL/iblCombineVoxelGrids.fragment.js.map +1 -1
  1143. package/ShadersWGSL/iblGenerateVoxelMip.fragment.js +3 -1
  1144. package/ShadersWGSL/iblGenerateVoxelMip.fragment.js.map +1 -1
  1145. package/ShadersWGSL/iblIcdf.fragment.js +3 -1
  1146. package/ShadersWGSL/iblIcdf.fragment.js.map +1 -1
  1147. package/ShadersWGSL/iblScaledLuminance.fragment.js +3 -1
  1148. package/ShadersWGSL/iblScaledLuminance.fragment.js.map +1 -1
  1149. package/ShadersWGSL/iblShadowAccumulation.fragment.js +3 -1
  1150. package/ShadersWGSL/iblShadowAccumulation.fragment.js.map +1 -1
  1151. package/ShadersWGSL/iblShadowDebug.fragment.js +3 -1
  1152. package/ShadersWGSL/iblShadowDebug.fragment.js.map +1 -1
  1153. package/ShadersWGSL/iblShadowGBufferDebug.fragment.js +3 -1
  1154. package/ShadersWGSL/iblShadowGBufferDebug.fragment.js.map +1 -1
  1155. package/ShadersWGSL/iblShadowSpatialBlur.fragment.js +3 -1
  1156. package/ShadersWGSL/iblShadowSpatialBlur.fragment.js.map +1 -1
  1157. package/ShadersWGSL/iblShadowVoxelTracing.fragment.js +3 -1
  1158. package/ShadersWGSL/iblShadowVoxelTracing.fragment.js.map +1 -1
  1159. package/ShadersWGSL/iblShadowsCombine.fragment.js +3 -1
  1160. package/ShadersWGSL/iblShadowsCombine.fragment.js.map +1 -1
  1161. package/ShadersWGSL/iblVoxelGrid.fragment.js +3 -1
  1162. package/ShadersWGSL/iblVoxelGrid.fragment.js.map +1 -1
  1163. package/ShadersWGSL/iblVoxelGrid.vertex.js +3 -1
  1164. package/ShadersWGSL/iblVoxelGrid.vertex.js.map +1 -1
  1165. package/ShadersWGSL/iblVoxelGrid2dArrayDebug.fragment.js +3 -1
  1166. package/ShadersWGSL/iblVoxelGrid2dArrayDebug.fragment.js.map +1 -1
  1167. package/ShadersWGSL/iblVoxelGrid3dDebug.fragment.js +3 -1
  1168. package/ShadersWGSL/iblVoxelGrid3dDebug.fragment.js.map +1 -1
  1169. package/ShadersWGSL/iblVoxelSlabDebug.fragment.js +3 -1
  1170. package/ShadersWGSL/iblVoxelSlabDebug.fragment.js.map +1 -1
  1171. package/ShadersWGSL/iblVoxelSlabDebug.vertex.js +3 -1
  1172. package/ShadersWGSL/iblVoxelSlabDebug.vertex.js.map +1 -1
  1173. package/ShadersWGSL/imageProcessing.fragment.js +3 -1
  1174. package/ShadersWGSL/imageProcessing.fragment.js.map +1 -1
  1175. package/ShadersWGSL/kernelBlur.fragment.js +3 -1
  1176. package/ShadersWGSL/kernelBlur.fragment.js.map +1 -1
  1177. package/ShadersWGSL/kernelBlur.vertex.js +3 -1
  1178. package/ShadersWGSL/kernelBlur.vertex.js.map +1 -1
  1179. package/ShadersWGSL/layer.fragment.js +3 -1
  1180. package/ShadersWGSL/layer.fragment.js.map +1 -1
  1181. package/ShadersWGSL/layer.vertex.js +3 -1
  1182. package/ShadersWGSL/layer.vertex.js.map +1 -1
  1183. package/ShadersWGSL/lensFlare.fragment.js +3 -1
  1184. package/ShadersWGSL/lensFlare.fragment.js.map +1 -1
  1185. package/ShadersWGSL/lensFlare.vertex.js +3 -1
  1186. package/ShadersWGSL/lensFlare.vertex.js.map +1 -1
  1187. package/ShadersWGSL/line.fragment.js +3 -1
  1188. package/ShadersWGSL/line.fragment.js.map +1 -1
  1189. package/ShadersWGSL/line.vertex.js +3 -1
  1190. package/ShadersWGSL/line.vertex.js.map +1 -1
  1191. package/ShadersWGSL/lod.fragment.js +3 -1
  1192. package/ShadersWGSL/lod.fragment.js.map +1 -1
  1193. package/ShadersWGSL/lodCube.fragment.js +3 -1
  1194. package/ShadersWGSL/lodCube.fragment.js.map +1 -1
  1195. package/ShadersWGSL/meshUVSpaceRenderer.fragment.js +3 -1
  1196. package/ShadersWGSL/meshUVSpaceRenderer.fragment.js.map +1 -1
  1197. package/ShadersWGSL/meshUVSpaceRenderer.vertex.js +3 -1
  1198. package/ShadersWGSL/meshUVSpaceRenderer.vertex.js.map +1 -1
  1199. package/ShadersWGSL/meshUVSpaceRendererFinaliser.fragment.js +3 -1
  1200. package/ShadersWGSL/meshUVSpaceRendererFinaliser.fragment.js.map +1 -1
  1201. package/ShadersWGSL/meshUVSpaceRendererFinaliser.vertex.js +3 -1
  1202. package/ShadersWGSL/meshUVSpaceRendererFinaliser.vertex.js.map +1 -1
  1203. package/ShadersWGSL/meshUVSpaceRendererMasker.fragment.js +3 -1
  1204. package/ShadersWGSL/meshUVSpaceRendererMasker.fragment.js.map +1 -1
  1205. package/ShadersWGSL/meshUVSpaceRendererMasker.vertex.js +3 -1
  1206. package/ShadersWGSL/meshUVSpaceRendererMasker.vertex.js.map +1 -1
  1207. package/ShadersWGSL/motionBlur.fragment.js +3 -1
  1208. package/ShadersWGSL/motionBlur.fragment.js.map +1 -1
  1209. package/ShadersWGSL/oitBackBlend.fragment.js +3 -1
  1210. package/ShadersWGSL/oitBackBlend.fragment.js.map +1 -1
  1211. package/ShadersWGSL/oitFinal.fragment.js +3 -1
  1212. package/ShadersWGSL/oitFinal.fragment.js.map +1 -1
  1213. package/ShadersWGSL/outline.fragment.js +3 -1
  1214. package/ShadersWGSL/outline.fragment.js.map +1 -1
  1215. package/ShadersWGSL/outline.vertex.js +3 -1
  1216. package/ShadersWGSL/outline.vertex.js.map +1 -1
  1217. package/ShadersWGSL/particles.fragment.js +3 -1
  1218. package/ShadersWGSL/particles.fragment.js.map +1 -1
  1219. package/ShadersWGSL/particles.vertex.js +3 -1
  1220. package/ShadersWGSL/particles.vertex.js.map +1 -1
  1221. package/ShadersWGSL/pass.fragment.js +3 -1
  1222. package/ShadersWGSL/pass.fragment.js.map +1 -1
  1223. package/ShadersWGSL/passCube.fragment.js +3 -1
  1224. package/ShadersWGSL/passCube.fragment.js.map +1 -1
  1225. package/ShadersWGSL/pbr.fragment.js +6 -1
  1226. package/ShadersWGSL/pbr.fragment.js.map +1 -1
  1227. package/ShadersWGSL/pbr.vertex.js +3 -1
  1228. package/ShadersWGSL/pbr.vertex.js.map +1 -1
  1229. package/ShadersWGSL/picking.fragment.js +3 -1
  1230. package/ShadersWGSL/picking.fragment.js.map +1 -1
  1231. package/ShadersWGSL/picking.vertex.js +3 -1
  1232. package/ShadersWGSL/picking.vertex.js.map +1 -1
  1233. package/ShadersWGSL/postprocess.vertex.js +3 -1
  1234. package/ShadersWGSL/postprocess.vertex.js.map +1 -1
  1235. package/ShadersWGSL/procedural.vertex.js +3 -1
  1236. package/ShadersWGSL/procedural.vertex.js.map +1 -1
  1237. package/ShadersWGSL/rgbdDecode.fragment.js +3 -1
  1238. package/ShadersWGSL/rgbdDecode.fragment.js.map +1 -1
  1239. package/ShadersWGSL/rgbdEncode.fragment.js +3 -1
  1240. package/ShadersWGSL/rgbdEncode.fragment.js.map +1 -1
  1241. package/ShadersWGSL/rsmFullGlobalIllumination.fragment.js +3 -1
  1242. package/ShadersWGSL/rsmFullGlobalIllumination.fragment.js.map +1 -1
  1243. package/ShadersWGSL/rsmGlobalIllumination.fragment.js +3 -1
  1244. package/ShadersWGSL/rsmGlobalIllumination.fragment.js.map +1 -1
  1245. package/ShadersWGSL/screenSpaceReflection2.fragment.js +3 -1
  1246. package/ShadersWGSL/screenSpaceReflection2.fragment.js.map +1 -1
  1247. package/ShadersWGSL/screenSpaceReflection2Blur.fragment.js +3 -1
  1248. package/ShadersWGSL/screenSpaceReflection2Blur.fragment.js.map +1 -1
  1249. package/ShadersWGSL/screenSpaceReflection2BlurCombiner.fragment.js +3 -1
  1250. package/ShadersWGSL/screenSpaceReflection2BlurCombiner.fragment.js.map +1 -1
  1251. package/ShadersWGSL/shadowMap.fragment.js +3 -1
  1252. package/ShadersWGSL/shadowMap.fragment.js.map +1 -1
  1253. package/ShadersWGSL/shadowMap.vertex.js +3 -1
  1254. package/ShadersWGSL/shadowMap.vertex.js.map +1 -1
  1255. package/ShadersWGSL/sharpen.fragment.js +3 -1
  1256. package/ShadersWGSL/sharpen.fragment.js.map +1 -1
  1257. package/ShadersWGSL/sprites.fragment.js +3 -1
  1258. package/ShadersWGSL/sprites.fragment.js.map +1 -1
  1259. package/ShadersWGSL/sprites.vertex.js +3 -1
  1260. package/ShadersWGSL/sprites.vertex.js.map +1 -1
  1261. package/ShadersWGSL/ssao2.fragment.js +3 -1
  1262. package/ShadersWGSL/ssao2.fragment.js.map +1 -1
  1263. package/ShadersWGSL/ssaoCombine.fragment.js +3 -1
  1264. package/ShadersWGSL/ssaoCombine.fragment.js.map +1 -1
  1265. package/ShadersWGSL/subSurfaceScattering.fragment.d.ts +9 -0
  1266. package/ShadersWGSL/subSurfaceScattering.fragment.js +77 -0
  1267. package/ShadersWGSL/subSurfaceScattering.fragment.js.map +1 -0
  1268. package/ShadersWGSL/taa.fragment.js +3 -1
  1269. package/ShadersWGSL/taa.fragment.js.map +1 -1
  1270. package/ShadersWGSL/tonemap.fragment.js +3 -1
  1271. package/ShadersWGSL/tonemap.fragment.js.map +1 -1
  1272. package/ShadersWGSL/vrDistortionCorrection.fragment.js +3 -1
  1273. package/ShadersWGSL/vrDistortionCorrection.fragment.js.map +1 -1
  1274. package/package.json +1 -1
  1275. package/FrameGraph/Node/Blocks/Rendering/cullObjectsBlock.js.map +0 -1
  1276. package/FrameGraph/Tasks/Rendering/cullObjectsTask.js.map +0 -1
  1277. /package/FrameGraph/Tasks/{Rendering → Misc}/cullObjectsTask.d.ts +0 -0
  1278. /package/FrameGraph/Tasks/{Rendering → Misc}/cullObjectsTask.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"iblShadowsVoxelRenderer.js","sourceRoot":"","sources":["../../../../../dev/core/src/Rendering/IBLShadows/iblShadowsVoxelRenderer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Constants } from \"../../Engines/constants\";\r\nimport { Engine } from \"../../Engines/engine\";\r\nimport { ShaderMaterial } from \"../../Materials/shaderMaterial\";\r\nimport { MultiRenderTarget } from \"../../Materials/Textures/multiRenderTarget\";\r\nimport { RenderTargetTexture } from \"../../Materials/Textures/renderTargetTexture\";\r\nimport type { RenderTargetTextureOptions } from \"../../Materials/Textures/renderTargetTexture\";\r\nimport type { TextureSize } from \"../../Materials/Textures/textureCreationOptions\";\r\nimport { Color4 } from \"../../Maths/math.color\";\r\nimport { Matrix, Vector3, Vector4 } from \"../../Maths/math.vector\";\r\nimport type { Mesh } from \"../../Meshes/mesh\";\r\nimport type { Scene } from \"../../scene\";\r\nimport { Texture } from \"../../Materials/Textures/texture\";\r\nimport { Logger } from \"../../Misc/logger\";\r\nimport { PostProcess } from \"../../PostProcesses/postProcess\";\r\nimport type { PostProcessOptions } from \"../../PostProcesses/postProcess\";\r\nimport { ProceduralTexture } from \"../../Materials/Textures/Procedurals/proceduralTexture\";\r\nimport type { IProceduralTextureCreationOptions } from \"../../Materials/Textures/Procedurals/proceduralTexture\";\r\nimport { EffectRenderer, EffectWrapper } from \"../../Materials/effectRenderer\";\r\nimport type { IblShadowsRenderPipeline } from \"./iblShadowsRenderPipeline\";\r\nimport type { RenderTargetWrapper } from \"core/Engines\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Voxel-based shadow rendering for IBL's.\r\n * This should not be instanciated directly, as it is part of a scene component\r\n * @internal\r\n * #8R5SSE#222\r\n */\r\nexport class _IblShadowsVoxelRenderer {\r\n private _scene: Scene;\r\n private _engine: Engine;\r\n private _voxelGridRT: ProceduralTexture;\r\n private _voxelGridXaxis: RenderTargetTexture;\r\n private _voxelGridYaxis: RenderTargetTexture;\r\n private _voxelGridZaxis: RenderTargetTexture;\r\n private _voxelMrtsXaxis: MultiRenderTarget[] = [];\r\n private _voxelMrtsYaxis: MultiRenderTarget[] = [];\r\n private _voxelMrtsZaxis: MultiRenderTarget[] = [];\r\n private _isVoxelGrid3D: boolean = true;\r\n private _voxelMaterial: ShaderMaterial;\r\n private _voxelSlabDebugMaterial: ShaderMaterial;\r\n\r\n /**\r\n * Return the voxel grid texture.\r\n * @returns The voxel grid texture.\r\n */\r\n public getVoxelGrid(): ProceduralTexture | RenderTargetTexture {\r\n if (this._triPlanarVoxelization) {\r\n return this._voxelGridRT;\r\n } else {\r\n return this._voxelGridZaxis;\r\n }\r\n }\r\n\r\n /**\r\n * The debug pass post process\r\n * @returns The debug pass post process\r\n */\r\n public getDebugPassPP(): PostProcess {\r\n if (!this._voxelDebugPass) {\r\n this._createDebugPass();\r\n }\r\n return this._voxelDebugPass;\r\n }\r\n\r\n private _maxDrawBuffers: number;\r\n private _renderTargets: RenderTargetTexture[] = [];\r\n\r\n private _triPlanarVoxelization: boolean = true;\r\n\r\n /**\r\n * Whether to use tri-planar voxelization. More expensive, but can help with artifacts.\r\n */\r\n public get triPlanarVoxelization(): boolean {\r\n return this._triPlanarVoxelization;\r\n }\r\n\r\n /**\r\n * Whether to use tri-planar voxelization. More expensive, but can help with artifacts.\r\n */\r\n public set triPlanarVoxelization(enabled: boolean) {\r\n if (this._triPlanarVoxelization === enabled) {\r\n return;\r\n }\r\n this._triPlanarVoxelization = enabled;\r\n this._disposeVoxelTextures();\r\n this._createTextures();\r\n }\r\n\r\n private _voxelizationInProgress: boolean = false;\r\n private _invWorldScaleMatrix: Matrix = Matrix.Identity();\r\n\r\n /**\r\n * Set the matrix to use for scaling the world space to voxel space\r\n * @param matrix The matrix to use for scaling the world space to voxel space\r\n */\r\n public setWorldScaleMatrix(matrix: Matrix) {\r\n this._invWorldScaleMatrix = matrix;\r\n }\r\n /**\r\n * @returns Whether voxelization is currently happening.\r\n */\r\n public isVoxelizationInProgress(): boolean {\r\n return this._voxelizationInProgress;\r\n }\r\n\r\n private _voxelResolution: number = 64;\r\n private _voxelResolutionExp: number = 6;\r\n\r\n /**\r\n * Resolution of the voxel grid. The final resolution will be 2^resolutionExp.\r\n */\r\n public get voxelResolutionExp(): number {\r\n return this._voxelResolutionExp;\r\n }\r\n\r\n /**\r\n * Resolution of the voxel grid. The final resolution will be 2^resolutionExp.\r\n */\r\n public set voxelResolutionExp(resolutionExp: number) {\r\n if (this._voxelResolutionExp === resolutionExp && this._voxelGridZaxis) {\r\n return;\r\n }\r\n this._voxelResolutionExp = Math.round(Math.min(Math.max(resolutionExp, 3), 9));\r\n this._voxelResolution = Math.pow(2.0, this._voxelResolutionExp);\r\n this._disposeVoxelTextures();\r\n this._createTextures();\r\n }\r\n\r\n private _copyMipEffectRenderer: EffectRenderer;\r\n private _copyMipEffectWrapper: EffectWrapper;\r\n private _mipArray: ProceduralTexture[] = [];\r\n\r\n private _voxelSlabDebugRT: RenderTargetTexture;\r\n private _voxelDebugPass: PostProcess;\r\n private _voxelDebugEnabled: boolean = false;\r\n\r\n /**\r\n * Shows only the voxels that were rendered along a particular axis (while using triPlanarVoxelization).\r\n * If not set, the combined voxel grid will be shown.\r\n * Note: This only works when the debugMipNumber is set to 0 because we don't generate mips for each axis.\r\n * @param axis The axis to show (0 = x, 1 = y, 2 = z)\r\n */\r\n public set voxelDebugAxis(axis: number) {\r\n this._voxelDebugAxis = axis;\r\n }\r\n\r\n public get voxelDebugAxis(): number {\r\n return this._voxelDebugAxis;\r\n }\r\n private _voxelDebugAxis: number = -1;\r\n private _debugSizeParams: Vector4 = new Vector4(0.0, 0.0, 0.0, 0.0);\r\n private _includedMeshes: Mesh[] = [];\r\n\r\n /**\r\n * Sets params that control the position and scaling of the debug display on the screen.\r\n * @param x Screen X offset of the debug display (0-1)\r\n * @param y Screen Y offset of the debug display (0-1)\r\n * @param widthScale X scale of the debug display (0-1)\r\n * @param heightScale Y scale of the debug display (0-1)\r\n */\r\n public setDebugDisplayParams(x: number, y: number, widthScale: number, heightScale: number) {\r\n this._debugSizeParams.set(x, y, widthScale, heightScale);\r\n }\r\n private _debugMipNumber: number = 0;\r\n /**\r\n * The mip level to show in the debug display\r\n * @param mipNum The mip level to show in the debug display\r\n */\r\n public setDebugMipNumber(mipNum: number) {\r\n this._debugMipNumber = mipNum;\r\n }\r\n private _debugPassName: string = \"Voxelization Debug Pass\";\r\n /**\r\n * Sets the name of the debug pass\r\n */\r\n public get debugPassName(): string {\r\n return this._debugPassName;\r\n }\r\n\r\n /**\r\n * Enable or disable the debug view for this pass\r\n */\r\n public get voxelDebugEnabled(): boolean {\r\n return this._voxelDebugEnabled;\r\n }\r\n\r\n public set voxelDebugEnabled(enabled: boolean) {\r\n if (this._voxelDebugEnabled === enabled) {\r\n return;\r\n }\r\n this._voxelDebugEnabled = enabled;\r\n if (enabled) {\r\n this._voxelSlabDebugRT = new RenderTargetTexture(\"voxelSlabDebug\", { width: this._engine.getRenderWidth(), height: this._engine.getRenderHeight() }, this._scene, {\r\n generateDepthBuffer: true,\r\n generateMipMaps: false,\r\n type: Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n format: Constants.TEXTUREFORMAT_RGBA,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n });\r\n this._voxelSlabDebugRT.noPrePassRenderer = true;\r\n }\r\n if (this._voxelSlabDebugRT) {\r\n this._removeVoxelRTs([this._voxelSlabDebugRT]);\r\n }\r\n // Add the slab debug RT if needed.\r\n if (this._voxelDebugEnabled) {\r\n this._addRTsForRender([this._voxelSlabDebugRT], this._includedMeshes, this._voxelDebugAxis, 1, true);\r\n this._setDebugBindingsBound = this._setDebugBindings.bind(this);\r\n this._scene.onBeforeRenderObservable.add(this._setDebugBindingsBound);\r\n } else {\r\n this._scene.onBeforeRenderObservable.removeCallback(this._setDebugBindingsBound);\r\n }\r\n }\r\n\r\n private _setDebugBindingsBound: () => void;\r\n /**\r\n * Creates the debug post process effect for this pass\r\n */\r\n private _createDebugPass() {\r\n const isWebGPU = this._engine.isWebGPU;\r\n if (!this._voxelDebugPass) {\r\n const debugOptions: PostProcessOptions = {\r\n width: this._engine.getRenderWidth(),\r\n height: this._engine.getRenderHeight(),\r\n textureFormat: Constants.TEXTUREFORMAT_RGBA,\r\n textureType: Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n uniforms: [\"sizeParams\", \"mipNumber\"],\r\n samplers: [\"voxelTexture\", \"voxelSlabTexture\"],\r\n engine: this._engine,\r\n reusable: false,\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializations: (useWebGPU: boolean, list: Promise<any>[]) => {\r\n if (this._isVoxelGrid3D) {\r\n if (useWebGPU) {\r\n list.push(import(\"../../ShadersWGSL/iblVoxelGrid3dDebug.fragment\"));\r\n } else {\r\n list.push(import(\"../../Shaders/iblVoxelGrid3dDebug.fragment\"));\r\n }\r\n return;\r\n }\r\n if (useWebGPU) {\r\n list.push(import(\"../../ShadersWGSL/iblVoxelGrid2dArrayDebug.fragment\"));\r\n } else {\r\n list.push(import(\"../../Shaders/iblVoxelGrid2dArrayDebug.fragment\"));\r\n }\r\n },\r\n };\r\n this._voxelDebugPass = new PostProcess(this.debugPassName, this._isVoxelGrid3D ? \"iblVoxelGrid3dDebug\" : \"iblVoxelGrid2dArrayDebug\", debugOptions);\r\n this._voxelDebugPass.onApplyObservable.add((effect) => {\r\n if (this._voxelDebugAxis === 0) {\r\n effect.setTexture(\"voxelTexture\", this._voxelGridXaxis);\r\n } else if (this._voxelDebugAxis === 1) {\r\n effect.setTexture(\"voxelTexture\", this._voxelGridYaxis);\r\n } else if (this._voxelDebugAxis === 2) {\r\n effect.setTexture(\"voxelTexture\", this._voxelGridZaxis);\r\n } else {\r\n effect.setTexture(\"voxelTexture\", this.getVoxelGrid());\r\n }\r\n effect.setTexture(\"voxelSlabTexture\", this._voxelSlabDebugRT);\r\n effect.setVector4(\"sizeParams\", this._debugSizeParams);\r\n effect.setFloat(\"mipNumber\", this._debugMipNumber);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Instanciates the voxel renderer\r\n * @param scene Scene to attach to\r\n * @param iblShadowsRenderPipeline The render pipeline this pass is associated with\r\n * @param resolutionExp Resolution of the voxel grid. The final resolution will be 2^resolutionExp.\r\n * @param triPlanarVoxelization Whether to use tri-planar voxelization. More expensive, but can help with artifacts.\r\n * @returns The voxel renderer\r\n */\r\n constructor(scene: Scene, iblShadowsRenderPipeline: IblShadowsRenderPipeline, resolutionExp: number = 6, triPlanarVoxelization: boolean = true) {\r\n this._scene = scene;\r\n this._engine = scene.getEngine() as Engine;\r\n this._triPlanarVoxelization = triPlanarVoxelization;\r\n if (!this._engine.getCaps().drawBuffersExtension) {\r\n Logger.Error(\"Can't do voxel rendering without the draw buffers extension.\");\r\n }\r\n\r\n const isWebGPU = this._engine.isWebGPU;\r\n this._maxDrawBuffers = this._engine.getCaps().maxDrawBuffers || 0;\r\n\r\n this._copyMipEffectRenderer = new EffectRenderer(this._engine);\r\n this._copyMipEffectWrapper = new EffectWrapper({\r\n engine: this._engine,\r\n fragmentShader: \"copyTexture3DLayerToTexture\",\r\n useShaderStore: true,\r\n uniformNames: [\"layerNum\"],\r\n samplerNames: [\"textureSampler\"],\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializationsAsync: async () => {\r\n if (isWebGPU) {\r\n await import(\"../../ShadersWGSL/copyTexture3DLayerToTexture.fragment\");\r\n } else {\r\n await import(\"../../Shaders/copyTexture3DLayerToTexture.fragment\");\r\n }\r\n },\r\n });\r\n\r\n this.voxelResolutionExp = resolutionExp;\r\n }\r\n\r\n private _generateMipMaps() {\r\n const iterations = Math.ceil(Math.log2(this._voxelResolution));\r\n for (let i = 1; i < iterations + 1; i++) {\r\n this._generateMipMap(i);\r\n }\r\n }\r\n\r\n private _generateMipMap(lodLevel: number) {\r\n // Generate a mip map for the given level by triggering the render of the procedural mip texture.\r\n const mipTarget = this._mipArray[lodLevel - 1];\r\n if (!mipTarget) {\r\n return;\r\n }\r\n mipTarget.setTexture(\"srcMip\", lodLevel === 1 ? this.getVoxelGrid() : this._mipArray[lodLevel - 2]);\r\n mipTarget.render();\r\n }\r\n\r\n private _copyMipMaps() {\r\n const iterations = Math.ceil(Math.log2(this._voxelResolution));\r\n for (let i = 1; i < iterations + 1; i++) {\r\n this._copyMipMap(i);\r\n }\r\n }\r\n\r\n private _copyMipMap(lodLevel: number) {\r\n // Now, copy this mip into the mip chain of the voxel grid.\r\n // TODO - this currently isn't working. \"textureSampler\" isn't being properly set to mipTarget.\r\n const mipTarget = this._mipArray[lodLevel - 1];\r\n if (!mipTarget) {\r\n return;\r\n }\r\n const voxelGrid = this.getVoxelGrid();\r\n let rt: RenderTargetWrapper;\r\n if (voxelGrid instanceof RenderTargetTexture && voxelGrid.renderTarget) {\r\n rt = voxelGrid.renderTarget;\r\n } else {\r\n rt = (voxelGrid as any)._rtWrapper;\r\n }\r\n if (rt) {\r\n this._copyMipEffectRenderer.saveStates();\r\n const bindSize = mipTarget.getSize().width;\r\n\r\n // Render to each layer of the voxel grid.\r\n for (let layer = 0; layer < bindSize; layer++) {\r\n this._engine.bindFramebuffer(rt, 0, bindSize, bindSize, true, lodLevel, layer);\r\n this._copyMipEffectRenderer.applyEffectWrapper(this._copyMipEffectWrapper);\r\n this._copyMipEffectWrapper.effect.setTexture(\"textureSampler\", mipTarget);\r\n this._copyMipEffectWrapper.effect.setInt(\"layerNum\", layer);\r\n this._copyMipEffectRenderer.draw();\r\n this._engine.unBindFramebuffer(rt, true);\r\n }\r\n this._copyMipEffectRenderer.restoreStates();\r\n }\r\n }\r\n\r\n private _computeNumberOfSlabs(): number {\r\n return Math.ceil(this._voxelResolution / this._maxDrawBuffers);\r\n }\r\n\r\n private _createTextures() {\r\n const isWebGPU = this._engine.isWebGPU;\r\n const size: TextureSize = {\r\n width: this._voxelResolution,\r\n height: this._voxelResolution,\r\n layers: this._isVoxelGrid3D ? undefined : this._voxelResolution,\r\n depth: this._isVoxelGrid3D ? this._voxelResolution : undefined,\r\n };\r\n const voxelAxisOptions: RenderTargetTextureOptions = {\r\n generateDepthBuffer: false,\r\n generateMipMaps: false,\r\n type: Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n format: Constants.TEXTUREFORMAT_R,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n };\r\n\r\n // We can render up to maxDrawBuffers voxel slices of the grid per render.\r\n // We call this a slab.\r\n const numSlabs = this._computeNumberOfSlabs();\r\n const voxelCombinedOptions: IProceduralTextureCreationOptions = {\r\n generateDepthBuffer: false,\r\n generateMipMaps: true,\r\n type: Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n format: Constants.TEXTUREFORMAT_R,\r\n samplingMode: Constants.TEXTURE_NEAREST_NEAREST_MIPNEAREST,\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializationsAsync: async () => {\r\n if (isWebGPU) {\r\n await import(\"../../ShadersWGSL/iblCombineVoxelGrids.fragment\");\r\n } else {\r\n await import(\"../../Shaders/iblCombineVoxelGrids.fragment\");\r\n }\r\n },\r\n };\r\n if (this._triPlanarVoxelization) {\r\n this._voxelGridXaxis = new RenderTargetTexture(\"voxelGridXaxis\", size, this._scene, voxelAxisOptions);\r\n this._voxelGridYaxis = new RenderTargetTexture(\"voxelGridYaxis\", size, this._scene, voxelAxisOptions);\r\n this._voxelGridZaxis = new RenderTargetTexture(\"voxelGridZaxis\", size, this._scene, voxelAxisOptions);\r\n this._voxelMrtsXaxis = this._createVoxelMRTs(\"x_axis_\", this._voxelGridXaxis, numSlabs);\r\n this._voxelMrtsYaxis = this._createVoxelMRTs(\"y_axis_\", this._voxelGridYaxis, numSlabs);\r\n this._voxelMrtsZaxis = this._createVoxelMRTs(\"z_axis_\", this._voxelGridZaxis, numSlabs);\r\n\r\n this._voxelGridRT = new ProceduralTexture(\"combinedVoxelGrid\", size, \"iblCombineVoxelGrids\", this._scene, voxelCombinedOptions, false);\r\n this._scene.proceduralTextures.splice(this._scene.proceduralTextures.indexOf(this._voxelGridRT), 1);\r\n this._voxelGridRT.setFloat(\"layer\", 0.0);\r\n this._voxelGridRT.setTexture(\"voxelXaxisSampler\", this._voxelGridXaxis);\r\n this._voxelGridRT.setTexture(\"voxelYaxisSampler\", this._voxelGridYaxis);\r\n this._voxelGridRT.setTexture(\"voxelZaxisSampler\", this._voxelGridZaxis);\r\n // We will render this only after voxelization is completed for the 3 axes.\r\n this._voxelGridRT.autoClear = false;\r\n this._voxelGridRT.wrapU = Texture.CLAMP_ADDRESSMODE;\r\n this._voxelGridRT.wrapV = Texture.CLAMP_ADDRESSMODE;\r\n } else {\r\n this._voxelGridZaxis = new RenderTargetTexture(\"voxelGridZaxis\", size, this._scene, voxelCombinedOptions);\r\n this._voxelMrtsZaxis = this._createVoxelMRTs(\"z_axis_\", this._voxelGridZaxis, numSlabs);\r\n }\r\n\r\n const generateVoxelMipOptions: IProceduralTextureCreationOptions = {\r\n generateDepthBuffer: false,\r\n generateMipMaps: false,\r\n type: Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n format: Constants.TEXTUREFORMAT_R,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializationsAsync: async () => {\r\n if (isWebGPU) {\r\n await import(\"../../ShadersWGSL/iblGenerateVoxelMip.fragment\");\r\n } else {\r\n await import(\"../../Shaders/iblGenerateVoxelMip.fragment\");\r\n }\r\n },\r\n };\r\n this._mipArray = new Array(Math.ceil(Math.log2(this._voxelResolution)));\r\n for (let mipIdx = 1; mipIdx <= this._mipArray.length; mipIdx++) {\r\n const mipDim = this._voxelResolution >> mipIdx;\r\n const mipSize: TextureSize = { width: mipDim, height: mipDim, depth: mipDim };\r\n this._mipArray[mipIdx - 1] = new ProceduralTexture(\"voxelMip\" + mipIdx, mipSize, \"iblGenerateVoxelMip\", this._scene, generateVoxelMipOptions, false);\r\n this._scene.proceduralTextures.splice(this._scene.proceduralTextures.indexOf(this._mipArray[mipIdx - 1]), 1);\r\n\r\n const mipTarget = this._mipArray[mipIdx - 1];\r\n mipTarget.autoClear = false;\r\n mipTarget.wrapU = Texture.CLAMP_ADDRESSMODE;\r\n mipTarget.wrapV = Texture.CLAMP_ADDRESSMODE;\r\n mipTarget.setTexture(\"srcMip\", mipIdx > 1 ? this._mipArray[mipIdx - 2] : this.getVoxelGrid());\r\n mipTarget.setInt(\"layerNum\", 0);\r\n }\r\n\r\n this._createVoxelMaterials();\r\n }\r\n\r\n private _createVoxelMRTs(name: string, voxelRT: RenderTargetTexture, numSlabs: number): MultiRenderTarget[] {\r\n voxelRT.wrapU = Texture.CLAMP_ADDRESSMODE;\r\n voxelRT.wrapV = Texture.CLAMP_ADDRESSMODE;\r\n voxelRT.noPrePassRenderer = true;\r\n const mrtArray: MultiRenderTarget[] = [];\r\n const targetTypes = new Array(this._maxDrawBuffers).fill(this._isVoxelGrid3D ? Constants.TEXTURE_3D : Constants.TEXTURE_2D_ARRAY);\r\n\r\n for (let mrt_index = 0; mrt_index < numSlabs; mrt_index++) {\r\n let layerIndices = new Array(this._maxDrawBuffers).fill(0);\r\n layerIndices = layerIndices.map((value, index) => mrt_index * this._maxDrawBuffers + index);\r\n\r\n let textureNames = new Array(this._maxDrawBuffers).fill(\"\");\r\n textureNames = textureNames.map((value, index) => \"voxel_grid_\" + name + (mrt_index * this._maxDrawBuffers + index));\r\n\r\n const mrt = new MultiRenderTarget(\r\n \"mrt_\" + name + mrt_index,\r\n { width: this._voxelResolution, height: this._voxelResolution, depth: this._isVoxelGrid3D ? this._voxelResolution : undefined },\r\n this._maxDrawBuffers, // number of draw buffers\r\n this._scene,\r\n {\r\n types: new Array(this._maxDrawBuffers).fill(Constants.TEXTURETYPE_UNSIGNED_BYTE),\r\n samplingModes: new Array(this._maxDrawBuffers).fill(Constants.TEXTURE_TRILINEAR_SAMPLINGMODE),\r\n generateMipMaps: false,\r\n targetTypes,\r\n formats: new Array(this._maxDrawBuffers).fill(Constants.TEXTUREFORMAT_R),\r\n faceIndex: new Array(this._maxDrawBuffers).fill(0),\r\n layerIndex: layerIndices,\r\n layerCounts: new Array(this._maxDrawBuffers).fill(this._voxelResolution),\r\n generateDepthBuffer: false,\r\n generateStencilBuffer: false,\r\n },\r\n textureNames\r\n );\r\n\r\n mrt.clearColor = new Color4(0, 0, 0, 1);\r\n mrt.noPrePassRenderer = true;\r\n for (let i = 0; i < this._maxDrawBuffers; i++) {\r\n mrt.setInternalTexture(voxelRT.getInternalTexture()!, i);\r\n }\r\n\r\n mrtArray.push(mrt);\r\n }\r\n return mrtArray;\r\n }\r\n\r\n private _disposeVoxelTextures() {\r\n this._stopVoxelization();\r\n for (let i = 0; i < this._voxelMrtsZaxis.length; i++) {\r\n if (this._triPlanarVoxelization) {\r\n this._voxelMrtsXaxis[i].dispose(true);\r\n this._voxelMrtsYaxis[i].dispose(true);\r\n }\r\n this._voxelMrtsZaxis[i].dispose(true);\r\n }\r\n if (this._triPlanarVoxelization) {\r\n this._voxelGridXaxis?.dispose();\r\n this._voxelGridYaxis?.dispose();\r\n this._voxelGridRT?.dispose();\r\n }\r\n this._voxelGridZaxis?.dispose();\r\n this._mipArray.forEach((mip) => {\r\n mip.dispose();\r\n });\r\n this._voxelMaterial?.dispose();\r\n this._voxelSlabDebugMaterial?.dispose();\r\n this._mipArray = [];\r\n this._voxelMrtsXaxis = [];\r\n this._voxelMrtsYaxis = [];\r\n this._voxelMrtsZaxis = [];\r\n }\r\n\r\n private _createVoxelMaterials(): void {\r\n const isWebGPU = this._engine.isWebGPU;\r\n this._voxelMaterial = new ShaderMaterial(\"voxelization\", this._scene, \"iblVoxelGrid\", {\r\n uniforms: [\"world\", \"viewMatrix\", \"invWorldScale\", \"nearPlane\", \"farPlane\", \"stepSize\"],\r\n defines: [\"MAX_DRAW_BUFFERS \" + this._maxDrawBuffers],\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializationsAsync: async () => {\r\n if (isWebGPU) {\r\n await Promise.all([import(\"../../ShadersWGSL/iblVoxelGrid.fragment\"), import(\"../../ShadersWGSL/iblVoxelGrid.vertex\")]);\r\n } else {\r\n await Promise.all([import(\"../../Shaders/iblVoxelGrid.fragment\"), import(\"../../Shaders/iblVoxelGrid.vertex\")]);\r\n }\r\n },\r\n });\r\n this._voxelMaterial.cullBackFaces = false;\r\n this._voxelMaterial.backFaceCulling = false;\r\n this._voxelMaterial.depthFunction = Engine.ALWAYS;\r\n\r\n this._voxelSlabDebugMaterial = new ShaderMaterial(\"voxelSlabDebug\", this._scene, \"iblVoxelSlabDebug\", {\r\n uniforms: [\"world\", \"viewMatrix\", \"cameraViewMatrix\", \"projection\", \"invWorldScale\", \"nearPlane\", \"farPlane\", \"stepSize\"],\r\n defines: [\"MAX_DRAW_BUFFERS \" + this._maxDrawBuffers],\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializationsAsync: async () => {\r\n if (isWebGPU) {\r\n await Promise.all([import(\"../../ShadersWGSL/iblVoxelSlabDebug.fragment\"), import(\"../../ShadersWGSL/iblVoxelSlabDebug.vertex\")]);\r\n } else {\r\n await Promise.all([import(\"../../Shaders/iblVoxelSlabDebug.fragment\"), import(\"../../Shaders/iblVoxelSlabDebug.vertex\")]);\r\n }\r\n },\r\n });\r\n }\r\n\r\n private _setDebugBindings() {\r\n this._voxelSlabDebugMaterial.setMatrix(\"projection\", this._scene.activeCamera!.getProjectionMatrix());\r\n this._voxelSlabDebugMaterial.setMatrix(\"cameraViewMatrix\", this._scene.activeCamera!.getViewMatrix());\r\n }\r\n\r\n /**\r\n * Checks if the voxel renderer is ready to voxelize scene\r\n * @returns true if the voxel renderer is ready to voxelize scene\r\n */\r\n public isReady() {\r\n let allReady = this.getVoxelGrid().isReady();\r\n for (let i = 0; i < this._mipArray.length; i++) {\r\n const mipReady = this._mipArray[i].isReady();\r\n allReady &&= mipReady;\r\n }\r\n\r\n if (!allReady || this._voxelizationInProgress) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * If the MRT's are already in the list of render targets, this will\r\n * remove them so that they don't get rendered again.\r\n */\r\n private _stopVoxelization() {\r\n // If the MRT's are already in the list of render targets, remove them.\r\n this._removeVoxelRTs(this._voxelMrtsXaxis);\r\n this._removeVoxelRTs(this._voxelMrtsYaxis);\r\n this._removeVoxelRTs(this._voxelMrtsZaxis);\r\n }\r\n\r\n private _removeVoxelRTs(rts: RenderTargetTexture[]) {\r\n // const currentRTs = this._scene.customRenderTargets;\r\n const rtIdx = this._renderTargets.findIndex((rt) => {\r\n if (rt === rts[0]) return true;\r\n return false;\r\n });\r\n if (rtIdx >= 0) {\r\n this._renderTargets.splice(rtIdx, rts.length);\r\n } else {\r\n const rtIdx = this._scene.customRenderTargets.findIndex((rt) => {\r\n if (rt === rts[0]) return true;\r\n return false;\r\n });\r\n if (rtIdx >= 0) {\r\n this._scene.customRenderTargets.splice(rtIdx, rts.length);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Renders voxel grid of scene for IBL shadows\r\n * @param includedMeshes\r\n */\r\n public updateVoxelGrid(includedMeshes: Mesh[]) {\r\n this._stopVoxelization();\r\n this._includedMeshes = includedMeshes;\r\n this._voxelizationInProgress = true;\r\n\r\n if (this._triPlanarVoxelization) {\r\n this._addRTsForRender(this._voxelMrtsXaxis, includedMeshes, 0);\r\n this._addRTsForRender(this._voxelMrtsYaxis, includedMeshes, 1);\r\n this._addRTsForRender(this._voxelMrtsZaxis, includedMeshes, 2);\r\n } else {\r\n this._addRTsForRender(this._voxelMrtsZaxis, includedMeshes, 2);\r\n }\r\n if (this._voxelDebugEnabled) {\r\n this._addRTsForRender([this._voxelSlabDebugRT], includedMeshes, this._voxelDebugAxis, 1, true);\r\n }\r\n this._renderVoxelGridBound = this._renderVoxelGrid.bind(this);\r\n this._scene.onAfterRenderObservable.add(this._renderVoxelGridBound);\r\n }\r\n\r\n private _renderVoxelGridBound: () => void;\r\n\r\n private _renderVoxelGrid() {\r\n if (this._voxelizationInProgress) {\r\n let allReady = this.getVoxelGrid().isReady();\r\n for (let i = 0; i < this._mipArray.length; i++) {\r\n const mipReady = this._mipArray[i].isReady();\r\n allReady &&= mipReady;\r\n }\r\n for (let i = 0; i < this._renderTargets.length; i++) {\r\n const rttReady = this._renderTargets[i].isReadyForRendering();\r\n allReady &&= rttReady;\r\n }\r\n if (allReady) {\r\n this._renderTargets.forEach((rt) => {\r\n rt.render();\r\n });\r\n this._stopVoxelization();\r\n\r\n if (this._triPlanarVoxelization) {\r\n this._voxelGridRT.render();\r\n }\r\n this._generateMipMaps();\r\n this._copyMipEffectWrapper.effect.whenCompiledAsync().then(() => {\r\n this._copyMipMaps();\r\n this._scene.onAfterRenderObservable.removeCallback(this._renderVoxelGridBound);\r\n this._voxelizationInProgress = false;\r\n });\r\n }\r\n }\r\n }\r\n\r\n private _addRTsForRender(mrts: RenderTargetTexture[], includedMeshes: Mesh[], axis: number, shaderType: number = 0, continuousRender: boolean = false) {\r\n const slabSize = 1.0 / this._computeNumberOfSlabs();\r\n let voxelMaterial: ShaderMaterial;\r\n if (shaderType === 0) {\r\n voxelMaterial = this._voxelMaterial;\r\n } else {\r\n voxelMaterial = this._voxelSlabDebugMaterial;\r\n }\r\n\r\n // We need to update the world scale uniform for every mesh being rendered to the voxel grid.\r\n mrts.forEach((mrt, mrtIndex) => {\r\n mrt.renderList = [];\r\n const nearPlane = mrtIndex * slabSize;\r\n const farPlane = (mrtIndex + 1) * slabSize;\r\n const stepSize = slabSize / this._maxDrawBuffers;\r\n\r\n const cameraPosition = new Vector3(0, 0, 0);\r\n let targetPosition = new Vector3(0, 0, 1);\r\n if (axis === 0) {\r\n targetPosition = new Vector3(1, 0, 0);\r\n } else if (axis === 1) {\r\n targetPosition = new Vector3(0, 1, 0);\r\n }\r\n let upDirection = new Vector3(0, 1, 0);\r\n if (axis === 1) {\r\n upDirection = new Vector3(1, 0, 0);\r\n }\r\n mrt.onBeforeRenderObservable.add(() => {\r\n voxelMaterial.setMatrix(\"viewMatrix\", Matrix.LookAtLH(cameraPosition, targetPosition, upDirection));\r\n voxelMaterial.setMatrix(\"invWorldScale\", this._invWorldScaleMatrix);\r\n voxelMaterial.setFloat(\"nearPlane\", nearPlane);\r\n voxelMaterial.setFloat(\"farPlane\", farPlane);\r\n voxelMaterial.setFloat(\"stepSize\", stepSize);\r\n });\r\n\r\n // Set this material on every mesh in the scene (for this RT)\r\n if (includedMeshes.length === 0) {\r\n return;\r\n }\r\n includedMeshes.forEach((mesh) => {\r\n if (mesh) {\r\n if (mesh.subMeshes && mesh.subMeshes.length > 0) {\r\n mrt.renderList?.push(mesh);\r\n mrt.setMaterialForRendering(mesh, voxelMaterial);\r\n }\r\n mesh.getChildMeshes().forEach((childMesh) => {\r\n if (childMesh.subMeshes && childMesh.subMeshes.length > 0) {\r\n mrt.renderList?.push(childMesh);\r\n mrt.setMaterialForRendering(childMesh, voxelMaterial);\r\n }\r\n });\r\n }\r\n });\r\n });\r\n\r\n // Add the MRT's to render.\r\n if (continuousRender) {\r\n mrts.forEach((mrt) => {\r\n if (this._scene.customRenderTargets.indexOf(mrt) === -1) {\r\n this._scene.customRenderTargets.push(mrt);\r\n }\r\n });\r\n } else {\r\n this._renderTargets = this._renderTargets.concat(mrts);\r\n }\r\n }\r\n\r\n /**\r\n * Called by the pipeline to resize resources.\r\n */\r\n public resize() {\r\n this._voxelSlabDebugRT?.resize({ width: this._scene.getEngine().getRenderWidth(), height: this._scene.getEngine().getRenderHeight() });\r\n }\r\n\r\n /**\r\n * Disposes the voxel renderer and associated resources\r\n */\r\n public dispose() {\r\n this._disposeVoxelTextures();\r\n if (this._voxelSlabDebugRT) {\r\n this._removeVoxelRTs([this._voxelSlabDebugRT]);\r\n this._voxelSlabDebugRT.dispose();\r\n }\r\n if (this._voxelDebugPass) {\r\n this._voxelDebugPass.dispose();\r\n }\r\n // TODO - dispose all created voxel materials.\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"iblShadowsVoxelRenderer.js","sourceRoot":"","sources":["../../../../../dev/core/src/Rendering/IBLShadows/iblShadowsVoxelRenderer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Constants } from \"../../Engines/constants\";\r\nimport { Engine } from \"../../Engines/engine\";\r\nimport { ShaderMaterial } from \"../../Materials/shaderMaterial\";\r\nimport { MultiRenderTarget } from \"../../Materials/Textures/multiRenderTarget\";\r\nimport { RenderTargetTexture } from \"../../Materials/Textures/renderTargetTexture\";\r\nimport type { RenderTargetTextureOptions } from \"../../Materials/Textures/renderTargetTexture\";\r\nimport type { TextureSize } from \"../../Materials/Textures/textureCreationOptions\";\r\nimport { Color4 } from \"../../Maths/math.color\";\r\nimport { Matrix, Vector3, Vector4 } from \"../../Maths/math.vector\";\r\nimport type { Mesh } from \"../../Meshes/mesh\";\r\nimport type { Scene } from \"../../scene\";\r\nimport { Texture } from \"../../Materials/Textures/texture\";\r\nimport { Logger } from \"../../Misc/logger\";\r\nimport { Observable } from \"../../Misc/observable\";\r\nimport { PostProcess } from \"../../PostProcesses/postProcess\";\r\nimport type { PostProcessOptions } from \"../../PostProcesses/postProcess\";\r\nimport { ProceduralTexture } from \"../../Materials/Textures/Procedurals/proceduralTexture\";\r\nimport type { IProceduralTextureCreationOptions } from \"../../Materials/Textures/Procedurals/proceduralTexture\";\r\nimport { EffectRenderer, EffectWrapper } from \"../../Materials/effectRenderer\";\r\nimport type { IblShadowsRenderPipeline } from \"./iblShadowsRenderPipeline\";\r\nimport type { RenderTargetWrapper } from \"core/Engines\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Voxel-based shadow rendering for IBL's.\r\n * This should not be instanciated directly, as it is part of a scene component\r\n * @internal\r\n * @see https://playground.babylonjs.com/#8R5SSE#222\r\n */\r\nexport class _IblShadowsVoxelRenderer {\r\n private _scene: Scene;\r\n private _engine: Engine;\r\n private _voxelGridRT: ProceduralTexture;\r\n private _voxelGridXaxis: RenderTargetTexture;\r\n private _voxelGridYaxis: RenderTargetTexture;\r\n private _voxelGridZaxis: RenderTargetTexture;\r\n private _voxelMrtsXaxis: MultiRenderTarget[] = [];\r\n private _voxelMrtsYaxis: MultiRenderTarget[] = [];\r\n private _voxelMrtsZaxis: MultiRenderTarget[] = [];\r\n private _isVoxelGrid3D: boolean = true;\r\n private _voxelMaterial: ShaderMaterial;\r\n private _voxelSlabDebugMaterial: ShaderMaterial;\r\n\r\n /**\r\n * Return the voxel grid texture.\r\n * @returns The voxel grid texture.\r\n */\r\n public getVoxelGrid(): ProceduralTexture | RenderTargetTexture {\r\n if (this._triPlanarVoxelization) {\r\n return this._voxelGridRT;\r\n } else {\r\n return this._voxelGridZaxis;\r\n }\r\n }\r\n\r\n /**\r\n * Observable that triggers when the voxelization is complete\r\n */\r\n public onVoxelizationCompleteObservable: Observable<void> = new Observable<void>();\r\n\r\n /**\r\n * The debug pass post process\r\n * @returns The debug pass post process\r\n */\r\n public getDebugPassPP(): PostProcess {\r\n if (!this._voxelDebugPass) {\r\n this._createDebugPass();\r\n }\r\n return this._voxelDebugPass;\r\n }\r\n\r\n private _maxDrawBuffers: number;\r\n private _renderTargets: RenderTargetTexture[] = [];\r\n\r\n private _triPlanarVoxelization: boolean = true;\r\n\r\n /**\r\n * Whether to use tri-planar voxelization. More expensive, but can help with artifacts.\r\n */\r\n public get triPlanarVoxelization(): boolean {\r\n return this._triPlanarVoxelization;\r\n }\r\n\r\n /**\r\n * Whether to use tri-planar voxelization. More expensive, but can help with artifacts.\r\n */\r\n public set triPlanarVoxelization(enabled: boolean) {\r\n if (this._triPlanarVoxelization === enabled) {\r\n return;\r\n }\r\n this._triPlanarVoxelization = enabled;\r\n this._disposeVoxelTextures();\r\n this._createTextures();\r\n }\r\n\r\n private _voxelizationInProgress: boolean = false;\r\n private _invWorldScaleMatrix: Matrix = Matrix.Identity();\r\n\r\n /**\r\n * Set the matrix to use for scaling the world space to voxel space\r\n * @param matrix The matrix to use for scaling the world space to voxel space\r\n */\r\n public setWorldScaleMatrix(matrix: Matrix) {\r\n this._invWorldScaleMatrix = matrix;\r\n }\r\n /**\r\n * @returns Whether voxelization is currently happening.\r\n */\r\n public isVoxelizationInProgress(): boolean {\r\n return this._voxelizationInProgress;\r\n }\r\n\r\n private _voxelResolution: number = 64;\r\n private _voxelResolutionExp: number = 6;\r\n\r\n /**\r\n * Resolution of the voxel grid. The final resolution will be 2^resolutionExp.\r\n */\r\n public get voxelResolutionExp(): number {\r\n return this._voxelResolutionExp;\r\n }\r\n\r\n /**\r\n * Resolution of the voxel grid. The final resolution will be 2^resolutionExp.\r\n */\r\n public set voxelResolutionExp(resolutionExp: number) {\r\n if (this._voxelResolutionExp === resolutionExp && this._voxelGridZaxis) {\r\n return;\r\n }\r\n this._voxelResolutionExp = Math.round(Math.min(Math.max(resolutionExp, 3), 9));\r\n this._voxelResolution = Math.pow(2.0, this._voxelResolutionExp);\r\n this._disposeVoxelTextures();\r\n this._createTextures();\r\n }\r\n\r\n private _copyMipEffectRenderer: EffectRenderer;\r\n private _copyMipEffectWrapper: EffectWrapper;\r\n private _mipArray: ProceduralTexture[] = [];\r\n\r\n private _voxelSlabDebugRT: RenderTargetTexture;\r\n private _voxelDebugPass: PostProcess;\r\n private _voxelDebugEnabled: boolean = false;\r\n\r\n /**\r\n * Shows only the voxels that were rendered along a particular axis (while using triPlanarVoxelization).\r\n * If not set, the combined voxel grid will be shown.\r\n * Note: This only works when the debugMipNumber is set to 0 because we don't generate mips for each axis.\r\n * @param axis The axis to show (0 = x, 1 = y, 2 = z)\r\n */\r\n public set voxelDebugAxis(axis: number) {\r\n this._voxelDebugAxis = axis;\r\n }\r\n\r\n public get voxelDebugAxis(): number {\r\n return this._voxelDebugAxis;\r\n }\r\n private _voxelDebugAxis: number = -1;\r\n private _debugSizeParams: Vector4 = new Vector4(0.0, 0.0, 0.0, 0.0);\r\n private _includedMeshes: Mesh[] = [];\r\n\r\n /**\r\n * Sets params that control the position and scaling of the debug display on the screen.\r\n * @param x Screen X offset of the debug display (0-1)\r\n * @param y Screen Y offset of the debug display (0-1)\r\n * @param widthScale X scale of the debug display (0-1)\r\n * @param heightScale Y scale of the debug display (0-1)\r\n */\r\n public setDebugDisplayParams(x: number, y: number, widthScale: number, heightScale: number) {\r\n this._debugSizeParams.set(x, y, widthScale, heightScale);\r\n }\r\n private _debugMipNumber: number = 0;\r\n /**\r\n * The mip level to show in the debug display\r\n * @param mipNum The mip level to show in the debug display\r\n */\r\n public setDebugMipNumber(mipNum: number) {\r\n this._debugMipNumber = mipNum;\r\n }\r\n private _debugPassName: string = \"Voxelization Debug Pass\";\r\n /**\r\n * Sets the name of the debug pass\r\n */\r\n public get debugPassName(): string {\r\n return this._debugPassName;\r\n }\r\n\r\n /**\r\n * Enable or disable the debug view for this pass\r\n */\r\n public get voxelDebugEnabled(): boolean {\r\n return this._voxelDebugEnabled;\r\n }\r\n\r\n public set voxelDebugEnabled(enabled: boolean) {\r\n if (this._voxelDebugEnabled === enabled) {\r\n return;\r\n }\r\n this._voxelDebugEnabled = enabled;\r\n if (enabled) {\r\n this._voxelSlabDebugRT = new RenderTargetTexture(\"voxelSlabDebug\", { width: this._engine.getRenderWidth(), height: this._engine.getRenderHeight() }, this._scene, {\r\n generateDepthBuffer: true,\r\n generateMipMaps: false,\r\n type: Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n format: Constants.TEXTUREFORMAT_RGBA,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n });\r\n this._voxelSlabDebugRT.noPrePassRenderer = true;\r\n }\r\n if (this._voxelSlabDebugRT) {\r\n this._removeVoxelRTs([this._voxelSlabDebugRT]);\r\n }\r\n // Add the slab debug RT if needed.\r\n if (this._voxelDebugEnabled) {\r\n this._addRTsForRender([this._voxelSlabDebugRT], this._includedMeshes, this._voxelDebugAxis, 1, true);\r\n this._setDebugBindingsBound = this._setDebugBindings.bind(this);\r\n this._scene.onBeforeRenderObservable.add(this._setDebugBindingsBound);\r\n } else {\r\n this._scene.onBeforeRenderObservable.removeCallback(this._setDebugBindingsBound);\r\n }\r\n }\r\n\r\n private _setDebugBindingsBound: () => void;\r\n /**\r\n * Creates the debug post process effect for this pass\r\n */\r\n private _createDebugPass() {\r\n const isWebGPU = this._engine.isWebGPU;\r\n if (!this._voxelDebugPass) {\r\n const debugOptions: PostProcessOptions = {\r\n width: this._engine.getRenderWidth(),\r\n height: this._engine.getRenderHeight(),\r\n textureFormat: Constants.TEXTUREFORMAT_RGBA,\r\n textureType: Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n uniforms: [\"sizeParams\", \"mipNumber\"],\r\n samplers: [\"voxelTexture\", \"voxelSlabTexture\"],\r\n engine: this._engine,\r\n reusable: false,\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializations: (useWebGPU: boolean, list: Promise<any>[]) => {\r\n if (this._isVoxelGrid3D) {\r\n if (useWebGPU) {\r\n list.push(import(\"../../ShadersWGSL/iblVoxelGrid3dDebug.fragment\"));\r\n } else {\r\n list.push(import(\"../../Shaders/iblVoxelGrid3dDebug.fragment\"));\r\n }\r\n return;\r\n }\r\n if (useWebGPU) {\r\n list.push(import(\"../../ShadersWGSL/iblVoxelGrid2dArrayDebug.fragment\"));\r\n } else {\r\n list.push(import(\"../../Shaders/iblVoxelGrid2dArrayDebug.fragment\"));\r\n }\r\n },\r\n };\r\n this._voxelDebugPass = new PostProcess(this.debugPassName, this._isVoxelGrid3D ? \"iblVoxelGrid3dDebug\" : \"iblVoxelGrid2dArrayDebug\", debugOptions);\r\n this._voxelDebugPass.onApplyObservable.add((effect) => {\r\n if (this._voxelDebugAxis === 0) {\r\n effect.setTexture(\"voxelTexture\", this._voxelGridXaxis);\r\n } else if (this._voxelDebugAxis === 1) {\r\n effect.setTexture(\"voxelTexture\", this._voxelGridYaxis);\r\n } else if (this._voxelDebugAxis === 2) {\r\n effect.setTexture(\"voxelTexture\", this._voxelGridZaxis);\r\n } else {\r\n effect.setTexture(\"voxelTexture\", this.getVoxelGrid());\r\n }\r\n effect.setTexture(\"voxelSlabTexture\", this._voxelSlabDebugRT);\r\n effect.setVector4(\"sizeParams\", this._debugSizeParams);\r\n effect.setFloat(\"mipNumber\", this._debugMipNumber);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Instanciates the voxel renderer\r\n * @param scene Scene to attach to\r\n * @param iblShadowsRenderPipeline The render pipeline this pass is associated with\r\n * @param resolutionExp Resolution of the voxel grid. The final resolution will be 2^resolutionExp.\r\n * @param triPlanarVoxelization Whether to use tri-planar voxelization. More expensive, but can help with artifacts.\r\n * @returns The voxel renderer\r\n */\r\n constructor(scene: Scene, iblShadowsRenderPipeline: IblShadowsRenderPipeline, resolutionExp: number = 6, triPlanarVoxelization: boolean = true) {\r\n this._scene = scene;\r\n this._engine = scene.getEngine() as Engine;\r\n this._triPlanarVoxelization = triPlanarVoxelization;\r\n if (!this._engine.getCaps().drawBuffersExtension) {\r\n Logger.Error(\"Can't do voxel rendering without the draw buffers extension.\");\r\n }\r\n\r\n const isWebGPU = this._engine.isWebGPU;\r\n this._maxDrawBuffers = this._engine.getCaps().maxDrawBuffers || 0;\r\n\r\n this._copyMipEffectRenderer = new EffectRenderer(this._engine);\r\n this._copyMipEffectWrapper = new EffectWrapper({\r\n engine: this._engine,\r\n fragmentShader: \"copyTexture3DLayerToTexture\",\r\n useShaderStore: true,\r\n uniformNames: [\"layerNum\"],\r\n samplerNames: [\"textureSampler\"],\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializationsAsync: async () => {\r\n if (isWebGPU) {\r\n await import(\"../../ShadersWGSL/copyTexture3DLayerToTexture.fragment\");\r\n } else {\r\n await import(\"../../Shaders/copyTexture3DLayerToTexture.fragment\");\r\n }\r\n },\r\n });\r\n\r\n this.voxelResolutionExp = resolutionExp;\r\n }\r\n\r\n private _generateMipMaps() {\r\n const iterations = Math.ceil(Math.log2(this._voxelResolution));\r\n for (let i = 1; i < iterations + 1; i++) {\r\n this._generateMipMap(i);\r\n }\r\n }\r\n\r\n private _generateMipMap(lodLevel: number) {\r\n // Generate a mip map for the given level by triggering the render of the procedural mip texture.\r\n const mipTarget = this._mipArray[lodLevel - 1];\r\n if (!mipTarget) {\r\n return;\r\n }\r\n mipTarget.setTexture(\"srcMip\", lodLevel === 1 ? this.getVoxelGrid() : this._mipArray[lodLevel - 2]);\r\n mipTarget.render();\r\n }\r\n\r\n private _copyMipMaps() {\r\n const iterations = Math.ceil(Math.log2(this._voxelResolution));\r\n for (let i = 1; i < iterations + 1; i++) {\r\n this._copyMipMap(i);\r\n }\r\n }\r\n\r\n private _copyMipMap(lodLevel: number) {\r\n // Now, copy this mip into the mip chain of the voxel grid.\r\n // TODO - this currently isn't working. \"textureSampler\" isn't being properly set to mipTarget.\r\n const mipTarget = this._mipArray[lodLevel - 1];\r\n if (!mipTarget) {\r\n return;\r\n }\r\n const voxelGrid = this.getVoxelGrid();\r\n let rt: RenderTargetWrapper;\r\n if (voxelGrid instanceof RenderTargetTexture && voxelGrid.renderTarget) {\r\n rt = voxelGrid.renderTarget;\r\n } else {\r\n rt = (voxelGrid as any)._rtWrapper;\r\n }\r\n if (rt) {\r\n this._copyMipEffectRenderer.saveStates();\r\n const bindSize = mipTarget.getSize().width;\r\n\r\n // Render to each layer of the voxel grid.\r\n for (let layer = 0; layer < bindSize; layer++) {\r\n this._engine.bindFramebuffer(rt, 0, bindSize, bindSize, true, lodLevel, layer);\r\n this._copyMipEffectRenderer.applyEffectWrapper(this._copyMipEffectWrapper);\r\n this._copyMipEffectWrapper.effect.setTexture(\"textureSampler\", mipTarget);\r\n this._copyMipEffectWrapper.effect.setInt(\"layerNum\", layer);\r\n this._copyMipEffectRenderer.draw();\r\n this._engine.unBindFramebuffer(rt, true);\r\n }\r\n this._copyMipEffectRenderer.restoreStates();\r\n }\r\n }\r\n\r\n private _computeNumberOfSlabs(): number {\r\n return Math.ceil(this._voxelResolution / this._maxDrawBuffers);\r\n }\r\n\r\n private _createTextures() {\r\n const isWebGPU = this._engine.isWebGPU;\r\n const size: TextureSize = {\r\n width: this._voxelResolution,\r\n height: this._voxelResolution,\r\n layers: this._isVoxelGrid3D ? undefined : this._voxelResolution,\r\n depth: this._isVoxelGrid3D ? this._voxelResolution : undefined,\r\n };\r\n const voxelAxisOptions: RenderTargetTextureOptions = {\r\n generateDepthBuffer: false,\r\n generateMipMaps: false,\r\n type: Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n format: Constants.TEXTUREFORMAT_R,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n };\r\n\r\n // We can render up to maxDrawBuffers voxel slices of the grid per render.\r\n // We call this a slab.\r\n const numSlabs = this._computeNumberOfSlabs();\r\n const voxelCombinedOptions: IProceduralTextureCreationOptions = {\r\n generateDepthBuffer: false,\r\n generateMipMaps: true,\r\n type: Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n format: Constants.TEXTUREFORMAT_R,\r\n samplingMode: Constants.TEXTURE_NEAREST_NEAREST_MIPNEAREST,\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializationsAsync: async () => {\r\n if (isWebGPU) {\r\n await import(\"../../ShadersWGSL/iblCombineVoxelGrids.fragment\");\r\n } else {\r\n await import(\"../../Shaders/iblCombineVoxelGrids.fragment\");\r\n }\r\n },\r\n };\r\n if (this._triPlanarVoxelization) {\r\n this._voxelGridXaxis = new RenderTargetTexture(\"voxelGridXaxis\", size, this._scene, voxelAxisOptions);\r\n this._voxelGridYaxis = new RenderTargetTexture(\"voxelGridYaxis\", size, this._scene, voxelAxisOptions);\r\n this._voxelGridZaxis = new RenderTargetTexture(\"voxelGridZaxis\", size, this._scene, voxelAxisOptions);\r\n this._voxelMrtsXaxis = this._createVoxelMRTs(\"x_axis_\", this._voxelGridXaxis, numSlabs);\r\n this._voxelMrtsYaxis = this._createVoxelMRTs(\"y_axis_\", this._voxelGridYaxis, numSlabs);\r\n this._voxelMrtsZaxis = this._createVoxelMRTs(\"z_axis_\", this._voxelGridZaxis, numSlabs);\r\n\r\n this._voxelGridRT = new ProceduralTexture(\"combinedVoxelGrid\", size, \"iblCombineVoxelGrids\", this._scene, voxelCombinedOptions, false);\r\n this._scene.proceduralTextures.splice(this._scene.proceduralTextures.indexOf(this._voxelGridRT), 1);\r\n this._voxelGridRT.setFloat(\"layer\", 0.0);\r\n this._voxelGridRT.setTexture(\"voxelXaxisSampler\", this._voxelGridXaxis);\r\n this._voxelGridRT.setTexture(\"voxelYaxisSampler\", this._voxelGridYaxis);\r\n this._voxelGridRT.setTexture(\"voxelZaxisSampler\", this._voxelGridZaxis);\r\n // We will render this only after voxelization is completed for the 3 axes.\r\n this._voxelGridRT.autoClear = false;\r\n this._voxelGridRT.wrapU = Texture.CLAMP_ADDRESSMODE;\r\n this._voxelGridRT.wrapV = Texture.CLAMP_ADDRESSMODE;\r\n } else {\r\n this._voxelGridZaxis = new RenderTargetTexture(\"voxelGridZaxis\", size, this._scene, voxelCombinedOptions);\r\n this._voxelMrtsZaxis = this._createVoxelMRTs(\"z_axis_\", this._voxelGridZaxis, numSlabs);\r\n }\r\n\r\n const generateVoxelMipOptions: IProceduralTextureCreationOptions = {\r\n generateDepthBuffer: false,\r\n generateMipMaps: false,\r\n type: Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n format: Constants.TEXTUREFORMAT_R,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializationsAsync: async () => {\r\n if (isWebGPU) {\r\n await import(\"../../ShadersWGSL/iblGenerateVoxelMip.fragment\");\r\n } else {\r\n await import(\"../../Shaders/iblGenerateVoxelMip.fragment\");\r\n }\r\n },\r\n };\r\n this._mipArray = new Array(Math.ceil(Math.log2(this._voxelResolution)));\r\n for (let mipIdx = 1; mipIdx <= this._mipArray.length; mipIdx++) {\r\n const mipDim = this._voxelResolution >> mipIdx;\r\n const mipSize: TextureSize = { width: mipDim, height: mipDim, depth: mipDim };\r\n this._mipArray[mipIdx - 1] = new ProceduralTexture(\"voxelMip\" + mipIdx, mipSize, \"iblGenerateVoxelMip\", this._scene, generateVoxelMipOptions, false);\r\n this._scene.proceduralTextures.splice(this._scene.proceduralTextures.indexOf(this._mipArray[mipIdx - 1]), 1);\r\n\r\n const mipTarget = this._mipArray[mipIdx - 1];\r\n mipTarget.autoClear = false;\r\n mipTarget.wrapU = Texture.CLAMP_ADDRESSMODE;\r\n mipTarget.wrapV = Texture.CLAMP_ADDRESSMODE;\r\n mipTarget.setTexture(\"srcMip\", mipIdx > 1 ? this._mipArray[mipIdx - 2] : this.getVoxelGrid());\r\n mipTarget.setInt(\"layerNum\", 0);\r\n }\r\n\r\n this._createVoxelMaterials();\r\n }\r\n\r\n private _createVoxelMRTs(name: string, voxelRT: RenderTargetTexture, numSlabs: number): MultiRenderTarget[] {\r\n voxelRT.wrapU = Texture.CLAMP_ADDRESSMODE;\r\n voxelRT.wrapV = Texture.CLAMP_ADDRESSMODE;\r\n voxelRT.noPrePassRenderer = true;\r\n const mrtArray: MultiRenderTarget[] = [];\r\n const targetTypes = new Array(this._maxDrawBuffers).fill(this._isVoxelGrid3D ? Constants.TEXTURE_3D : Constants.TEXTURE_2D_ARRAY);\r\n\r\n for (let mrt_index = 0; mrt_index < numSlabs; mrt_index++) {\r\n let layerIndices = new Array(this._maxDrawBuffers).fill(0);\r\n layerIndices = layerIndices.map((value, index) => mrt_index * this._maxDrawBuffers + index);\r\n\r\n let textureNames = new Array(this._maxDrawBuffers).fill(\"\");\r\n textureNames = textureNames.map((value, index) => \"voxel_grid_\" + name + (mrt_index * this._maxDrawBuffers + index));\r\n\r\n const mrt = new MultiRenderTarget(\r\n \"mrt_\" + name + mrt_index,\r\n { width: this._voxelResolution, height: this._voxelResolution, depth: this._isVoxelGrid3D ? this._voxelResolution : undefined },\r\n this._maxDrawBuffers, // number of draw buffers\r\n this._scene,\r\n {\r\n types: new Array(this._maxDrawBuffers).fill(Constants.TEXTURETYPE_UNSIGNED_BYTE),\r\n samplingModes: new Array(this._maxDrawBuffers).fill(Constants.TEXTURE_TRILINEAR_SAMPLINGMODE),\r\n generateMipMaps: false,\r\n targetTypes,\r\n formats: new Array(this._maxDrawBuffers).fill(Constants.TEXTUREFORMAT_R),\r\n faceIndex: new Array(this._maxDrawBuffers).fill(0),\r\n layerIndex: layerIndices,\r\n layerCounts: new Array(this._maxDrawBuffers).fill(this._voxelResolution),\r\n generateDepthBuffer: false,\r\n generateStencilBuffer: false,\r\n },\r\n textureNames\r\n );\r\n\r\n mrt.clearColor = new Color4(0, 0, 0, 1);\r\n mrt.noPrePassRenderer = true;\r\n for (let i = 0; i < this._maxDrawBuffers; i++) {\r\n mrt.setInternalTexture(voxelRT.getInternalTexture()!, i);\r\n }\r\n\r\n mrtArray.push(mrt);\r\n }\r\n return mrtArray;\r\n }\r\n\r\n private _disposeVoxelTextures() {\r\n this._stopVoxelization();\r\n for (let i = 0; i < this._voxelMrtsZaxis.length; i++) {\r\n if (this._triPlanarVoxelization) {\r\n this._voxelMrtsXaxis[i].dispose(true);\r\n this._voxelMrtsYaxis[i].dispose(true);\r\n }\r\n this._voxelMrtsZaxis[i].dispose(true);\r\n }\r\n if (this._triPlanarVoxelization) {\r\n this._voxelGridXaxis?.dispose();\r\n this._voxelGridYaxis?.dispose();\r\n this._voxelGridRT?.dispose();\r\n }\r\n this._voxelGridZaxis?.dispose();\r\n this._mipArray.forEach((mip) => {\r\n mip.dispose();\r\n });\r\n this._voxelMaterial?.dispose();\r\n this._voxelSlabDebugMaterial?.dispose();\r\n this._mipArray = [];\r\n this._voxelMrtsXaxis = [];\r\n this._voxelMrtsYaxis = [];\r\n this._voxelMrtsZaxis = [];\r\n }\r\n\r\n private _createVoxelMaterials(): void {\r\n const isWebGPU = this._engine.isWebGPU;\r\n this._voxelMaterial = new ShaderMaterial(\"voxelization\", this._scene, \"iblVoxelGrid\", {\r\n uniforms: [\"world\", \"viewMatrix\", \"invWorldScale\", \"nearPlane\", \"farPlane\", \"stepSize\"],\r\n defines: [\"MAX_DRAW_BUFFERS \" + this._maxDrawBuffers],\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializationsAsync: async () => {\r\n if (isWebGPU) {\r\n await Promise.all([import(\"../../ShadersWGSL/iblVoxelGrid.fragment\"), import(\"../../ShadersWGSL/iblVoxelGrid.vertex\")]);\r\n } else {\r\n await Promise.all([import(\"../../Shaders/iblVoxelGrid.fragment\"), import(\"../../Shaders/iblVoxelGrid.vertex\")]);\r\n }\r\n },\r\n });\r\n this._voxelMaterial.cullBackFaces = false;\r\n this._voxelMaterial.backFaceCulling = false;\r\n this._voxelMaterial.depthFunction = Engine.ALWAYS;\r\n\r\n this._voxelSlabDebugMaterial = new ShaderMaterial(\"voxelSlabDebug\", this._scene, \"iblVoxelSlabDebug\", {\r\n uniforms: [\"world\", \"viewMatrix\", \"cameraViewMatrix\", \"projection\", \"invWorldScale\", \"nearPlane\", \"farPlane\", \"stepSize\"],\r\n defines: [\"MAX_DRAW_BUFFERS \" + this._maxDrawBuffers],\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializationsAsync: async () => {\r\n if (isWebGPU) {\r\n await Promise.all([import(\"../../ShadersWGSL/iblVoxelSlabDebug.fragment\"), import(\"../../ShadersWGSL/iblVoxelSlabDebug.vertex\")]);\r\n } else {\r\n await Promise.all([import(\"../../Shaders/iblVoxelSlabDebug.fragment\"), import(\"../../Shaders/iblVoxelSlabDebug.vertex\")]);\r\n }\r\n },\r\n });\r\n }\r\n\r\n private _setDebugBindings() {\r\n this._voxelSlabDebugMaterial.setMatrix(\"projection\", this._scene.activeCamera!.getProjectionMatrix());\r\n this._voxelSlabDebugMaterial.setMatrix(\"cameraViewMatrix\", this._scene.activeCamera!.getViewMatrix());\r\n }\r\n\r\n /**\r\n * Checks if the voxel renderer is ready to voxelize scene\r\n * @returns true if the voxel renderer is ready to voxelize scene\r\n */\r\n public isReady() {\r\n let allReady = this.getVoxelGrid().isReady();\r\n for (let i = 0; i < this._mipArray.length; i++) {\r\n const mipReady = this._mipArray[i].isReady();\r\n allReady &&= mipReady;\r\n }\r\n\r\n if (!allReady || this._voxelizationInProgress) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * If the MRT's are already in the list of render targets, this will\r\n * remove them so that they don't get rendered again.\r\n */\r\n private _stopVoxelization() {\r\n // If the MRT's are already in the list of render targets, remove them.\r\n this._removeVoxelRTs(this._voxelMrtsXaxis);\r\n this._removeVoxelRTs(this._voxelMrtsYaxis);\r\n this._removeVoxelRTs(this._voxelMrtsZaxis);\r\n }\r\n\r\n private _removeVoxelRTs(rts: RenderTargetTexture[]) {\r\n // const currentRTs = this._scene.customRenderTargets;\r\n const rtIdx = this._renderTargets.findIndex((rt) => {\r\n if (rt === rts[0]) return true;\r\n return false;\r\n });\r\n if (rtIdx >= 0) {\r\n this._renderTargets.splice(rtIdx, rts.length);\r\n } else {\r\n const rtIdx = this._scene.customRenderTargets.findIndex((rt) => {\r\n if (rt === rts[0]) return true;\r\n return false;\r\n });\r\n if (rtIdx >= 0) {\r\n this._scene.customRenderTargets.splice(rtIdx, rts.length);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Renders voxel grid of scene for IBL shadows\r\n * @param includedMeshes\r\n */\r\n public updateVoxelGrid(includedMeshes: Mesh[]) {\r\n this._stopVoxelization();\r\n this._includedMeshes = includedMeshes;\r\n this._voxelizationInProgress = true;\r\n\r\n if (this._triPlanarVoxelization) {\r\n this._addRTsForRender(this._voxelMrtsXaxis, includedMeshes, 0);\r\n this._addRTsForRender(this._voxelMrtsYaxis, includedMeshes, 1);\r\n this._addRTsForRender(this._voxelMrtsZaxis, includedMeshes, 2);\r\n } else {\r\n this._addRTsForRender(this._voxelMrtsZaxis, includedMeshes, 2);\r\n }\r\n if (this._voxelDebugEnabled) {\r\n this._addRTsForRender([this._voxelSlabDebugRT], includedMeshes, this._voxelDebugAxis, 1, true);\r\n }\r\n this._renderVoxelGridBound = this._renderVoxelGrid.bind(this);\r\n this._scene.onAfterRenderObservable.add(this._renderVoxelGridBound);\r\n }\r\n\r\n private _renderVoxelGridBound: () => void;\r\n\r\n private _renderVoxelGrid() {\r\n if (this._voxelizationInProgress) {\r\n let allReady = this.getVoxelGrid().isReady();\r\n for (let i = 0; i < this._mipArray.length; i++) {\r\n const mipReady = this._mipArray[i].isReady();\r\n allReady &&= mipReady;\r\n }\r\n for (let i = 0; i < this._renderTargets.length; i++) {\r\n const rttReady = this._renderTargets[i].isReadyForRendering();\r\n allReady &&= rttReady;\r\n }\r\n if (allReady) {\r\n this._renderTargets.forEach((rt) => {\r\n rt.render();\r\n });\r\n this._stopVoxelization();\r\n\r\n if (this._triPlanarVoxelization) {\r\n this._voxelGridRT.render();\r\n }\r\n this._generateMipMaps();\r\n this._copyMipEffectWrapper.effect.whenCompiledAsync().then(() => {\r\n this._copyMipMaps();\r\n this._scene.onAfterRenderObservable.removeCallback(this._renderVoxelGridBound);\r\n this._voxelizationInProgress = false;\r\n this.onVoxelizationCompleteObservable.notifyObservers();\r\n });\r\n }\r\n }\r\n }\r\n\r\n private _addRTsForRender(mrts: RenderTargetTexture[], includedMeshes: Mesh[], axis: number, shaderType: number = 0, continuousRender: boolean = false) {\r\n const slabSize = 1.0 / this._computeNumberOfSlabs();\r\n let voxelMaterial: ShaderMaterial;\r\n if (shaderType === 0) {\r\n voxelMaterial = this._voxelMaterial;\r\n } else {\r\n voxelMaterial = this._voxelSlabDebugMaterial;\r\n }\r\n\r\n // We need to update the world scale uniform for every mesh being rendered to the voxel grid.\r\n mrts.forEach((mrt, mrtIndex) => {\r\n mrt.renderList = [];\r\n const nearPlane = mrtIndex * slabSize;\r\n const farPlane = (mrtIndex + 1) * slabSize;\r\n const stepSize = slabSize / this._maxDrawBuffers;\r\n\r\n const cameraPosition = new Vector3(0, 0, 0);\r\n let targetPosition = new Vector3(0, 0, 1);\r\n if (axis === 0) {\r\n targetPosition = new Vector3(1, 0, 0);\r\n } else if (axis === 1) {\r\n targetPosition = new Vector3(0, 1, 0);\r\n }\r\n let upDirection = new Vector3(0, 1, 0);\r\n if (axis === 1) {\r\n upDirection = new Vector3(1, 0, 0);\r\n }\r\n mrt.onBeforeRenderObservable.add(() => {\r\n voxelMaterial.setMatrix(\"viewMatrix\", Matrix.LookAtLH(cameraPosition, targetPosition, upDirection));\r\n voxelMaterial.setMatrix(\"invWorldScale\", this._invWorldScaleMatrix);\r\n voxelMaterial.setFloat(\"nearPlane\", nearPlane);\r\n voxelMaterial.setFloat(\"farPlane\", farPlane);\r\n voxelMaterial.setFloat(\"stepSize\", stepSize);\r\n });\r\n\r\n // Set this material on every mesh in the scene (for this RT)\r\n if (includedMeshes.length === 0) {\r\n return;\r\n }\r\n includedMeshes.forEach((mesh) => {\r\n if (mesh) {\r\n if (mesh.subMeshes && mesh.subMeshes.length > 0) {\r\n mrt.renderList?.push(mesh);\r\n mrt.setMaterialForRendering(mesh, voxelMaterial);\r\n }\r\n mesh.getChildMeshes().forEach((childMesh) => {\r\n if (childMesh.subMeshes && childMesh.subMeshes.length > 0) {\r\n mrt.renderList?.push(childMesh);\r\n mrt.setMaterialForRendering(childMesh, voxelMaterial);\r\n }\r\n });\r\n }\r\n });\r\n });\r\n\r\n // Add the MRT's to render.\r\n if (continuousRender) {\r\n mrts.forEach((mrt) => {\r\n if (this._scene.customRenderTargets.indexOf(mrt) === -1) {\r\n this._scene.customRenderTargets.push(mrt);\r\n }\r\n });\r\n } else {\r\n this._renderTargets = this._renderTargets.concat(mrts);\r\n }\r\n }\r\n\r\n /**\r\n * Called by the pipeline to resize resources.\r\n */\r\n public resize() {\r\n this._voxelSlabDebugRT?.resize({ width: this._scene.getEngine().getRenderWidth(), height: this._scene.getEngine().getRenderHeight() });\r\n }\r\n\r\n /**\r\n * Disposes the voxel renderer and associated resources\r\n */\r\n public dispose() {\r\n this._disposeVoxelTextures();\r\n if (this._voxelSlabDebugRT) {\r\n this._removeVoxelRTs([this._voxelSlabDebugRT]);\r\n this._voxelSlabDebugRT.dispose();\r\n }\r\n if (this._voxelDebugPass) {\r\n this._voxelDebugPass.dispose();\r\n }\r\n // TODO - dispose all created voxel materials.\r\n }\r\n}\r\n"]}
@@ -102,7 +102,11 @@ export class SubSurfaceConfiguration {
102
102
  * @returns The created post process
103
103
  */
104
104
  createPostProcess() {
105
- this.postProcess = new SubSurfaceScatteringPostProcess("subSurfaceScattering", this._scene, 1, null, undefined, this._scene.getEngine());
105
+ this.postProcess = new SubSurfaceScatteringPostProcess("subSurfaceScattering", this._scene, {
106
+ size: 1,
107
+ engine: this._scene.getEngine(),
108
+ shaderLanguage: this._scene.getEngine().isWebGPU ? 1 /* ShaderLanguage.WGSL */ : 0 /* ShaderLanguage.GLSL */,
109
+ });
106
110
  this.postProcess.autoClear = false;
107
111
  return this.postProcess;
108
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"subSurfaceConfiguration.js","sourceRoot":"","sources":["../../../../dev/core/src/Rendering/subSurfaceConfiguration.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from \"../Misc/logger\";\r\nimport type { Scene } from \"../scene\";\r\nimport { Color3 } from \"../Maths/math.color\";\r\nimport { SubSurfaceScatteringPostProcess } from \"../PostProcesses/subSurfaceScatteringPostProcess\";\r\nimport { SceneComponentConstants } from \"../sceneComponent\";\r\nimport type { PrePassEffectConfiguration } from \"./prePassEffectConfiguration\";\r\nimport { _WarnImport } from \"../Misc/devTools\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\n/**\r\n * Contains all parameters needed for the prepass to perform\r\n * screen space subsurface scattering\r\n */\r\nexport class SubSurfaceConfiguration implements PrePassEffectConfiguration {\r\n /**\r\n * @internal\r\n */\r\n public static _SceneComponentInitialization: (scene: Scene) => void = (_) => {\r\n throw _WarnImport(\"SubSurfaceSceneComponent\");\r\n };\r\n\r\n private _ssDiffusionS: number[] = [];\r\n private _ssFilterRadii: number[] = [];\r\n private _ssDiffusionD: number[] = [];\r\n\r\n /**\r\n * Post process to attach for screen space subsurface scattering\r\n */\r\n public postProcess: SubSurfaceScatteringPostProcess;\r\n\r\n /**\r\n * Diffusion profile color for subsurface scattering\r\n */\r\n public get ssDiffusionS() {\r\n return this._ssDiffusionS;\r\n }\r\n\r\n /**\r\n * Diffusion profile max color channel value for subsurface scattering\r\n */\r\n public get ssDiffusionD() {\r\n return this._ssDiffusionD;\r\n }\r\n\r\n /**\r\n * Diffusion profile filter radius for subsurface scattering\r\n */\r\n public get ssFilterRadii() {\r\n return this._ssFilterRadii;\r\n }\r\n\r\n /**\r\n * Is subsurface enabled\r\n */\r\n public enabled = false;\r\n\r\n /**\r\n * Does the output of this prepass need to go through imageprocessing\r\n */\r\n public needsImageProcessing = true;\r\n\r\n /**\r\n * Name of the configuration\r\n */\r\n public name = SceneComponentConstants.NAME_SUBSURFACE;\r\n\r\n /**\r\n * Diffusion profile colors for subsurface scattering\r\n * You can add one diffusion color using `addDiffusionProfile` on `scene.prePassRenderer`\r\n * See ...\r\n * Note that you can only store up to 5 of them\r\n */\r\n public ssDiffusionProfileColors: Color3[] = [];\r\n\r\n /**\r\n * Defines the ratio real world => scene units.\r\n * Used for subsurface scattering\r\n */\r\n public metersPerUnit: number = 1;\r\n\r\n /**\r\n * Textures that should be present in the MRT for this effect to work\r\n */\r\n public readonly texturesRequired: number[] = [\r\n Constants.PREPASS_DEPTH_TEXTURE_TYPE,\r\n Constants.PREPASS_ALBEDO_SQRT_TEXTURE_TYPE,\r\n Constants.PREPASS_COLOR_TEXTURE_TYPE,\r\n Constants.PREPASS_IRRADIANCE_TEXTURE_TYPE,\r\n ];\r\n\r\n private _scene: Scene;\r\n\r\n /**\r\n * Builds a subsurface configuration object\r\n * @param scene The scene\r\n */\r\n constructor(scene: Scene) {\r\n // Adding default diffusion profile\r\n this.addDiffusionProfile(new Color3(1, 1, 1));\r\n this._scene = scene;\r\n\r\n SubSurfaceConfiguration._SceneComponentInitialization(this._scene);\r\n }\r\n\r\n /**\r\n * Adds a new diffusion profile.\r\n * Useful for more realistic subsurface scattering on diverse materials.\r\n * @param color The color of the diffusion profile. Should be the average color of the material.\r\n * @returns The index of the diffusion profile for the material subsurface configuration\r\n */\r\n public addDiffusionProfile(color: Color3): number {\r\n if (this.ssDiffusionD.length >= 5) {\r\n // We only suppport 5 diffusion profiles\r\n Logger.Error(\"You already reached the maximum number of diffusion profiles.\");\r\n return 0; // default profile\r\n }\r\n\r\n // Do not add doubles\r\n for (let i = 0; i < this._ssDiffusionS.length / 3; i++) {\r\n if (this._ssDiffusionS[i * 3] === color.r && this._ssDiffusionS[i * 3 + 1] === color.g && this._ssDiffusionS[i * 3 + 2] === color.b) {\r\n return i;\r\n }\r\n }\r\n\r\n this._ssDiffusionS.push(color.r, color.b, color.g);\r\n this._ssDiffusionD.push(Math.max(Math.max(color.r, color.b), color.g));\r\n this._ssFilterRadii.push(this.getDiffusionProfileParameters(color));\r\n this.ssDiffusionProfileColors.push(color);\r\n\r\n return this._ssDiffusionD.length - 1;\r\n }\r\n\r\n /**\r\n * Creates the sss post process\r\n * @returns The created post process\r\n */\r\n public createPostProcess(): SubSurfaceScatteringPostProcess {\r\n this.postProcess = new SubSurfaceScatteringPostProcess(\"subSurfaceScattering\", this._scene, 1, null, undefined, this._scene.getEngine());\r\n this.postProcess.autoClear = false;\r\n\r\n return this.postProcess;\r\n }\r\n\r\n /**\r\n * Deletes all diffusion profiles.\r\n * Note that in order to render subsurface scattering, you should have at least 1 diffusion profile.\r\n */\r\n public clearAllDiffusionProfiles() {\r\n this._ssDiffusionD = [];\r\n this._ssDiffusionS = [];\r\n this._ssFilterRadii = [];\r\n this.ssDiffusionProfileColors = [];\r\n }\r\n\r\n /**\r\n * Disposes this object\r\n */\r\n public dispose() {\r\n this.clearAllDiffusionProfiles();\r\n if (this.postProcess) {\r\n this.postProcess.dispose();\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n * https://zero-radiance.github.io/post/sampling-diffusion/\r\n *\r\n * Importance sample the normalized diffuse reflectance profile for the computed value of 's'.\r\n * ------------------------------------------------------------------------------------\r\n * R[r, phi, s] = s * (Exp[-r * s] + Exp[-r * s / 3]) / (8 * Pi * r)\r\n * PDF[r, phi, s] = r * R[r, phi, s]\r\n * CDF[r, s] = 1 - 1/4 * Exp[-r * s] - 3/4 * Exp[-r * s / 3]\r\n * ------------------------------------------------------------------------------------\r\n * We importance sample the color channel with the widest scattering distance.\r\n */\r\n public getDiffusionProfileParameters(color: Color3) {\r\n const cdf = 0.997;\r\n const maxScatteringDistance = Math.max(color.r, color.g, color.b);\r\n\r\n return this._sampleBurleyDiffusionProfile(cdf, maxScatteringDistance);\r\n }\r\n\r\n /**\r\n * Performs sampling of a Normalized Burley diffusion profile in polar coordinates.\r\n * 'u' is the random number (the value of the CDF): [0, 1).\r\n * rcp(s) = 1 / ShapeParam = ScatteringDistance.\r\n * Returns the sampled radial distance, s.t. (u = 0 -> r = 0) and (u = 1 -> r = Inf).\r\n * @param u\r\n * @param rcpS\r\n * @returns The sampled radial distance\r\n */\r\n private _sampleBurleyDiffusionProfile(u: number, rcpS: number) {\r\n u = 1 - u; // Convert CDF to CCDF\r\n\r\n const g = 1 + 4 * u * (2 * u + Math.sqrt(1 + 4 * u * u));\r\n const n = Math.pow(g, -1.0 / 3.0); // g^(-1/3)\r\n const p = g * n * n; // g^(+1/3)\r\n const c = 1 + p + n; // 1 + g^(+1/3) + g^(-1/3)\r\n const x = 3 * Math.log(c / (4 * u));\r\n\r\n return x * rcpS;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"subSurfaceConfiguration.js","sourceRoot":"","sources":["../../../../dev/core/src/Rendering/subSurfaceConfiguration.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from \"../Misc/logger\";\r\nimport type { Scene } from \"../scene\";\r\nimport { Color3 } from \"../Maths/math.color\";\r\nimport { SubSurfaceScatteringPostProcess } from \"../PostProcesses/subSurfaceScatteringPostProcess\";\r\nimport { SceneComponentConstants } from \"../sceneComponent\";\r\nimport type { PrePassEffectConfiguration } from \"./prePassEffectConfiguration\";\r\nimport { _WarnImport } from \"../Misc/devTools\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Contains all parameters needed for the prepass to perform\r\n * screen space subsurface scattering\r\n */\r\nexport class SubSurfaceConfiguration implements PrePassEffectConfiguration {\r\n /**\r\n * @internal\r\n */\r\n public static _SceneComponentInitialization: (scene: Scene) => void = (_) => {\r\n throw _WarnImport(\"SubSurfaceSceneComponent\");\r\n };\r\n\r\n private _ssDiffusionS: number[] = [];\r\n private _ssFilterRadii: number[] = [];\r\n private _ssDiffusionD: number[] = [];\r\n\r\n /**\r\n * Post process to attach for screen space subsurface scattering\r\n */\r\n public postProcess: SubSurfaceScatteringPostProcess;\r\n\r\n /**\r\n * Diffusion profile color for subsurface scattering\r\n */\r\n public get ssDiffusionS() {\r\n return this._ssDiffusionS;\r\n }\r\n\r\n /**\r\n * Diffusion profile max color channel value for subsurface scattering\r\n */\r\n public get ssDiffusionD() {\r\n return this._ssDiffusionD;\r\n }\r\n\r\n /**\r\n * Diffusion profile filter radius for subsurface scattering\r\n */\r\n public get ssFilterRadii() {\r\n return this._ssFilterRadii;\r\n }\r\n\r\n /**\r\n * Is subsurface enabled\r\n */\r\n public enabled = false;\r\n\r\n /**\r\n * Does the output of this prepass need to go through imageprocessing\r\n */\r\n public needsImageProcessing = true;\r\n\r\n /**\r\n * Name of the configuration\r\n */\r\n public name = SceneComponentConstants.NAME_SUBSURFACE;\r\n\r\n /**\r\n * Diffusion profile colors for subsurface scattering\r\n * You can add one diffusion color using `addDiffusionProfile` on `scene.prePassRenderer`\r\n * See ...\r\n * Note that you can only store up to 5 of them\r\n */\r\n public ssDiffusionProfileColors: Color3[] = [];\r\n\r\n /**\r\n * Defines the ratio real world => scene units.\r\n * Used for subsurface scattering\r\n */\r\n public metersPerUnit: number = 1;\r\n\r\n /**\r\n * Textures that should be present in the MRT for this effect to work\r\n */\r\n public readonly texturesRequired: number[] = [\r\n Constants.PREPASS_DEPTH_TEXTURE_TYPE,\r\n Constants.PREPASS_ALBEDO_SQRT_TEXTURE_TYPE,\r\n Constants.PREPASS_COLOR_TEXTURE_TYPE,\r\n Constants.PREPASS_IRRADIANCE_TEXTURE_TYPE,\r\n ];\r\n\r\n private _scene: Scene;\r\n\r\n /**\r\n * Builds a subsurface configuration object\r\n * @param scene The scene\r\n */\r\n constructor(scene: Scene) {\r\n // Adding default diffusion profile\r\n this.addDiffusionProfile(new Color3(1, 1, 1));\r\n this._scene = scene;\r\n\r\n SubSurfaceConfiguration._SceneComponentInitialization(this._scene);\r\n }\r\n\r\n /**\r\n * Adds a new diffusion profile.\r\n * Useful for more realistic subsurface scattering on diverse materials.\r\n * @param color The color of the diffusion profile. Should be the average color of the material.\r\n * @returns The index of the diffusion profile for the material subsurface configuration\r\n */\r\n public addDiffusionProfile(color: Color3): number {\r\n if (this.ssDiffusionD.length >= 5) {\r\n // We only suppport 5 diffusion profiles\r\n Logger.Error(\"You already reached the maximum number of diffusion profiles.\");\r\n return 0; // default profile\r\n }\r\n\r\n // Do not add doubles\r\n for (let i = 0; i < this._ssDiffusionS.length / 3; i++) {\r\n if (this._ssDiffusionS[i * 3] === color.r && this._ssDiffusionS[i * 3 + 1] === color.g && this._ssDiffusionS[i * 3 + 2] === color.b) {\r\n return i;\r\n }\r\n }\r\n\r\n this._ssDiffusionS.push(color.r, color.b, color.g);\r\n this._ssDiffusionD.push(Math.max(Math.max(color.r, color.b), color.g));\r\n this._ssFilterRadii.push(this.getDiffusionProfileParameters(color));\r\n this.ssDiffusionProfileColors.push(color);\r\n\r\n return this._ssDiffusionD.length - 1;\r\n }\r\n\r\n /**\r\n * Creates the sss post process\r\n * @returns The created post process\r\n */\r\n public createPostProcess(): SubSurfaceScatteringPostProcess {\r\n this.postProcess = new SubSurfaceScatteringPostProcess(\"subSurfaceScattering\", this._scene, {\r\n size: 1,\r\n engine: this._scene.getEngine(),\r\n shaderLanguage: this._scene.getEngine().isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n });\r\n this.postProcess.autoClear = false;\r\n\r\n return this.postProcess;\r\n }\r\n\r\n /**\r\n * Deletes all diffusion profiles.\r\n * Note that in order to render subsurface scattering, you should have at least 1 diffusion profile.\r\n */\r\n public clearAllDiffusionProfiles() {\r\n this._ssDiffusionD = [];\r\n this._ssDiffusionS = [];\r\n this._ssFilterRadii = [];\r\n this.ssDiffusionProfileColors = [];\r\n }\r\n\r\n /**\r\n * Disposes this object\r\n */\r\n public dispose() {\r\n this.clearAllDiffusionProfiles();\r\n if (this.postProcess) {\r\n this.postProcess.dispose();\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n * https://zero-radiance.github.io/post/sampling-diffusion/\r\n *\r\n * Importance sample the normalized diffuse reflectance profile for the computed value of 's'.\r\n * ------------------------------------------------------------------------------------\r\n * R[r, phi, s] = s * (Exp[-r * s] + Exp[-r * s / 3]) / (8 * Pi * r)\r\n * PDF[r, phi, s] = r * R[r, phi, s]\r\n * CDF[r, s] = 1 - 1/4 * Exp[-r * s] - 3/4 * Exp[-r * s / 3]\r\n * ------------------------------------------------------------------------------------\r\n * We importance sample the color channel with the widest scattering distance.\r\n */\r\n public getDiffusionProfileParameters(color: Color3) {\r\n const cdf = 0.997;\r\n const maxScatteringDistance = Math.max(color.r, color.g, color.b);\r\n\r\n return this._sampleBurleyDiffusionProfile(cdf, maxScatteringDistance);\r\n }\r\n\r\n /**\r\n * Performs sampling of a Normalized Burley diffusion profile in polar coordinates.\r\n * 'u' is the random number (the value of the CDF): [0, 1).\r\n * rcp(s) = 1 / ShapeParam = ScatteringDistance.\r\n * Returns the sampled radial distance, s.t. (u = 0 -> r = 0) and (u = 1 -> r = Inf).\r\n * @param u\r\n * @param rcpS\r\n * @returns The sampled radial distance\r\n */\r\n private _sampleBurleyDiffusionProfile(u: number, rcpS: number) {\r\n u = 1 - u; // Convert CDF to CCDF\r\n\r\n const g = 1 + 4 * u * (2 * u + Math.sqrt(1 + 4 * u * u));\r\n const n = Math.pow(g, -1.0 / 3.0); // g^(-1/3)\r\n const p = g * n * n; // g^(+1/3)\r\n const c = 1 + p + n; // 1 + g^(+1/3) + g^(-1/3)\r\n const x = 3 * Math.log(c / (4 * u));\r\n\r\n return x * rcpS;\r\n }\r\n}\r\n"]}
@@ -26,7 +26,9 @@ uniform vec2 projectedGroundInfos;
26
26
  #endif
27
27
  `;
28
28
  // Sideeffect
29
- ShaderStore.IncludesShadersStore[name] = shader;
29
+ if (!ShaderStore.IncludesShadersStore[name]) {
30
+ ShaderStore.IncludesShadersStore[name] = shader;
31
+ }
30
32
  /** @internal */
31
33
  export const backgroundFragmentDeclaration = { name, shader };
32
34
  //# sourceMappingURL=backgroundFragmentDeclaration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"backgroundFragmentDeclaration.js","sourceRoot":"","sources":["../../../../../dev/core/src/Shaders/ShadersInclude/backgroundFragmentDeclaration.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,+BAA+B,CAAC;AAC7C,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;CAuBd,CAAC;AACF,aAAa;AACb,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAChD,gBAAgB;AAChB,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\n\nconst name = \"backgroundFragmentDeclaration\";\nconst shader = `uniform vec4 vEyePosition;uniform vec4 vPrimaryColor;\n#ifdef USEHIGHLIGHTANDSHADOWCOLORS\nuniform vec4 vPrimaryColorShadow;\n#endif\nuniform float shadowLevel;uniform float alpha;\n#ifdef DIFFUSE\nuniform vec2 vDiffuseInfos;\n#endif\n#ifdef REFLECTION\nuniform vec2 vReflectionInfos;uniform mat4 reflectionMatrix;uniform vec3 vReflectionMicrosurfaceInfos;\n#endif\n#if defined(REFLECTIONFRESNEL) || defined(OPACITYFRESNEL)\nuniform vec3 vBackgroundCenter;\n#endif\n#ifdef REFLECTIONFRESNEL\nuniform vec4 vReflectionControl;\n#endif\n#if defined(REFLECTIONMAP_SPHERICAL) || defined(REFLECTIONMAP_PROJECTION) || defined(REFRACTION)\nuniform mat4 view;\n#endif\n#ifdef PROJECTED_GROUND\nuniform vec2 projectedGroundInfos;\n#endif\n`;\n// Sideeffect\nShaderStore.IncludesShadersStore[name] = shader;\n/** @internal */\nexport const backgroundFragmentDeclaration = { name, shader };\n"]}
1
+ {"version":3,"file":"backgroundFragmentDeclaration.js","sourceRoot":"","sources":["../../../../../dev/core/src/Shaders/ShadersInclude/backgroundFragmentDeclaration.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,+BAA+B,CAAC;AAC7C,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;CAuBd,CAAC;AACF,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1C,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACpD,CAAC;AACD,gBAAgB;AAChB,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\n\nconst name = \"backgroundFragmentDeclaration\";\nconst shader = `uniform vec4 vEyePosition;uniform vec4 vPrimaryColor;\n#ifdef USEHIGHLIGHTANDSHADOWCOLORS\nuniform vec4 vPrimaryColorShadow;\n#endif\nuniform float shadowLevel;uniform float alpha;\n#ifdef DIFFUSE\nuniform vec2 vDiffuseInfos;\n#endif\n#ifdef REFLECTION\nuniform vec2 vReflectionInfos;uniform mat4 reflectionMatrix;uniform vec3 vReflectionMicrosurfaceInfos;\n#endif\n#if defined(REFLECTIONFRESNEL) || defined(OPACITYFRESNEL)\nuniform vec3 vBackgroundCenter;\n#endif\n#ifdef REFLECTIONFRESNEL\nuniform vec4 vReflectionControl;\n#endif\n#if defined(REFLECTIONMAP_SPHERICAL) || defined(REFLECTIONMAP_PROJECTION) || defined(REFRACTION)\nuniform mat4 view;\n#endif\n#ifdef PROJECTED_GROUND\nuniform vec2 projectedGroundInfos;\n#endif\n`;\n// Sideeffect\nif (!ShaderStore.IncludesShadersStore[name]) {\n ShaderStore.IncludesShadersStore[name] = shader;\n}\n/** @internal */\nexport const backgroundFragmentDeclaration = { name, shader };\n"]}
@@ -7,7 +7,9 @@ const shader = `layout(std140,column_major) uniform;uniform Material
7
7
  #include<sceneUboDeclaration>
8
8
  `;
9
9
  // Sideeffect
10
- ShaderStore.IncludesShadersStore[name] = shader;
10
+ if (!ShaderStore.IncludesShadersStore[name]) {
11
+ ShaderStore.IncludesShadersStore[name] = shader;
12
+ }
11
13
  /** @internal */
12
14
  export const backgroundUboDeclaration = { name, shader };
13
15
  //# sourceMappingURL=backgroundUboDeclaration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"backgroundUboDeclaration.js","sourceRoot":"","sources":["../../../../../dev/core/src/Shaders/ShadersInclude/backgroundUboDeclaration.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,uBAAuB,CAAC;AAE/B,MAAM,IAAI,GAAG,0BAA0B,CAAC;AACxC,MAAM,MAAM,GAAG;;;CAGd,CAAC;AACF,aAAa;AACb,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAChD,gBAAgB;AAChB,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\nimport \"./sceneUboDeclaration\";\n\nconst name = \"backgroundUboDeclaration\";\nconst shader = `layout(std140,column_major) uniform;uniform Material\n{uniform vec4 vPrimaryColor;uniform vec4 vPrimaryColorShadow;uniform vec2 vDiffuseInfos;uniform vec2 vReflectionInfos;uniform mat4 diffuseMatrix;uniform mat4 reflectionMatrix;uniform vec3 vReflectionMicrosurfaceInfos;uniform float fFovMultiplier;uniform float pointSize;uniform float shadowLevel;uniform float alpha;uniform vec3 vBackgroundCenter;uniform vec4 vReflectionControl;uniform vec2 projectedGroundInfos;};\n#include<sceneUboDeclaration>\n`;\n// Sideeffect\nShaderStore.IncludesShadersStore[name] = shader;\n/** @internal */\nexport const backgroundUboDeclaration = { name, shader };\n"]}
1
+ {"version":3,"file":"backgroundUboDeclaration.js","sourceRoot":"","sources":["../../../../../dev/core/src/Shaders/ShadersInclude/backgroundUboDeclaration.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,uBAAuB,CAAC;AAE/B,MAAM,IAAI,GAAG,0BAA0B,CAAC;AACxC,MAAM,MAAM,GAAG;;;CAGd,CAAC;AACF,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1C,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACpD,CAAC;AACD,gBAAgB;AAChB,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\nimport \"./sceneUboDeclaration\";\n\nconst name = \"backgroundUboDeclaration\";\nconst shader = `layout(std140,column_major) uniform;uniform Material\n{uniform vec4 vPrimaryColor;uniform vec4 vPrimaryColorShadow;uniform vec2 vDiffuseInfos;uniform vec2 vReflectionInfos;uniform mat4 diffuseMatrix;uniform mat4 reflectionMatrix;uniform vec3 vReflectionMicrosurfaceInfos;uniform float fFovMultiplier;uniform float pointSize;uniform float shadowLevel;uniform float alpha;uniform vec3 vBackgroundCenter;uniform vec4 vReflectionControl;uniform vec2 projectedGroundInfos;};\n#include<sceneUboDeclaration>\n`;\n// Sideeffect\nif (!ShaderStore.IncludesShadersStore[name]) {\n ShaderStore.IncludesShadersStore[name] = shader;\n}\n/** @internal */\nexport const backgroundUboDeclaration = { name, shader };\n"]}
@@ -17,7 +17,9 @@ uniform float pointSize;
17
17
  #endif
18
18
  `;
19
19
  // Sideeffect
20
- ShaderStore.IncludesShadersStore[name] = shader;
20
+ if (!ShaderStore.IncludesShadersStore[name]) {
21
+ ShaderStore.IncludesShadersStore[name] = shader;
22
+ }
21
23
  /** @internal */
22
24
  export const backgroundVertexDeclaration = { name, shader };
23
25
  //# sourceMappingURL=backgroundVertexDeclaration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"backgroundVertexDeclaration.js","sourceRoot":"","sources":["../../../../../dev/core/src/Shaders/ShadersInclude/backgroundVertexDeclaration.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,6BAA6B,CAAC;AAC3C,MAAM,MAAM,GAAG;;;;;;;;;;;;;;CAcd,CAAC;AACF,aAAa;AACb,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAChD,gBAAgB;AAChB,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\n\nconst name = \"backgroundVertexDeclaration\";\nconst shader = `uniform mat4 view;uniform mat4 viewProjection;\n#ifdef MULTIVIEW\nuniform mat4 viewProjectionR;\n#endif\nuniform float shadowLevel;\n#ifdef DIFFUSE\nuniform mat4 diffuseMatrix;uniform vec2 vDiffuseInfos;\n#endif\n#ifdef REFLECTION\nuniform vec2 vReflectionInfos;uniform mat4 reflectionMatrix;uniform vec3 vReflectionMicrosurfaceInfos;uniform float fFovMultiplier;\n#endif\n#ifdef POINTSIZE\nuniform float pointSize;\n#endif\n`;\n// Sideeffect\nShaderStore.IncludesShadersStore[name] = shader;\n/** @internal */\nexport const backgroundVertexDeclaration = { name, shader };\n"]}
1
+ {"version":3,"file":"backgroundVertexDeclaration.js","sourceRoot":"","sources":["../../../../../dev/core/src/Shaders/ShadersInclude/backgroundVertexDeclaration.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,6BAA6B,CAAC;AAC3C,MAAM,MAAM,GAAG;;;;;;;;;;;;;;CAcd,CAAC;AACF,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1C,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACpD,CAAC;AACD,gBAAgB;AAChB,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\n\nconst name = \"backgroundVertexDeclaration\";\nconst shader = `uniform mat4 view;uniform mat4 viewProjection;\n#ifdef MULTIVIEW\nuniform mat4 viewProjectionR;\n#endif\nuniform float shadowLevel;\n#ifdef DIFFUSE\nuniform mat4 diffuseMatrix;uniform vec2 vDiffuseInfos;\n#endif\n#ifdef REFLECTION\nuniform vec2 vReflectionInfos;uniform mat4 reflectionMatrix;uniform vec3 vReflectionMicrosurfaceInfos;uniform float fFovMultiplier;\n#endif\n#ifdef POINTSIZE\nuniform float pointSize;\n#endif\n`;\n// Sideeffect\nif (!ShaderStore.IncludesShadersStore[name]) {\n ShaderStore.IncludesShadersStore[name] = shader;\n}\n/** @internal */\nexport const backgroundVertexDeclaration = { name, shader };\n"]}
@@ -34,7 +34,9 @@ finalWorld=finalWorld*VATInfluence;}
34
34
  #endif
35
35
  `;
36
36
  // Sideeffect
37
- ShaderStore.IncludesShadersStore[name] = shader;
37
+ if (!ShaderStore.IncludesShadersStore[name]) {
38
+ ShaderStore.IncludesShadersStore[name] = shader;
39
+ }
38
40
  /** @internal */
39
41
  export const bakedVertexAnimation = { name, shader };
40
42
  //# sourceMappingURL=bakedVertexAnimation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bakedVertexAnimation.js","sourceRoot":"","sources":["../../../../../dev/core/src/Shaders/ShadersInclude/bakedVertexAnimation.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,sBAAsB,CAAC;AACpC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Bd,CAAC;AACF,aAAa;AACb,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAChD,gBAAgB;AAChB,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\n\nconst name = \"bakedVertexAnimation\";\nconst shader = `#ifdef BAKED_VERTEX_ANIMATION_TEXTURE\n{\n#ifdef INSTANCES\n#define BVASNAME bakedVertexAnimationSettingsInstanced\n#else\n#define BVASNAME bakedVertexAnimationSettings\n#endif\nfloat VATStartFrame=BVASNAME.x;float VATEndFrame=BVASNAME.y;float VATOffsetFrame=BVASNAME.z;float VATSpeed=BVASNAME.w;float totalFrames=VATEndFrame-VATStartFrame+1.0;float time=bakedVertexAnimationTime*VATSpeed/totalFrames;float frameCorrection=time<1.0 ? 0.0 : 1.0;float numOfFrames=totalFrames-frameCorrection;float VATFrameNum=fract(time)*numOfFrames;VATFrameNum=mod(VATFrameNum+VATOffsetFrame,numOfFrames);VATFrameNum=floor(VATFrameNum);VATFrameNum+=VATStartFrame+frameCorrection;mat4 VATInfluence;VATInfluence=readMatrixFromRawSamplerVAT(bakedVertexAnimationTexture,matricesIndices[0],VATFrameNum)*matricesWeights[0];\n#if NUM_BONE_INFLUENCERS>1\nVATInfluence+=readMatrixFromRawSamplerVAT(bakedVertexAnimationTexture,matricesIndices[1],VATFrameNum)*matricesWeights[1];\n#endif\n#if NUM_BONE_INFLUENCERS>2\nVATInfluence+=readMatrixFromRawSamplerVAT(bakedVertexAnimationTexture,matricesIndices[2],VATFrameNum)*matricesWeights[2];\n#endif\n#if NUM_BONE_INFLUENCERS>3\nVATInfluence+=readMatrixFromRawSamplerVAT(bakedVertexAnimationTexture,matricesIndices[3],VATFrameNum)*matricesWeights[3];\n#endif\n#if NUM_BONE_INFLUENCERS>4\nVATInfluence+=readMatrixFromRawSamplerVAT(bakedVertexAnimationTexture,matricesIndicesExtra[0],VATFrameNum)*matricesWeightsExtra[0];\n#endif\n#if NUM_BONE_INFLUENCERS>5\nVATInfluence+=readMatrixFromRawSamplerVAT(bakedVertexAnimationTexture,matricesIndicesExtra[1],VATFrameNum)*matricesWeightsExtra[1];\n#endif\n#if NUM_BONE_INFLUENCERS>6\nVATInfluence+=readMatrixFromRawSamplerVAT(bakedVertexAnimationTexture,matricesIndicesExtra[2],VATFrameNum)*matricesWeightsExtra[2];\n#endif\n#if NUM_BONE_INFLUENCERS>7\nVATInfluence+=readMatrixFromRawSamplerVAT(bakedVertexAnimationTexture,matricesIndicesExtra[3],VATFrameNum)*matricesWeightsExtra[3];\n#endif\nfinalWorld=finalWorld*VATInfluence;}\n#endif\n`;\n// Sideeffect\nShaderStore.IncludesShadersStore[name] = shader;\n/** @internal */\nexport const bakedVertexAnimation = { name, shader };\n"]}
1
+ {"version":3,"file":"bakedVertexAnimation.js","sourceRoot":"","sources":["../../../../../dev/core/src/Shaders/ShadersInclude/bakedVertexAnimation.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,sBAAsB,CAAC;AACpC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Bd,CAAC;AACF,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1C,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACpD,CAAC;AACD,gBAAgB;AAChB,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\n\nconst name = \"bakedVertexAnimation\";\nconst shader = `#ifdef BAKED_VERTEX_ANIMATION_TEXTURE\n{\n#ifdef INSTANCES\n#define BVASNAME bakedVertexAnimationSettingsInstanced\n#else\n#define BVASNAME bakedVertexAnimationSettings\n#endif\nfloat VATStartFrame=BVASNAME.x;float VATEndFrame=BVASNAME.y;float VATOffsetFrame=BVASNAME.z;float VATSpeed=BVASNAME.w;float totalFrames=VATEndFrame-VATStartFrame+1.0;float time=bakedVertexAnimationTime*VATSpeed/totalFrames;float frameCorrection=time<1.0 ? 0.0 : 1.0;float numOfFrames=totalFrames-frameCorrection;float VATFrameNum=fract(time)*numOfFrames;VATFrameNum=mod(VATFrameNum+VATOffsetFrame,numOfFrames);VATFrameNum=floor(VATFrameNum);VATFrameNum+=VATStartFrame+frameCorrection;mat4 VATInfluence;VATInfluence=readMatrixFromRawSamplerVAT(bakedVertexAnimationTexture,matricesIndices[0],VATFrameNum)*matricesWeights[0];\n#if NUM_BONE_INFLUENCERS>1\nVATInfluence+=readMatrixFromRawSamplerVAT(bakedVertexAnimationTexture,matricesIndices[1],VATFrameNum)*matricesWeights[1];\n#endif\n#if NUM_BONE_INFLUENCERS>2\nVATInfluence+=readMatrixFromRawSamplerVAT(bakedVertexAnimationTexture,matricesIndices[2],VATFrameNum)*matricesWeights[2];\n#endif\n#if NUM_BONE_INFLUENCERS>3\nVATInfluence+=readMatrixFromRawSamplerVAT(bakedVertexAnimationTexture,matricesIndices[3],VATFrameNum)*matricesWeights[3];\n#endif\n#if NUM_BONE_INFLUENCERS>4\nVATInfluence+=readMatrixFromRawSamplerVAT(bakedVertexAnimationTexture,matricesIndicesExtra[0],VATFrameNum)*matricesWeightsExtra[0];\n#endif\n#if NUM_BONE_INFLUENCERS>5\nVATInfluence+=readMatrixFromRawSamplerVAT(bakedVertexAnimationTexture,matricesIndicesExtra[1],VATFrameNum)*matricesWeightsExtra[1];\n#endif\n#if NUM_BONE_INFLUENCERS>6\nVATInfluence+=readMatrixFromRawSamplerVAT(bakedVertexAnimationTexture,matricesIndicesExtra[2],VATFrameNum)*matricesWeightsExtra[2];\n#endif\n#if NUM_BONE_INFLUENCERS>7\nVATInfluence+=readMatrixFromRawSamplerVAT(bakedVertexAnimationTexture,matricesIndicesExtra[3],VATFrameNum)*matricesWeightsExtra[3];\n#endif\nfinalWorld=finalWorld*VATInfluence;}\n#endif\n`;\n// Sideeffect\nif (!ShaderStore.IncludesShadersStore[name]) {\n ShaderStore.IncludesShadersStore[name] = shader;\n}\n/** @internal */\nexport const bakedVertexAnimation = { name, shader };\n"]}
@@ -12,7 +12,9 @@ mat4 readMatrixFromRawSamplerVAT(sampler2D smp,float index,float frame)
12
12
  #endif
13
13
  `;
14
14
  // Sideeffect
15
- ShaderStore.IncludesShadersStore[name] = shader;
15
+ if (!ShaderStore.IncludesShadersStore[name]) {
16
+ ShaderStore.IncludesShadersStore[name] = shader;
17
+ }
16
18
  /** @internal */
17
19
  export const bakedVertexAnimationDeclaration = { name, shader };
18
20
  //# sourceMappingURL=bakedVertexAnimationDeclaration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bakedVertexAnimationDeclaration.js","sourceRoot":"","sources":["../../../../../dev/core/src/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,iCAAiC,CAAC;AAC/C,MAAM,MAAM,GAAG;;;;;;;;;CASd,CAAC;AACF,aAAa;AACb,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAChD,gBAAgB;AAChB,MAAM,CAAC,MAAM,+BAA+B,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\n\nconst name = \"bakedVertexAnimationDeclaration\";\nconst shader = `#ifdef BAKED_VERTEX_ANIMATION_TEXTURE\nuniform float bakedVertexAnimationTime;uniform vec2 bakedVertexAnimationTextureSizeInverted;uniform vec4 bakedVertexAnimationSettings;uniform sampler2D bakedVertexAnimationTexture;\n#ifdef INSTANCES\nattribute vec4 bakedVertexAnimationSettingsInstanced;\n#endif\n#define inline\nmat4 readMatrixFromRawSamplerVAT(sampler2D smp,float index,float frame)\n{float offset=index*4.0;float frameUV=(frame+0.5)*bakedVertexAnimationTextureSizeInverted.y;float dx=bakedVertexAnimationTextureSizeInverted.x;vec4 m0=texture2D(smp,vec2(dx*(offset+0.5),frameUV));vec4 m1=texture2D(smp,vec2(dx*(offset+1.5),frameUV));vec4 m2=texture2D(smp,vec2(dx*(offset+2.5),frameUV));vec4 m3=texture2D(smp,vec2(dx*(offset+3.5),frameUV));return mat4(m0,m1,m2,m3);}\n#endif\n`;\n// Sideeffect\nShaderStore.IncludesShadersStore[name] = shader;\n/** @internal */\nexport const bakedVertexAnimationDeclaration = { name, shader };\n"]}
1
+ {"version":3,"file":"bakedVertexAnimationDeclaration.js","sourceRoot":"","sources":["../../../../../dev/core/src/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,iCAAiC,CAAC;AAC/C,MAAM,MAAM,GAAG;;;;;;;;;CASd,CAAC;AACF,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1C,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACpD,CAAC;AACD,gBAAgB;AAChB,MAAM,CAAC,MAAM,+BAA+B,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\n\nconst name = \"bakedVertexAnimationDeclaration\";\nconst shader = `#ifdef BAKED_VERTEX_ANIMATION_TEXTURE\nuniform float bakedVertexAnimationTime;uniform vec2 bakedVertexAnimationTextureSizeInverted;uniform vec4 bakedVertexAnimationSettings;uniform sampler2D bakedVertexAnimationTexture;\n#ifdef INSTANCES\nattribute vec4 bakedVertexAnimationSettingsInstanced;\n#endif\n#define inline\nmat4 readMatrixFromRawSamplerVAT(sampler2D smp,float index,float frame)\n{float offset=index*4.0;float frameUV=(frame+0.5)*bakedVertexAnimationTextureSizeInverted.y;float dx=bakedVertexAnimationTextureSizeInverted.x;vec4 m0=texture2D(smp,vec2(dx*(offset+0.5),frameUV));vec4 m1=texture2D(smp,vec2(dx*(offset+1.5),frameUV));vec4 m2=texture2D(smp,vec2(dx*(offset+2.5),frameUV));vec4 m3=texture2D(smp,vec2(dx*(offset+3.5),frameUV));return mat4(m0,m1,m2,m3);}\n#endif\n`;\n// Sideeffect\nif (!ShaderStore.IncludesShadersStore[name]) {\n ShaderStore.IncludesShadersStore[name] = shader;\n}\n/** @internal */\nexport const bakedVertexAnimationDeclaration = { name, shader };\n"]}
@@ -11,7 +11,9 @@ vec2 P4=floor(0.25*mod(_P,8.0));
11
11
  return 4.0*(4.0*bayerDither2(P1)+bayerDither2(P2))+bayerDither2(P4);}
12
12
  `;
13
13
  // Sideeffect
14
- ShaderStore.IncludesShadersStore[name] = shader;
14
+ if (!ShaderStore.IncludesShadersStore[name]) {
15
+ ShaderStore.IncludesShadersStore[name] = shader;
16
+ }
15
17
  /** @internal */
16
18
  export const bayerDitherFunctions = { name, shader };
17
19
  //# sourceMappingURL=bayerDitherFunctions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bayerDitherFunctions.js","sourceRoot":"","sources":["../../../../../dev/core/src/Shaders/ShadersInclude/bayerDitherFunctions.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,sBAAsB,CAAC;AACpC,MAAM,MAAM,GAAG;;;;;;;;CAQd,CAAC;AACF,aAAa;AACb,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAChD,gBAAgB;AAChB,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\n\nconst name = \"bayerDitherFunctions\";\nconst shader = `float bayerDither2(vec2 _P) {return mod(2.0*_P.y+_P.x+1.0,4.0);}\nfloat bayerDither4(vec2 _P) {vec2 P1=mod(_P,2.0); \nvec2 P2=floor(0.5*mod(_P,4.0)); \nreturn 4.0*bayerDither2(P1)+bayerDither2(P2);}\nfloat bayerDither8(vec2 _P) {vec2 P1=mod(_P,2.0); \nvec2 P2=floor(0.5 *mod(_P,4.0)); \nvec2 P4=floor(0.25*mod(_P,8.0)); \nreturn 4.0*(4.0*bayerDither2(P1)+bayerDither2(P2))+bayerDither2(P4);}\n`;\n// Sideeffect\nShaderStore.IncludesShadersStore[name] = shader;\n/** @internal */\nexport const bayerDitherFunctions = { name, shader };\n"]}
1
+ {"version":3,"file":"bayerDitherFunctions.js","sourceRoot":"","sources":["../../../../../dev/core/src/Shaders/ShadersInclude/bayerDitherFunctions.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,sBAAsB,CAAC;AACpC,MAAM,MAAM,GAAG;;;;;;;;CAQd,CAAC;AACF,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1C,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACpD,CAAC;AACD,gBAAgB;AAChB,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\n\nconst name = \"bayerDitherFunctions\";\nconst shader = `float bayerDither2(vec2 _P) {return mod(2.0*_P.y+_P.x+1.0,4.0);}\nfloat bayerDither4(vec2 _P) {vec2 P1=mod(_P,2.0); \nvec2 P2=floor(0.5*mod(_P,4.0)); \nreturn 4.0*bayerDither2(P1)+bayerDither2(P2);}\nfloat bayerDither8(vec2 _P) {vec2 P1=mod(_P,2.0); \nvec2 P2=floor(0.5 *mod(_P,4.0)); \nvec2 P4=floor(0.25*mod(_P,8.0)); \nreturn 4.0*(4.0*bayerDither2(P1)+bayerDither2(P2))+bayerDither2(P4);}\n`;\n// Sideeffect\nif (!ShaderStore.IncludesShadersStore[name]) {\n ShaderStore.IncludesShadersStore[name] = shader;\n}\n/** @internal */\nexport const bayerDitherFunctions = { name, shader };\n"]}
@@ -24,7 +24,9 @@ mat4 readMatrixFromRawSampler(sampler2D smp,float index)
24
24
  #endif
25
25
  `;
26
26
  // Sideeffect
27
- ShaderStore.IncludesShadersStore[name] = shader;
27
+ if (!ShaderStore.IncludesShadersStore[name]) {
28
+ ShaderStore.IncludesShadersStore[name] = shader;
29
+ }
28
30
  /** @internal */
29
31
  export const bonesDeclaration = { name, shader };
30
32
  //# sourceMappingURL=bonesDeclaration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bonesDeclaration.js","sourceRoot":"","sources":["../../../../../dev/core/src/Shaders/ShadersInclude/bonesDeclaration.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,kBAAkB,CAAC;AAChC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBd,CAAC;AACF,aAAa;AACb,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAChD,gBAAgB;AAChB,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\n\nconst name = \"bonesDeclaration\";\nconst shader = `#if NUM_BONE_INFLUENCERS>0\nattribute vec4 matricesIndices;attribute vec4 matricesWeights;\n#if NUM_BONE_INFLUENCERS>4\nattribute vec4 matricesIndicesExtra;attribute vec4 matricesWeightsExtra;\n#endif\n#ifndef BAKED_VERTEX_ANIMATION_TEXTURE\n#ifdef BONETEXTURE\nuniform highp sampler2D boneSampler;uniform float boneTextureWidth;\n#else\nuniform mat4 mBones[BonesPerMesh];\n#endif\n#ifdef BONES_VELOCITY_ENABLED\nuniform mat4 mPreviousBones[BonesPerMesh];\n#endif\n#ifdef BONETEXTURE\n#define inline\nmat4 readMatrixFromRawSampler(sampler2D smp,float index)\n{float offset=index *4.0;float dx=1.0/boneTextureWidth;vec4 m0=texture2D(smp,vec2(dx*(offset+0.5),0.));vec4 m1=texture2D(smp,vec2(dx*(offset+1.5),0.));vec4 m2=texture2D(smp,vec2(dx*(offset+2.5),0.));vec4 m3=texture2D(smp,vec2(dx*(offset+3.5),0.));return mat4(m0,m1,m2,m3);}\n#endif\n#endif\n#endif\n`;\n// Sideeffect\nShaderStore.IncludesShadersStore[name] = shader;\n/** @internal */\nexport const bonesDeclaration = { name, shader };\n"]}
1
+ {"version":3,"file":"bonesDeclaration.js","sourceRoot":"","sources":["../../../../../dev/core/src/Shaders/ShadersInclude/bonesDeclaration.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,kBAAkB,CAAC;AAChC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBd,CAAC;AACF,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1C,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACpD,CAAC;AACD,gBAAgB;AAChB,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\n\nconst name = \"bonesDeclaration\";\nconst shader = `#if NUM_BONE_INFLUENCERS>0\nattribute vec4 matricesIndices;attribute vec4 matricesWeights;\n#if NUM_BONE_INFLUENCERS>4\nattribute vec4 matricesIndicesExtra;attribute vec4 matricesWeightsExtra;\n#endif\n#ifndef BAKED_VERTEX_ANIMATION_TEXTURE\n#ifdef BONETEXTURE\nuniform highp sampler2D boneSampler;uniform float boneTextureWidth;\n#else\nuniform mat4 mBones[BonesPerMesh];\n#endif\n#ifdef BONES_VELOCITY_ENABLED\nuniform mat4 mPreviousBones[BonesPerMesh];\n#endif\n#ifdef BONETEXTURE\n#define inline\nmat4 readMatrixFromRawSampler(sampler2D smp,float index)\n{float offset=index *4.0;float dx=1.0/boneTextureWidth;vec4 m0=texture2D(smp,vec2(dx*(offset+0.5),0.));vec4 m1=texture2D(smp,vec2(dx*(offset+1.5),0.));vec4 m2=texture2D(smp,vec2(dx*(offset+2.5),0.));vec4 m3=texture2D(smp,vec2(dx*(offset+3.5),0.));return mat4(m0,m1,m2,m3);}\n#endif\n#endif\n#endif\n`;\n// Sideeffect\nif (!ShaderStore.IncludesShadersStore[name]) {\n ShaderStore.IncludesShadersStore[name] = shader;\n}\n/** @internal */\nexport const bonesDeclaration = { name, shader };\n"]}
@@ -56,7 +56,9 @@ finalWorld=finalWorld*influence;
56
56
  #endif
57
57
  `;
58
58
  // Sideeffect
59
- ShaderStore.IncludesShadersStore[name] = shader;
59
+ if (!ShaderStore.IncludesShadersStore[name]) {
60
+ ShaderStore.IncludesShadersStore[name] = shader;
61
+ }
60
62
  /** @internal */
61
63
  export const bonesVertex = { name, shader };
62
64
  //# sourceMappingURL=bonesVertex.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bonesVertex.js","sourceRoot":"","sources":["../../../../../dev/core/src/Shaders/ShadersInclude/bonesVertex.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,aAAa,CAAC;AAC3B,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDd,CAAC;AACF,aAAa;AACb,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAChD,gBAAgB;AAChB,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\n\nconst name = \"bonesVertex\";\nconst shader = `#ifndef BAKED_VERTEX_ANIMATION_TEXTURE\n#if NUM_BONE_INFLUENCERS>0\nmat4 influence;\n#ifdef BONETEXTURE\ninfluence=readMatrixFromRawSampler(boneSampler,matricesIndices[0])*matricesWeights[0];\n#if NUM_BONE_INFLUENCERS>1\ninfluence+=readMatrixFromRawSampler(boneSampler,matricesIndices[1])*matricesWeights[1];\n#endif\n#if NUM_BONE_INFLUENCERS>2\ninfluence+=readMatrixFromRawSampler(boneSampler,matricesIndices[2])*matricesWeights[2];\n#endif\n#if NUM_BONE_INFLUENCERS>3\ninfluence+=readMatrixFromRawSampler(boneSampler,matricesIndices[3])*matricesWeights[3];\n#endif\n#if NUM_BONE_INFLUENCERS>4\ninfluence+=readMatrixFromRawSampler(boneSampler,matricesIndicesExtra[0])*matricesWeightsExtra[0];\n#endif\n#if NUM_BONE_INFLUENCERS>5\ninfluence+=readMatrixFromRawSampler(boneSampler,matricesIndicesExtra[1])*matricesWeightsExtra[1];\n#endif\n#if NUM_BONE_INFLUENCERS>6\ninfluence+=readMatrixFromRawSampler(boneSampler,matricesIndicesExtra[2])*matricesWeightsExtra[2];\n#endif\n#if NUM_BONE_INFLUENCERS>7\ninfluence+=readMatrixFromRawSampler(boneSampler,matricesIndicesExtra[3])*matricesWeightsExtra[3];\n#endif\n#else\ninfluence=mBones[int(matricesIndices[0])]*matricesWeights[0];\n#if NUM_BONE_INFLUENCERS>1\ninfluence+=mBones[int(matricesIndices[1])]*matricesWeights[1];\n#endif\n#if NUM_BONE_INFLUENCERS>2\ninfluence+=mBones[int(matricesIndices[2])]*matricesWeights[2];\n#endif\n#if NUM_BONE_INFLUENCERS>3\ninfluence+=mBones[int(matricesIndices[3])]*matricesWeights[3];\n#endif\n#if NUM_BONE_INFLUENCERS>4\ninfluence+=mBones[int(matricesIndicesExtra[0])]*matricesWeightsExtra[0];\n#endif\n#if NUM_BONE_INFLUENCERS>5\ninfluence+=mBones[int(matricesIndicesExtra[1])]*matricesWeightsExtra[1];\n#endif\n#if NUM_BONE_INFLUENCERS>6\ninfluence+=mBones[int(matricesIndicesExtra[2])]*matricesWeightsExtra[2];\n#endif\n#if NUM_BONE_INFLUENCERS>7\ninfluence+=mBones[int(matricesIndicesExtra[3])]*matricesWeightsExtra[3];\n#endif\n#endif\nfinalWorld=finalWorld*influence;\n#endif\n#endif\n`;\n// Sideeffect\nShaderStore.IncludesShadersStore[name] = shader;\n/** @internal */\nexport const bonesVertex = { name, shader };\n"]}
1
+ {"version":3,"file":"bonesVertex.js","sourceRoot":"","sources":["../../../../../dev/core/src/Shaders/ShadersInclude/bonesVertex.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,aAAa,CAAC;AAC3B,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDd,CAAC;AACF,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1C,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACpD,CAAC;AACD,gBAAgB;AAChB,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\n\nconst name = \"bonesVertex\";\nconst shader = `#ifndef BAKED_VERTEX_ANIMATION_TEXTURE\n#if NUM_BONE_INFLUENCERS>0\nmat4 influence;\n#ifdef BONETEXTURE\ninfluence=readMatrixFromRawSampler(boneSampler,matricesIndices[0])*matricesWeights[0];\n#if NUM_BONE_INFLUENCERS>1\ninfluence+=readMatrixFromRawSampler(boneSampler,matricesIndices[1])*matricesWeights[1];\n#endif\n#if NUM_BONE_INFLUENCERS>2\ninfluence+=readMatrixFromRawSampler(boneSampler,matricesIndices[2])*matricesWeights[2];\n#endif\n#if NUM_BONE_INFLUENCERS>3\ninfluence+=readMatrixFromRawSampler(boneSampler,matricesIndices[3])*matricesWeights[3];\n#endif\n#if NUM_BONE_INFLUENCERS>4\ninfluence+=readMatrixFromRawSampler(boneSampler,matricesIndicesExtra[0])*matricesWeightsExtra[0];\n#endif\n#if NUM_BONE_INFLUENCERS>5\ninfluence+=readMatrixFromRawSampler(boneSampler,matricesIndicesExtra[1])*matricesWeightsExtra[1];\n#endif\n#if NUM_BONE_INFLUENCERS>6\ninfluence+=readMatrixFromRawSampler(boneSampler,matricesIndicesExtra[2])*matricesWeightsExtra[2];\n#endif\n#if NUM_BONE_INFLUENCERS>7\ninfluence+=readMatrixFromRawSampler(boneSampler,matricesIndicesExtra[3])*matricesWeightsExtra[3];\n#endif\n#else\ninfluence=mBones[int(matricesIndices[0])]*matricesWeights[0];\n#if NUM_BONE_INFLUENCERS>1\ninfluence+=mBones[int(matricesIndices[1])]*matricesWeights[1];\n#endif\n#if NUM_BONE_INFLUENCERS>2\ninfluence+=mBones[int(matricesIndices[2])]*matricesWeights[2];\n#endif\n#if NUM_BONE_INFLUENCERS>3\ninfluence+=mBones[int(matricesIndices[3])]*matricesWeights[3];\n#endif\n#if NUM_BONE_INFLUENCERS>4\ninfluence+=mBones[int(matricesIndicesExtra[0])]*matricesWeightsExtra[0];\n#endif\n#if NUM_BONE_INFLUENCERS>5\ninfluence+=mBones[int(matricesIndicesExtra[1])]*matricesWeightsExtra[1];\n#endif\n#if NUM_BONE_INFLUENCERS>6\ninfluence+=mBones[int(matricesIndicesExtra[2])]*matricesWeightsExtra[2];\n#endif\n#if NUM_BONE_INFLUENCERS>7\ninfluence+=mBones[int(matricesIndicesExtra[3])]*matricesWeightsExtra[3];\n#endif\n#endif\nfinalWorld=finalWorld*influence;\n#endif\n#endif\n`;\n// Sideeffect\nif (!ShaderStore.IncludesShadersStore[name]) {\n ShaderStore.IncludesShadersStore[name] = shader;\n}\n/** @internal */\nexport const bonesVertex = { name, shader };\n"]}
@@ -4,7 +4,9 @@ const name = "boundingBoxRendererFragmentDeclaration";
4
4
  const shader = `uniform vec4 color;
5
5
  `;
6
6
  // Sideeffect
7
- ShaderStore.IncludesShadersStore[name] = shader;
7
+ if (!ShaderStore.IncludesShadersStore[name]) {
8
+ ShaderStore.IncludesShadersStore[name] = shader;
9
+ }
8
10
  /** @internal */
9
11
  export const boundingBoxRendererFragmentDeclaration = { name, shader };
10
12
  //# sourceMappingURL=boundingBoxRendererFragmentDeclaration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"boundingBoxRendererFragmentDeclaration.js","sourceRoot":"","sources":["../../../../../dev/core/src/Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,wCAAwC,CAAC;AACtD,MAAM,MAAM,GAAG;CACd,CAAC;AACF,aAAa;AACb,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAChD,gBAAgB;AAChB,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\n\nconst name = \"boundingBoxRendererFragmentDeclaration\";\nconst shader = `uniform vec4 color;\n`;\n// Sideeffect\nShaderStore.IncludesShadersStore[name] = shader;\n/** @internal */\nexport const boundingBoxRendererFragmentDeclaration = { name, shader };\n"]}
1
+ {"version":3,"file":"boundingBoxRendererFragmentDeclaration.js","sourceRoot":"","sources":["../../../../../dev/core/src/Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,wCAAwC,CAAC;AACtD,MAAM,MAAM,GAAG;CACd,CAAC;AACF,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1C,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACpD,CAAC;AACD,gBAAgB;AAChB,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\n\nconst name = \"boundingBoxRendererFragmentDeclaration\";\nconst shader = `uniform vec4 color;\n`;\n// Sideeffect\nif (!ShaderStore.IncludesShadersStore[name]) {\n ShaderStore.IncludesShadersStore[name] = shader;\n}\n/** @internal */\nexport const boundingBoxRendererFragmentDeclaration = { name, shader };\n"]}