@babylonjs/core 7.52.1 → 7.52.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/AudioV2/abstractAudio/abstractAudioBus.d.ts +11 -0
  2. package/AudioV2/abstractAudio/abstractAudioBus.js +10 -0
  3. package/AudioV2/abstractAudio/abstractAudioBus.js.map +1 -1
  4. package/AudioV2/abstractAudio/abstractSound.d.ts +11 -5
  5. package/AudioV2/abstractAudio/abstractSound.js +11 -5
  6. package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
  7. package/AudioV2/abstractAudio/audioBus.d.ts +5 -6
  8. package/AudioV2/abstractAudio/audioBus.js +1 -5
  9. package/AudioV2/abstractAudio/audioBus.js.map +1 -1
  10. package/AudioV2/abstractAudio/audioEngineV2.d.ts +1 -2
  11. package/AudioV2/abstractAudio/audioEngineV2.js +1 -5
  12. package/AudioV2/abstractAudio/audioEngineV2.js.map +1 -1
  13. package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.d.ts +43 -0
  14. package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.js +71 -0
  15. package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.js.map +1 -0
  16. package/AudioV2/abstractAudio/mainAudioBus.d.ts +2 -2
  17. package/AudioV2/abstractAudio/mainAudioBus.js.map +1 -1
  18. package/AudioV2/abstractAudio/staticSound.d.ts +6 -6
  19. package/AudioV2/abstractAudio/staticSound.js +5 -5
  20. package/AudioV2/abstractAudio/staticSound.js.map +1 -1
  21. package/AudioV2/abstractAudio/streamingSound.d.ts +2 -2
  22. package/AudioV2/abstractAudio/streamingSound.js +3 -3
  23. package/AudioV2/abstractAudio/streamingSound.js.map +1 -1
  24. package/AudioV2/abstractAudio/subNodes/abstractAudioSubGraph.d.ts +30 -6
  25. package/AudioV2/abstractAudio/subNodes/abstractAudioSubGraph.js +44 -21
  26. package/AudioV2/abstractAudio/subNodes/abstractAudioSubGraph.js.map +1 -1
  27. package/AudioV2/abstractAudio/subNodes/audioAnalyzerSubNode.d.ts +24 -0
  28. package/AudioV2/abstractAudio/subNodes/audioAnalyzerSubNode.js +30 -0
  29. package/AudioV2/abstractAudio/subNodes/audioAnalyzerSubNode.js.map +1 -0
  30. package/AudioV2/abstractAudio/subNodes/audioSubNode.d.ts +1 -0
  31. package/AudioV2/abstractAudio/subNodes/audioSubNode.js +1 -0
  32. package/AudioV2/abstractAudio/subNodes/audioSubNode.js.map +1 -1
  33. package/AudioV2/abstractAudio/subNodes/spatialAudioSubNode.d.ts +15 -0
  34. package/AudioV2/abstractAudio/subNodes/spatialAudioSubNode.js +38 -3
  35. package/AudioV2/abstractAudio/subNodes/spatialAudioSubNode.js.map +1 -1
  36. package/AudioV2/abstractAudio/subNodes/stereoAudioSubNode.js.map +1 -1
  37. package/AudioV2/abstractAudio/subProperties/abstractAudioAnalyzer.d.ts +86 -0
  38. package/AudioV2/abstractAudio/subProperties/abstractAudioAnalyzer.js +29 -0
  39. package/AudioV2/abstractAudio/subProperties/abstractAudioAnalyzer.js.map +1 -0
  40. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.d.ts +29 -8
  41. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js +1 -0
  42. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js.map +1 -1
  43. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.d.ts +28 -1
  44. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.js +5 -1
  45. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.js.map +1 -1
  46. package/AudioV2/abstractAudio/subProperties/audioAnalyzer.d.ts +35 -0
  47. package/AudioV2/abstractAudio/subProperties/audioAnalyzer.js +96 -0
  48. package/AudioV2/abstractAudio/subProperties/audioAnalyzer.js.map +1 -0
  49. package/AudioV2/abstractAudio/subProperties/index.d.ts +1 -0
  50. package/AudioV2/abstractAudio/subProperties/index.js +1 -0
  51. package/AudioV2/abstractAudio/subProperties/index.js.map +1 -1
  52. package/AudioV2/abstractAudio/subProperties/spatialAudio.d.ts +16 -1
  53. package/AudioV2/abstractAudio/subProperties/spatialAudio.js +48 -14
  54. package/AudioV2/abstractAudio/subProperties/spatialAudio.js.map +1 -1
  55. package/AudioV2/abstractAudio/subProperties/spatialAudioListener.d.ts +21 -0
  56. package/AudioV2/abstractAudio/subProperties/spatialAudioListener.js +39 -4
  57. package/AudioV2/abstractAudio/subProperties/spatialAudioListener.js.map +1 -1
  58. package/AudioV2/index.d.ts +1 -0
  59. package/AudioV2/index.js +1 -0
  60. package/AudioV2/index.js.map +1 -1
  61. package/AudioV2/spatialAudioAttachmentType.d.ts +5 -0
  62. package/AudioV2/spatialAudioAttachmentType.js +7 -0
  63. package/AudioV2/spatialAudioAttachmentType.js.map +1 -0
  64. package/AudioV2/webAudio/components/spatialWebAudioUpdaterComponent.d.ts +13 -0
  65. package/AudioV2/webAudio/components/spatialWebAudioUpdaterComponent.js +38 -0
  66. package/AudioV2/webAudio/components/spatialWebAudioUpdaterComponent.js.map +1 -0
  67. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.d.ts +13 -14
  68. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js +39 -39
  69. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js.map +1 -1
  70. package/AudioV2/webAudio/subNodes/webAudioAnalyzerSubNode.d.ts +37 -0
  71. package/AudioV2/webAudio/subNodes/webAudioAnalyzerSubNode.js +85 -0
  72. package/AudioV2/webAudio/subNodes/webAudioAnalyzerSubNode.js.map +1 -0
  73. package/AudioV2/webAudio/subNodes/webAudioBaseSubGraph.d.ts +5 -3
  74. package/AudioV2/webAudio/subNodes/webAudioBaseSubGraph.js +25 -2
  75. package/AudioV2/webAudio/subNodes/webAudioBaseSubGraph.js.map +1 -1
  76. package/AudioV2/webAudio/subNodes/webAudioBusAndSoundSubGraph.d.ts +2 -1
  77. package/AudioV2/webAudio/subNodes/webAudioBusAndSoundSubGraph.js +32 -17
  78. package/AudioV2/webAudio/subNodes/webAudioBusAndSoundSubGraph.js.map +1 -1
  79. package/AudioV2/webAudio/subProperties/spatialWebAudio.d.ts +6 -2
  80. package/AudioV2/webAudio/subProperties/spatialWebAudio.js +13 -15
  81. package/AudioV2/webAudio/subProperties/spatialWebAudio.js.map +1 -1
  82. package/AudioV2/webAudio/subProperties/spatialWebAudioListener.d.ts +1 -1
  83. package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js +41 -56
  84. package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js.map +1 -1
  85. package/AudioV2/webAudio/webAudioBus.d.ts +3 -0
  86. package/AudioV2/webAudio/webAudioBus.js +23 -2
  87. package/AudioV2/webAudio/webAudioBus.js.map +1 -1
  88. package/AudioV2/webAudio/webAudioEngine.d.ts +3 -1
  89. package/AudioV2/webAudio/webAudioEngine.js +11 -3
  90. package/AudioV2/webAudio/webAudioEngine.js.map +1 -1
  91. package/AudioV2/webAudio/webAudioStaticSound.d.ts +3 -0
  92. package/AudioV2/webAudio/webAudioStaticSound.js +23 -2
  93. package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
  94. package/AudioV2/webAudio/webAudioStreamingSound.d.ts +3 -0
  95. package/AudioV2/webAudio/webAudioStreamingSound.js +23 -2
  96. package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
  97. package/Engines/WebGPU/webgpuTextureManager.d.ts +0 -1
  98. package/Engines/WebGPU/webgpuTextureManager.js +2 -57
  99. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  100. package/Engines/abstractEngine.d.ts +6 -0
  101. package/Engines/abstractEngine.js +3 -3
  102. package/Engines/abstractEngine.js.map +1 -1
  103. package/Engines/engine.common.js +4 -0
  104. package/Engines/engine.common.js.map +1 -1
  105. package/Engines/nativeEngine.d.ts +1 -0
  106. package/Engines/nativeEngine.js +3 -0
  107. package/Engines/nativeEngine.js.map +1 -1
  108. package/Engines/nullEngine.d.ts +1 -0
  109. package/Engines/nullEngine.js +1 -0
  110. package/Engines/nullEngine.js.map +1 -1
  111. package/Engines/thinEngine.d.ts +1 -0
  112. package/Engines/thinEngine.js +7 -4
  113. package/Engines/thinEngine.js.map +1 -1
  114. package/Engines/webgpuEngine.d.ts +2 -1
  115. package/Engines/webgpuEngine.js +12 -9
  116. package/Engines/webgpuEngine.js.map +1 -1
  117. package/FlowGraph/Blocks/Data/flowGraphDataSwitchBlock.d.ts +48 -0
  118. package/FlowGraph/Blocks/Data/flowGraphDataSwitchBlock.js +54 -0
  119. package/FlowGraph/Blocks/Data/flowGraphDataSwitchBlock.js.map +1 -0
  120. package/FlowGraph/Blocks/Data/index.d.ts +1 -0
  121. package/FlowGraph/Blocks/Data/index.js +1 -0
  122. package/FlowGraph/Blocks/Data/index.js.map +1 -1
  123. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.d.ts +1 -0
  124. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js +19 -13
  125. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js.map +1 -1
  126. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.js +3 -5
  127. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.js.map +1 -1
  128. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.js +1 -1
  129. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.js.map +1 -1
  130. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSetDelayBlock.js +2 -4
  131. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSetDelayBlock.js.map +1 -1
  132. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.js +1 -1
  133. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.js.map +1 -1
  134. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.js +1 -2
  135. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.js.map +1 -1
  136. package/FlowGraph/Blocks/flowGraphBlockFactory.js +2 -0
  137. package/FlowGraph/Blocks/flowGraphBlockFactory.js.map +1 -1
  138. package/FlowGraph/Blocks/flowGraphBlockNames.d.ts +2 -1
  139. package/FlowGraph/Blocks/flowGraphBlockNames.js +1 -0
  140. package/FlowGraph/Blocks/flowGraphBlockNames.js.map +1 -1
  141. package/FlowGraph/CustomTypes/flowGraphInteger.d.ts +1 -0
  142. package/FlowGraph/CustomTypes/flowGraphInteger.js +3 -0
  143. package/FlowGraph/CustomTypes/flowGraphInteger.js.map +1 -1
  144. package/FlowGraph/CustomTypes/flowGraphMatrix.d.ts +2 -0
  145. package/FlowGraph/CustomTypes/flowGraphMatrix.js +6 -0
  146. package/FlowGraph/CustomTypes/flowGraphMatrix.js.map +1 -1
  147. package/FlowGraph/flowGraphExecutionBlock.d.ts +1 -0
  148. package/FlowGraph/flowGraphExecutionBlock.js +4 -0
  149. package/FlowGraph/flowGraphExecutionBlock.js.map +1 -1
  150. package/FlowGraph/utils.d.ts +2 -1
  151. package/FlowGraph/utils.js +7 -2
  152. package/FlowGraph/utils.js.map +1 -1
  153. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.js +2 -2
  154. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.js.map +1 -1
  155. package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.js +2 -2
  156. package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.js.map +1 -1
  157. package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.d.ts +126 -0
  158. package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.js +497 -0
  159. package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.js.map +1 -0
  160. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.d.ts +6 -0
  161. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js +30 -4
  162. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js.map +1 -1
  163. package/FrameGraph/Node/Blocks/index.d.ts +1 -0
  164. package/FrameGraph/Node/Blocks/index.js +1 -0
  165. package/FrameGraph/Node/Blocks/index.js.map +1 -1
  166. package/FrameGraph/Node/nodeRenderGraph.js +1 -1
  167. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  168. package/FrameGraph/Tasks/PostProcesses/bloomTask.d.ts +2 -3
  169. package/FrameGraph/Tasks/PostProcesses/bloomTask.js +3 -4
  170. package/FrameGraph/Tasks/PostProcesses/bloomTask.js.map +1 -1
  171. package/FrameGraph/Tasks/PostProcesses/blurTask.js +2 -2
  172. package/FrameGraph/Tasks/PostProcesses/blurTask.js.map +1 -1
  173. package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.d.ts +2 -3
  174. package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js +4 -5
  175. package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js.map +1 -1
  176. package/FrameGraph/Tasks/PostProcesses/postProcessTask.d.ts +6 -0
  177. package/FrameGraph/Tasks/PostProcesses/postProcessTask.js +14 -0
  178. package/FrameGraph/Tasks/PostProcesses/postProcessTask.js.map +1 -1
  179. package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.d.ts +11 -0
  180. package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.js +18 -0
  181. package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.js.map +1 -0
  182. package/FrameGraph/Tasks/PostProcesses/ssrRenderingPipelineTask.d.ts +76 -0
  183. package/FrameGraph/Tasks/PostProcesses/ssrRenderingPipelineTask.js +170 -0
  184. package/FrameGraph/Tasks/PostProcesses/ssrRenderingPipelineTask.js.map +1 -0
  185. package/FrameGraph/Tasks/PostProcesses/ssrTask.d.ts +16 -0
  186. package/FrameGraph/Tasks/PostProcesses/ssrTask.js +45 -0
  187. package/FrameGraph/Tasks/PostProcesses/ssrTask.js.map +1 -0
  188. package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +10 -0
  189. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +29 -0
  190. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  191. package/FrameGraph/frameGraph.d.ts +7 -3
  192. package/FrameGraph/frameGraph.js +10 -4
  193. package/FrameGraph/frameGraph.js.map +1 -1
  194. package/FrameGraph/frameGraphTextureManager.d.ts +2 -1
  195. package/FrameGraph/frameGraphTextureManager.js +4 -3
  196. package/FrameGraph/frameGraphTextureManager.js.map +1 -1
  197. package/FrameGraph/index.d.ts +1 -0
  198. package/FrameGraph/index.js +1 -0
  199. package/FrameGraph/index.js.map +1 -1
  200. package/Materials/PBR/pbrBaseMaterial.js +1 -1
  201. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  202. package/Materials/effectRenderer.js +1 -1
  203. package/Materials/effectRenderer.js.map +1 -1
  204. package/Materials/material.js +5 -3
  205. package/Materials/material.js.map +1 -1
  206. package/Materials/materialHelper.geometryrendering.d.ts +7 -5
  207. package/Materials/materialHelper.geometryrendering.js +8 -3
  208. package/Materials/materialHelper.geometryrendering.js.map +1 -1
  209. package/Materials/standardMaterial.js +1 -1
  210. package/Materials/standardMaterial.js.map +1 -1
  211. package/Meshes/geometry.js +18 -7
  212. package/Meshes/geometry.js.map +1 -1
  213. package/Meshes/mesh.vertexData.d.ts +1 -1
  214. package/Meshes/mesh.vertexData.js +2 -1
  215. package/Meshes/mesh.vertexData.js.map +1 -1
  216. package/Particles/particleSystemComponent.d.ts +2 -1
  217. package/Particles/particleSystemComponent.js +2 -2
  218. package/Particles/particleSystemComponent.js.map +1 -1
  219. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.d.ts +23 -30
  220. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js +226 -411
  221. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js.map +1 -1
  222. package/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.d.ts +222 -0
  223. package/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.js +373 -0
  224. package/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.js.map +1 -0
  225. package/PostProcesses/thinDepthOfFieldEffect.d.ts +4 -4
  226. package/PostProcesses/thinDepthOfFieldEffect.js.map +1 -1
  227. package/PostProcesses/thinSSRBlurCombinerPostProcess.d.ts +41 -0
  228. package/PostProcesses/thinSSRBlurCombinerPostProcess.js +185 -0
  229. package/PostProcesses/thinSSRBlurCombinerPostProcess.js.map +1 -0
  230. package/PostProcesses/thinSSRBlurPostProcess.d.ts +18 -0
  231. package/PostProcesses/thinSSRBlurPostProcess.js +47 -0
  232. package/PostProcesses/thinSSRBlurPostProcess.js.map +1 -0
  233. package/PostProcesses/thinSSRPostProcess.d.ts +94 -0
  234. package/PostProcesses/thinSSRPostProcess.js +416 -0
  235. package/PostProcesses/thinSSRPostProcess.js.map +1 -0
  236. package/Rendering/IBLShadows/iblShadowsRenderPipeline.d.ts +2 -0
  237. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +2 -0
  238. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
  239. package/Rendering/iblCdfGenerator.js +1 -1
  240. package/Rendering/iblCdfGenerator.js.map +1 -1
  241. package/Shaders/screenSpaceReflection2BlurCombiner.fragment.js +13 -2
  242. package/Shaders/screenSpaceReflection2BlurCombiner.fragment.js.map +1 -1
  243. package/ShadersWGSL/geometry.fragment.js +1 -1
  244. package/ShadersWGSL/geometry.fragment.js.map +1 -1
  245. package/ShadersWGSL/screenSpaceReflection2BlurCombiner.fragment.js +13 -2
  246. package/ShadersWGSL/screenSpaceReflection2BlurCombiner.fragment.js.map +1 -1
  247. package/package.json +1 -1
@@ -0,0 +1,416 @@
1
+
2
+ import { Engine } from "../Engines/engine.js";
3
+ import { EffectWrapper } from "../Materials/effectRenderer.js";
4
+ import { Vector3, Matrix, Quaternion, TmpVectors } from "../Maths/math.vector.js";
5
+ const trs = Matrix.Compose(new Vector3(0.5, 0.5, 0.5), Quaternion.Identity(), new Vector3(0.5, 0.5, 0.5));
6
+ const trsWebGPU = Matrix.Compose(new Vector3(0.5, 0.5, 1), Quaternion.Identity(), new Vector3(0.5, 0.5, 0));
7
+ /**
8
+ * @internal
9
+ */
10
+ export class ThinSSRPostProcess extends EffectWrapper {
11
+ _gatherImports(useWebGPU, list) {
12
+ if (useWebGPU) {
13
+ this._webGPUReady = true;
14
+ list.push(import("../ShadersWGSL/screenSpaceReflection2.fragment.js"));
15
+ }
16
+ else {
17
+ list.push(import("../Shaders/screenSpaceReflection2.fragment.js"));
18
+ }
19
+ }
20
+ get reflectivityThreshold() {
21
+ return this._reflectivityThreshold;
22
+ }
23
+ set reflectivityThreshold(threshold) {
24
+ if (threshold === this._reflectivityThreshold) {
25
+ return;
26
+ }
27
+ if ((threshold === 0 && this._reflectivityThreshold !== 0) || (threshold !== 0 && this._reflectivityThreshold === 0)) {
28
+ this._reflectivityThreshold = threshold;
29
+ this._updateEffectDefines();
30
+ }
31
+ else {
32
+ this._reflectivityThreshold = threshold;
33
+ }
34
+ }
35
+ get useBlur() {
36
+ return this._useBlur;
37
+ }
38
+ set useBlur(blur) {
39
+ if (this._useBlur === blur) {
40
+ return;
41
+ }
42
+ this._useBlur = blur;
43
+ this._updateEffectDefines();
44
+ }
45
+ get enableSmoothReflections() {
46
+ return this._enableSmoothReflections;
47
+ }
48
+ set enableSmoothReflections(enabled) {
49
+ if (enabled === this._enableSmoothReflections) {
50
+ return;
51
+ }
52
+ this._enableSmoothReflections = enabled;
53
+ this._updateEffectDefines();
54
+ }
55
+ get environmentTexture() {
56
+ return this._environmentTexture;
57
+ }
58
+ set environmentTexture(texture) {
59
+ this._environmentTexture = texture;
60
+ this._updateEffectDefines();
61
+ }
62
+ get environmentTextureIsProbe() {
63
+ return this._environmentTextureIsProbe;
64
+ }
65
+ set environmentTextureIsProbe(isProbe) {
66
+ this._environmentTextureIsProbe = isProbe;
67
+ this._updateEffectDefines();
68
+ }
69
+ get attenuateScreenBorders() {
70
+ return this._attenuateScreenBorders;
71
+ }
72
+ set attenuateScreenBorders(attenuate) {
73
+ if (this._attenuateScreenBorders === attenuate) {
74
+ return;
75
+ }
76
+ this._attenuateScreenBorders = attenuate;
77
+ this._updateEffectDefines();
78
+ }
79
+ get attenuateIntersectionDistance() {
80
+ return this._attenuateIntersectionDistance;
81
+ }
82
+ set attenuateIntersectionDistance(attenuate) {
83
+ if (this._attenuateIntersectionDistance === attenuate) {
84
+ return;
85
+ }
86
+ this._attenuateIntersectionDistance = attenuate;
87
+ this._updateEffectDefines();
88
+ }
89
+ get attenuateIntersectionIterations() {
90
+ return this._attenuateIntersectionIterations;
91
+ }
92
+ set attenuateIntersectionIterations(attenuate) {
93
+ if (this._attenuateIntersectionIterations === attenuate) {
94
+ return;
95
+ }
96
+ this._attenuateIntersectionIterations = attenuate;
97
+ this._updateEffectDefines();
98
+ }
99
+ get attenuateFacingCamera() {
100
+ return this._attenuateFacingCamera;
101
+ }
102
+ set attenuateFacingCamera(attenuate) {
103
+ if (this._attenuateFacingCamera === attenuate) {
104
+ return;
105
+ }
106
+ this._attenuateFacingCamera = attenuate;
107
+ this._updateEffectDefines();
108
+ }
109
+ get attenuateBackfaceReflection() {
110
+ return this._attenuateBackfaceReflection;
111
+ }
112
+ set attenuateBackfaceReflection(attenuate) {
113
+ if (this._attenuateBackfaceReflection === attenuate) {
114
+ return;
115
+ }
116
+ this._attenuateBackfaceReflection = attenuate;
117
+ this._updateEffectDefines();
118
+ }
119
+ get clipToFrustum() {
120
+ return this._clipToFrustum;
121
+ }
122
+ set clipToFrustum(clip) {
123
+ if (this._clipToFrustum === clip) {
124
+ return;
125
+ }
126
+ this._clipToFrustum = clip;
127
+ this._updateEffectDefines();
128
+ }
129
+ get useFresnel() {
130
+ return this._useFresnel;
131
+ }
132
+ set useFresnel(fresnel) {
133
+ if (this._useFresnel === fresnel) {
134
+ return;
135
+ }
136
+ this._useFresnel = fresnel;
137
+ this._updateEffectDefines();
138
+ }
139
+ get enableAutomaticThicknessComputation() {
140
+ return this._enableAutomaticThicknessComputation;
141
+ }
142
+ set enableAutomaticThicknessComputation(automatic) {
143
+ if (this._enableAutomaticThicknessComputation === automatic) {
144
+ return;
145
+ }
146
+ this._enableAutomaticThicknessComputation = automatic;
147
+ this._updateEffectDefines();
148
+ }
149
+ get inputTextureColorIsInGammaSpace() {
150
+ return this._inputTextureColorIsInGammaSpace;
151
+ }
152
+ set inputTextureColorIsInGammaSpace(gammaSpace) {
153
+ if (this._inputTextureColorIsInGammaSpace === gammaSpace) {
154
+ return;
155
+ }
156
+ this._inputTextureColorIsInGammaSpace = gammaSpace;
157
+ this._updateEffectDefines();
158
+ }
159
+ get generateOutputInGammaSpace() {
160
+ return this._generateOutputInGammaSpace;
161
+ }
162
+ set generateOutputInGammaSpace(gammaSpace) {
163
+ if (this._generateOutputInGammaSpace === gammaSpace) {
164
+ return;
165
+ }
166
+ this._generateOutputInGammaSpace = gammaSpace;
167
+ this._updateEffectDefines();
168
+ }
169
+ get debug() {
170
+ return this._debug;
171
+ }
172
+ set debug(value) {
173
+ if (this._debug === value) {
174
+ return;
175
+ }
176
+ this._debug = value;
177
+ this._updateEffectDefines();
178
+ }
179
+ get textureWidth() {
180
+ return this._textureWidth;
181
+ }
182
+ set textureWidth(width) {
183
+ if (this._textureWidth === width) {
184
+ return;
185
+ }
186
+ this._textureWidth = width;
187
+ }
188
+ get textureHeight() {
189
+ return this._textureHeight;
190
+ }
191
+ set textureHeight(height) {
192
+ if (this._textureHeight === height) {
193
+ return;
194
+ }
195
+ this._textureHeight = height;
196
+ }
197
+ get useScreenspaceDepth() {
198
+ return this._useScreenspaceDepth;
199
+ }
200
+ set useScreenspaceDepth(value) {
201
+ if (this._useScreenspaceDepth === value) {
202
+ return;
203
+ }
204
+ this._useScreenspaceDepth = value;
205
+ this._updateEffectDefines();
206
+ }
207
+ get normalsAreInWorldSpace() {
208
+ return this._normalsAreInWorldSpace;
209
+ }
210
+ set normalsAreInWorldSpace(value) {
211
+ if (this._normalsAreInWorldSpace === value) {
212
+ return;
213
+ }
214
+ this._normalsAreInWorldSpace = value;
215
+ this._updateEffectDefines();
216
+ }
217
+ get normalsAreUnsigned() {
218
+ return this._normalsAreUnsigned;
219
+ }
220
+ set normalsAreUnsigned(value) {
221
+ if (this._normalsAreUnsigned === value) {
222
+ return;
223
+ }
224
+ this._normalsAreUnsigned = value;
225
+ this._updateEffectDefines();
226
+ }
227
+ constructor(name, scene, options) {
228
+ super({
229
+ ...options,
230
+ name,
231
+ engine: scene.getEngine() || Engine.LastCreatedEngine,
232
+ useShaderStore: true,
233
+ useAsPostProcess: true,
234
+ fragmentShader: ThinSSRPostProcess.FragmentUrl,
235
+ uniforms: ThinSSRPostProcess.Uniforms,
236
+ samplers: ThinSSRPostProcess.Samplers,
237
+ shaderLanguage: scene.getEngine().isWebGPU ? 1 /* ShaderLanguage.WGSL */ : 0 /* ShaderLanguage.GLSL */,
238
+ });
239
+ this.isSSRSupported = true;
240
+ this.maxDistance = 1000.0;
241
+ this.step = 1.0;
242
+ this.thickness = 0.5;
243
+ this.strength = 1;
244
+ this.reflectionSpecularFalloffExponent = 1;
245
+ this.maxSteps = 1000.0;
246
+ this.roughnessFactor = 0.2;
247
+ this.selfCollisionNumSkip = 1;
248
+ this._reflectivityThreshold = 0.04;
249
+ this._useBlur = false;
250
+ this._enableSmoothReflections = false;
251
+ this._environmentTextureIsProbe = false;
252
+ this._attenuateScreenBorders = true;
253
+ this._attenuateIntersectionDistance = true;
254
+ this._attenuateIntersectionIterations = true;
255
+ this._attenuateFacingCamera = false;
256
+ this._attenuateBackfaceReflection = false;
257
+ this._clipToFrustum = true;
258
+ this._useFresnel = false;
259
+ this._enableAutomaticThicknessComputation = false;
260
+ this._inputTextureColorIsInGammaSpace = true;
261
+ this._generateOutputInGammaSpace = true;
262
+ this._debug = false;
263
+ this._textureWidth = 0;
264
+ this._textureHeight = 0;
265
+ this.camera = null;
266
+ this._useScreenspaceDepth = false;
267
+ this._normalsAreInWorldSpace = false;
268
+ this._normalsAreUnsigned = false;
269
+ this._scene = scene;
270
+ this._updateEffectDefines();
271
+ }
272
+ bind() {
273
+ super.bind();
274
+ const effect = this._drawWrapper.effect;
275
+ const camera = this.camera;
276
+ if (!camera) {
277
+ return;
278
+ }
279
+ const viewMatrix = camera.getViewMatrix();
280
+ const projectionMatrix = camera.getProjectionMatrix();
281
+ projectionMatrix.invertToRef(TmpVectors.Matrix[0]);
282
+ viewMatrix.invertToRef(TmpVectors.Matrix[1]);
283
+ effect.setMatrix("projection", projectionMatrix);
284
+ effect.setMatrix("view", viewMatrix);
285
+ effect.setMatrix("invView", TmpVectors.Matrix[1]);
286
+ effect.setMatrix("invProjectionMatrix", TmpVectors.Matrix[0]);
287
+ effect.setFloat("thickness", this.thickness);
288
+ effect.setFloat("reflectionSpecularFalloffExponent", this.reflectionSpecularFalloffExponent);
289
+ effect.setFloat("strength", this.strength);
290
+ effect.setFloat("stepSize", this.step);
291
+ effect.setFloat("maxSteps", this.maxSteps);
292
+ effect.setFloat("roughnessFactor", this.roughnessFactor);
293
+ effect.setFloat("nearPlaneZ", camera.minZ);
294
+ effect.setFloat("farPlaneZ", camera.maxZ);
295
+ effect.setFloat("maxDistance", this.maxDistance);
296
+ effect.setFloat("selfCollisionNumSkip", this.selfCollisionNumSkip);
297
+ effect.setFloat("reflectivityThreshold", this._reflectivityThreshold);
298
+ Matrix.ScalingToRef(this.textureWidth, this.textureHeight, 1, TmpVectors.Matrix[2]);
299
+ projectionMatrix.multiplyToRef(this._scene.getEngine().isWebGPU ? trsWebGPU : trs, TmpVectors.Matrix[3]);
300
+ TmpVectors.Matrix[3].multiplyToRef(TmpVectors.Matrix[2], TmpVectors.Matrix[4]);
301
+ effect.setMatrix("projectionPixel", TmpVectors.Matrix[4]);
302
+ if (this._environmentTexture) {
303
+ effect.setTexture("envCubeSampler", this._environmentTexture);
304
+ if (this._environmentTexture.boundingBoxSize) {
305
+ effect.setVector3("vReflectionPosition", this._environmentTexture.boundingBoxPosition);
306
+ effect.setVector3("vReflectionSize", this._environmentTexture.boundingBoxSize);
307
+ }
308
+ }
309
+ }
310
+ _updateEffectDefines() {
311
+ const defines = [];
312
+ if (this.isSSRSupported) {
313
+ defines.push("#define SSR_SUPPORTED");
314
+ }
315
+ if (this._enableSmoothReflections) {
316
+ defines.push("#define SSRAYTRACE_ENABLE_REFINEMENT");
317
+ }
318
+ if (this._scene.useRightHandedSystem) {
319
+ defines.push("#define SSRAYTRACE_RIGHT_HANDED_SCENE");
320
+ }
321
+ if (this._useScreenspaceDepth) {
322
+ defines.push("#define SSRAYTRACE_SCREENSPACE_DEPTH");
323
+ }
324
+ if (this._environmentTexture) {
325
+ defines.push("#define SSR_USE_ENVIRONMENT_CUBE");
326
+ if (this._environmentTexture.boundingBoxSize) {
327
+ defines.push("#define SSR_USE_LOCAL_REFLECTIONMAP_CUBIC");
328
+ }
329
+ if (this._environmentTexture.gammaSpace) {
330
+ defines.push("#define SSR_ENVIRONMENT_CUBE_IS_GAMMASPACE");
331
+ }
332
+ }
333
+ if (this._environmentTextureIsProbe) {
334
+ defines.push("#define SSR_INVERTCUBICMAP");
335
+ }
336
+ if (this._enableAutomaticThicknessComputation) {
337
+ defines.push("#define SSRAYTRACE_USE_BACK_DEPTHBUFFER");
338
+ }
339
+ if (this._attenuateScreenBorders) {
340
+ defines.push("#define SSR_ATTENUATE_SCREEN_BORDERS");
341
+ }
342
+ if (this._attenuateIntersectionDistance) {
343
+ defines.push("#define SSR_ATTENUATE_INTERSECTION_DISTANCE");
344
+ }
345
+ if (this._attenuateIntersectionIterations) {
346
+ defines.push("#define SSR_ATTENUATE_INTERSECTION_NUMITERATIONS");
347
+ }
348
+ if (this._attenuateFacingCamera) {
349
+ defines.push("#define SSR_ATTENUATE_FACING_CAMERA");
350
+ }
351
+ if (this._attenuateBackfaceReflection) {
352
+ defines.push("#define SSR_ATTENUATE_BACKFACE_REFLECTION");
353
+ }
354
+ if (this._clipToFrustum) {
355
+ defines.push("#define SSRAYTRACE_CLIP_TO_FRUSTUM");
356
+ }
357
+ if (this.useBlur) {
358
+ defines.push("#define SSR_USE_BLUR");
359
+ }
360
+ if (this._debug) {
361
+ defines.push("#define SSRAYTRACE_DEBUG");
362
+ }
363
+ if (this._inputTextureColorIsInGammaSpace) {
364
+ defines.push("#define SSR_INPUT_IS_GAMMA_SPACE");
365
+ }
366
+ if (this._generateOutputInGammaSpace) {
367
+ defines.push("#define SSR_OUTPUT_IS_GAMMA_SPACE");
368
+ }
369
+ if (this._useFresnel) {
370
+ defines.push("#define SSR_BLEND_WITH_FRESNEL");
371
+ }
372
+ if (this._reflectivityThreshold === 0) {
373
+ defines.push("#define SSR_DISABLE_REFLECTIVITY_TEST");
374
+ }
375
+ if (this._normalsAreInWorldSpace) {
376
+ defines.push("#define SSR_NORMAL_IS_IN_WORLDSPACE");
377
+ }
378
+ if (this._normalsAreUnsigned) {
379
+ defines.push("#define SSR_DECODE_NORMAL");
380
+ }
381
+ if (this.camera && this.camera.mode === 1) {
382
+ defines.push("#define ORTHOGRAPHIC_CAMERA");
383
+ }
384
+ this.updateEffect(defines.join("\n"));
385
+ }
386
+ }
387
+ /**
388
+ * The fragment shader url
389
+ */
390
+ ThinSSRPostProcess.FragmentUrl = "screenSpaceReflection2";
391
+ /**
392
+ * The list of uniforms used by the effect
393
+ */
394
+ ThinSSRPostProcess.Uniforms = [
395
+ "projection",
396
+ "invProjectionMatrix",
397
+ "view",
398
+ "invView",
399
+ "thickness",
400
+ "reflectionSpecularFalloffExponent",
401
+ "strength",
402
+ "stepSize",
403
+ "maxSteps",
404
+ "roughnessFactor",
405
+ "projectionPixel",
406
+ "nearPlaneZ",
407
+ "farPlaneZ",
408
+ "maxDistance",
409
+ "selfCollisionNumSkip",
410
+ "vReflectionPosition",
411
+ "vReflectionSize",
412
+ "backSizeFactor",
413
+ "reflectivityThreshold",
414
+ ];
415
+ ThinSSRPostProcess.Samplers = ["textureSampler", "normalSampler", "reflectivitySampler", "depthSampler", "envCubeSampler", "backDepthSampler"];
416
+ //# sourceMappingURL=thinSSRPostProcess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thinSSRPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinSSRPostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["// eslint-disable-next-line import/no-internal-modules\r\nimport type { Nullable, Scene, CubeTexture, Camera, EffectWrapperCreationOptions } from \"core/index\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { Engine } from \"core/Engines/engine\";\r\nimport { EffectWrapper } from \"core/Materials/effectRenderer\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\nimport { Vector3, Matrix, Quaternion, TmpVectors } from \"core/Maths/math.vector\";\r\n\r\nconst trs = Matrix.Compose(new Vector3(0.5, 0.5, 0.5), Quaternion.Identity(), new Vector3(0.5, 0.5, 0.5));\r\nconst trsWebGPU = Matrix.Compose(new Vector3(0.5, 0.5, 1), Quaternion.Identity(), new Vector3(0.5, 0.5, 0));\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class ThinSSRPostProcess extends EffectWrapper {\r\n /**\r\n * The fragment shader url\r\n */\r\n public static readonly FragmentUrl = \"screenSpaceReflection2\";\r\n\r\n /**\r\n * The list of uniforms used by the effect\r\n */\r\n public static readonly Uniforms = [\r\n \"projection\",\r\n \"invProjectionMatrix\",\r\n \"view\",\r\n \"invView\",\r\n \"thickness\",\r\n \"reflectionSpecularFalloffExponent\",\r\n \"strength\",\r\n \"stepSize\",\r\n \"maxSteps\",\r\n \"roughnessFactor\",\r\n \"projectionPixel\",\r\n \"nearPlaneZ\",\r\n \"farPlaneZ\",\r\n \"maxDistance\",\r\n \"selfCollisionNumSkip\",\r\n \"vReflectionPosition\",\r\n \"vReflectionSize\",\r\n \"backSizeFactor\",\r\n \"reflectivityThreshold\",\r\n ];\r\n\r\n public static readonly Samplers = [\"textureSampler\", \"normalSampler\", \"reflectivitySampler\", \"depthSampler\", \"envCubeSampler\", \"backDepthSampler\"];\r\n\r\n protected override _gatherImports(useWebGPU: boolean, list: Promise<any>[]) {\r\n if (useWebGPU) {\r\n this._webGPUReady = true;\r\n list.push(import(\"../ShadersWGSL/screenSpaceReflection2.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/screenSpaceReflection2.fragment\"));\r\n }\r\n }\r\n\r\n public isSSRSupported = true;\r\n\r\n public maxDistance = 1000.0;\r\n\r\n public step = 1.0;\r\n\r\n public thickness = 0.5;\r\n\r\n public strength = 1;\r\n\r\n public reflectionSpecularFalloffExponent = 1;\r\n\r\n public maxSteps = 1000.0;\r\n\r\n public roughnessFactor = 0.2;\r\n\r\n public selfCollisionNumSkip = 1;\r\n\r\n private _reflectivityThreshold = 0.04;\r\n\r\n public get reflectivityThreshold() {\r\n return this._reflectivityThreshold;\r\n }\r\n\r\n public set reflectivityThreshold(threshold: number) {\r\n if (threshold === this._reflectivityThreshold) {\r\n return;\r\n }\r\n\r\n if ((threshold === 0 && this._reflectivityThreshold !== 0) || (threshold !== 0 && this._reflectivityThreshold === 0)) {\r\n this._reflectivityThreshold = threshold;\r\n this._updateEffectDefines();\r\n } else {\r\n this._reflectivityThreshold = threshold;\r\n }\r\n }\r\n\r\n private _useBlur = false;\r\n\r\n public get useBlur() {\r\n return this._useBlur;\r\n }\r\n\r\n public set useBlur(blur: boolean) {\r\n if (this._useBlur === blur) {\r\n return;\r\n }\r\n\r\n this._useBlur = blur;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _enableSmoothReflections = false;\r\n\r\n public get enableSmoothReflections(): boolean {\r\n return this._enableSmoothReflections;\r\n }\r\n\r\n public set enableSmoothReflections(enabled: boolean) {\r\n if (enabled === this._enableSmoothReflections) {\r\n return;\r\n }\r\n\r\n this._enableSmoothReflections = enabled;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _environmentTexture: Nullable<CubeTexture>;\r\n\r\n public get environmentTexture() {\r\n return this._environmentTexture;\r\n }\r\n\r\n public set environmentTexture(texture: Nullable<CubeTexture>) {\r\n this._environmentTexture = texture;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _environmentTextureIsProbe = false;\r\n\r\n public get environmentTextureIsProbe(): boolean {\r\n return this._environmentTextureIsProbe;\r\n }\r\n\r\n public set environmentTextureIsProbe(isProbe: boolean) {\r\n this._environmentTextureIsProbe = isProbe;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _attenuateScreenBorders = true;\r\n\r\n public get attenuateScreenBorders() {\r\n return this._attenuateScreenBorders;\r\n }\r\n\r\n public set attenuateScreenBorders(attenuate: boolean) {\r\n if (this._attenuateScreenBorders === attenuate) {\r\n return;\r\n }\r\n this._attenuateScreenBorders = attenuate;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _attenuateIntersectionDistance = true;\r\n\r\n public get attenuateIntersectionDistance() {\r\n return this._attenuateIntersectionDistance;\r\n }\r\n\r\n public set attenuateIntersectionDistance(attenuate: boolean) {\r\n if (this._attenuateIntersectionDistance === attenuate) {\r\n return;\r\n }\r\n this._attenuateIntersectionDistance = attenuate;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _attenuateIntersectionIterations = true;\r\n\r\n public get attenuateIntersectionIterations() {\r\n return this._attenuateIntersectionIterations;\r\n }\r\n\r\n public set attenuateIntersectionIterations(attenuate: boolean) {\r\n if (this._attenuateIntersectionIterations === attenuate) {\r\n return;\r\n }\r\n this._attenuateIntersectionIterations = attenuate;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _attenuateFacingCamera = false;\r\n\r\n public get attenuateFacingCamera() {\r\n return this._attenuateFacingCamera;\r\n }\r\n\r\n public set attenuateFacingCamera(attenuate: boolean) {\r\n if (this._attenuateFacingCamera === attenuate) {\r\n return;\r\n }\r\n this._attenuateFacingCamera = attenuate;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _attenuateBackfaceReflection = false;\r\n\r\n public get attenuateBackfaceReflection() {\r\n return this._attenuateBackfaceReflection;\r\n }\r\n\r\n public set attenuateBackfaceReflection(attenuate: boolean) {\r\n if (this._attenuateBackfaceReflection === attenuate) {\r\n return;\r\n }\r\n this._attenuateBackfaceReflection = attenuate;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _clipToFrustum = true;\r\n\r\n public get clipToFrustum() {\r\n return this._clipToFrustum;\r\n }\r\n\r\n public set clipToFrustum(clip: boolean) {\r\n if (this._clipToFrustum === clip) {\r\n return;\r\n }\r\n this._clipToFrustum = clip;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _useFresnel = false;\r\n\r\n public get useFresnel() {\r\n return this._useFresnel;\r\n }\r\n\r\n public set useFresnel(fresnel: boolean) {\r\n if (this._useFresnel === fresnel) {\r\n return;\r\n }\r\n this._useFresnel = fresnel;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _enableAutomaticThicknessComputation = false;\r\n\r\n public get enableAutomaticThicknessComputation(): boolean {\r\n return this._enableAutomaticThicknessComputation;\r\n }\r\n\r\n public set enableAutomaticThicknessComputation(automatic: boolean) {\r\n if (this._enableAutomaticThicknessComputation === automatic) {\r\n return;\r\n }\r\n\r\n this._enableAutomaticThicknessComputation = automatic;\r\n\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _inputTextureColorIsInGammaSpace = true;\r\n\r\n public get inputTextureColorIsInGammaSpace(): boolean {\r\n return this._inputTextureColorIsInGammaSpace;\r\n }\r\n\r\n public set inputTextureColorIsInGammaSpace(gammaSpace: boolean) {\r\n if (this._inputTextureColorIsInGammaSpace === gammaSpace) {\r\n return;\r\n }\r\n\r\n this._inputTextureColorIsInGammaSpace = gammaSpace;\r\n\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _generateOutputInGammaSpace = true;\r\n\r\n public get generateOutputInGammaSpace(): boolean {\r\n return this._generateOutputInGammaSpace;\r\n }\r\n\r\n public set generateOutputInGammaSpace(gammaSpace: boolean) {\r\n if (this._generateOutputInGammaSpace === gammaSpace) {\r\n return;\r\n }\r\n\r\n this._generateOutputInGammaSpace = gammaSpace;\r\n\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _debug = false;\r\n\r\n public get debug(): boolean {\r\n return this._debug;\r\n }\r\n\r\n public set debug(value: boolean) {\r\n if (this._debug === value) {\r\n return;\r\n }\r\n\r\n this._debug = value;\r\n\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _textureWidth = 0;\r\n\r\n public get textureWidth() {\r\n return this._textureWidth;\r\n }\r\n\r\n public set textureWidth(width: number) {\r\n if (this._textureWidth === width) {\r\n return;\r\n }\r\n this._textureWidth = width;\r\n }\r\n\r\n private _textureHeight = 0;\r\n\r\n public get textureHeight() {\r\n return this._textureHeight;\r\n }\r\n\r\n public set textureHeight(height: number) {\r\n if (this._textureHeight === height) {\r\n return;\r\n }\r\n this._textureHeight = height;\r\n }\r\n\r\n public camera: Nullable<Camera> = null;\r\n\r\n private _useScreenspaceDepth = false;\r\n\r\n public get useScreenspaceDepth() {\r\n return this._useScreenspaceDepth;\r\n }\r\n\r\n public set useScreenspaceDepth(value: boolean) {\r\n if (this._useScreenspaceDepth === value) {\r\n return;\r\n }\r\n\r\n this._useScreenspaceDepth = value;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _normalsAreInWorldSpace = false;\r\n\r\n public get normalsAreInWorldSpace() {\r\n return this._normalsAreInWorldSpace;\r\n }\r\n\r\n public set normalsAreInWorldSpace(value: boolean) {\r\n if (this._normalsAreInWorldSpace === value) {\r\n return;\r\n }\r\n\r\n this._normalsAreInWorldSpace = value;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _normalsAreUnsigned = false;\r\n\r\n public get normalsAreUnsigned() {\r\n return this._normalsAreUnsigned;\r\n }\r\n\r\n public set normalsAreUnsigned(value: boolean) {\r\n if (this._normalsAreUnsigned === value) {\r\n return;\r\n }\r\n\r\n this._normalsAreUnsigned = value;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _scene: Scene;\r\n\r\n constructor(name: string, scene: Scene, options?: EffectWrapperCreationOptions) {\r\n super({\r\n ...options,\r\n name,\r\n engine: scene.getEngine() || Engine.LastCreatedEngine!,\r\n useShaderStore: true,\r\n useAsPostProcess: true,\r\n fragmentShader: ThinSSRPostProcess.FragmentUrl,\r\n uniforms: ThinSSRPostProcess.Uniforms,\r\n samplers: ThinSSRPostProcess.Samplers,\r\n shaderLanguage: scene.getEngine().isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n });\r\n\r\n this._scene = scene;\r\n this._updateEffectDefines();\r\n }\r\n\r\n public override bind() {\r\n super.bind();\r\n\r\n const effect = this._drawWrapper.effect!;\r\n\r\n const camera = this.camera;\r\n if (!camera) {\r\n return;\r\n }\r\n\r\n const viewMatrix = camera.getViewMatrix();\r\n const projectionMatrix = camera.getProjectionMatrix();\r\n\r\n projectionMatrix.invertToRef(TmpVectors.Matrix[0]);\r\n viewMatrix.invertToRef(TmpVectors.Matrix[1]);\r\n\r\n effect.setMatrix(\"projection\", projectionMatrix);\r\n effect.setMatrix(\"view\", viewMatrix);\r\n effect.setMatrix(\"invView\", TmpVectors.Matrix[1]);\r\n effect.setMatrix(\"invProjectionMatrix\", TmpVectors.Matrix[0]);\r\n effect.setFloat(\"thickness\", this.thickness);\r\n effect.setFloat(\"reflectionSpecularFalloffExponent\", this.reflectionSpecularFalloffExponent);\r\n effect.setFloat(\"strength\", this.strength);\r\n effect.setFloat(\"stepSize\", this.step);\r\n effect.setFloat(\"maxSteps\", this.maxSteps);\r\n effect.setFloat(\"roughnessFactor\", this.roughnessFactor);\r\n effect.setFloat(\"nearPlaneZ\", camera.minZ);\r\n effect.setFloat(\"farPlaneZ\", camera.maxZ);\r\n effect.setFloat(\"maxDistance\", this.maxDistance);\r\n effect.setFloat(\"selfCollisionNumSkip\", this.selfCollisionNumSkip);\r\n effect.setFloat(\"reflectivityThreshold\", this._reflectivityThreshold);\r\n\r\n Matrix.ScalingToRef(this.textureWidth, this.textureHeight, 1, TmpVectors.Matrix[2]);\r\n\r\n projectionMatrix.multiplyToRef(this._scene.getEngine().isWebGPU ? trsWebGPU : trs, TmpVectors.Matrix[3]);\r\n\r\n TmpVectors.Matrix[3].multiplyToRef(TmpVectors.Matrix[2], TmpVectors.Matrix[4]);\r\n\r\n effect.setMatrix(\"projectionPixel\", TmpVectors.Matrix[4]);\r\n\r\n if (this._environmentTexture) {\r\n effect.setTexture(\"envCubeSampler\", this._environmentTexture);\r\n\r\n if (this._environmentTexture.boundingBoxSize) {\r\n effect.setVector3(\"vReflectionPosition\", this._environmentTexture.boundingBoxPosition);\r\n effect.setVector3(\"vReflectionSize\", this._environmentTexture.boundingBoxSize);\r\n }\r\n }\r\n }\r\n\r\n private _updateEffectDefines() {\r\n const defines: string[] = [];\r\n\r\n if (this.isSSRSupported) {\r\n defines.push(\"#define SSR_SUPPORTED\");\r\n }\r\n if (this._enableSmoothReflections) {\r\n defines.push(\"#define SSRAYTRACE_ENABLE_REFINEMENT\");\r\n }\r\n if (this._scene.useRightHandedSystem) {\r\n defines.push(\"#define SSRAYTRACE_RIGHT_HANDED_SCENE\");\r\n }\r\n if (this._useScreenspaceDepth) {\r\n defines.push(\"#define SSRAYTRACE_SCREENSPACE_DEPTH\");\r\n }\r\n if (this._environmentTexture) {\r\n defines.push(\"#define SSR_USE_ENVIRONMENT_CUBE\");\r\n if (this._environmentTexture.boundingBoxSize) {\r\n defines.push(\"#define SSR_USE_LOCAL_REFLECTIONMAP_CUBIC\");\r\n }\r\n if (this._environmentTexture.gammaSpace) {\r\n defines.push(\"#define SSR_ENVIRONMENT_CUBE_IS_GAMMASPACE\");\r\n }\r\n }\r\n if (this._environmentTextureIsProbe) {\r\n defines.push(\"#define SSR_INVERTCUBICMAP\");\r\n }\r\n if (this._enableAutomaticThicknessComputation) {\r\n defines.push(\"#define SSRAYTRACE_USE_BACK_DEPTHBUFFER\");\r\n }\r\n if (this._attenuateScreenBorders) {\r\n defines.push(\"#define SSR_ATTENUATE_SCREEN_BORDERS\");\r\n }\r\n if (this._attenuateIntersectionDistance) {\r\n defines.push(\"#define SSR_ATTENUATE_INTERSECTION_DISTANCE\");\r\n }\r\n if (this._attenuateIntersectionIterations) {\r\n defines.push(\"#define SSR_ATTENUATE_INTERSECTION_NUMITERATIONS\");\r\n }\r\n if (this._attenuateFacingCamera) {\r\n defines.push(\"#define SSR_ATTENUATE_FACING_CAMERA\");\r\n }\r\n if (this._attenuateBackfaceReflection) {\r\n defines.push(\"#define SSR_ATTENUATE_BACKFACE_REFLECTION\");\r\n }\r\n if (this._clipToFrustum) {\r\n defines.push(\"#define SSRAYTRACE_CLIP_TO_FRUSTUM\");\r\n }\r\n if (this.useBlur) {\r\n defines.push(\"#define SSR_USE_BLUR\");\r\n }\r\n if (this._debug) {\r\n defines.push(\"#define SSRAYTRACE_DEBUG\");\r\n }\r\n if (this._inputTextureColorIsInGammaSpace) {\r\n defines.push(\"#define SSR_INPUT_IS_GAMMA_SPACE\");\r\n }\r\n if (this._generateOutputInGammaSpace) {\r\n defines.push(\"#define SSR_OUTPUT_IS_GAMMA_SPACE\");\r\n }\r\n if (this._useFresnel) {\r\n defines.push(\"#define SSR_BLEND_WITH_FRESNEL\");\r\n }\r\n if (this._reflectivityThreshold === 0) {\r\n defines.push(\"#define SSR_DISABLE_REFLECTIVITY_TEST\");\r\n }\r\n\r\n if (this._normalsAreInWorldSpace) {\r\n defines.push(\"#define SSR_NORMAL_IS_IN_WORLDSPACE\");\r\n }\r\n\r\n if (this._normalsAreUnsigned) {\r\n defines.push(\"#define SSR_DECODE_NORMAL\");\r\n }\r\n\r\n if (this.camera && this.camera.mode === Constants.ORTHOGRAPHIC_CAMERA) {\r\n defines.push(\"#define ORTHOGRAPHIC_CAMERA\");\r\n }\r\n\r\n this.updateEffect(defines.join(\"\\n\"));\r\n }\r\n}\r\n"]}
@@ -6,6 +6,8 @@ import type { Camera } from "../../Cameras/camera.js";
6
6
  import { RawTexture } from "../../Materials/Textures/rawTexture.js";
7
7
  import type { Material } from "../../Materials/material.js";
8
8
  import { Observable } from "../../Misc/observable.js";
9
+ import "../geometryBufferRendererSceneComponent";
10
+ import "../iblCdfGeneratorSceneComponent";
9
11
  interface IblShadowsSettings {
10
12
  /**
11
13
  * The exponent of the resolution of the voxel shadow grid. Higher resolutions will result in sharper
@@ -18,6 +18,8 @@ import { IBLShadowsPluginMaterial } from "./iblShadowsPluginMaterial.js";
18
18
  import { PBRBaseMaterial } from "../../Materials/PBR/pbrBaseMaterial.js";
19
19
  import { StandardMaterial } from "../../Materials/standardMaterial.js";
20
20
  import { Observable } from "../../Misc/observable.js";
21
+ import "../geometryBufferRendererSceneComponent.js";
22
+ import "../iblCdfGeneratorSceneComponent.js";
21
23
  /**
22
24
  * Voxel-based shadow rendering for IBL's.
23
25
  * This should not be instanciated directly, as it is part of a scene component