@babylonjs/core 7.42.0 → 7.44.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 (317) hide show
  1. package/Actions/actionEvent.d.ts +4 -4
  2. package/Animations/animation.js +1 -1
  3. package/Animations/animation.js.map +1 -1
  4. package/Buffers/bufferUtils.d.ts +8 -1
  5. package/Buffers/bufferUtils.js +15 -0
  6. package/Buffers/bufferUtils.js.map +1 -1
  7. package/Culling/Helper/boundingInfoHelper.d.ts +2 -9
  8. package/Culling/Helper/boundingInfoHelper.js +2 -9
  9. package/Culling/Helper/boundingInfoHelper.js.map +1 -1
  10. package/Culling/Helper/computeShaderBoundingHelper.js +3 -4
  11. package/Culling/Helper/computeShaderBoundingHelper.js.map +1 -1
  12. package/Culling/Helper/transformFeedbackBoundingHelper.js +27 -64
  13. package/Culling/Helper/transformFeedbackBoundingHelper.js.map +1 -1
  14. package/Engines/Extensions/engine.multiRender.js +3 -2
  15. package/Engines/Extensions/engine.multiRender.js.map +1 -1
  16. package/Engines/WebGPU/webgpuCacheRenderPipeline.d.ts +1 -0
  17. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +5 -0
  18. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  19. package/Engines/WebGPU/webgpuTextureManager.js +6 -1
  20. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  21. package/Engines/abstractEngine.js +2 -2
  22. package/Engines/abstractEngine.js.map +1 -1
  23. package/Engines/engine.d.ts +5 -2
  24. package/FlowGraph/flowGraphConnection.d.ts +1 -1
  25. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.d.ts +64 -0
  26. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.js +147 -0
  27. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.js.map +1 -0
  28. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.d.ts +42 -0
  29. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js +78 -0
  30. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js.map +1 -0
  31. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.d.ts +3 -19
  32. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.js +3 -49
  33. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.js.map +1 -1
  34. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.d.ts +3 -19
  35. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.js +3 -49
  36. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.js.map +1 -1
  37. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.d.ts +3 -19
  38. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.js +3 -49
  39. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.js.map +1 -1
  40. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.d.ts +2 -17
  41. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.js +3 -45
  42. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.js.map +1 -1
  43. package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.d.ts +2 -17
  44. package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.js +3 -44
  45. package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.js.map +1 -1
  46. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.d.ts +3 -19
  47. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.js +3 -49
  48. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.js.map +1 -1
  49. package/FrameGraph/Node/Blocks/PostProcesses/passPostProcessBlock.d.ts +47 -0
  50. package/FrameGraph/Node/Blocks/PostProcesses/passPostProcessBlock.js +65 -0
  51. package/FrameGraph/Node/Blocks/PostProcesses/passPostProcessBlock.js.map +1 -0
  52. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +0 -15
  53. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
  54. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.d.ts +4 -0
  55. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js +9 -0
  56. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js.map +1 -1
  57. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.d.ts +1 -6
  58. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.js +0 -13
  59. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.js.map +1 -1
  60. package/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.js +0 -1
  61. package/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.js.map +1 -1
  62. package/FrameGraph/Node/Blocks/index.d.ts +2 -0
  63. package/FrameGraph/Node/Blocks/index.js +2 -0
  64. package/FrameGraph/Node/Blocks/index.js.map +1 -1
  65. package/FrameGraph/Node/nodeRenderGraphBlock.js +17 -0
  66. package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
  67. package/FrameGraph/Passes/renderPass.d.ts +0 -8
  68. package/FrameGraph/Passes/renderPass.js +0 -10
  69. package/FrameGraph/Passes/renderPass.js.map +1 -1
  70. package/FrameGraph/Tasks/Layers/glowLayerTask.d.ts +57 -0
  71. package/FrameGraph/Tasks/Layers/glowLayerTask.js +173 -0
  72. package/FrameGraph/Tasks/Layers/glowLayerTask.js.map +1 -0
  73. package/FrameGraph/Tasks/PostProcesses/bloomMergeTask.js +1 -1
  74. package/FrameGraph/Tasks/PostProcesses/bloomMergeTask.js.map +1 -1
  75. package/FrameGraph/Tasks/PostProcesses/bloomTask.js +7 -0
  76. package/FrameGraph/Tasks/PostProcesses/bloomTask.js.map +1 -1
  77. package/FrameGraph/Tasks/PostProcesses/circleOfConfusionTask.js +1 -1
  78. package/FrameGraph/Tasks/PostProcesses/circleOfConfusionTask.js.map +1 -1
  79. package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js +1 -1
  80. package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js.map +1 -1
  81. package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.js +5 -5
  82. package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.js.map +1 -1
  83. package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js +12 -4
  84. package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js.map +1 -1
  85. package/FrameGraph/Tasks/PostProcesses/passTask.d.ts +29 -0
  86. package/FrameGraph/Tasks/PostProcesses/passTask.js +31 -0
  87. package/FrameGraph/Tasks/PostProcesses/passTask.js.map +1 -0
  88. package/FrameGraph/Tasks/PostProcesses/postProcessTask.js +1 -1
  89. package/FrameGraph/Tasks/PostProcesses/postProcessTask.js.map +1 -1
  90. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.d.ts +0 -8
  91. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js +1 -17
  92. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js.map +1 -1
  93. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +3 -0
  94. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  95. package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +4 -6
  96. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +20 -22
  97. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  98. package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.d.ts +7 -1
  99. package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js +21 -5
  100. package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js.map +1 -1
  101. package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js +4 -6
  102. package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js.map +1 -1
  103. package/FrameGraph/Tasks/Texture/copyToTextureTask.js +1 -1
  104. package/FrameGraph/Tasks/Texture/copyToTextureTask.js.map +1 -1
  105. package/FrameGraph/frameGraph.js +22 -11
  106. package/FrameGraph/frameGraph.js.map +1 -1
  107. package/FrameGraph/frameGraphRenderContext.d.ts +2 -1
  108. package/FrameGraph/frameGraphRenderContext.js +2 -1
  109. package/FrameGraph/frameGraphRenderContext.js.map +1 -1
  110. package/FrameGraph/frameGraphTask.d.ts +11 -1
  111. package/FrameGraph/frameGraphTask.js +8 -0
  112. package/FrameGraph/frameGraphTask.js.map +1 -1
  113. package/FrameGraph/frameGraphTextureManager.d.ts +9 -3
  114. package/FrameGraph/frameGraphTextureManager.js +10 -4
  115. package/FrameGraph/frameGraphTextureManager.js.map +1 -1
  116. package/FrameGraph/index.d.ts +2 -0
  117. package/FrameGraph/index.js +2 -0
  118. package/FrameGraph/index.js.map +1 -1
  119. package/Gizmos/planeRotationGizmo.js +10 -0
  120. package/Gizmos/planeRotationGizmo.js.map +1 -1
  121. package/Inputs/scene.inputManager.js +2 -2
  122. package/Inputs/scene.inputManager.js.map +1 -1
  123. package/Layers/effectLayer.d.ts +32 -33
  124. package/Layers/effectLayer.js +144 -530
  125. package/Layers/effectLayer.js.map +1 -1
  126. package/Layers/glowLayer.d.ts +14 -41
  127. package/Layers/glowLayer.js +92 -178
  128. package/Layers/glowLayer.js.map +1 -1
  129. package/Layers/highlightLayer.d.ts +0 -1
  130. package/Layers/highlightLayer.js +0 -1
  131. package/Layers/highlightLayer.js.map +1 -1
  132. package/Layers/index.d.ts +2 -0
  133. package/Layers/index.js +2 -0
  134. package/Layers/index.js.map +1 -1
  135. package/Layers/thinEffectLayer.d.ts +230 -0
  136. package/Layers/thinEffectLayer.js +734 -0
  137. package/Layers/thinEffectLayer.js.map +1 -0
  138. package/Layers/thinGlowLayer.d.ts +141 -0
  139. package/Layers/thinGlowLayer.js +292 -0
  140. package/Layers/thinGlowLayer.js.map +1 -0
  141. package/Lights/Shadows/shadowGenerator.js +40 -19
  142. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  143. package/Materials/GreasedLine/greasedLinePluginMaterial.d.ts +6 -2
  144. package/Materials/GreasedLine/greasedLinePluginMaterial.js +8 -2
  145. package/Materials/GreasedLine/greasedLinePluginMaterial.js.map +1 -1
  146. package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js +17 -11
  147. package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js.map +1 -1
  148. package/Materials/GreasedLine/greasedLinePluginMaterialShadersWGSL.js +29 -15
  149. package/Materials/GreasedLine/greasedLinePluginMaterialShadersWGSL.js.map +1 -1
  150. package/Materials/GreasedLine/greasedLineSimpleMaterial.d.ts +1 -0
  151. package/Materials/GreasedLine/greasedLineSimpleMaterial.js +1 -0
  152. package/Materials/GreasedLine/greasedLineSimpleMaterial.js.map +1 -1
  153. package/Materials/Node/Blocks/Input/inputBlock.js +34 -2
  154. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  155. package/Materials/Node/Blocks/PBR/reflectionBlock.js +1 -3
  156. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  157. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +3 -3
  158. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
  159. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +34 -24
  160. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  161. package/Materials/Node/nodeMaterial.d.ts +14 -2
  162. package/Materials/Node/nodeMaterial.js +19 -5
  163. package/Materials/Node/nodeMaterial.js.map +1 -1
  164. package/Materials/PBR/pbrBaseMaterial.d.ts +5 -0
  165. package/Materials/PBR/pbrBaseMaterial.js +6 -0
  166. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  167. package/Materials/Textures/Filtering/hdrFiltering.js +1 -0
  168. package/Materials/Textures/Filtering/hdrFiltering.js.map +1 -1
  169. package/Materials/Textures/Filtering/hdrIrradianceFiltering.d.ts +69 -0
  170. package/Materials/Textures/Filtering/hdrIrradianceFiltering.js +187 -0
  171. package/Materials/Textures/Filtering/hdrIrradianceFiltering.js.map +1 -0
  172. package/Materials/Textures/hdrCubeTexture.d.ts +5 -1
  173. package/Materials/Textures/hdrCubeTexture.js +29 -3
  174. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  175. package/Materials/Textures/index.d.ts +4 -0
  176. package/Materials/Textures/index.js +4 -0
  177. package/Materials/Textures/index.js.map +1 -1
  178. package/Materials/Textures/renderTargetTexture.d.ts +12 -0
  179. package/Materials/Textures/renderTargetTexture.js +29 -8
  180. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  181. package/Materials/materialHelper.functions.d.ts +17 -1
  182. package/Materials/materialHelper.functions.js +76 -4
  183. package/Materials/materialHelper.functions.js.map +1 -1
  184. package/Materials/shaderMaterial.d.ts +5 -4
  185. package/Materials/shaderMaterial.js +28 -51
  186. package/Materials/shaderMaterial.js.map +1 -1
  187. package/Materials/standardMaterial.d.ts +6 -2
  188. package/Materials/standardMaterial.js +5 -2
  189. package/Materials/standardMaterial.js.map +1 -1
  190. package/Meshes/Builders/greasedLineBuilder.d.ts +1 -1
  191. package/Meshes/Builders/planeBuilder.js +2 -2
  192. package/Meshes/Builders/planeBuilder.js.map +1 -1
  193. package/Meshes/Compression/dracoCodec.d.ts +4 -4
  194. package/Meshes/Compression/dracoCodec.js.map +1 -1
  195. package/Meshes/Compression/dracoCompression.d.ts +1 -1
  196. package/Meshes/Compression/dracoCompression.js.map +1 -1
  197. package/Meshes/Compression/dracoCompressionWorker.d.ts +16 -30
  198. package/Meshes/Compression/dracoCompressionWorker.js +128 -22
  199. package/Meshes/Compression/dracoCompressionWorker.js.map +1 -1
  200. package/Meshes/Compression/dracoDecoder.d.ts +4 -9
  201. package/Meshes/Compression/dracoDecoder.js +5 -5
  202. package/Meshes/Compression/dracoDecoder.js.map +1 -1
  203. package/Meshes/Compression/dracoDecoder.types.d.ts +52 -0
  204. package/Meshes/Compression/dracoDecoder.types.js +2 -0
  205. package/Meshes/Compression/dracoDecoder.types.js.map +1 -0
  206. package/Meshes/Compression/dracoEncoder.d.ts +91 -0
  207. package/Meshes/Compression/dracoEncoder.js +239 -0
  208. package/Meshes/Compression/dracoEncoder.js.map +1 -0
  209. package/Meshes/Compression/dracoEncoder.types.d.ts +82 -0
  210. package/Meshes/Compression/dracoEncoder.types.js +2 -0
  211. package/Meshes/Compression/dracoEncoder.types.js.map +1 -0
  212. package/Meshes/Compression/index.d.ts +1 -0
  213. package/Meshes/Compression/index.js +1 -0
  214. package/Meshes/Compression/index.js.map +1 -1
  215. package/Meshes/GaussianSplatting/gaussianSplattingMesh.d.ts +92 -2
  216. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +308 -32
  217. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  218. package/Meshes/GreasedLine/greasedLineBaseMesh.js +4 -1
  219. package/Meshes/GreasedLine/greasedLineBaseMesh.js.map +1 -1
  220. package/Meshes/GreasedLine/greasedLineRibbonMesh.js +1 -1
  221. package/Meshes/GreasedLine/greasedLineRibbonMesh.js.map +1 -1
  222. package/Meshes/Node/Blocks/Textures/geometryTextureBlock.d.ts +1 -1
  223. package/Meshes/abstractMesh.d.ts +1 -2
  224. package/Meshes/abstractMesh.js +1 -2
  225. package/Meshes/abstractMesh.js.map +1 -1
  226. package/Meshes/linesMesh.js +2 -2
  227. package/Meshes/linesMesh.js.map +1 -1
  228. package/Meshes/mesh.d.ts +32 -5
  229. package/Meshes/mesh.js +56 -29
  230. package/Meshes/mesh.js.map +1 -1
  231. package/Meshes/subMesh.js +16 -3
  232. package/Meshes/subMesh.js.map +1 -1
  233. package/Meshes/transformNode.js +2 -0
  234. package/Meshes/transformNode.js.map +1 -1
  235. package/Misc/decorators.serialization.js +2 -0
  236. package/Misc/decorators.serialization.js.map +1 -1
  237. package/Misc/fileTools.js +14 -7
  238. package/Misc/fileTools.js.map +1 -1
  239. package/Misc/greasedLineTools.d.ts +1 -1
  240. package/Misc/logger.d.ts +2 -1
  241. package/Misc/logger.js +2 -1
  242. package/Misc/logger.js.map +1 -1
  243. package/Morph/morphTargetManager.d.ts +21 -0
  244. package/Morph/morphTargetManager.js +37 -2
  245. package/Morph/morphTargetManager.js.map +1 -1
  246. package/Particles/pointsCloudSystem.d.ts +3 -3
  247. package/Physics/v2/Plugins/havokPlugin.d.ts +2 -2
  248. package/PostProcesses/index.d.ts +1 -0
  249. package/PostProcesses/index.js +1 -0
  250. package/PostProcesses/index.js.map +1 -1
  251. package/PostProcesses/passPostProcess.d.ts +2 -3
  252. package/PostProcesses/passPostProcess.js +36 -48
  253. package/PostProcesses/passPostProcess.js.map +1 -1
  254. package/PostProcesses/thinPassPostProcess.d.ts +48 -0
  255. package/PostProcesses/thinPassPostProcess.js +113 -0
  256. package/PostProcesses/thinPassPostProcess.js.map +1 -0
  257. package/PostProcesses/volumetricLightScatteringPostProcess.js +15 -16
  258. package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
  259. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js +1 -1
  260. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js.map +1 -1
  261. package/Rendering/depthRenderer.js +13 -15
  262. package/Rendering/depthRenderer.js.map +1 -1
  263. package/Rendering/geometryBufferRenderer.js +13 -15
  264. package/Rendering/geometryBufferRenderer.js.map +1 -1
  265. package/Rendering/iblCdfGenerator.d.ts +13 -5
  266. package/Rendering/iblCdfGenerator.js +67 -10
  267. package/Rendering/iblCdfGenerator.js.map +1 -1
  268. package/Rendering/objectRenderer.d.ts +9 -2
  269. package/Rendering/objectRenderer.js +44 -7
  270. package/Rendering/objectRenderer.js.map +1 -1
  271. package/Rendering/outlineRenderer.js +13 -15
  272. package/Rendering/outlineRenderer.js.map +1 -1
  273. package/Shaders/ShadersInclude/gaussianSplatting.js +6 -6
  274. package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
  275. package/Shaders/ShadersInclude/morphTargetsVertex.js +16 -4
  276. package/Shaders/ShadersInclude/morphTargetsVertex.js.map +1 -1
  277. package/Shaders/ShadersInclude/pbrBlockReflection.js +13 -8
  278. package/Shaders/ShadersInclude/pbrBlockReflection.js.map +1 -1
  279. package/Shaders/gaussianSplatting.vertex.js +2 -1
  280. package/Shaders/gaussianSplatting.vertex.js.map +1 -1
  281. package/Shaders/hdrIrradianceFiltering.fragment.d.ts +9 -0
  282. package/Shaders/hdrIrradianceFiltering.fragment.js +25 -0
  283. package/Shaders/hdrIrradianceFiltering.fragment.js.map +1 -0
  284. package/Shaders/hdrIrradianceFiltering.vertex.d.ts +5 -0
  285. package/Shaders/hdrIrradianceFiltering.vertex.js +15 -0
  286. package/Shaders/hdrIrradianceFiltering.vertex.js.map +1 -0
  287. package/Shaders/pbr.fragment.js +1 -3
  288. package/Shaders/pbr.fragment.js.map +1 -1
  289. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js +17 -5
  290. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js.map +1 -1
  291. package/ShadersWGSL/ShadersInclude/pbrBlockReflection.js +13 -8
  292. package/ShadersWGSL/ShadersInclude/pbrBlockReflection.js.map +1 -1
  293. package/ShadersWGSL/greasedLine.fragment.js +9 -3
  294. package/ShadersWGSL/greasedLine.fragment.js.map +1 -1
  295. package/ShadersWGSL/greasedLine.vertex.js +12 -2
  296. package/ShadersWGSL/greasedLine.vertex.js.map +1 -1
  297. package/ShadersWGSL/hdrIrradianceFiltering.fragment.d.ts +9 -0
  298. package/ShadersWGSL/hdrIrradianceFiltering.fragment.js +26 -0
  299. package/ShadersWGSL/hdrIrradianceFiltering.fragment.js.map +1 -0
  300. package/ShadersWGSL/hdrIrradianceFiltering.vertex.d.ts +5 -0
  301. package/ShadersWGSL/hdrIrradianceFiltering.vertex.js +16 -0
  302. package/ShadersWGSL/hdrIrradianceFiltering.vertex.js.map +1 -0
  303. package/ShadersWGSL/outline.fragment.js +1 -1
  304. package/ShadersWGSL/outline.fragment.js.map +1 -1
  305. package/ShadersWGSL/passCube.fragment.js +1 -1
  306. package/ShadersWGSL/passCube.fragment.js.map +1 -1
  307. package/ShadersWGSL/pbr.fragment.js +1 -3
  308. package/ShadersWGSL/pbr.fragment.js.map +1 -1
  309. package/XR/features/WebXRDepthSensing.d.ts +24 -2
  310. package/XR/features/WebXRDepthSensing.js +320 -26
  311. package/XR/features/WebXRDepthSensing.js.map +1 -1
  312. package/assetContainer.d.ts +43 -0
  313. package/assetContainer.js +67 -0
  314. package/assetContainer.js.map +1 -1
  315. package/package.json +1 -1
  316. package/scene.js +19 -8
  317. package/scene.js.map +1 -1
@@ -23,6 +23,8 @@ export class NodeRenderGraphBaseShadowGeneratorBlock extends NodeRenderGraphBloc
23
23
  super(name, frameGraph, scene);
24
24
  this.registerInput("light", NodeRenderGraphBlockConnectionPointTypes.ShadowLight);
25
25
  this.registerInput("objects", NodeRenderGraphBlockConnectionPointTypes.ObjectList);
26
+ this.registerInput("camera", NodeRenderGraphBlockConnectionPointTypes.Camera);
27
+ this._addDependenciesInput();
26
28
  this.registerOutput("generator", NodeRenderGraphBlockConnectionPointTypes.ShadowGenerator);
27
29
  this.registerOutput("output", NodeRenderGraphBlockConnectionPointTypes.Texture);
28
30
  }
@@ -122,6 +124,12 @@ export class NodeRenderGraphBaseShadowGeneratorBlock extends NodeRenderGraphBloc
122
124
  get objects() {
123
125
  return this._inputs[1];
124
126
  }
127
+ /**
128
+ * Gets the camera input component
129
+ */
130
+ get camera() {
131
+ return this._inputs[2];
132
+ }
125
133
  /**
126
134
  * Gets the shadow generator component
127
135
  */
@@ -138,6 +146,7 @@ export class NodeRenderGraphBaseShadowGeneratorBlock extends NodeRenderGraphBloc
138
146
  super._buildBlock(state);
139
147
  this._frameGraphTask.light = this.light.connectedPoint?.value;
140
148
  this._frameGraphTask.objectList = this.objects.connectedPoint?.value;
149
+ this._frameGraphTask.camera = this.camera.connectedPoint?.value;
141
150
  // Important: the shadow generator object is created by the task when we set the light, that's why we must set generator.value after setting the light!
142
151
  this.generator.value = this._frameGraphTask;
143
152
  this.output.value = this._frameGraphTask.outputTexture;
@@ -1 +1 @@
1
- {"version":3,"file":"baseShadowGeneratorBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.ts"],"names":[],"mappings":"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","sourcesContent":["// eslint-disable-next-line import/no-internal-modules\r\nimport type { NodeRenderGraphConnectionPoint, Scene, NodeRenderGraphBuildState, FrameGraph, IShadowLight, FrameGraphObjectList, FrameGraphShadowGeneratorTask } from \"core/index\";\r\nimport { NodeRenderGraphBlock } from \"../../nodeRenderGraphBlock\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes } from \"../../Types/nodeRenderGraphTypes\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport { ShadowGenerator } from \"../../../../Lights/Shadows/shadowGenerator\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class NodeRenderGraphBaseShadowGeneratorBlock extends NodeRenderGraphBlock {\r\n protected override _frameGraphTask: FrameGraphShadowGeneratorTask;\r\n\r\n /**\r\n * Gets the frame graph task associated with this block\r\n */\r\n public override get task() {\r\n return this._frameGraphTask;\r\n }\r\n\r\n /**\r\n * Create a new NodeRenderGraphBaseShadowGeneratorBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene) {\r\n super(name, frameGraph, scene);\r\n\r\n this.registerInput(\"light\", NodeRenderGraphBlockConnectionPointTypes.ShadowLight);\r\n this.registerInput(\"objects\", NodeRenderGraphBlockConnectionPointTypes.ObjectList);\r\n\r\n this.registerOutput(\"generator\", NodeRenderGraphBlockConnectionPointTypes.ShadowGenerator);\r\n this.registerOutput(\"output\", NodeRenderGraphBlockConnectionPointTypes.Texture);\r\n }\r\n\r\n /** Sets the size of the shadow texture */\r\n @editableInPropertyPage(\"Map size\", PropertyTypeForEdition.List, \"PROPERTIES\", {\r\n options: [\r\n { label: \"128\", value: 128 },\r\n { label: \"256\", value: 256 },\r\n { label: \"512\", value: 512 },\r\n { label: \"1024\", value: 1024 },\r\n { label: \"2048\", value: 2048 },\r\n { label: \"4096\", value: 4096 },\r\n { label: \"8192\", value: 8192 },\r\n ],\r\n })\r\n public get mapSize() {\r\n return this._frameGraphTask.mapSize;\r\n }\r\n\r\n public set mapSize(value: number) {\r\n this._frameGraphTask.mapSize = value;\r\n }\r\n\r\n /** Sets the texture type to float (by default, half float is used if supported) */\r\n @editableInPropertyPage(\"Use 32 bits float texture type\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get useFloat32TextureType() {\r\n return this._frameGraphTask.useFloat32TextureType;\r\n }\r\n\r\n public set useFloat32TextureType(value: boolean) {\r\n this._frameGraphTask.useFloat32TextureType = value;\r\n }\r\n\r\n /** Sets the texture type to Red */\r\n @editableInPropertyPage(\"Use red texture format\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get useRedTextureFormat() {\r\n return this._frameGraphTask.useRedTextureFormat;\r\n }\r\n\r\n public set useRedTextureFormat(value: boolean) {\r\n this._frameGraphTask.useRedTextureFormat = value;\r\n }\r\n\r\n /** Sets the bias */\r\n @editableInPropertyPage(\"Bias\", PropertyTypeForEdition.Float, \"PROPERTIES\", { min: 0, max: 1 })\r\n public get bias() {\r\n return this._frameGraphTask.bias;\r\n }\r\n\r\n public set bias(value: number) {\r\n this._frameGraphTask.bias = value;\r\n }\r\n\r\n /** Sets the normal bias */\r\n @editableInPropertyPage(\"Normal bias\", PropertyTypeForEdition.Float, \"PROPERTIES\", { min: 0, max: 1 })\r\n public get normalBias() {\r\n return this._frameGraphTask.normalBias;\r\n }\r\n\r\n public set normalBias(value: number) {\r\n this._frameGraphTask.normalBias = value;\r\n }\r\n\r\n /** Sets the darkness of the shadows */\r\n @editableInPropertyPage(\"Darkness\", PropertyTypeForEdition.Float, \"PROPERTIES\", { min: 0, max: 1 })\r\n public get darkness() {\r\n return this._frameGraphTask.darkness;\r\n }\r\n\r\n public set darkness(value: number) {\r\n this._frameGraphTask.darkness = value;\r\n }\r\n\r\n /** Sets the filter method */\r\n @editableInPropertyPage(\"Filter\", PropertyTypeForEdition.List, \"PROPERTIES\", {\r\n options: [\r\n { label: \"None\", value: ShadowGenerator.FILTER_NONE },\r\n { label: \"Exponential\", value: ShadowGenerator.FILTER_EXPONENTIALSHADOWMAP },\r\n { label: \"Poisson Sampling\", value: ShadowGenerator.FILTER_POISSONSAMPLING },\r\n { label: \"Blur exponential\", value: ShadowGenerator.FILTER_BLUREXPONENTIALSHADOWMAP },\r\n { label: \"Close exponential\", value: ShadowGenerator.FILTER_CLOSEEXPONENTIALSHADOWMAP },\r\n { label: \"Blur close exponential\", value: ShadowGenerator.FILTER_BLURCLOSEEXPONENTIALSHADOWMAP },\r\n { label: \"PCF\", value: ShadowGenerator.FILTER_PCF },\r\n { label: \"PCSS\", value: ShadowGenerator.FILTER_PCSS },\r\n ],\r\n })\r\n public get filter() {\r\n return this._frameGraphTask.filter;\r\n }\r\n\r\n public set filter(value: number) {\r\n this._frameGraphTask.filter = value;\r\n }\r\n\r\n /** Sets the filter quality (for PCF and PCSS) */\r\n @editableInPropertyPage(\"Filter quality\", PropertyTypeForEdition.List, \"PROPERTIES\", {\r\n options: [\r\n { label: \"Low\", value: ShadowGenerator.QUALITY_LOW },\r\n { label: \"Medium\", value: ShadowGenerator.QUALITY_MEDIUM },\r\n { label: \"High\", value: ShadowGenerator.QUALITY_HIGH },\r\n ],\r\n })\r\n public get filteringQuality() {\r\n return this._frameGraphTask.filteringQuality;\r\n }\r\n\r\n public set filteringQuality(value: number) {\r\n this._frameGraphTask.filteringQuality = value;\r\n }\r\n\r\n /** Gets or sets the ability to have transparent shadow */\r\n @editableInPropertyPage(\"Transparency shadow\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get transparencyShadow() {\r\n return this._frameGraphTask.transparencyShadow;\r\n }\r\n\r\n public set transparencyShadow(value: boolean) {\r\n this._frameGraphTask.transparencyShadow = value;\r\n }\r\n\r\n /** Enables or disables shadows with varying strength based on the transparency */\r\n @editableInPropertyPage(\"Enable soft transparent shadows\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get enableSoftTransparentShadow() {\r\n return this._frameGraphTask.enableSoftTransparentShadow;\r\n }\r\n\r\n public set enableSoftTransparentShadow(value: boolean) {\r\n this._frameGraphTask.enableSoftTransparentShadow = value;\r\n }\r\n\r\n /** If this is true, use the opacity texture's alpha channel for transparent shadows instead of the diffuse one */\r\n @editableInPropertyPage(\"Use opacity texture for transparent shadows\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get useOpacityTextureForTransparentShadow() {\r\n return this._frameGraphTask.useOpacityTextureForTransparentShadow;\r\n }\r\n\r\n public set useOpacityTextureForTransparentShadow(value: boolean) {\r\n this._frameGraphTask.useOpacityTextureForTransparentShadow = value;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphBaseShadowGeneratorBlock\";\r\n }\r\n\r\n /**\r\n * Gets the light input component\r\n */\r\n public get light(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the objects input component\r\n */\r\n public get objects(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the shadow generator component\r\n */\r\n public get generator(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the output texture component\r\n */\r\n public get output(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n protected override _buildBlock(state: NodeRenderGraphBuildState) {\r\n super._buildBlock(state);\r\n\r\n this._frameGraphTask.light = this.light.connectedPoint?.value as IShadowLight;\r\n this._frameGraphTask.objectList = this.objects.connectedPoint?.value as FrameGraphObjectList;\r\n\r\n // Important: the shadow generator object is created by the task when we set the light, that's why we must set generator.value after setting the light!\r\n this.generator.value = this._frameGraphTask;\r\n this.output.value = this._frameGraphTask.outputTexture;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.mapSize = ${this.mapSize};`);\r\n codes.push(`${this._codeVariableName}.useFloat32TextureType = ${this.useFloat32TextureType};`);\r\n codes.push(`${this._codeVariableName}.useRedTextureFormat = ${this.useRedTextureFormat};`);\r\n codes.push(`${this._codeVariableName}.bias = ${this.bias};`);\r\n codes.push(`${this._codeVariableName}.normalBias = ${this.normalBias};`);\r\n codes.push(`${this._codeVariableName}.darkness = ${this.darkness};`);\r\n codes.push(`${this._codeVariableName}.filter = ${this.filter};`);\r\n codes.push(`${this._codeVariableName}.filteringQuality = ${this.filteringQuality};`);\r\n codes.push(`${this._codeVariableName}.transparencyShadow = ${this.transparencyShadow};`);\r\n codes.push(`${this._codeVariableName}.enableSoftTransparentShadow = ${this.enableSoftTransparentShadow};`);\r\n codes.push(`${this._codeVariableName}.useOpacityTextureForTransparentShadow = ${this.useOpacityTextureForTransparentShadow};`);\r\n return super._dumpPropertiesCode() + codes.join(\"\\n\");\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.mapSize = this.mapSize;\r\n serializationObject.useFloat32TextureType = this.useFloat32TextureType;\r\n serializationObject.useRedTextureFormat = this.useRedTextureFormat;\r\n serializationObject.bias = this.bias;\r\n serializationObject.normalBias = this.normalBias;\r\n serializationObject.darkness = this.darkness;\r\n serializationObject.filter = this.filter;\r\n serializationObject.filteringQuality = this.filteringQuality;\r\n serializationObject.transparencyShadow = this.transparencyShadow;\r\n serializationObject.enableSoftTransparentShadow = this.enableSoftTransparentShadow;\r\n serializationObject.useOpacityTextureForTransparentShadow = this.useOpacityTextureForTransparentShadow;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n this.mapSize = serializationObject.mapSize;\r\n this.useFloat32TextureType = serializationObject.useFloat32TextureType;\r\n this.useRedTextureFormat = serializationObject.useRedTextureFormat;\r\n this.bias = serializationObject.bias;\r\n this.normalBias = serializationObject.normalBias;\r\n this.darkness = serializationObject.darkness;\r\n this.filter = serializationObject.filter;\r\n this.filteringQuality = serializationObject.filteringQuality;\r\n this.transparencyShadow = serializationObject.transparencyShadow;\r\n this.enableSoftTransparentShadow = serializationObject.enableSoftTransparentShadow;\r\n this.useOpacityTextureForTransparentShadow = serializationObject.useOpacityTextureForTransparentShadow;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"baseShadowGeneratorBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\r\n NodeRenderGraphConnectionPoint,\r\n Scene,\r\n NodeRenderGraphBuildState,\r\n FrameGraph,\r\n IShadowLight,\r\n FrameGraphObjectList,\r\n FrameGraphShadowGeneratorTask,\r\n Camera,\r\n // eslint-disable-next-line import/no-internal-modules\r\n} from \"core/index\";\r\nimport { NodeRenderGraphBlock } from \"../../nodeRenderGraphBlock\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes } from \"../../Types/nodeRenderGraphTypes\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport { ShadowGenerator } from \"../../../../Lights/Shadows/shadowGenerator\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class NodeRenderGraphBaseShadowGeneratorBlock extends NodeRenderGraphBlock {\r\n protected override _frameGraphTask: FrameGraphShadowGeneratorTask;\r\n\r\n /**\r\n * Gets the frame graph task associated with this block\r\n */\r\n public override get task() {\r\n return this._frameGraphTask;\r\n }\r\n\r\n /**\r\n * Create a new NodeRenderGraphBaseShadowGeneratorBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene) {\r\n super(name, frameGraph, scene);\r\n\r\n this.registerInput(\"light\", NodeRenderGraphBlockConnectionPointTypes.ShadowLight);\r\n this.registerInput(\"objects\", NodeRenderGraphBlockConnectionPointTypes.ObjectList);\r\n this.registerInput(\"camera\", NodeRenderGraphBlockConnectionPointTypes.Camera);\r\n this._addDependenciesInput();\r\n\r\n this.registerOutput(\"generator\", NodeRenderGraphBlockConnectionPointTypes.ShadowGenerator);\r\n this.registerOutput(\"output\", NodeRenderGraphBlockConnectionPointTypes.Texture);\r\n }\r\n\r\n /** Sets the size of the shadow texture */\r\n @editableInPropertyPage(\"Map size\", PropertyTypeForEdition.List, \"PROPERTIES\", {\r\n options: [\r\n { label: \"128\", value: 128 },\r\n { label: \"256\", value: 256 },\r\n { label: \"512\", value: 512 },\r\n { label: \"1024\", value: 1024 },\r\n { label: \"2048\", value: 2048 },\r\n { label: \"4096\", value: 4096 },\r\n { label: \"8192\", value: 8192 },\r\n ],\r\n })\r\n public get mapSize() {\r\n return this._frameGraphTask.mapSize;\r\n }\r\n\r\n public set mapSize(value: number) {\r\n this._frameGraphTask.mapSize = value;\r\n }\r\n\r\n /** Sets the texture type to float (by default, half float is used if supported) */\r\n @editableInPropertyPage(\"Use 32 bits float texture type\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get useFloat32TextureType() {\r\n return this._frameGraphTask.useFloat32TextureType;\r\n }\r\n\r\n public set useFloat32TextureType(value: boolean) {\r\n this._frameGraphTask.useFloat32TextureType = value;\r\n }\r\n\r\n /** Sets the texture type to Red */\r\n @editableInPropertyPage(\"Use red texture format\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get useRedTextureFormat() {\r\n return this._frameGraphTask.useRedTextureFormat;\r\n }\r\n\r\n public set useRedTextureFormat(value: boolean) {\r\n this._frameGraphTask.useRedTextureFormat = value;\r\n }\r\n\r\n /** Sets the bias */\r\n @editableInPropertyPage(\"Bias\", PropertyTypeForEdition.Float, \"PROPERTIES\", { min: 0, max: 1 })\r\n public get bias() {\r\n return this._frameGraphTask.bias;\r\n }\r\n\r\n public set bias(value: number) {\r\n this._frameGraphTask.bias = value;\r\n }\r\n\r\n /** Sets the normal bias */\r\n @editableInPropertyPage(\"Normal bias\", PropertyTypeForEdition.Float, \"PROPERTIES\", { min: 0, max: 1 })\r\n public get normalBias() {\r\n return this._frameGraphTask.normalBias;\r\n }\r\n\r\n public set normalBias(value: number) {\r\n this._frameGraphTask.normalBias = value;\r\n }\r\n\r\n /** Sets the darkness of the shadows */\r\n @editableInPropertyPage(\"Darkness\", PropertyTypeForEdition.Float, \"PROPERTIES\", { min: 0, max: 1 })\r\n public get darkness() {\r\n return this._frameGraphTask.darkness;\r\n }\r\n\r\n public set darkness(value: number) {\r\n this._frameGraphTask.darkness = value;\r\n }\r\n\r\n /** Sets the filter method */\r\n @editableInPropertyPage(\"Filter\", PropertyTypeForEdition.List, \"PROPERTIES\", {\r\n options: [\r\n { label: \"None\", value: ShadowGenerator.FILTER_NONE },\r\n { label: \"Exponential\", value: ShadowGenerator.FILTER_EXPONENTIALSHADOWMAP },\r\n { label: \"Poisson Sampling\", value: ShadowGenerator.FILTER_POISSONSAMPLING },\r\n { label: \"Blur exponential\", value: ShadowGenerator.FILTER_BLUREXPONENTIALSHADOWMAP },\r\n { label: \"Close exponential\", value: ShadowGenerator.FILTER_CLOSEEXPONENTIALSHADOWMAP },\r\n { label: \"Blur close exponential\", value: ShadowGenerator.FILTER_BLURCLOSEEXPONENTIALSHADOWMAP },\r\n { label: \"PCF\", value: ShadowGenerator.FILTER_PCF },\r\n { label: \"PCSS\", value: ShadowGenerator.FILTER_PCSS },\r\n ],\r\n })\r\n public get filter() {\r\n return this._frameGraphTask.filter;\r\n }\r\n\r\n public set filter(value: number) {\r\n this._frameGraphTask.filter = value;\r\n }\r\n\r\n /** Sets the filter quality (for PCF and PCSS) */\r\n @editableInPropertyPage(\"Filter quality\", PropertyTypeForEdition.List, \"PROPERTIES\", {\r\n options: [\r\n { label: \"Low\", value: ShadowGenerator.QUALITY_LOW },\r\n { label: \"Medium\", value: ShadowGenerator.QUALITY_MEDIUM },\r\n { label: \"High\", value: ShadowGenerator.QUALITY_HIGH },\r\n ],\r\n })\r\n public get filteringQuality() {\r\n return this._frameGraphTask.filteringQuality;\r\n }\r\n\r\n public set filteringQuality(value: number) {\r\n this._frameGraphTask.filteringQuality = value;\r\n }\r\n\r\n /** Gets or sets the ability to have transparent shadow */\r\n @editableInPropertyPage(\"Transparency shadow\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get transparencyShadow() {\r\n return this._frameGraphTask.transparencyShadow;\r\n }\r\n\r\n public set transparencyShadow(value: boolean) {\r\n this._frameGraphTask.transparencyShadow = value;\r\n }\r\n\r\n /** Enables or disables shadows with varying strength based on the transparency */\r\n @editableInPropertyPage(\"Enable soft transparent shadows\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get enableSoftTransparentShadow() {\r\n return this._frameGraphTask.enableSoftTransparentShadow;\r\n }\r\n\r\n public set enableSoftTransparentShadow(value: boolean) {\r\n this._frameGraphTask.enableSoftTransparentShadow = value;\r\n }\r\n\r\n /** If this is true, use the opacity texture's alpha channel for transparent shadows instead of the diffuse one */\r\n @editableInPropertyPage(\"Use opacity texture for transparent shadows\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get useOpacityTextureForTransparentShadow() {\r\n return this._frameGraphTask.useOpacityTextureForTransparentShadow;\r\n }\r\n\r\n public set useOpacityTextureForTransparentShadow(value: boolean) {\r\n this._frameGraphTask.useOpacityTextureForTransparentShadow = value;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphBaseShadowGeneratorBlock\";\r\n }\r\n\r\n /**\r\n * Gets the light input component\r\n */\r\n public get light(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the objects input component\r\n */\r\n public get objects(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the camera input component\r\n */\r\n public get camera(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the shadow generator component\r\n */\r\n public get generator(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the output texture component\r\n */\r\n public get output(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n protected override _buildBlock(state: NodeRenderGraphBuildState) {\r\n super._buildBlock(state);\r\n\r\n this._frameGraphTask.light = this.light.connectedPoint?.value as IShadowLight;\r\n this._frameGraphTask.objectList = this.objects.connectedPoint?.value as FrameGraphObjectList;\r\n this._frameGraphTask.camera = this.camera.connectedPoint?.value as Camera;\r\n\r\n // Important: the shadow generator object is created by the task when we set the light, that's why we must set generator.value after setting the light!\r\n this.generator.value = this._frameGraphTask;\r\n this.output.value = this._frameGraphTask.outputTexture;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.mapSize = ${this.mapSize};`);\r\n codes.push(`${this._codeVariableName}.useFloat32TextureType = ${this.useFloat32TextureType};`);\r\n codes.push(`${this._codeVariableName}.useRedTextureFormat = ${this.useRedTextureFormat};`);\r\n codes.push(`${this._codeVariableName}.bias = ${this.bias};`);\r\n codes.push(`${this._codeVariableName}.normalBias = ${this.normalBias};`);\r\n codes.push(`${this._codeVariableName}.darkness = ${this.darkness};`);\r\n codes.push(`${this._codeVariableName}.filter = ${this.filter};`);\r\n codes.push(`${this._codeVariableName}.filteringQuality = ${this.filteringQuality};`);\r\n codes.push(`${this._codeVariableName}.transparencyShadow = ${this.transparencyShadow};`);\r\n codes.push(`${this._codeVariableName}.enableSoftTransparentShadow = ${this.enableSoftTransparentShadow};`);\r\n codes.push(`${this._codeVariableName}.useOpacityTextureForTransparentShadow = ${this.useOpacityTextureForTransparentShadow};`);\r\n return super._dumpPropertiesCode() + codes.join(\"\\n\");\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.mapSize = this.mapSize;\r\n serializationObject.useFloat32TextureType = this.useFloat32TextureType;\r\n serializationObject.useRedTextureFormat = this.useRedTextureFormat;\r\n serializationObject.bias = this.bias;\r\n serializationObject.normalBias = this.normalBias;\r\n serializationObject.darkness = this.darkness;\r\n serializationObject.filter = this.filter;\r\n serializationObject.filteringQuality = this.filteringQuality;\r\n serializationObject.transparencyShadow = this.transparencyShadow;\r\n serializationObject.enableSoftTransparentShadow = this.enableSoftTransparentShadow;\r\n serializationObject.useOpacityTextureForTransparentShadow = this.useOpacityTextureForTransparentShadow;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n this.mapSize = serializationObject.mapSize;\r\n this.useFloat32TextureType = serializationObject.useFloat32TextureType;\r\n this.useRedTextureFormat = serializationObject.useRedTextureFormat;\r\n this.bias = serializationObject.bias;\r\n this.normalBias = serializationObject.normalBias;\r\n this.darkness = serializationObject.darkness;\r\n this.filter = serializationObject.filter;\r\n this.filteringQuality = serializationObject.filteringQuality;\r\n this.transparencyShadow = serializationObject.transparencyShadow;\r\n this.enableSoftTransparentShadow = serializationObject.enableSoftTransparentShadow;\r\n this.useOpacityTextureForTransparentShadow = serializationObject.useOpacityTextureForTransparentShadow;\r\n }\r\n}\r\n"]}
@@ -1,4 +1,4 @@
1
- import type { Scene, FrameGraph, NodeRenderGraphConnectionPoint, NodeRenderGraphBuildState } from "../../../../index.js";
1
+ import type { Scene, FrameGraph } from "../../../../index.js";
2
2
  import { NodeRenderGraphBaseShadowGeneratorBlock } from "./baseShadowGeneratorBlock";
3
3
  import { FrameGraphCascadedShadowGeneratorTask } from "../../../Tasks/Rendering/csmShadowGeneratorTask";
4
4
  /**
@@ -46,11 +46,6 @@ export declare class NodeRenderGraphCascadedShadowGeneratorBlock extends NodeRen
46
46
  * @returns the class name
47
47
  */
48
48
  getClassName(): string;
49
- /**
50
- * Gets the camera input component
51
- */
52
- get camera(): NodeRenderGraphConnectionPoint;
53
- protected _buildBlock(state: NodeRenderGraphBuildState): void;
54
49
  protected _dumpPropertiesCode(): string;
55
50
  serialize(): any;
56
51
  _deserialize(serializationObject: any): void;
@@ -3,7 +3,6 @@ import { NodeRenderGraphBaseShadowGeneratorBlock } from "./baseShadowGeneratorBl
3
3
  import { RegisterClass } from "../../../../Misc/typeStore.js";
4
4
  import { editableInPropertyPage } from "../../../../Decorators/nodeDecorator.js";
5
5
  import { FrameGraphCascadedShadowGeneratorTask } from "../../../Tasks/Rendering/csmShadowGeneratorTask.js";
6
- import { NodeRenderGraphBlockConnectionPointTypes } from "../../Types/nodeRenderGraphTypes.js";
7
6
  /**
8
7
  * Block that generates shadows through a shadow generator
9
8
  */
@@ -22,8 +21,6 @@ export class NodeRenderGraphCascadedShadowGeneratorBlock extends NodeRenderGraph
22
21
  */
23
22
  constructor(name, frameGraph, scene) {
24
23
  super(name, frameGraph, scene);
25
- this.registerInput("camera", NodeRenderGraphBlockConnectionPointTypes.Camera);
26
- this._addDependenciesInput();
27
24
  this._frameGraphTask = new FrameGraphCascadedShadowGeneratorTask(this.name, frameGraph, scene);
28
25
  }
29
26
  /** Sets the number of cascades */
@@ -89,16 +86,6 @@ export class NodeRenderGraphCascadedShadowGeneratorBlock extends NodeRenderGraph
89
86
  getClassName() {
90
87
  return "NodeRenderGraphCascadedShadowGeneratorBlock";
91
88
  }
92
- /**
93
- * Gets the camera input component
94
- */
95
- get camera() {
96
- return this._inputs[2];
97
- }
98
- _buildBlock(state) {
99
- super._buildBlock(state);
100
- this._frameGraphTask.camera = this.camera.connectedPoint?.value;
101
- }
102
89
  _dumpPropertiesCode() {
103
90
  const codes = [];
104
91
  codes.push(`${this._codeVariableName}.numCascades = ${this.numCascades};`);
@@ -1 +1 @@
1
- {"version":3,"file":"csmShadowGeneratorBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.ts"],"names":[],"mappings":"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","sourcesContent":["// eslint-disable-next-line import/no-internal-modules\r\nimport type { Scene, FrameGraph, NodeRenderGraphConnectionPoint, NodeRenderGraphBuildState, Camera } from \"core/index\";\r\nimport { NodeRenderGraphBaseShadowGeneratorBlock } from \"./baseShadowGeneratorBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport { FrameGraphCascadedShadowGeneratorTask } from \"../../../Tasks/Rendering/csmShadowGeneratorTask\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes } from \"../../Types/nodeRenderGraphTypes\";\r\n\r\n/**\r\n * Block that generates shadows through a shadow generator\r\n */\r\nexport class NodeRenderGraphCascadedShadowGeneratorBlock extends NodeRenderGraphBaseShadowGeneratorBlock {\r\n protected override _frameGraphTask: FrameGraphCascadedShadowGeneratorTask;\r\n\r\n /**\r\n * Gets the frame graph task associated with this block\r\n */\r\n public override get task() {\r\n return this._frameGraphTask;\r\n }\r\n\r\n /**\r\n * Create a new NodeRenderGraphCascadedShadowGeneratorBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene) {\r\n super(name, frameGraph, scene);\r\n\r\n this.registerInput(\"camera\", NodeRenderGraphBlockConnectionPointTypes.Camera);\r\n this._addDependenciesInput();\r\n\r\n this._frameGraphTask = new FrameGraphCascadedShadowGeneratorTask(this.name, frameGraph, scene);\r\n }\r\n\r\n /** Sets the number of cascades */\r\n @editableInPropertyPage(\"Number of cascades\", PropertyTypeForEdition.List, \"CSM PROPERTIES\", {\r\n options: [\r\n { label: \"2\", value: 2 },\r\n { label: \"3\", value: 3 },\r\n { label: \"4\", value: 4 },\r\n ],\r\n })\r\n public get numCascades() {\r\n return this._frameGraphTask.numCascades;\r\n }\r\n\r\n public set numCascades(value: number) {\r\n this._frameGraphTask.numCascades = value;\r\n }\r\n\r\n /** Gets or sets a value indicating whether the shadow generator should display the cascades. */\r\n @editableInPropertyPage(\"Debug mode\", PropertyTypeForEdition.Boolean, \"CSM PROPERTIES\")\r\n public get debug() {\r\n return this._frameGraphTask.debug;\r\n }\r\n\r\n public set debug(value: boolean) {\r\n this._frameGraphTask.debug = value;\r\n }\r\n\r\n /** Gets or sets a value indicating whether the shadow generator should stabilize the cascades. */\r\n @editableInPropertyPage(\"Stabilize cascades\", PropertyTypeForEdition.Boolean, \"CSM PROPERTIES\")\r\n public get stabilizeCascades() {\r\n return this._frameGraphTask.stabilizeCascades;\r\n }\r\n\r\n public set stabilizeCascades(value: boolean) {\r\n this._frameGraphTask.stabilizeCascades = value;\r\n }\r\n\r\n /** Gets or sets the lambda parameter of the shadow generator. */\r\n @editableInPropertyPage(\"Lambda\", PropertyTypeForEdition.Float, \"CSM PROPERTIES\", { min: 0, max: 1 })\r\n public get lambda() {\r\n return this._frameGraphTask.lambda;\r\n }\r\n\r\n public set lambda(value: number) {\r\n this._frameGraphTask.lambda = value;\r\n }\r\n\r\n /** Gets or sets the cascade blend percentage. */\r\n @editableInPropertyPage(\"Cascade blend\", PropertyTypeForEdition.Float, \"CSM PROPERTIES\", { min: 0, max: 1 })\r\n public get cascadeBlendPercentage() {\r\n return this._frameGraphTask.cascadeBlendPercentage;\r\n }\r\n\r\n public set cascadeBlendPercentage(value: number) {\r\n this._frameGraphTask.cascadeBlendPercentage = value;\r\n }\r\n\r\n /** Gets or sets a value indicating whether the shadow generator should use depth clamping. */\r\n @editableInPropertyPage(\"Depth clamp\", PropertyTypeForEdition.Boolean, \"CSM PROPERTIES\")\r\n public get depthClamp() {\r\n return this._frameGraphTask.depthClamp;\r\n }\r\n\r\n public set depthClamp(value: boolean) {\r\n this._frameGraphTask.depthClamp = value;\r\n }\r\n\r\n /** Gets or sets a value indicating whether the shadow generator should automatically calculate the depth bounds. */\r\n @editableInPropertyPage(\"Auto-Calc depth bounds\", PropertyTypeForEdition.Boolean, \"CSM PROPERTIES\")\r\n public get autoCalcDepthBounds() {\r\n return this._frameGraphTask.autoCalcDepthBounds;\r\n }\r\n\r\n public set autoCalcDepthBounds(value: boolean) {\r\n this._frameGraphTask.autoCalcDepthBounds = value;\r\n }\r\n\r\n /** Gets or sets the maximum shadow Z value. */\r\n @editableInPropertyPage(\"Shadow maxZ\", PropertyTypeForEdition.Float, \"CSM PROPERTIES\")\r\n public get shadowMaxZ() {\r\n return this._frameGraphTask.shadowMaxZ;\r\n }\r\n\r\n public set shadowMaxZ(value: number) {\r\n this._frameGraphTask.shadowMaxZ = value;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphCascadedShadowGeneratorBlock\";\r\n }\r\n\r\n /**\r\n * Gets the camera input component\r\n */\r\n public get camera(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n protected override _buildBlock(state: NodeRenderGraphBuildState) {\r\n super._buildBlock(state);\r\n\r\n this._frameGraphTask.camera = this.camera.connectedPoint?.value as Camera;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.numCascades = ${this.numCascades};`);\r\n codes.push(`${this._codeVariableName}.debug = ${this.debug};`);\r\n codes.push(`${this._codeVariableName}.stabilizeCascades = ${this.stabilizeCascades};`);\r\n codes.push(`${this._codeVariableName}.lambda = ${this.lambda};`);\r\n codes.push(`${this._codeVariableName}.cascadeBlendPercentage = ${this.cascadeBlendPercentage};`);\r\n codes.push(`${this._codeVariableName}.depthClamp = ${this.depthClamp};`);\r\n codes.push(`${this._codeVariableName}.autoCalcDepthBounds = ${this.autoCalcDepthBounds};`);\r\n codes.push(`${this._codeVariableName}.shadowMaxZ = ${this.shadowMaxZ};`);\r\n return super._dumpPropertiesCode() + codes.join(\"\\n\");\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.numCascades = this.numCascades;\r\n serializationObject.debug = this.debug;\r\n serializationObject.stabilizeCascades = this.stabilizeCascades;\r\n serializationObject.lambda = this.lambda;\r\n serializationObject.cascadeBlendPercentage = this.cascadeBlendPercentage;\r\n serializationObject.depthClamp = this.depthClamp;\r\n serializationObject.autoCalcDepthBounds = this.autoCalcDepthBounds;\r\n serializationObject.shadowMaxZ = this.shadowMaxZ;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n this.numCascades = serializationObject.numCascades;\r\n this.debug = serializationObject.debug;\r\n this.stabilizeCascades = serializationObject.stabilizeCascades;\r\n this.lambda = serializationObject.lambda;\r\n this.cascadeBlendPercentage = serializationObject.cascadeBlendPercentage;\r\n this.depthClamp = serializationObject.depthClamp;\r\n this.autoCalcDepthBounds = serializationObject.autoCalcDepthBounds;\r\n this.shadowMaxZ = serializationObject.shadowMaxZ;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.NodeRenderGraphCascadedShadowGeneratorBlock\", NodeRenderGraphCascadedShadowGeneratorBlock);\r\n"]}
1
+ {"version":3,"file":"csmShadowGeneratorBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.ts"],"names":[],"mappings":"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","sourcesContent":["// eslint-disable-next-line import/no-internal-modules\r\nimport type { Scene, FrameGraph } from \"core/index\";\r\nimport { NodeRenderGraphBaseShadowGeneratorBlock } from \"./baseShadowGeneratorBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport { FrameGraphCascadedShadowGeneratorTask } from \"../../../Tasks/Rendering/csmShadowGeneratorTask\";\r\n\r\n/**\r\n * Block that generates shadows through a shadow generator\r\n */\r\nexport class NodeRenderGraphCascadedShadowGeneratorBlock extends NodeRenderGraphBaseShadowGeneratorBlock {\r\n protected override _frameGraphTask: FrameGraphCascadedShadowGeneratorTask;\r\n\r\n /**\r\n * Gets the frame graph task associated with this block\r\n */\r\n public override get task() {\r\n return this._frameGraphTask;\r\n }\r\n\r\n /**\r\n * Create a new NodeRenderGraphCascadedShadowGeneratorBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene) {\r\n super(name, frameGraph, scene);\r\n\r\n this._frameGraphTask = new FrameGraphCascadedShadowGeneratorTask(this.name, frameGraph, scene);\r\n }\r\n\r\n /** Sets the number of cascades */\r\n @editableInPropertyPage(\"Number of cascades\", PropertyTypeForEdition.List, \"CSM PROPERTIES\", {\r\n options: [\r\n { label: \"2\", value: 2 },\r\n { label: \"3\", value: 3 },\r\n { label: \"4\", value: 4 },\r\n ],\r\n })\r\n public get numCascades() {\r\n return this._frameGraphTask.numCascades;\r\n }\r\n\r\n public set numCascades(value: number) {\r\n this._frameGraphTask.numCascades = value;\r\n }\r\n\r\n /** Gets or sets a value indicating whether the shadow generator should display the cascades. */\r\n @editableInPropertyPage(\"Debug mode\", PropertyTypeForEdition.Boolean, \"CSM PROPERTIES\")\r\n public get debug() {\r\n return this._frameGraphTask.debug;\r\n }\r\n\r\n public set debug(value: boolean) {\r\n this._frameGraphTask.debug = value;\r\n }\r\n\r\n /** Gets or sets a value indicating whether the shadow generator should stabilize the cascades. */\r\n @editableInPropertyPage(\"Stabilize cascades\", PropertyTypeForEdition.Boolean, \"CSM PROPERTIES\")\r\n public get stabilizeCascades() {\r\n return this._frameGraphTask.stabilizeCascades;\r\n }\r\n\r\n public set stabilizeCascades(value: boolean) {\r\n this._frameGraphTask.stabilizeCascades = value;\r\n }\r\n\r\n /** Gets or sets the lambda parameter of the shadow generator. */\r\n @editableInPropertyPage(\"Lambda\", PropertyTypeForEdition.Float, \"CSM PROPERTIES\", { min: 0, max: 1 })\r\n public get lambda() {\r\n return this._frameGraphTask.lambda;\r\n }\r\n\r\n public set lambda(value: number) {\r\n this._frameGraphTask.lambda = value;\r\n }\r\n\r\n /** Gets or sets the cascade blend percentage. */\r\n @editableInPropertyPage(\"Cascade blend\", PropertyTypeForEdition.Float, \"CSM PROPERTIES\", { min: 0, max: 1 })\r\n public get cascadeBlendPercentage() {\r\n return this._frameGraphTask.cascadeBlendPercentage;\r\n }\r\n\r\n public set cascadeBlendPercentage(value: number) {\r\n this._frameGraphTask.cascadeBlendPercentage = value;\r\n }\r\n\r\n /** Gets or sets a value indicating whether the shadow generator should use depth clamping. */\r\n @editableInPropertyPage(\"Depth clamp\", PropertyTypeForEdition.Boolean, \"CSM PROPERTIES\")\r\n public get depthClamp() {\r\n return this._frameGraphTask.depthClamp;\r\n }\r\n\r\n public set depthClamp(value: boolean) {\r\n this._frameGraphTask.depthClamp = value;\r\n }\r\n\r\n /** Gets or sets a value indicating whether the shadow generator should automatically calculate the depth bounds. */\r\n @editableInPropertyPage(\"Auto-Calc depth bounds\", PropertyTypeForEdition.Boolean, \"CSM PROPERTIES\")\r\n public get autoCalcDepthBounds() {\r\n return this._frameGraphTask.autoCalcDepthBounds;\r\n }\r\n\r\n public set autoCalcDepthBounds(value: boolean) {\r\n this._frameGraphTask.autoCalcDepthBounds = value;\r\n }\r\n\r\n /** Gets or sets the maximum shadow Z value. */\r\n @editableInPropertyPage(\"Shadow maxZ\", PropertyTypeForEdition.Float, \"CSM PROPERTIES\")\r\n public get shadowMaxZ() {\r\n return this._frameGraphTask.shadowMaxZ;\r\n }\r\n\r\n public set shadowMaxZ(value: number) {\r\n this._frameGraphTask.shadowMaxZ = value;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphCascadedShadowGeneratorBlock\";\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.numCascades = ${this.numCascades};`);\r\n codes.push(`${this._codeVariableName}.debug = ${this.debug};`);\r\n codes.push(`${this._codeVariableName}.stabilizeCascades = ${this.stabilizeCascades};`);\r\n codes.push(`${this._codeVariableName}.lambda = ${this.lambda};`);\r\n codes.push(`${this._codeVariableName}.cascadeBlendPercentage = ${this.cascadeBlendPercentage};`);\r\n codes.push(`${this._codeVariableName}.depthClamp = ${this.depthClamp};`);\r\n codes.push(`${this._codeVariableName}.autoCalcDepthBounds = ${this.autoCalcDepthBounds};`);\r\n codes.push(`${this._codeVariableName}.shadowMaxZ = ${this.shadowMaxZ};`);\r\n return super._dumpPropertiesCode() + codes.join(\"\\n\");\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.numCascades = this.numCascades;\r\n serializationObject.debug = this.debug;\r\n serializationObject.stabilizeCascades = this.stabilizeCascades;\r\n serializationObject.lambda = this.lambda;\r\n serializationObject.cascadeBlendPercentage = this.cascadeBlendPercentage;\r\n serializationObject.depthClamp = this.depthClamp;\r\n serializationObject.autoCalcDepthBounds = this.autoCalcDepthBounds;\r\n serializationObject.shadowMaxZ = this.shadowMaxZ;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n this.numCascades = serializationObject.numCascades;\r\n this.debug = serializationObject.debug;\r\n this.stabilizeCascades = serializationObject.stabilizeCascades;\r\n this.lambda = serializationObject.lambda;\r\n this.cascadeBlendPercentage = serializationObject.cascadeBlendPercentage;\r\n this.depthClamp = serializationObject.depthClamp;\r\n this.autoCalcDepthBounds = serializationObject.autoCalcDepthBounds;\r\n this.shadowMaxZ = serializationObject.shadowMaxZ;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.NodeRenderGraphCascadedShadowGeneratorBlock\", NodeRenderGraphCascadedShadowGeneratorBlock);\r\n"]}
@@ -13,7 +13,6 @@ export class NodeRenderGraphShadowGeneratorBlock extends NodeRenderGraphBaseShad
13
13
  */
14
14
  constructor(name, frameGraph, scene) {
15
15
  super(name, frameGraph, scene);
16
- this._addDependenciesInput();
17
16
  this._frameGraphTask = new FrameGraphShadowGeneratorTask(this.name, frameGraph, scene);
18
17
  }
19
18
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"shadowGeneratorBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uCAAuC,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAE7F;;GAEG;AACH,MAAM,OAAO,mCAAoC,SAAQ,uCAAuC;IAC5F;;;;;OAKG;IACH,YAAmB,IAAY,EAAE,UAAsB,EAAE,KAAY;QACjE,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAE/B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,IAAI,CAAC,eAAe,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAC3F,CAAC;IAED;;;OAGG;IACa,YAAY;QACxB,OAAO,qCAAqC,CAAC;IACjD,CAAC;CACJ;AAED,aAAa,CAAC,6CAA6C,EAAE,mCAAmC,CAAC,CAAC","sourcesContent":["// eslint-disable-next-line import/no-internal-modules\r\nimport type { Scene, FrameGraph } from \"core/index\";\r\nimport { NodeRenderGraphBaseShadowGeneratorBlock } from \"./baseShadowGeneratorBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { FrameGraphShadowGeneratorTask } from \"../../../Tasks/Rendering/shadowGeneratorTask\";\r\n\r\n/**\r\n * Block that generate shadows through a shadow generator\r\n */\r\nexport class NodeRenderGraphShadowGeneratorBlock extends NodeRenderGraphBaseShadowGeneratorBlock {\r\n /**\r\n * Create a new NodeRenderGraphShadowGeneratorBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene) {\r\n super(name, frameGraph, scene);\r\n\r\n this._addDependenciesInput();\r\n\r\n this._frameGraphTask = new FrameGraphShadowGeneratorTask(this.name, frameGraph, scene);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphShadowGeneratorBlock\";\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.NodeRenderGraphShadowGeneratorBlock\", NodeRenderGraphShadowGeneratorBlock);\r\n"]}
1
+ {"version":3,"file":"shadowGeneratorBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uCAAuC,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAE7F;;GAEG;AACH,MAAM,OAAO,mCAAoC,SAAQ,uCAAuC;IAC5F;;;;;OAKG;IACH,YAAmB,IAAY,EAAE,UAAsB,EAAE,KAAY;QACjE,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAE/B,IAAI,CAAC,eAAe,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAC3F,CAAC;IAED;;;OAGG;IACa,YAAY;QACxB,OAAO,qCAAqC,CAAC;IACjD,CAAC;CACJ;AAED,aAAa,CAAC,6CAA6C,EAAE,mCAAmC,CAAC,CAAC","sourcesContent":["// eslint-disable-next-line import/no-internal-modules\r\nimport type { Scene, FrameGraph } from \"core/index\";\r\nimport { NodeRenderGraphBaseShadowGeneratorBlock } from \"./baseShadowGeneratorBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { FrameGraphShadowGeneratorTask } from \"../../../Tasks/Rendering/shadowGeneratorTask\";\r\n\r\n/**\r\n * Block that generate shadows through a shadow generator\r\n */\r\nexport class NodeRenderGraphShadowGeneratorBlock extends NodeRenderGraphBaseShadowGeneratorBlock {\r\n /**\r\n * Create a new NodeRenderGraphShadowGeneratorBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene) {\r\n super(name, frameGraph, scene);\r\n\r\n this._frameGraphTask = new FrameGraphShadowGeneratorTask(this.name, frameGraph, scene);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphShadowGeneratorBlock\";\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.NodeRenderGraphShadowGeneratorBlock\", NodeRenderGraphShadowGeneratorBlock);\r\n"]}
@@ -3,12 +3,14 @@ export * from "./executeBlock";
3
3
  export * from "./inputBlock";
4
4
  export * from "./outputBlock";
5
5
  export * from "./resourceContainerBlock";
6
+ export * from "./Layers/glowLayerBlock";
6
7
  export * from "./PostProcesses/blackAndWhitePostProcessBlock";
7
8
  export * from "./PostProcesses/bloomPostProcessBlock";
8
9
  export * from "./PostProcesses/blurPostProcessBlock";
9
10
  export * from "./PostProcesses/circleOfConfusionPostProcessBlock";
10
11
  export * from "./PostProcesses/depthOfFieldPostProcessBlock";
11
12
  export * from "./PostProcesses/extractHighlightsPostProcessBlock";
13
+ export * from "./PostProcesses/passPostProcessBlock";
12
14
  export * from "./Rendering/csmShadowGeneratorBlock";
13
15
  export * from "./Rendering/cullObjectsBlock";
14
16
  export * from "./Rendering/geometryRendererBlock";
@@ -3,12 +3,14 @@ export * from "./executeBlock.js";
3
3
  export * from "./inputBlock.js";
4
4
  export * from "./outputBlock.js";
5
5
  export * from "./resourceContainerBlock.js";
6
+ export * from "./Layers/glowLayerBlock.js";
6
7
  export * from "./PostProcesses/blackAndWhitePostProcessBlock.js";
7
8
  export * from "./PostProcesses/bloomPostProcessBlock.js";
8
9
  export * from "./PostProcesses/blurPostProcessBlock.js";
9
10
  export * from "./PostProcesses/circleOfConfusionPostProcessBlock.js";
10
11
  export * from "./PostProcesses/depthOfFieldPostProcessBlock.js";
11
12
  export * from "./PostProcesses/extractHighlightsPostProcessBlock.js";
13
+ export * from "./PostProcesses/passPostProcessBlock.js";
12
14
  export * from "./Rendering/csmShadowGeneratorBlock.js";
13
15
  export * from "./Rendering/cullObjectsBlock.js";
14
16
  export * from "./Rendering/geometryRendererBlock.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Node/Blocks/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AAEzC,cAAc,+CAA+C,CAAC;AAC9D,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,mDAAmD,CAAC;AAClE,cAAc,8CAA8C,CAAC;AAC7D,cAAc,mDAAmD,CAAC;AAElE,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AAEnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC","sourcesContent":["export * from \"./elbowBlock\";\r\nexport * from \"./executeBlock\";\r\nexport * from \"./inputBlock\";\r\nexport * from \"./outputBlock\";\r\nexport * from \"./resourceContainerBlock\";\r\n\r\nexport * from \"./PostProcesses/blackAndWhitePostProcessBlock\";\r\nexport * from \"./PostProcesses/bloomPostProcessBlock\";\r\nexport * from \"./PostProcesses/blurPostProcessBlock\";\r\nexport * from \"./PostProcesses/circleOfConfusionPostProcessBlock\";\r\nexport * from \"./PostProcesses/depthOfFieldPostProcessBlock\";\r\nexport * from \"./PostProcesses/extractHighlightsPostProcessBlock\";\r\n\r\nexport * from \"./Rendering/csmShadowGeneratorBlock\";\r\nexport * from \"./Rendering/cullObjectsBlock\";\r\nexport * from \"./Rendering/geometryRendererBlock\";\r\nexport * from \"./Rendering/objectRendererBlock\";\r\nexport * from \"./Rendering/shadowGeneratorBlock\";\r\nexport * from \"./Rendering/taaObjectRendererBlock\";\r\n\r\nexport * from \"./Teleport/teleportInBlock\";\r\nexport * from \"./Teleport/teleportOutBlock\";\r\n\r\nexport * from \"./Textures/clearBlock\";\r\nexport * from \"./Textures/copyTextureBlock\";\r\nexport * from \"./Textures/generateMipmapsBlock\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Node/Blocks/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AAEzC,cAAc,yBAAyB,CAAC;AAExC,cAAc,+CAA+C,CAAC;AAC9D,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,mDAAmD,CAAC;AAClE,cAAc,8CAA8C,CAAC;AAC7D,cAAc,mDAAmD,CAAC;AAClE,cAAc,sCAAsC,CAAC;AAErD,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AAEnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC","sourcesContent":["export * from \"./elbowBlock\";\r\nexport * from \"./executeBlock\";\r\nexport * from \"./inputBlock\";\r\nexport * from \"./outputBlock\";\r\nexport * from \"./resourceContainerBlock\";\r\n\r\nexport * from \"./Layers/glowLayerBlock\";\r\n\r\nexport * from \"./PostProcesses/blackAndWhitePostProcessBlock\";\r\nexport * from \"./PostProcesses/bloomPostProcessBlock\";\r\nexport * from \"./PostProcesses/blurPostProcessBlock\";\r\nexport * from \"./PostProcesses/circleOfConfusionPostProcessBlock\";\r\nexport * from \"./PostProcesses/depthOfFieldPostProcessBlock\";\r\nexport * from \"./PostProcesses/extractHighlightsPostProcessBlock\";\r\nexport * from \"./PostProcesses/passPostProcessBlock\";\r\n\r\nexport * from \"./Rendering/csmShadowGeneratorBlock\";\r\nexport * from \"./Rendering/cullObjectsBlock\";\r\nexport * from \"./Rendering/geometryRendererBlock\";\r\nexport * from \"./Rendering/objectRendererBlock\";\r\nexport * from \"./Rendering/shadowGeneratorBlock\";\r\nexport * from \"./Rendering/taaObjectRendererBlock\";\r\n\r\nexport * from \"./Teleport/teleportInBlock\";\r\nexport * from \"./Teleport/teleportOutBlock\";\r\n\r\nexport * from \"./Textures/clearBlock\";\r\nexport * from \"./Textures/copyTextureBlock\";\r\nexport * from \"./Textures/generateMipmapsBlock\";\r\n"]}
@@ -268,6 +268,23 @@ export class NodeRenderGraphBlock {
268
268
  }
269
269
  this._buildBlock(state);
270
270
  if (this._frameGraphTask) {
271
+ const dependenciesConnectedPoint = this.getInputByName("dependencies")?.connectedPoint;
272
+ if (dependenciesConnectedPoint) {
273
+ if (dependenciesConnectedPoint.type === NodeRenderGraphBlockConnectionPointTypes.ResourceContainer) {
274
+ const container = dependenciesConnectedPoint.ownerBlock;
275
+ for (let i = 0; i < container.inputs.length; i++) {
276
+ const input = container.inputs[i];
277
+ if (input.connectedPoint && input.connectedPoint.value !== undefined && NodeRenderGraphConnectionPoint.IsTextureHandle(input.connectedPoint.value)) {
278
+ this._frameGraphTask.dependencies = this._frameGraphTask.dependencies || [];
279
+ this._frameGraphTask.dependencies.push(input.connectedPoint.value);
280
+ }
281
+ }
282
+ }
283
+ else if (NodeRenderGraphConnectionPoint.IsTextureHandle(dependenciesConnectedPoint.value)) {
284
+ this._frameGraphTask.dependencies = this._frameGraphTask.dependencies || [];
285
+ this._frameGraphTask.dependencies[0] = dependenciesConnectedPoint.value;
286
+ }
287
+ }
271
288
  this._frameGraph.addTask(this._frameGraphTask);
272
289
  }
273
290
  this.onBuildObservable.notifyObservers(this);
@@ -1 +1 @@
1
- {"version":3,"file":"nodeRenderGraphBlock.js","sourceRoot":"","sources":["../../../../../dev/core/src/FrameGraph/Node/nodeRenderGraphBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\r\n NodeRenderGraphBuildState,\r\n Nullable,\r\n NodeRenderGraphInputBlock,\r\n AbstractEngine,\r\n Scene,\r\n FrameGraphTask,\r\n FrameGraph,\r\n // eslint-disable-next-line import/no-internal-modules\r\n} from \"core/index\";\r\nimport { GetClass } from \"../../Misc/typeStore\";\r\nimport { serialize } from \"../../Misc/decorators\";\r\nimport { UniqueIdGenerator } from \"../../Misc/uniqueIdGenerator\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes, NodeRenderGraphConnectionPointDirection } from \"./Types/nodeRenderGraphTypes\";\r\nimport { Observable } from \"../../Misc/observable\";\r\nimport { Logger } from \"../../Misc/logger\";\r\nimport { NodeRenderGraphConnectionPoint } from \"./nodeRenderGraphBlockConnectionPoint\";\r\n\r\n/**\r\n * Defines a block that can be used inside a node render graph\r\n */\r\nexport class NodeRenderGraphBlock {\r\n private _name = \"\";\r\n private _buildId: number;\r\n protected _isInput = false;\r\n protected _isTeleportOut = false;\r\n protected _isTeleportIn = false;\r\n protected _isDebug = false;\r\n protected _isUnique = false;\r\n protected _scene: Scene;\r\n protected _engine: AbstractEngine;\r\n protected _frameGraph: FrameGraph;\r\n protected _frameGraphTask?: FrameGraphTask;\r\n\r\n /**\r\n * Gets or sets the disable flag of the task associated with this block\r\n */\r\n public get disabled() {\r\n return !!this._frameGraphTask?.disabled;\r\n }\r\n\r\n public set disabled(value: boolean) {\r\n if (this._frameGraphTask) {\r\n this._frameGraphTask.disabled = value;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the frame graph task associated with this block\r\n */\r\n public get task() {\r\n return this._frameGraphTask;\r\n }\r\n\r\n /**\r\n * Gets an observable raised when the block is built\r\n */\r\n public onBuildObservable = new Observable<NodeRenderGraphBlock>();\r\n\r\n /** @internal */\r\n public _inputs = new Array<NodeRenderGraphConnectionPoint>();\r\n\r\n /** @internal */\r\n public _outputs = new Array<NodeRenderGraphConnectionPoint>();\r\n\r\n /** @internal */\r\n public _codeVariableName = \"\";\r\n\r\n /** @internal */\r\n public _additionalConstructionParameters: Nullable<unknown[]> = null;\r\n\r\n /**\r\n * Gets the list of input points\r\n */\r\n public get inputs(): NodeRenderGraphConnectionPoint[] {\r\n return this._inputs;\r\n }\r\n\r\n /** Gets the list of output points */\r\n public get outputs(): NodeRenderGraphConnectionPoint[] {\r\n return this._outputs;\r\n }\r\n\r\n /**\r\n * Gets or sets the unique id of the node\r\n */\r\n public uniqueId: number;\r\n\r\n /**\r\n * Gets or set the name of the block\r\n */\r\n public get name(): string {\r\n return this._name;\r\n }\r\n\r\n public set name(value: string) {\r\n this._name = value;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if this block is an input\r\n */\r\n public get isInput(): boolean {\r\n return this._isInput;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if this block is a teleport out\r\n */\r\n public get isTeleportOut(): boolean {\r\n return this._isTeleportOut;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if this block is a teleport in\r\n */\r\n public get isTeleportIn(): boolean {\r\n return this._isTeleportIn;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if this block is a debug block\r\n */\r\n public get isDebug(): boolean {\r\n return this._isDebug;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating that this block can only be used once per node render graph\r\n */\r\n public get isUnique() {\r\n return this._isUnique;\r\n }\r\n\r\n /**\r\n * A free comment about the block\r\n */\r\n @serialize(\"comment\")\r\n public comments: string;\r\n\r\n /** Gets or sets a boolean indicating that this input can be edited from a collapsed frame */\r\n public visibleOnFrame = false;\r\n\r\n /**\r\n * Gets the current class name e.g. \"NodeRenderGraphBlock\"\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"NodeRenderGraphBlock\";\r\n }\r\n\r\n protected _inputRename(name: string) {\r\n return name;\r\n }\r\n\r\n protected _outputRename(name: string) {\r\n return name;\r\n }\r\n\r\n /**\r\n * Checks if the current block is an ancestor of a given block\r\n * @param block defines the potential descendant block to check\r\n * @returns true if block is a descendant\r\n */\r\n public isAnAncestorOf(block: NodeRenderGraphBlock): boolean {\r\n for (const output of this._outputs) {\r\n if (!output.hasEndpoints) {\r\n continue;\r\n }\r\n\r\n for (const endpoint of output.endpoints) {\r\n if (endpoint.ownerBlock === block) {\r\n return true;\r\n }\r\n\r\n if (endpoint.ownerBlock.isAnAncestorOf(block)) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Checks if the current block is an ancestor of a given type\r\n * @param type defines the potential type to check\r\n * @returns true if block is a descendant\r\n */\r\n public isAnAncestorOfType(type: string): boolean {\r\n if (this.getClassName() === type) {\r\n return true;\r\n }\r\n\r\n for (const output of this._outputs) {\r\n if (!output.hasEndpoints) {\r\n continue;\r\n }\r\n\r\n for (const endpoint of output.endpoints) {\r\n if (endpoint.ownerBlock.isAnAncestorOfType(type)) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Get the first descendant using a predicate\r\n * @param predicate defines the predicate to check\r\n * @returns descendant or null if none found\r\n */\r\n public getDescendantOfPredicate(predicate: (block: NodeRenderGraphBlock) => boolean): Nullable<NodeRenderGraphBlock> {\r\n if (predicate(this)) {\r\n return this;\r\n }\r\n\r\n for (const output of this._outputs) {\r\n if (!output.hasEndpoints) {\r\n continue;\r\n }\r\n\r\n for (const endpoint of output.endpoints) {\r\n const descendant = endpoint.ownerBlock.getDescendantOfPredicate(predicate);\r\n if (descendant) {\r\n return descendant;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Creates a new NodeRenderGraphBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n * @param _additionalConstructionParameters defines additional parameters to pass to the block constructor\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene, ..._additionalConstructionParameters: unknown[]) {\r\n this._name = name;\r\n this._frameGraph = frameGraph;\r\n this._scene = scene;\r\n this._engine = scene.getEngine();\r\n this.uniqueId = UniqueIdGenerator.UniqueId;\r\n }\r\n\r\n /**\r\n * Register a new input. Must be called inside a block constructor\r\n * @param name defines the connection point name\r\n * @param type defines the connection point type\r\n * @param isOptional defines a boolean indicating that this input can be omitted\r\n * @param point an already created connection point. If not provided, create a new one\r\n * @returns the current block\r\n */\r\n public registerInput(name: string, type: NodeRenderGraphBlockConnectionPointTypes, isOptional: boolean = false, point?: NodeRenderGraphConnectionPoint) {\r\n point = point ?? new NodeRenderGraphConnectionPoint(name, this, NodeRenderGraphConnectionPointDirection.Input);\r\n point.type = type;\r\n point.isOptional = isOptional;\r\n\r\n this._inputs.push(point);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Register a new output. Must be called inside a block constructor\r\n * @param name defines the connection point name\r\n * @param type defines the connection point type\r\n * @param point an already created connection point. If not provided, create a new one\r\n * @returns the current block\r\n */\r\n public registerOutput(name: string, type: NodeRenderGraphBlockConnectionPointTypes, point?: NodeRenderGraphConnectionPoint) {\r\n point = point ?? new NodeRenderGraphConnectionPoint(name, this, NodeRenderGraphConnectionPointDirection.Output);\r\n point.type = type;\r\n\r\n this._outputs.push(point);\r\n\r\n return this;\r\n }\r\n\r\n protected _addDependenciesInput() {\r\n this.registerInput(\"dependencies\", NodeRenderGraphBlockConnectionPointTypes.Texture, true);\r\n\r\n const dependencies = this.getInputByName(\"dependencies\")!;\r\n\r\n dependencies.addAcceptedConnectionPointTypes(\r\n NodeRenderGraphBlockConnectionPointTypes.TextureAllButBackBuffer |\r\n NodeRenderGraphBlockConnectionPointTypes.ResourceContainer |\r\n NodeRenderGraphBlockConnectionPointTypes.ShadowGenerator\r\n );\r\n\r\n return dependencies;\r\n }\r\n\r\n protected _buildBlock(_state: NodeRenderGraphBuildState) {\r\n // Empty. Must be defined by child nodes\r\n }\r\n\r\n protected _customBuildStep(_state: NodeRenderGraphBuildState): void {\r\n // Must be implemented by children\r\n }\r\n\r\n protected _propagateInputValueToOutput(inputConnectionPoint: NodeRenderGraphConnectionPoint, outputConnectionPoint: NodeRenderGraphConnectionPoint) {\r\n if (inputConnectionPoint.connectedPoint) {\r\n outputConnectionPoint.value = inputConnectionPoint.connectedPoint.value;\r\n }\r\n }\r\n\r\n /**\r\n * Build the current node and generate the vertex data\r\n * @param state defines the current generation state\r\n * @returns true if already built\r\n */\r\n public build(state: NodeRenderGraphBuildState): boolean {\r\n if (this._buildId === state.buildId) {\r\n return true;\r\n }\r\n\r\n this._buildId = state.buildId;\r\n\r\n // Check if \"parent\" blocks are compiled\r\n for (const input of this._inputs) {\r\n if (!input.connectedPoint) {\r\n if (!input.isOptional) {\r\n // Emit a warning\r\n state._notConnectedNonOptionalInputs.push(input);\r\n }\r\n continue;\r\n }\r\n\r\n const block = input.connectedPoint.ownerBlock;\r\n if (block && block !== this) {\r\n block.build(state);\r\n }\r\n }\r\n\r\n this._customBuildStep(state);\r\n\r\n // Logs\r\n if (state.verbose) {\r\n Logger.Log(`Building ${this.name} [${this.getClassName()}]`);\r\n }\r\n\r\n if (this._frameGraphTask) {\r\n this._frameGraphTask.name = this.name;\r\n }\r\n\r\n this._buildBlock(state);\r\n\r\n if (this._frameGraphTask) {\r\n this._frameGraph.addTask(this._frameGraphTask);\r\n }\r\n\r\n this.onBuildObservable.notifyObservers(this);\r\n\r\n return false;\r\n }\r\n\r\n protected _linkConnectionTypes(inputIndex0: number, inputIndex1: number, looseCoupling = false) {\r\n if (looseCoupling) {\r\n this._inputs[inputIndex1]._acceptedConnectionPointType = this._inputs[inputIndex0];\r\n } else {\r\n this._inputs[inputIndex0]._linkedConnectionSource = this._inputs[inputIndex1];\r\n this._inputs[inputIndex0]._isMainLinkSource = true;\r\n }\r\n\r\n this._inputs[inputIndex1]._linkedConnectionSource = this._inputs[inputIndex0];\r\n }\r\n\r\n /**\r\n * Initialize the block and prepare the context for build\r\n */\r\n public initialize() {\r\n // Do nothing\r\n }\r\n\r\n /**\r\n * Lets the block try to connect some inputs automatically\r\n */\r\n public autoConfigure() {\r\n // Do nothing\r\n }\r\n\r\n /**\r\n * Find an input by its name\r\n * @param name defines the name of the input to look for\r\n * @returns the input or null if not found\r\n */\r\n public getInputByName(name: string) {\r\n const filter = this._inputs.filter((e) => e.name === name);\r\n\r\n if (filter.length) {\r\n return filter[0];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Find an output by its name\r\n * @param name defines the name of the output to look for\r\n * @returns the output or null if not found\r\n */\r\n public getOutputByName(name: string) {\r\n const filter = this._outputs.filter((e) => e.name === name);\r\n\r\n if (filter.length) {\r\n return filter[0];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Serializes this block in a JSON representation\r\n * @returns the serialized block object\r\n */\r\n public serialize(): any {\r\n const serializationObject: any = {};\r\n\r\n serializationObject.customType = \"BABYLON.\" + this.getClassName();\r\n serializationObject.id = this.uniqueId;\r\n serializationObject.name = this.name;\r\n serializationObject.visibleOnFrame = this.visibleOnFrame;\r\n serializationObject.disabled = this.disabled;\r\n if (this._additionalConstructionParameters) {\r\n serializationObject.additionalConstructionParameters = this._additionalConstructionParameters;\r\n }\r\n\r\n serializationObject.inputs = [];\r\n serializationObject.outputs = [];\r\n\r\n for (const input of this.inputs) {\r\n serializationObject.inputs.push(input.serialize());\r\n }\r\n\r\n for (const output of this.outputs) {\r\n serializationObject.outputs.push(output.serialize(false));\r\n }\r\n\r\n return serializationObject;\r\n }\r\n /**\r\n * @internal\r\n */\r\n public _deserialize(serializationObject: any) {\r\n this._name = serializationObject.name;\r\n this.comments = serializationObject.comments;\r\n this.visibleOnFrame = serializationObject.visibleOnFrame;\r\n this.disabled = serializationObject.disabled;\r\n\r\n this._deserializePortDisplayNamesAndExposedOnFrame(serializationObject);\r\n }\r\n\r\n private _deserializePortDisplayNamesAndExposedOnFrame(serializationObject: any) {\r\n const serializedInputs = serializationObject.inputs;\r\n const serializedOutputs = serializationObject.outputs;\r\n\r\n if (serializedInputs) {\r\n serializedInputs.forEach((port: any) => {\r\n const input = this.inputs.find((i) => i.name === port.name);\r\n if (!input) {\r\n return;\r\n }\r\n if (port.displayName) {\r\n input.displayName = port.displayName;\r\n }\r\n if (port.isExposedOnFrame) {\r\n input.isExposedOnFrame = port.isExposedOnFrame;\r\n input.exposedPortPosition = port.exposedPortPosition;\r\n }\r\n });\r\n }\r\n\r\n if (serializedOutputs) {\r\n serializedOutputs.forEach((port: any, i: number) => {\r\n if (port.displayName) {\r\n this.outputs[i].displayName = port.displayName;\r\n }\r\n if (port.isExposedOnFrame) {\r\n this.outputs[i].isExposedOnFrame = port.isExposedOnFrame;\r\n this.outputs[i].exposedPortPosition = port.exposedPortPosition;\r\n }\r\n });\r\n }\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n const variableName = this._codeVariableName;\r\n return `${variableName}.visibleOnFrame = ${this.visibleOnFrame};\\n${variableName}.disabled = ${this.disabled};\\n`;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _dumpCodeForOutputConnections(alreadyDumped: NodeRenderGraphBlock[]) {\r\n let codeString = \"\";\r\n\r\n if (alreadyDumped.indexOf(this) !== -1) {\r\n return codeString;\r\n }\r\n\r\n alreadyDumped.push(this);\r\n\r\n for (const input of this.inputs) {\r\n if (!input.isConnected) {\r\n continue;\r\n }\r\n\r\n const connectedOutput = input.connectedPoint!;\r\n const connectedBlock = connectedOutput.ownerBlock;\r\n\r\n codeString += connectedBlock._dumpCodeForOutputConnections(alreadyDumped);\r\n codeString += `${connectedBlock._codeVariableName}.${connectedBlock._outputRename(connectedOutput.name)}.connectTo(${this._codeVariableName}.${this._inputRename(\r\n input.name\r\n )});\\n`;\r\n }\r\n\r\n return codeString;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _dumpCode(uniqueNames: string[], alreadyDumped: NodeRenderGraphBlock[]) {\r\n alreadyDumped.push(this);\r\n\r\n // Get unique name\r\n const nameAsVariableName = this.name.replace(/[^A-Za-z_]+/g, \"\");\r\n this._codeVariableName = nameAsVariableName || `${this.getClassName()}_${this.uniqueId}`;\r\n\r\n if (uniqueNames.indexOf(this._codeVariableName) !== -1) {\r\n let index = 0;\r\n do {\r\n index++;\r\n this._codeVariableName = nameAsVariableName + index;\r\n } while (uniqueNames.indexOf(this._codeVariableName) !== -1);\r\n }\r\n\r\n uniqueNames.push(this._codeVariableName);\r\n\r\n // Declaration\r\n let codeString = `\\n// ${this.getClassName()}\\n`;\r\n if (this.comments) {\r\n codeString += `// ${this.comments}\\n`;\r\n }\r\n const className = this.getClassName();\r\n if (className === \"RenderGraphInputBlock\") {\r\n const block = this as unknown as NodeRenderGraphInputBlock;\r\n const blockType = block.type;\r\n\r\n codeString += `var ${this._codeVariableName} = new BABYLON.NodeRenderGraphInputBlock(\"${this.name}\", nodeRenderGraph.frameGraph, scene, BABYLON.NodeRenderGraphBlockConnectionPointTypes.${NodeRenderGraphBlockConnectionPointTypes[blockType]});\\n`;\r\n } else {\r\n if (this._additionalConstructionParameters) {\r\n codeString += `var ${this._codeVariableName} = new BABYLON.${className}(\"${this.name}\", nodeRenderGraph.frameGraph, scene, ...${JSON.stringify(this._additionalConstructionParameters)});\\n`;\r\n } else {\r\n codeString += `var ${this._codeVariableName} = new BABYLON.${className}(\"${this.name}\", nodeRenderGraph.frameGraph, scene);\\n`;\r\n }\r\n }\r\n\r\n // Properties\r\n codeString += this._dumpPropertiesCode() + \"\\n\";\r\n\r\n // Inputs\r\n for (const input of this.inputs) {\r\n if (!input.isConnected) {\r\n continue;\r\n }\r\n\r\n const connectedOutput = input.connectedPoint!;\r\n const connectedBlock = connectedOutput.ownerBlock;\r\n\r\n if (alreadyDumped.indexOf(connectedBlock) === -1) {\r\n codeString += connectedBlock._dumpCode(uniqueNames, alreadyDumped);\r\n }\r\n }\r\n\r\n // Outputs\r\n for (const output of this.outputs) {\r\n if (!output.hasEndpoints) {\r\n continue;\r\n }\r\n\r\n for (const endpoint of output.endpoints) {\r\n const connectedBlock = endpoint.ownerBlock;\r\n if (connectedBlock && alreadyDumped.indexOf(connectedBlock) === -1) {\r\n codeString += connectedBlock._dumpCode(uniqueNames, alreadyDumped);\r\n }\r\n }\r\n }\r\n\r\n return codeString;\r\n }\r\n\r\n /**\r\n * Clone the current block to a new identical block\r\n * @returns a copy of the current block\r\n */\r\n public clone() {\r\n const serializationObject = this.serialize();\r\n const blockType: typeof NodeRenderGraphBlock = GetClass(serializationObject.customType);\r\n\r\n if (blockType) {\r\n const additionalConstructionParameters = serializationObject.additionalConstructionParameters;\r\n const block: NodeRenderGraphBlock = additionalConstructionParameters\r\n ? new blockType(\"\", this._frameGraph, this._scene, ...additionalConstructionParameters)\r\n : new blockType(\"\", this._frameGraph, this._scene);\r\n block._deserialize(serializationObject);\r\n return block;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Release resources\r\n */\r\n public dispose() {\r\n for (const input of this.inputs) {\r\n input.dispose();\r\n }\r\n\r\n for (const output of this.outputs) {\r\n output.dispose();\r\n }\r\n\r\n this._frameGraphTask?.dispose();\r\n this._frameGraphTask = undefined as any;\r\n\r\n this.onBuildObservable.clear();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"nodeRenderGraphBlock.js","sourceRoot":"","sources":["../../../../../dev/core/src/FrameGraph/Node/nodeRenderGraphBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\r\n NodeRenderGraphBuildState,\r\n Nullable,\r\n NodeRenderGraphInputBlock,\r\n AbstractEngine,\r\n Scene,\r\n FrameGraphTask,\r\n FrameGraph,\r\n NodeRenderGraphResourceContainerBlock,\r\n FrameGraphTextureHandle,\r\n // eslint-disable-next-line import/no-internal-modules\r\n} from \"core/index\";\r\nimport { GetClass } from \"../../Misc/typeStore\";\r\nimport { serialize } from \"../../Misc/decorators\";\r\nimport { UniqueIdGenerator } from \"../../Misc/uniqueIdGenerator\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes, NodeRenderGraphConnectionPointDirection } from \"./Types/nodeRenderGraphTypes\";\r\nimport { Observable } from \"../../Misc/observable\";\r\nimport { Logger } from \"../../Misc/logger\";\r\nimport { NodeRenderGraphConnectionPoint } from \"./nodeRenderGraphBlockConnectionPoint\";\r\n\r\n/**\r\n * Defines a block that can be used inside a node render graph\r\n */\r\nexport class NodeRenderGraphBlock {\r\n private _name = \"\";\r\n private _buildId: number;\r\n protected _isInput = false;\r\n protected _isTeleportOut = false;\r\n protected _isTeleportIn = false;\r\n protected _isDebug = false;\r\n protected _isUnique = false;\r\n protected _scene: Scene;\r\n protected _engine: AbstractEngine;\r\n protected _frameGraph: FrameGraph;\r\n protected _frameGraphTask?: FrameGraphTask;\r\n\r\n /**\r\n * Gets or sets the disable flag of the task associated with this block\r\n */\r\n public get disabled() {\r\n return !!this._frameGraphTask?.disabled;\r\n }\r\n\r\n public set disabled(value: boolean) {\r\n if (this._frameGraphTask) {\r\n this._frameGraphTask.disabled = value;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the frame graph task associated with this block\r\n */\r\n public get task() {\r\n return this._frameGraphTask;\r\n }\r\n\r\n /**\r\n * Gets an observable raised when the block is built\r\n */\r\n public onBuildObservable = new Observable<NodeRenderGraphBlock>();\r\n\r\n /** @internal */\r\n public _inputs = new Array<NodeRenderGraphConnectionPoint>();\r\n\r\n /** @internal */\r\n public _outputs = new Array<NodeRenderGraphConnectionPoint>();\r\n\r\n /** @internal */\r\n public _codeVariableName = \"\";\r\n\r\n /** @internal */\r\n public _additionalConstructionParameters: Nullable<unknown[]> = null;\r\n\r\n /**\r\n * Gets the list of input points\r\n */\r\n public get inputs(): NodeRenderGraphConnectionPoint[] {\r\n return this._inputs;\r\n }\r\n\r\n /** Gets the list of output points */\r\n public get outputs(): NodeRenderGraphConnectionPoint[] {\r\n return this._outputs;\r\n }\r\n\r\n /**\r\n * Gets or sets the unique id of the node\r\n */\r\n public uniqueId: number;\r\n\r\n /**\r\n * Gets or set the name of the block\r\n */\r\n public get name(): string {\r\n return this._name;\r\n }\r\n\r\n public set name(value: string) {\r\n this._name = value;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if this block is an input\r\n */\r\n public get isInput(): boolean {\r\n return this._isInput;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if this block is a teleport out\r\n */\r\n public get isTeleportOut(): boolean {\r\n return this._isTeleportOut;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if this block is a teleport in\r\n */\r\n public get isTeleportIn(): boolean {\r\n return this._isTeleportIn;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if this block is a debug block\r\n */\r\n public get isDebug(): boolean {\r\n return this._isDebug;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating that this block can only be used once per node render graph\r\n */\r\n public get isUnique() {\r\n return this._isUnique;\r\n }\r\n\r\n /**\r\n * A free comment about the block\r\n */\r\n @serialize(\"comment\")\r\n public comments: string;\r\n\r\n /** Gets or sets a boolean indicating that this input can be edited from a collapsed frame */\r\n public visibleOnFrame = false;\r\n\r\n /**\r\n * Gets the current class name e.g. \"NodeRenderGraphBlock\"\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"NodeRenderGraphBlock\";\r\n }\r\n\r\n protected _inputRename(name: string) {\r\n return name;\r\n }\r\n\r\n protected _outputRename(name: string) {\r\n return name;\r\n }\r\n\r\n /**\r\n * Checks if the current block is an ancestor of a given block\r\n * @param block defines the potential descendant block to check\r\n * @returns true if block is a descendant\r\n */\r\n public isAnAncestorOf(block: NodeRenderGraphBlock): boolean {\r\n for (const output of this._outputs) {\r\n if (!output.hasEndpoints) {\r\n continue;\r\n }\r\n\r\n for (const endpoint of output.endpoints) {\r\n if (endpoint.ownerBlock === block) {\r\n return true;\r\n }\r\n\r\n if (endpoint.ownerBlock.isAnAncestorOf(block)) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Checks if the current block is an ancestor of a given type\r\n * @param type defines the potential type to check\r\n * @returns true if block is a descendant\r\n */\r\n public isAnAncestorOfType(type: string): boolean {\r\n if (this.getClassName() === type) {\r\n return true;\r\n }\r\n\r\n for (const output of this._outputs) {\r\n if (!output.hasEndpoints) {\r\n continue;\r\n }\r\n\r\n for (const endpoint of output.endpoints) {\r\n if (endpoint.ownerBlock.isAnAncestorOfType(type)) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Get the first descendant using a predicate\r\n * @param predicate defines the predicate to check\r\n * @returns descendant or null if none found\r\n */\r\n public getDescendantOfPredicate(predicate: (block: NodeRenderGraphBlock) => boolean): Nullable<NodeRenderGraphBlock> {\r\n if (predicate(this)) {\r\n return this;\r\n }\r\n\r\n for (const output of this._outputs) {\r\n if (!output.hasEndpoints) {\r\n continue;\r\n }\r\n\r\n for (const endpoint of output.endpoints) {\r\n const descendant = endpoint.ownerBlock.getDescendantOfPredicate(predicate);\r\n if (descendant) {\r\n return descendant;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Creates a new NodeRenderGraphBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n * @param _additionalConstructionParameters defines additional parameters to pass to the block constructor\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene, ..._additionalConstructionParameters: unknown[]) {\r\n this._name = name;\r\n this._frameGraph = frameGraph;\r\n this._scene = scene;\r\n this._engine = scene.getEngine();\r\n this.uniqueId = UniqueIdGenerator.UniqueId;\r\n }\r\n\r\n /**\r\n * Register a new input. Must be called inside a block constructor\r\n * @param name defines the connection point name\r\n * @param type defines the connection point type\r\n * @param isOptional defines a boolean indicating that this input can be omitted\r\n * @param point an already created connection point. If not provided, create a new one\r\n * @returns the current block\r\n */\r\n public registerInput(name: string, type: NodeRenderGraphBlockConnectionPointTypes, isOptional: boolean = false, point?: NodeRenderGraphConnectionPoint) {\r\n point = point ?? new NodeRenderGraphConnectionPoint(name, this, NodeRenderGraphConnectionPointDirection.Input);\r\n point.type = type;\r\n point.isOptional = isOptional;\r\n\r\n this._inputs.push(point);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Register a new output. Must be called inside a block constructor\r\n * @param name defines the connection point name\r\n * @param type defines the connection point type\r\n * @param point an already created connection point. If not provided, create a new one\r\n * @returns the current block\r\n */\r\n public registerOutput(name: string, type: NodeRenderGraphBlockConnectionPointTypes, point?: NodeRenderGraphConnectionPoint) {\r\n point = point ?? new NodeRenderGraphConnectionPoint(name, this, NodeRenderGraphConnectionPointDirection.Output);\r\n point.type = type;\r\n\r\n this._outputs.push(point);\r\n\r\n return this;\r\n }\r\n\r\n protected _addDependenciesInput() {\r\n this.registerInput(\"dependencies\", NodeRenderGraphBlockConnectionPointTypes.Texture, true);\r\n\r\n const dependencies = this.getInputByName(\"dependencies\")!;\r\n\r\n dependencies.addAcceptedConnectionPointTypes(\r\n NodeRenderGraphBlockConnectionPointTypes.TextureAllButBackBuffer |\r\n NodeRenderGraphBlockConnectionPointTypes.ResourceContainer |\r\n NodeRenderGraphBlockConnectionPointTypes.ShadowGenerator\r\n );\r\n\r\n return dependencies;\r\n }\r\n\r\n protected _buildBlock(_state: NodeRenderGraphBuildState) {\r\n // Empty. Must be defined by child nodes\r\n }\r\n\r\n protected _customBuildStep(_state: NodeRenderGraphBuildState): void {\r\n // Must be implemented by children\r\n }\r\n\r\n protected _propagateInputValueToOutput(inputConnectionPoint: NodeRenderGraphConnectionPoint, outputConnectionPoint: NodeRenderGraphConnectionPoint) {\r\n if (inputConnectionPoint.connectedPoint) {\r\n outputConnectionPoint.value = inputConnectionPoint.connectedPoint.value;\r\n }\r\n }\r\n\r\n /**\r\n * Build the current node and generate the vertex data\r\n * @param state defines the current generation state\r\n * @returns true if already built\r\n */\r\n public build(state: NodeRenderGraphBuildState): boolean {\r\n if (this._buildId === state.buildId) {\r\n return true;\r\n }\r\n\r\n this._buildId = state.buildId;\r\n\r\n // Check if \"parent\" blocks are compiled\r\n for (const input of this._inputs) {\r\n if (!input.connectedPoint) {\r\n if (!input.isOptional) {\r\n // Emit a warning\r\n state._notConnectedNonOptionalInputs.push(input);\r\n }\r\n continue;\r\n }\r\n\r\n const block = input.connectedPoint.ownerBlock;\r\n if (block && block !== this) {\r\n block.build(state);\r\n }\r\n }\r\n\r\n this._customBuildStep(state);\r\n\r\n // Logs\r\n if (state.verbose) {\r\n Logger.Log(`Building ${this.name} [${this.getClassName()}]`);\r\n }\r\n\r\n if (this._frameGraphTask) {\r\n this._frameGraphTask.name = this.name;\r\n }\r\n\r\n this._buildBlock(state);\r\n\r\n if (this._frameGraphTask) {\r\n const dependenciesConnectedPoint = this.getInputByName(\"dependencies\")?.connectedPoint;\r\n if (dependenciesConnectedPoint) {\r\n if (dependenciesConnectedPoint.type === NodeRenderGraphBlockConnectionPointTypes.ResourceContainer) {\r\n const container = dependenciesConnectedPoint.ownerBlock as NodeRenderGraphResourceContainerBlock;\r\n for (let i = 0; i < container.inputs.length; i++) {\r\n const input = container.inputs[i];\r\n if (input.connectedPoint && input.connectedPoint.value !== undefined && NodeRenderGraphConnectionPoint.IsTextureHandle(input.connectedPoint.value)) {\r\n this._frameGraphTask.dependencies = this._frameGraphTask.dependencies || [];\r\n this._frameGraphTask.dependencies.push(input.connectedPoint.value as FrameGraphTextureHandle);\r\n }\r\n }\r\n } else if (NodeRenderGraphConnectionPoint.IsTextureHandle(dependenciesConnectedPoint.value)) {\r\n this._frameGraphTask.dependencies = this._frameGraphTask.dependencies || [];\r\n this._frameGraphTask.dependencies[0] = dependenciesConnectedPoint.value as FrameGraphTextureHandle;\r\n }\r\n }\r\n this._frameGraph.addTask(this._frameGraphTask);\r\n }\r\n\r\n this.onBuildObservable.notifyObservers(this);\r\n\r\n return false;\r\n }\r\n\r\n protected _linkConnectionTypes(inputIndex0: number, inputIndex1: number, looseCoupling = false) {\r\n if (looseCoupling) {\r\n this._inputs[inputIndex1]._acceptedConnectionPointType = this._inputs[inputIndex0];\r\n } else {\r\n this._inputs[inputIndex0]._linkedConnectionSource = this._inputs[inputIndex1];\r\n this._inputs[inputIndex0]._isMainLinkSource = true;\r\n }\r\n\r\n this._inputs[inputIndex1]._linkedConnectionSource = this._inputs[inputIndex0];\r\n }\r\n\r\n /**\r\n * Initialize the block and prepare the context for build\r\n */\r\n public initialize() {\r\n // Do nothing\r\n }\r\n\r\n /**\r\n * Lets the block try to connect some inputs automatically\r\n */\r\n public autoConfigure() {\r\n // Do nothing\r\n }\r\n\r\n /**\r\n * Find an input by its name\r\n * @param name defines the name of the input to look for\r\n * @returns the input or null if not found\r\n */\r\n public getInputByName(name: string) {\r\n const filter = this._inputs.filter((e) => e.name === name);\r\n\r\n if (filter.length) {\r\n return filter[0];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Find an output by its name\r\n * @param name defines the name of the output to look for\r\n * @returns the output or null if not found\r\n */\r\n public getOutputByName(name: string) {\r\n const filter = this._outputs.filter((e) => e.name === name);\r\n\r\n if (filter.length) {\r\n return filter[0];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Serializes this block in a JSON representation\r\n * @returns the serialized block object\r\n */\r\n public serialize(): any {\r\n const serializationObject: any = {};\r\n\r\n serializationObject.customType = \"BABYLON.\" + this.getClassName();\r\n serializationObject.id = this.uniqueId;\r\n serializationObject.name = this.name;\r\n serializationObject.visibleOnFrame = this.visibleOnFrame;\r\n serializationObject.disabled = this.disabled;\r\n if (this._additionalConstructionParameters) {\r\n serializationObject.additionalConstructionParameters = this._additionalConstructionParameters;\r\n }\r\n\r\n serializationObject.inputs = [];\r\n serializationObject.outputs = [];\r\n\r\n for (const input of this.inputs) {\r\n serializationObject.inputs.push(input.serialize());\r\n }\r\n\r\n for (const output of this.outputs) {\r\n serializationObject.outputs.push(output.serialize(false));\r\n }\r\n\r\n return serializationObject;\r\n }\r\n /**\r\n * @internal\r\n */\r\n public _deserialize(serializationObject: any) {\r\n this._name = serializationObject.name;\r\n this.comments = serializationObject.comments;\r\n this.visibleOnFrame = serializationObject.visibleOnFrame;\r\n this.disabled = serializationObject.disabled;\r\n\r\n this._deserializePortDisplayNamesAndExposedOnFrame(serializationObject);\r\n }\r\n\r\n private _deserializePortDisplayNamesAndExposedOnFrame(serializationObject: any) {\r\n const serializedInputs = serializationObject.inputs;\r\n const serializedOutputs = serializationObject.outputs;\r\n\r\n if (serializedInputs) {\r\n serializedInputs.forEach((port: any) => {\r\n const input = this.inputs.find((i) => i.name === port.name);\r\n if (!input) {\r\n return;\r\n }\r\n if (port.displayName) {\r\n input.displayName = port.displayName;\r\n }\r\n if (port.isExposedOnFrame) {\r\n input.isExposedOnFrame = port.isExposedOnFrame;\r\n input.exposedPortPosition = port.exposedPortPosition;\r\n }\r\n });\r\n }\r\n\r\n if (serializedOutputs) {\r\n serializedOutputs.forEach((port: any, i: number) => {\r\n if (port.displayName) {\r\n this.outputs[i].displayName = port.displayName;\r\n }\r\n if (port.isExposedOnFrame) {\r\n this.outputs[i].isExposedOnFrame = port.isExposedOnFrame;\r\n this.outputs[i].exposedPortPosition = port.exposedPortPosition;\r\n }\r\n });\r\n }\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n const variableName = this._codeVariableName;\r\n return `${variableName}.visibleOnFrame = ${this.visibleOnFrame};\\n${variableName}.disabled = ${this.disabled};\\n`;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _dumpCodeForOutputConnections(alreadyDumped: NodeRenderGraphBlock[]) {\r\n let codeString = \"\";\r\n\r\n if (alreadyDumped.indexOf(this) !== -1) {\r\n return codeString;\r\n }\r\n\r\n alreadyDumped.push(this);\r\n\r\n for (const input of this.inputs) {\r\n if (!input.isConnected) {\r\n continue;\r\n }\r\n\r\n const connectedOutput = input.connectedPoint!;\r\n const connectedBlock = connectedOutput.ownerBlock;\r\n\r\n codeString += connectedBlock._dumpCodeForOutputConnections(alreadyDumped);\r\n codeString += `${connectedBlock._codeVariableName}.${connectedBlock._outputRename(connectedOutput.name)}.connectTo(${this._codeVariableName}.${this._inputRename(\r\n input.name\r\n )});\\n`;\r\n }\r\n\r\n return codeString;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _dumpCode(uniqueNames: string[], alreadyDumped: NodeRenderGraphBlock[]) {\r\n alreadyDumped.push(this);\r\n\r\n // Get unique name\r\n const nameAsVariableName = this.name.replace(/[^A-Za-z_]+/g, \"\");\r\n this._codeVariableName = nameAsVariableName || `${this.getClassName()}_${this.uniqueId}`;\r\n\r\n if (uniqueNames.indexOf(this._codeVariableName) !== -1) {\r\n let index = 0;\r\n do {\r\n index++;\r\n this._codeVariableName = nameAsVariableName + index;\r\n } while (uniqueNames.indexOf(this._codeVariableName) !== -1);\r\n }\r\n\r\n uniqueNames.push(this._codeVariableName);\r\n\r\n // Declaration\r\n let codeString = `\\n// ${this.getClassName()}\\n`;\r\n if (this.comments) {\r\n codeString += `// ${this.comments}\\n`;\r\n }\r\n const className = this.getClassName();\r\n if (className === \"RenderGraphInputBlock\") {\r\n const block = this as unknown as NodeRenderGraphInputBlock;\r\n const blockType = block.type;\r\n\r\n codeString += `var ${this._codeVariableName} = new BABYLON.NodeRenderGraphInputBlock(\"${this.name}\", nodeRenderGraph.frameGraph, scene, BABYLON.NodeRenderGraphBlockConnectionPointTypes.${NodeRenderGraphBlockConnectionPointTypes[blockType]});\\n`;\r\n } else {\r\n if (this._additionalConstructionParameters) {\r\n codeString += `var ${this._codeVariableName} = new BABYLON.${className}(\"${this.name}\", nodeRenderGraph.frameGraph, scene, ...${JSON.stringify(this._additionalConstructionParameters)});\\n`;\r\n } else {\r\n codeString += `var ${this._codeVariableName} = new BABYLON.${className}(\"${this.name}\", nodeRenderGraph.frameGraph, scene);\\n`;\r\n }\r\n }\r\n\r\n // Properties\r\n codeString += this._dumpPropertiesCode() + \"\\n\";\r\n\r\n // Inputs\r\n for (const input of this.inputs) {\r\n if (!input.isConnected) {\r\n continue;\r\n }\r\n\r\n const connectedOutput = input.connectedPoint!;\r\n const connectedBlock = connectedOutput.ownerBlock;\r\n\r\n if (alreadyDumped.indexOf(connectedBlock) === -1) {\r\n codeString += connectedBlock._dumpCode(uniqueNames, alreadyDumped);\r\n }\r\n }\r\n\r\n // Outputs\r\n for (const output of this.outputs) {\r\n if (!output.hasEndpoints) {\r\n continue;\r\n }\r\n\r\n for (const endpoint of output.endpoints) {\r\n const connectedBlock = endpoint.ownerBlock;\r\n if (connectedBlock && alreadyDumped.indexOf(connectedBlock) === -1) {\r\n codeString += connectedBlock._dumpCode(uniqueNames, alreadyDumped);\r\n }\r\n }\r\n }\r\n\r\n return codeString;\r\n }\r\n\r\n /**\r\n * Clone the current block to a new identical block\r\n * @returns a copy of the current block\r\n */\r\n public clone() {\r\n const serializationObject = this.serialize();\r\n const blockType: typeof NodeRenderGraphBlock = GetClass(serializationObject.customType);\r\n\r\n if (blockType) {\r\n const additionalConstructionParameters = serializationObject.additionalConstructionParameters;\r\n const block: NodeRenderGraphBlock = additionalConstructionParameters\r\n ? new blockType(\"\", this._frameGraph, this._scene, ...additionalConstructionParameters)\r\n : new blockType(\"\", this._frameGraph, this._scene);\r\n block._deserialize(serializationObject);\r\n return block;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Release resources\r\n */\r\n public dispose() {\r\n for (const input of this.inputs) {\r\n input.dispose();\r\n }\r\n\r\n for (const output of this.outputs) {\r\n output.dispose();\r\n }\r\n\r\n this._frameGraphTask?.dispose();\r\n this._frameGraphTask = undefined as any;\r\n\r\n this.onBuildObservable.clear();\r\n }\r\n}\r\n"]}
@@ -7,7 +7,6 @@ export declare class FrameGraphRenderPass extends FrameGraphPass<FrameGraphRende
7
7
  protected readonly _engine: AbstractEngine;
8
8
  protected _renderTarget: FrameGraphTextureHandle | FrameGraphTextureHandle[] | undefined;
9
9
  protected _renderTargetDepth: FrameGraphTextureHandle | undefined;
10
- protected readonly _usedTextures: FrameGraphTextureHandle[];
11
10
  protected _frameGraphRenderTarget: FrameGraphRenderTarget | undefined;
12
11
  /**
13
12
  * Checks if a pass is a render pass.
@@ -25,13 +24,6 @@ export declare class FrameGraphRenderPass extends FrameGraphPass<FrameGraphRende
25
24
  get renderTargetDepth(): FrameGraphTextureHandle | undefined;
26
25
  /** @internal */
27
26
  constructor(name: string, parentTask: FrameGraphTask, context: FrameGraphRenderContext, engine: AbstractEngine);
28
- /**
29
- * Indicates that the pass will use the given texture.
30
- * Use this method to indicate that the pass will use a texture so that the frame graph can handle the texture's lifecycle.
31
- * You don't have to call this method for the render target / render target depth textures.
32
- * @param texture The texture used.
33
- */
34
- useTexture(texture: FrameGraphTextureHandle): void;
35
27
  /**
36
28
  * Sets the render target(s) to use for rendering.
37
29
  * @param renderTargetHandle The render target to use for rendering, or an array of render targets to use for multi render target rendering.
@@ -26,18 +26,8 @@ export class FrameGraphRenderPass extends FrameGraphPass {
26
26
  /** @internal */
27
27
  constructor(name, parentTask, context, engine) {
28
28
  super(name, parentTask, context);
29
- this._usedTextures = [];
30
29
  this._engine = engine;
31
30
  }
32
- /**
33
- * Indicates that the pass will use the given texture.
34
- * Use this method to indicate that the pass will use a texture so that the frame graph can handle the texture's lifecycle.
35
- * You don't have to call this method for the render target / render target depth textures.
36
- * @param texture The texture used.
37
- */
38
- useTexture(texture) {
39
- this._usedTextures.push(texture);
40
- }
41
31
  /**
42
32
  * Sets the render target(s) to use for rendering.
43
33
  * @param renderTargetHandle The render target to use for rendering, or an array of render targets to use for multi render target rendering.
@@ -1 +1 @@
1
- {"version":3,"file":"renderPass.js","sourceRoot":"","sources":["../../../../../dev/core/src/FrameGraph/Passes/renderPass.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,cAAuC;IAO7E;;;;OAIG;IACI,MAAM,CAAC,YAAY,CAAC,IAAqB;QAC5C,OAAQ,IAA6B,CAAC,eAAe,KAAK,SAAS,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,IAAW,iBAAiB;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;IAED,gBAAgB;IAChB,YAAY,IAAY,EAAE,UAA0B,EAAE,OAAgC,EAAE,MAAsB;QAC1G,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QA5BlB,kBAAa,GAA8B,EAAE,CAAC;QA6B7D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACI,UAAU,CAAC,OAAgC;QAC9C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACI,eAAe,CAAC,kBAAwE;QAC3F,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACI,oBAAoB,CAAC,kBAA4C;QACpE,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;IACjD,CAAC;IAED,gBAAgB;IACA,QAAQ;QACpB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAExJ,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,uBAAuB,EAAE,6BAA6B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAEvG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEjB,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;IACxC,CAAC;IAED,gBAAgB;IACA,QAAQ;QACpB,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAChC,OAAO,MAAM;YACT,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS;gBACxE,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,iEAAiE,CAAC;IAC9E,CAAC;CACJ","sourcesContent":["// eslint-disable-next-line import/no-internal-modules\r\nimport type { Nullable, FrameGraphRenderContext, AbstractEngine, IFrameGraphPass, FrameGraphTextureHandle, FrameGraphTask, FrameGraphRenderTarget } from \"core/index\";\r\nimport { FrameGraphPass } from \"./pass\";\r\n\r\n/**\r\n * Render pass used to render objects.\r\n */\r\nexport class FrameGraphRenderPass extends FrameGraphPass<FrameGraphRenderContext> {\r\n protected readonly _engine: AbstractEngine;\r\n protected _renderTarget: FrameGraphTextureHandle | FrameGraphTextureHandle[] | undefined;\r\n protected _renderTargetDepth: FrameGraphTextureHandle | undefined;\r\n protected readonly _usedTextures: FrameGraphTextureHandle[] = [];\r\n protected _frameGraphRenderTarget: FrameGraphRenderTarget | undefined;\r\n\r\n /**\r\n * Checks if a pass is a render pass.\r\n * @param pass The pass to check.\r\n * @returns True if the pass is a render pass, else false.\r\n */\r\n public static IsRenderPass(pass: IFrameGraphPass): pass is FrameGraphRenderPass {\r\n return (pass as FrameGraphRenderPass).setRenderTarget !== undefined;\r\n }\r\n\r\n /**\r\n * Gets the render target(s) used by the render pass.\r\n */\r\n public get renderTarget(): FrameGraphTextureHandle | FrameGraphTextureHandle[] | undefined {\r\n return this._renderTarget;\r\n }\r\n\r\n /**\r\n * Gets the render target depth used by the render pass.\r\n */\r\n public get renderTargetDepth(): FrameGraphTextureHandle | undefined {\r\n return this._renderTargetDepth;\r\n }\r\n\r\n /** @internal */\r\n constructor(name: string, parentTask: FrameGraphTask, context: FrameGraphRenderContext, engine: AbstractEngine) {\r\n super(name, parentTask, context);\r\n this._engine = engine;\r\n }\r\n\r\n /**\r\n * Indicates that the pass will use the given texture.\r\n * Use this method to indicate that the pass will use a texture so that the frame graph can handle the texture's lifecycle.\r\n * You don't have to call this method for the render target / render target depth textures.\r\n * @param texture The texture used.\r\n */\r\n public useTexture(texture: FrameGraphTextureHandle) {\r\n this._usedTextures.push(texture);\r\n }\r\n\r\n /**\r\n * Sets the render target(s) to use for rendering.\r\n * @param renderTargetHandle The render target to use for rendering, or an array of render targets to use for multi render target rendering.\r\n */\r\n public setRenderTarget(renderTargetHandle?: FrameGraphTextureHandle | FrameGraphTextureHandle[]) {\r\n this._renderTarget = renderTargetHandle;\r\n }\r\n\r\n /**\r\n * Sets the render target depth to use for rendering.\r\n * @param renderTargetHandle The render target depth to use for rendering.\r\n */\r\n public setRenderTargetDepth(renderTargetHandle?: FrameGraphTextureHandle) {\r\n this._renderTargetDepth = renderTargetHandle;\r\n }\r\n\r\n /** @internal */\r\n public override _execute() {\r\n this._frameGraphRenderTarget = this._frameGraphRenderTarget || this._context.createRenderTarget(this.name, this._renderTarget, this._renderTargetDepth);\r\n\r\n this._context.bindRenderTarget(this._frameGraphRenderTarget, `frame graph render pass - ${this.name}`);\r\n\r\n super._execute();\r\n\r\n this._context._flushDebugMessages();\r\n }\r\n\r\n /** @internal */\r\n public override _isValid(): Nullable<string> {\r\n const errMsg = super._isValid();\r\n return errMsg\r\n ? errMsg\r\n : this._renderTarget !== undefined || this.renderTargetDepth !== undefined\r\n ? null\r\n : \"Render target and render target depth cannot both be undefined.\";\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"renderPass.js","sourceRoot":"","sources":["../../../../../dev/core/src/FrameGraph/Passes/renderPass.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,cAAuC;IAM7E;;;;OAIG;IACI,MAAM,CAAC,YAAY,CAAC,IAAqB;QAC5C,OAAQ,IAA6B,CAAC,eAAe,KAAK,SAAS,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,IAAW,iBAAiB;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;IAED,gBAAgB;IAChB,YAAY,IAAY,EAAE,UAA0B,EAAE,OAAgC,EAAE,MAAsB;QAC1G,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,eAAe,CAAC,kBAAwE;QAC3F,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACI,oBAAoB,CAAC,kBAA4C;QACpE,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;IACjD,CAAC;IAED,gBAAgB;IACA,QAAQ;QACpB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAExJ,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,uBAAuB,EAAE,6BAA6B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAEvG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEjB,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;IACxC,CAAC;IAED,gBAAgB;IACA,QAAQ;QACpB,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAChC,OAAO,MAAM;YACT,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS;gBACxE,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,iEAAiE,CAAC;IAC9E,CAAC;CACJ","sourcesContent":["// eslint-disable-next-line import/no-internal-modules\r\nimport type { Nullable, FrameGraphRenderContext, AbstractEngine, IFrameGraphPass, FrameGraphTextureHandle, FrameGraphTask, FrameGraphRenderTarget } from \"core/index\";\r\nimport { FrameGraphPass } from \"./pass\";\r\n\r\n/**\r\n * Render pass used to render objects.\r\n */\r\nexport class FrameGraphRenderPass extends FrameGraphPass<FrameGraphRenderContext> {\r\n protected readonly _engine: AbstractEngine;\r\n protected _renderTarget: FrameGraphTextureHandle | FrameGraphTextureHandle[] | undefined;\r\n protected _renderTargetDepth: FrameGraphTextureHandle | undefined;\r\n protected _frameGraphRenderTarget: FrameGraphRenderTarget | undefined;\r\n\r\n /**\r\n * Checks if a pass is a render pass.\r\n * @param pass The pass to check.\r\n * @returns True if the pass is a render pass, else false.\r\n */\r\n public static IsRenderPass(pass: IFrameGraphPass): pass is FrameGraphRenderPass {\r\n return (pass as FrameGraphRenderPass).setRenderTarget !== undefined;\r\n }\r\n\r\n /**\r\n * Gets the render target(s) used by the render pass.\r\n */\r\n public get renderTarget(): FrameGraphTextureHandle | FrameGraphTextureHandle[] | undefined {\r\n return this._renderTarget;\r\n }\r\n\r\n /**\r\n * Gets the render target depth used by the render pass.\r\n */\r\n public get renderTargetDepth(): FrameGraphTextureHandle | undefined {\r\n return this._renderTargetDepth;\r\n }\r\n\r\n /** @internal */\r\n constructor(name: string, parentTask: FrameGraphTask, context: FrameGraphRenderContext, engine: AbstractEngine) {\r\n super(name, parentTask, context);\r\n this._engine = engine;\r\n }\r\n\r\n /**\r\n * Sets the render target(s) to use for rendering.\r\n * @param renderTargetHandle The render target to use for rendering, or an array of render targets to use for multi render target rendering.\r\n */\r\n public setRenderTarget(renderTargetHandle?: FrameGraphTextureHandle | FrameGraphTextureHandle[]) {\r\n this._renderTarget = renderTargetHandle;\r\n }\r\n\r\n /**\r\n * Sets the render target depth to use for rendering.\r\n * @param renderTargetHandle The render target depth to use for rendering.\r\n */\r\n public setRenderTargetDepth(renderTargetHandle?: FrameGraphTextureHandle) {\r\n this._renderTargetDepth = renderTargetHandle;\r\n }\r\n\r\n /** @internal */\r\n public override _execute() {\r\n this._frameGraphRenderTarget = this._frameGraphRenderTarget || this._context.createRenderTarget(this.name, this._renderTarget, this._renderTargetDepth);\r\n\r\n this._context.bindRenderTarget(this._frameGraphRenderTarget, `frame graph render pass - ${this.name}`);\r\n\r\n super._execute();\r\n\r\n this._context._flushDebugMessages();\r\n }\r\n\r\n /** @internal */\r\n public override _isValid(): Nullable<string> {\r\n const errMsg = super._isValid();\r\n return errMsg\r\n ? errMsg\r\n : this._renderTarget !== undefined || this.renderTargetDepth !== undefined\r\n ? null\r\n : \"Render target and render target depth cannot both be undefined.\";\r\n }\r\n}\r\n"]}