@babylonjs/core 8.40.0 → 8.41.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.
- package/Compute/computeEffect.js +5 -1
- package/Compute/computeEffect.js.map +1 -1
- package/Compute/computeShader.d.ts +4 -0
- package/Compute/computeShader.js +9 -3
- package/Compute/computeShader.js.map +1 -1
- package/Engines/Extensions/engine.computeShader.d.ts +2 -3
- package/Engines/Extensions/engine.computeShader.js.map +1 -1
- package/Engines/ICanvas.d.ts +3 -3
- package/Engines/ICanvas.js.map +1 -1
- package/Engines/abstractEngine.js +2 -2
- package/Engines/abstractEngine.js.map +1 -1
- package/Engines/webgpuEngine.js +2 -2
- package/Engines/webgpuEngine.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.d.ts +3 -0
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +29 -14
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.d.ts +12 -41
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js +106 -184
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js.map +1 -1
- package/FrameGraph/Passes/renderPass.js +5 -3
- package/FrameGraph/Passes/renderPass.js.map +1 -1
- package/FrameGraph/Tasks/Layers/baseLayerTask.d.ts +2 -0
- package/FrameGraph/Tasks/Layers/baseLayerTask.js +6 -0
- package/FrameGraph/Tasks/Layers/baseLayerTask.js.map +1 -1
- package/FrameGraph/Tasks/Layers/glowLayerTask.d.ts +1 -0
- package/FrameGraph/Tasks/Layers/glowLayerTask.js +3 -0
- package/FrameGraph/Tasks/Layers/glowLayerTask.js.map +1 -1
- package/FrameGraph/Tasks/Layers/highlightLayerTask.d.ts +1 -0
- package/FrameGraph/Tasks/Layers/highlightLayerTask.js +3 -0
- package/FrameGraph/Tasks/Layers/highlightLayerTask.js.map +1 -1
- package/FrameGraph/Tasks/Misc/computeShaderTask.d.ts +1 -0
- package/FrameGraph/Tasks/Misc/computeShaderTask.js +3 -0
- package/FrameGraph/Tasks/Misc/computeShaderTask.js.map +1 -1
- package/FrameGraph/Tasks/Misc/cullObjectsTask.d.ts +1 -0
- package/FrameGraph/Tasks/Misc/cullObjectsTask.js +3 -0
- package/FrameGraph/Tasks/Misc/cullObjectsTask.js.map +1 -1
- package/FrameGraph/Tasks/Misc/executeTask.d.ts +1 -0
- package/FrameGraph/Tasks/Misc/executeTask.js +3 -0
- package/FrameGraph/Tasks/Misc/executeTask.js.map +1 -1
- package/FrameGraph/Tasks/Misc/lightingVolumeTask.d.ts +1 -0
- package/FrameGraph/Tasks/Misc/lightingVolumeTask.js +8 -1
- package/FrameGraph/Tasks/Misc/lightingVolumeTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/anaglyphTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/anaglyphTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/anaglyphTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/blackAndWhiteTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/blackAndWhiteTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/blackAndWhiteTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/bloomMergeTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/bloomMergeTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/bloomMergeTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/bloomTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/bloomTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/bloomTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/blurTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/blurTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/blurTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/chromaticAberrationTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/chromaticAberrationTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/chromaticAberrationTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/circleOfConfusionTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/circleOfConfusionTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/circleOfConfusionTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/colorCorrectionTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/colorCorrectionTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/colorCorrectionTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/convolutionTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/convolutionTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/convolutionTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/customPostProcessTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/customPostProcessTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/customPostProcessTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/extractHighlightsTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/extractHighlightsTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/extractHighlightsTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/filterTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/filterTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/filterTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/fxaaTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/fxaaTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/fxaaTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/grainTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/grainTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/grainTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/imageProcessingTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/imageProcessingTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/imageProcessingTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/motionBlurTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/motionBlurTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/motionBlurTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/passTask.d.ts +2 -0
- package/FrameGraph/Tasks/PostProcesses/passTask.js +6 -0
- package/FrameGraph/Tasks/PostProcesses/passTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/screenSpaceCurvatureTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/screenSpaceCurvatureTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/screenSpaceCurvatureTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/sharpenTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/sharpenTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/sharpenTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/ssao2BlurTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/ssao2BlurTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/ssao2BlurTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/ssao2RenderingPipelineTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/ssao2RenderingPipelineTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/ssao2RenderingPipelineTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/ssao2Task.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/ssao2Task.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/ssao2Task.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/ssrRenderingPipelineTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/ssrRenderingPipelineTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/ssrRenderingPipelineTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/ssrTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/ssrTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/ssrTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/taaTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/taaTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/taaTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/tonemapTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/tonemapTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/tonemapTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.js +3 -0
- package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.d.ts +3 -1
- package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.js +12 -6
- package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.d.ts +1 -0
- package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js +3 -0
- package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +18 -58
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +114 -121
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +12 -0
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js +65 -26
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.d.ts +1 -0
- package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js +3 -0
- package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/utilityLayerRendererTask.d.ts +1 -0
- package/FrameGraph/Tasks/Rendering/utilityLayerRendererTask.js +3 -0
- package/FrameGraph/Tasks/Rendering/utilityLayerRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Texture/clearTextureTask.d.ts +1 -0
- package/FrameGraph/Tasks/Texture/clearTextureTask.js +21 -8
- package/FrameGraph/Tasks/Texture/clearTextureTask.js.map +1 -1
- package/FrameGraph/Tasks/Texture/copyToBackbufferColorTask.d.ts +1 -0
- package/FrameGraph/Tasks/Texture/copyToBackbufferColorTask.js +3 -0
- package/FrameGraph/Tasks/Texture/copyToBackbufferColorTask.js.map +1 -1
- package/FrameGraph/Tasks/Texture/copyToTextureTask.d.ts +1 -0
- package/FrameGraph/Tasks/Texture/copyToTextureTask.js +21 -4
- package/FrameGraph/Tasks/Texture/copyToTextureTask.js.map +1 -1
- package/FrameGraph/Tasks/Texture/generateMipMapsTask.d.ts +1 -0
- package/FrameGraph/Tasks/Texture/generateMipMapsTask.js +3 -0
- package/FrameGraph/Tasks/Texture/generateMipMapsTask.js.map +1 -1
- package/FrameGraph/frameGraphContext.js +2 -2
- package/FrameGraph/frameGraphContext.js.map +1 -1
- package/FrameGraph/frameGraphRenderContext.d.ts +1 -0
- package/FrameGraph/frameGraphRenderContext.js +17 -8
- package/FrameGraph/frameGraphRenderContext.js.map +1 -1
- package/FrameGraph/frameGraphTask.d.ts +5 -0
- package/FrameGraph/frameGraphTask.js +9 -0
- package/FrameGraph/frameGraphTask.js.map +1 -1
- package/FrameGraph/frameGraphUtils.d.ts +2 -2
- package/FrameGraph/frameGraphUtils.js +6 -6
- package/FrameGraph/frameGraphUtils.js.map +1 -1
- package/Lights/lightingVolume.d.ts +10 -1
- package/Lights/lightingVolume.js +201 -102
- package/Lights/lightingVolume.js.map +1 -1
- package/Loading/Plugins/babylonFileLoader.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.js +2 -0
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.js.map +1 -1
- package/Materials/materialHelper.geometryrendering.d.ts +5 -1
- package/Materials/materialHelper.geometryrendering.js +11 -2
- package/Materials/materialHelper.geometryrendering.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
- package/Meshes/geometry.d.ts +2 -1
- package/Meshes/geometry.js +6 -2
- package/Meshes/geometry.js.map +1 -1
- package/Meshes/mesh.d.ts +2 -1
- package/Meshes/mesh.js +4 -3
- package/Meshes/mesh.js.map +1 -1
- package/Rendering/objectRenderer.d.ts +6 -2
- package/Rendering/objectRenderer.js +69 -63
- package/Rendering/objectRenderer.js.map +1 -1
- package/Shaders/gaussianSplatting.vertex.js +2 -2
- package/Shaders/gaussianSplatting.vertex.js.map +1 -1
- package/Shaders/volumetricLightingRenderVolume.fragment.js +2 -2
- package/Shaders/volumetricLightingRenderVolume.fragment.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.vertex.js +3 -3
- package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
- package/ShadersWGSL/lightingVolume.compute.js +10 -4
- package/ShadersWGSL/lightingVolume.compute.js.map +1 -1
- package/ShadersWGSL/volumetricLightingRenderVolume.fragment.js +2 -2
- package/ShadersWGSL/volumetricLightingRenderVolume.fragment.js.map +1 -1
- package/States/alphaCullingState.d.ts +1 -0
- package/States/alphaCullingState.js +3 -0
- package/States/alphaCullingState.js.map +1 -1
- package/package.json +1 -1
|
@@ -13,6 +13,9 @@ export class FrameGraphSharpenTask extends FrameGraphPostProcessTask {
|
|
|
13
13
|
constructor(name, frameGraph, thinPostProcess) {
|
|
14
14
|
super(name, frameGraph, thinPostProcess || new ThinSharpenPostProcess(name, frameGraph.engine));
|
|
15
15
|
}
|
|
16
|
+
getClassName() {
|
|
17
|
+
return "FrameGraphSharpenTask";
|
|
18
|
+
}
|
|
16
19
|
record(skipCreationOfDisabledPasses = false, additionalExecute, additionalBindings) {
|
|
17
20
|
const pass = super.record(skipCreationOfDisabledPasses, additionalExecute, additionalBindings);
|
|
18
21
|
this.postProcess.textureWidth = this._sourceWidth;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sharpenTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/PostProcesses/sharpenTask.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,yDAAkD;AAEnF;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,yBAAyB;IAGhE;;;;;OAKG;IACH,YAAY,IAAY,EAAE,UAAsB,EAAE,eAAwC;QACtF,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,IAAI,IAAI,sBAAsB,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACpG,CAAC;IAEe,MAAM,CAClB,4BAA4B,GAAG,KAAK,EACpC,iBAA8D,EAC9D,kBAA+D;QAE/D,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,4BAA4B,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;QAE/F,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAClD,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAEpD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ","sourcesContent":["import type { FrameGraph, FrameGraphRenderContext, FrameGraphRenderPass } from \"core/index\";\r\nimport { FrameGraphPostProcessTask } from \"./postProcessTask\";\r\nimport { ThinSharpenPostProcess } from \"core/PostProcesses/thinSharpenPostProcess\";\r\n\r\n/**\r\n * Task which applies a sharpen post process.\r\n */\r\nexport class FrameGraphSharpenTask extends FrameGraphPostProcessTask {\r\n public override readonly postProcess: ThinSharpenPostProcess;\r\n\r\n /**\r\n * Constructs a new sharpen task.\r\n * @param name The name of the task.\r\n * @param frameGraph The frame graph this task belongs to.\r\n * @param thinPostProcess The thin post process to use for the task. If not provided, a new one will be created.\r\n */\r\n constructor(name: string, frameGraph: FrameGraph, thinPostProcess?: ThinSharpenPostProcess) {\r\n super(name, frameGraph, thinPostProcess || new ThinSharpenPostProcess(name, frameGraph.engine));\r\n }\r\n\r\n public override record(\r\n skipCreationOfDisabledPasses = false,\r\n additionalExecute?: (context: FrameGraphRenderContext) => void,\r\n additionalBindings?: (context: FrameGraphRenderContext) => void\r\n ): FrameGraphRenderPass {\r\n const pass = super.record(skipCreationOfDisabledPasses, additionalExecute, additionalBindings);\r\n\r\n this.postProcess.textureWidth = this._sourceWidth;\r\n this.postProcess.textureHeight = this._sourceHeight;\r\n\r\n return pass;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"sharpenTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/PostProcesses/sharpenTask.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,yDAAkD;AAEnF;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,yBAAyB;IAGhE;;;;;OAKG;IACH,YAAY,IAAY,EAAE,UAAsB,EAAE,eAAwC;QACtF,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,IAAI,IAAI,sBAAsB,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACpG,CAAC;IAEe,YAAY;QACxB,OAAO,uBAAuB,CAAC;IACnC,CAAC;IAEe,MAAM,CAClB,4BAA4B,GAAG,KAAK,EACpC,iBAA8D,EAC9D,kBAA+D;QAE/D,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,4BAA4B,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;QAE/F,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAClD,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAEpD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ","sourcesContent":["import type { FrameGraph, FrameGraphRenderContext, FrameGraphRenderPass } from \"core/index\";\r\nimport { FrameGraphPostProcessTask } from \"./postProcessTask\";\r\nimport { ThinSharpenPostProcess } from \"core/PostProcesses/thinSharpenPostProcess\";\r\n\r\n/**\r\n * Task which applies a sharpen post process.\r\n */\r\nexport class FrameGraphSharpenTask extends FrameGraphPostProcessTask {\r\n public override readonly postProcess: ThinSharpenPostProcess;\r\n\r\n /**\r\n * Constructs a new sharpen task.\r\n * @param name The name of the task.\r\n * @param frameGraph The frame graph this task belongs to.\r\n * @param thinPostProcess The thin post process to use for the task. If not provided, a new one will be created.\r\n */\r\n constructor(name: string, frameGraph: FrameGraph, thinPostProcess?: ThinSharpenPostProcess) {\r\n super(name, frameGraph, thinPostProcess || new ThinSharpenPostProcess(name, frameGraph.engine));\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"FrameGraphSharpenTask\";\r\n }\r\n\r\n public override record(\r\n skipCreationOfDisabledPasses = false,\r\n additionalExecute?: (context: FrameGraphRenderContext) => void,\r\n additionalBindings?: (context: FrameGraphRenderContext) => void\r\n ): FrameGraphRenderPass {\r\n const pass = super.record(skipCreationOfDisabledPasses, additionalExecute, additionalBindings);\r\n\r\n this.postProcess.textureWidth = this._sourceWidth;\r\n this.postProcess.textureHeight = this._sourceHeight;\r\n\r\n return pass;\r\n }\r\n}\r\n"]}
|
|
@@ -9,5 +9,6 @@ export declare class FrameGraphSSAO2BlurTask extends FrameGraphPostProcessTask {
|
|
|
9
9
|
readonly postProcess: ThinSSAO2BlurPostProcess;
|
|
10
10
|
depthTexture: FrameGraphTextureHandle;
|
|
11
11
|
constructor(name: string, frameGraph: FrameGraph, _isHorizontal: boolean, thinPostProcess?: ThinSSAO2BlurPostProcess);
|
|
12
|
+
getClassName(): string;
|
|
12
13
|
record(skipCreationOfDisabledPasses?: boolean): FrameGraphRenderPass;
|
|
13
14
|
}
|
|
@@ -9,6 +9,9 @@ export class FrameGraphSSAO2BlurTask extends FrameGraphPostProcessTask {
|
|
|
9
9
|
super(name, frameGraph, thinPostProcess || new ThinSSAO2BlurPostProcess(name, frameGraph.engine, _isHorizontal));
|
|
10
10
|
this._isHorizontal = _isHorizontal;
|
|
11
11
|
}
|
|
12
|
+
getClassName() {
|
|
13
|
+
return "FrameGraphSSAO2BlurTask";
|
|
14
|
+
}
|
|
12
15
|
record(skipCreationOfDisabledPasses = false) {
|
|
13
16
|
if (this.sourceTexture === undefined || this.depthTexture === undefined) {
|
|
14
17
|
throw new Error(`FrameGraphSSAO2BlurTask "${this.name}": sourceTexture and depthTexture are required`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssao2BlurTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/PostProcesses/ssao2BlurTask.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,sCAA+B;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,2DAAoD;AAEvF;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,yBAAyB;IAKlE,YACI,IAAY,EACZ,UAAsB,EACd,aAAsB,EAC9B,eAA0C;QAE1C,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,IAAI,IAAI,wBAAwB,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;QAHzG,kBAAa,GAAb,aAAa,CAAS;IAIlC,CAAC;IAEe,MAAM,CAAC,4BAA4B,GAAG,KAAK;QACvD,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACtE,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,IAAI,gDAAgD,CAAC,CAAC;QAC3G,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CACrB,4BAA4B,EAC5B,CAAC,OAAO,EAAE,EAAE;YACR,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,6BAA6B,CAAC,CAAC;QAC/F,CAAC,EACD,CAAC,OAAO,EAAE,EAAE;YACR,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAO,EAAE,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACvG,CAAC,CACJ,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;QAE3F,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ","sourcesContent":["import type { FrameGraph, FrameGraphRenderPass, FrameGraphTextureHandle } from \"core/index\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { FrameGraphPostProcessTask } from \"./postProcessTask\";\r\nimport { ThinSSAO2BlurPostProcess } from \"core/PostProcesses/thinSSAO2BlurPostProcess\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class FrameGraphSSAO2BlurTask extends FrameGraphPostProcessTask {\r\n public override readonly postProcess: ThinSSAO2BlurPostProcess;\r\n\r\n public depthTexture: FrameGraphTextureHandle;\r\n\r\n constructor(\r\n name: string,\r\n frameGraph: FrameGraph,\r\n private _isHorizontal: boolean,\r\n thinPostProcess?: ThinSSAO2BlurPostProcess\r\n ) {\r\n super(name, frameGraph, thinPostProcess || new ThinSSAO2BlurPostProcess(name, frameGraph.engine, _isHorizontal));\r\n }\r\n\r\n public override record(skipCreationOfDisabledPasses = false): FrameGraphRenderPass {\r\n if (this.sourceTexture === undefined || this.depthTexture === undefined) {\r\n throw new Error(`FrameGraphSSAO2BlurTask \"${this.name}\": sourceTexture and depthTexture are required`);\r\n }\r\n\r\n const pass = super.record(\r\n skipCreationOfDisabledPasses,\r\n (context) => {\r\n context.setTextureSamplingMode(this.depthTexture, Constants.TEXTURE_BILINEAR_SAMPLINGMODE);\r\n },\r\n (context) => {\r\n context.bindTextureHandle(this._postProcessDrawWrapper.effect!, \"depthSampler\", this.depthTexture);\r\n }\r\n );\r\n\r\n this.postProcess.textureSize = this._isHorizontal ? this._outputWidth : this._outputHeight;\r\n\r\n return pass;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ssao2BlurTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/PostProcesses/ssao2BlurTask.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,sCAA+B;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,2DAAoD;AAEvF;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,yBAAyB;IAKlE,YACI,IAAY,EACZ,UAAsB,EACd,aAAsB,EAC9B,eAA0C;QAE1C,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,IAAI,IAAI,wBAAwB,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;QAHzG,kBAAa,GAAb,aAAa,CAAS;IAIlC,CAAC;IAEe,YAAY;QACxB,OAAO,yBAAyB,CAAC;IACrC,CAAC;IAEe,MAAM,CAAC,4BAA4B,GAAG,KAAK;QACvD,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACtE,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,IAAI,gDAAgD,CAAC,CAAC;QAC3G,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CACrB,4BAA4B,EAC5B,CAAC,OAAO,EAAE,EAAE;YACR,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,6BAA6B,CAAC,CAAC;QAC/F,CAAC,EACD,CAAC,OAAO,EAAE,EAAE;YACR,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAO,EAAE,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACvG,CAAC,CACJ,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;QAE3F,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ","sourcesContent":["import type { FrameGraph, FrameGraphRenderPass, FrameGraphTextureHandle } from \"core/index\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { FrameGraphPostProcessTask } from \"./postProcessTask\";\r\nimport { ThinSSAO2BlurPostProcess } from \"core/PostProcesses/thinSSAO2BlurPostProcess\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class FrameGraphSSAO2BlurTask extends FrameGraphPostProcessTask {\r\n public override readonly postProcess: ThinSSAO2BlurPostProcess;\r\n\r\n public depthTexture: FrameGraphTextureHandle;\r\n\r\n constructor(\r\n name: string,\r\n frameGraph: FrameGraph,\r\n private _isHorizontal: boolean,\r\n thinPostProcess?: ThinSSAO2BlurPostProcess\r\n ) {\r\n super(name, frameGraph, thinPostProcess || new ThinSSAO2BlurPostProcess(name, frameGraph.engine, _isHorizontal));\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"FrameGraphSSAO2BlurTask\";\r\n }\r\n\r\n public override record(skipCreationOfDisabledPasses = false): FrameGraphRenderPass {\r\n if (this.sourceTexture === undefined || this.depthTexture === undefined) {\r\n throw new Error(`FrameGraphSSAO2BlurTask \"${this.name}\": sourceTexture and depthTexture are required`);\r\n }\r\n\r\n const pass = super.record(\r\n skipCreationOfDisabledPasses,\r\n (context) => {\r\n context.setTextureSamplingMode(this.depthTexture, Constants.TEXTURE_BILINEAR_SAMPLINGMODE);\r\n },\r\n (context) => {\r\n context.bindTextureHandle(this._postProcessDrawWrapper.effect!, \"depthSampler\", this.depthTexture);\r\n }\r\n );\r\n\r\n this.postProcess.textureSize = this._isHorizontal ? this._outputWidth : this._outputHeight;\r\n\r\n return pass;\r\n }\r\n}\r\n"]}
|
|
@@ -71,6 +71,7 @@ export declare class FrameGraphSSAO2RenderingPipelineTask extends FrameGraphTask
|
|
|
71
71
|
*/
|
|
72
72
|
constructor(name: string, frameGraph: FrameGraph, ratioSSAO: number, ratioBlur: number, textureType?: number);
|
|
73
73
|
isReady(): boolean;
|
|
74
|
+
getClassName(): string;
|
|
74
75
|
record(): void;
|
|
75
76
|
dispose(): void;
|
|
76
77
|
}
|
|
@@ -69,6 +69,9 @@ export class FrameGraphSSAO2RenderingPipelineTask extends FrameGraphTask {
|
|
|
69
69
|
isReady() {
|
|
70
70
|
return this.ssao.isReady();
|
|
71
71
|
}
|
|
72
|
+
getClassName() {
|
|
73
|
+
return "FrameGraphSSAO2RenderingPipelineTask";
|
|
74
|
+
}
|
|
72
75
|
record() {
|
|
73
76
|
if (this.sourceTexture === undefined || this.depthTexture === undefined || this.normalTexture === undefined || this.camera === undefined) {
|
|
74
77
|
throw new Error(`FrameGraphSSAO2RenderingPipelineTask "${this.name}": sourceTexture, depthTexture, normalTexture and camera are required`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssao2RenderingPipelineTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/PostProcesses/ssao2RenderingPipelineTask.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FrameGraph, FrameGraphTextureHandle, Camera, FrameGraphTextureCreationOptions } from \"core/index\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { FrameGraphTask } from \"../../frameGraphTask\";\r\nimport { ThinSSAO2RenderingPipeline } from \"core/PostProcesses/RenderPipeline/Pipelines/thinSSAO2RenderingPipeline\";\r\nimport { FrameGraphSSAO2Task } from \"./ssao2Task\";\r\nimport { FrameGraphSSAO2BlurTask } from \"./ssao2BlurTask\";\r\nimport { FrameGraphPostProcessTask } from \"./postProcessTask\";\r\n\r\n/**\r\n * Task which applies a SSAO2 post process.\r\n */\r\nexport class FrameGraphSSAO2RenderingPipelineTask extends FrameGraphTask {\r\n /**\r\n * The source texture to apply the SSAO2 effect on.\r\n */\r\n public sourceTexture: FrameGraphTextureHandle;\r\n\r\n /**\r\n * The sampling mode to use for the source texture.\r\n */\r\n public sourceSamplingMode = Constants.TEXTURE_BILINEAR_SAMPLINGMODE;\r\n\r\n /**\r\n * The depth texture used by the SSAO2 effect (Z coordinate in camera view space).\r\n */\r\n public depthTexture: FrameGraphTextureHandle;\r\n\r\n /**\r\n * The normal texture used by the SSAO2 effect (normal vector in camera view space).\r\n */\r\n public normalTexture: FrameGraphTextureHandle;\r\n\r\n private _camera: Camera;\r\n\r\n /**\r\n * The camera used to render the scene.\r\n */\r\n public get camera() {\r\n return this._camera;\r\n }\r\n\r\n public set camera(camera: Camera) {\r\n if (camera === this._camera) {\r\n return;\r\n }\r\n\r\n this._camera = camera;\r\n\r\n this.ssao.camera = camera;\r\n }\r\n\r\n /**\r\n * The target texture to render the SSAO2 effect to.\r\n */\r\n public targetTexture?: FrameGraphTextureHandle;\r\n\r\n /**\r\n * The output texture of the SSAO2 effect.\r\n */\r\n public readonly outputTexture: FrameGraphTextureHandle;\r\n\r\n /**\r\n * The SSAO2 Rendering pipeline.\r\n */\r\n public readonly ssao: ThinSSAO2RenderingPipeline;\r\n\r\n /**\r\n * The name of the task.\r\n */\r\n public override get name() {\r\n return this._name;\r\n }\r\n\r\n public override set name(name: string) {\r\n this._name = name;\r\n if (this._ssao) {\r\n this._ssao.name = `${name} SSAO2 main`;\r\n }\r\n if (this._ssaoBlurX) {\r\n this._ssaoBlurX.name = `${name} SSAO2 Blur X`;\r\n }\r\n if (this._ssaoBlurY) {\r\n this._ssaoBlurY.name = `${name} SSAO2 Blur Y`;\r\n }\r\n if (this._ssaoCombine) {\r\n this._ssaoCombine.name = `${name} SSAO2 Combine`;\r\n }\r\n }\r\n\r\n /**\r\n * The ratio between the SSAO texture size and the source texture size\r\n */\r\n public readonly ratioSSAO: number;\r\n\r\n /**\r\n * The ratio between the SSAO blur texture size and the source texture size\r\n */\r\n public readonly ratioBlur: number;\r\n\r\n /**\r\n * The texture type used by the different post processes created by SSAO2.\r\n * It's a read-only property. If you want to change it, you must recreate the task and pass the appropriate texture type to the constructor.\r\n */\r\n public readonly textureType: number;\r\n\r\n private readonly _ssao: FrameGraphSSAO2Task;\r\n private readonly _ssaoBlurX: FrameGraphSSAO2BlurTask;\r\n private readonly _ssaoBlurY: FrameGraphSSAO2BlurTask;\r\n private readonly _ssaoCombine: FrameGraphPostProcessTask;\r\n\r\n /**\r\n * Constructs a SSAO2 rendering pipeline task.\r\n * @param name The name of the task.\r\n * @param frameGraph The frame graph this task belongs to.\r\n * @param ratioSSAO The ratio between the SSAO texture size and the source texture size\r\n * @param ratioBlur The ratio between the SSAO blur texture size and the source texture size\r\n * @param textureType The texture type used by the different post processes created by SSAO2 (default: Constants.TEXTURETYPE_UNSIGNED_BYTE)\r\n */\r\n constructor(name: string, frameGraph: FrameGraph, ratioSSAO: number, ratioBlur: number, textureType = Constants.TEXTURETYPE_UNSIGNED_BYTE) {\r\n super(name, frameGraph);\r\n\r\n this.ratioSSAO = ratioSSAO;\r\n this.ratioBlur = ratioBlur;\r\n this.textureType = textureType;\r\n\r\n this.ssao = new ThinSSAO2RenderingPipeline(name, frameGraph.scene);\r\n\r\n this._ssao = new FrameGraphSSAO2Task(`${name} SSAO2 main`, this._frameGraph, this.ssao._ssaoPostProcess);\r\n this._ssaoBlurX = new FrameGraphSSAO2BlurTask(`${name} SSAO2 Blur X`, this._frameGraph, true, this.ssao._ssaoBlurXPostProcess);\r\n this._ssaoBlurY = new FrameGraphSSAO2BlurTask(`${name} SSAO2 Blur Y`, this._frameGraph, false, this.ssao._ssaoBlurYPostProcess);\r\n this._ssaoCombine = new FrameGraphPostProcessTask(`${name} SSAO2 Combine`, this._frameGraph, this.ssao._ssaoCombinePostProcess);\r\n\r\n this.outputTexture = this._frameGraph.textureManager.createDanglingHandle();\r\n }\r\n\r\n public override isReady() {\r\n return this.ssao.isReady();\r\n }\r\n\r\n public record(): void {\r\n if (this.sourceTexture === undefined || this.depthTexture === undefined || this.normalTexture === undefined || this.camera === undefined) {\r\n throw new Error(`FrameGraphSSAO2RenderingPipelineTask \"${this.name}\": sourceTexture, depthTexture, normalTexture and camera are required`);\r\n }\r\n\r\n const sourceTextureDescription = this._frameGraph.textureManager.getTextureDescription(this.sourceTexture);\r\n\r\n this._ssao.sourceTexture = this.sourceTexture;\r\n this._ssao.sourceSamplingMode = this.sourceSamplingMode;\r\n this._ssao.camera = this.camera;\r\n this._ssao.depthTexture = this.depthTexture;\r\n this._ssao.normalTexture = this.normalTexture;\r\n\r\n const textureSize = {\r\n width: Math.floor(sourceTextureDescription.size.width * this.ratioSSAO) || 1,\r\n height: Math.floor(sourceTextureDescription.size.height * this.ratioSSAO) || 1,\r\n };\r\n const textureCreationOptions: FrameGraphTextureCreationOptions = {\r\n size: textureSize,\r\n options: {\r\n createMipMaps: false,\r\n types: [this.textureType],\r\n formats: [Constants.TEXTUREFORMAT_RGBA],\r\n samples: 1,\r\n useSRGBBuffers: [false],\r\n labels: [\"\"],\r\n },\r\n sizeIsPercentage: false,\r\n };\r\n\r\n const ssaoTextureHandle = this._frameGraph.textureManager.createRenderTargetTexture(this._ssao.name, textureCreationOptions);\r\n\r\n // SSAO main post process\r\n this._ssao.targetTexture = ssaoTextureHandle;\r\n this._ssao.record(true);\r\n\r\n // SSAO Blur X & Y\r\n textureSize.width = Math.floor(sourceTextureDescription.size.width * this.ratioBlur) || 1;\r\n textureSize.height = Math.floor(sourceTextureDescription.size.height * this.ratioBlur) || 1;\r\n\r\n const sourceTextureCreationOptions = this._frameGraph.textureManager.getTextureCreationOptions(this.sourceTexture);\r\n\r\n this._frameGraph.textureManager.resolveDanglingHandle(this.outputTexture, this.targetTexture, this.name + \" Output\", sourceTextureCreationOptions);\r\n\r\n const blurXTextureHandle = this._frameGraph.textureManager.createRenderTargetTexture(this._ssaoBlurX.name, textureCreationOptions);\r\n\r\n this._ssaoBlurX.sourceTexture = ssaoTextureHandle!;\r\n this._ssaoBlurX.depthTexture = this.depthTexture;\r\n this._ssaoBlurX.sourceSamplingMode = Constants.TEXTURE_BILINEAR_SAMPLINGMODE;\r\n this._ssaoBlurX.targetTexture = blurXTextureHandle;\r\n this._ssaoBlurX.record(true);\r\n\r\n const blurYTextureHandle = this._frameGraph.textureManager.createRenderTargetTexture(this._ssaoBlurY.name, textureCreationOptions);\r\n\r\n this._ssaoBlurY.sourceTexture = blurXTextureHandle;\r\n this._ssaoBlurY.depthTexture = this.depthTexture;\r\n this._ssaoBlurY.sourceSamplingMode = Constants.TEXTURE_BILINEAR_SAMPLINGMODE;\r\n this._ssaoBlurY.targetTexture = blurYTextureHandle;\r\n this._ssaoBlurY.record(true);\r\n\r\n // SSAO Combine\r\n this._ssaoCombine.sourceTexture = this.sourceTexture;\r\n this._ssaoCombine.sourceSamplingMode = this.sourceSamplingMode;\r\n this._ssaoCombine.targetTexture = this.outputTexture;\r\n const combinerPass = this._ssaoCombine.record(\r\n true,\r\n (context) => {\r\n context.setTextureSamplingMode(this.sourceTexture, this.sourceSamplingMode);\r\n context.setTextureSamplingMode(blurYTextureHandle, Constants.TEXTURE_BILINEAR_SAMPLINGMODE);\r\n },\r\n (context) => {\r\n context.bindTextureHandle(this._ssaoCombine.drawWrapper.effect!, \"textureSampler\", blurYTextureHandle);\r\n context.bindTextureHandle(this._ssaoCombine.drawWrapper.effect!, \"originalColor\", this.sourceTexture);\r\n }\r\n );\r\n\r\n combinerPass.addDependencies(blurYTextureHandle);\r\n\r\n const passDisabled = this._frameGraph.addRenderPass(this.name + \"_disabled\", true);\r\n\r\n passDisabled.addDependencies(this.sourceTexture);\r\n\r\n passDisabled.setRenderTarget(this.outputTexture);\r\n passDisabled.setExecuteFunc((context) => {\r\n context.copyTexture(this.sourceTexture);\r\n });\r\n }\r\n\r\n public override dispose(): void {\r\n this._ssao.dispose();\r\n this._ssaoBlurX.dispose();\r\n this._ssaoBlurY.dispose();\r\n this._ssaoCombine.dispose();\r\n this.ssao.dispose();\r\n super.dispose();\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ssao2RenderingPipelineTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/PostProcesses/ssao2RenderingPipelineTask.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FrameGraph, FrameGraphTextureHandle, Camera, FrameGraphTextureCreationOptions } from \"core/index\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { FrameGraphTask } from \"../../frameGraphTask\";\r\nimport { ThinSSAO2RenderingPipeline } from \"core/PostProcesses/RenderPipeline/Pipelines/thinSSAO2RenderingPipeline\";\r\nimport { FrameGraphSSAO2Task } from \"./ssao2Task\";\r\nimport { FrameGraphSSAO2BlurTask } from \"./ssao2BlurTask\";\r\nimport { FrameGraphPostProcessTask } from \"./postProcessTask\";\r\n\r\n/**\r\n * Task which applies a SSAO2 post process.\r\n */\r\nexport class FrameGraphSSAO2RenderingPipelineTask extends FrameGraphTask {\r\n /**\r\n * The source texture to apply the SSAO2 effect on.\r\n */\r\n public sourceTexture: FrameGraphTextureHandle;\r\n\r\n /**\r\n * The sampling mode to use for the source texture.\r\n */\r\n public sourceSamplingMode = Constants.TEXTURE_BILINEAR_SAMPLINGMODE;\r\n\r\n /**\r\n * The depth texture used by the SSAO2 effect (Z coordinate in camera view space).\r\n */\r\n public depthTexture: FrameGraphTextureHandle;\r\n\r\n /**\r\n * The normal texture used by the SSAO2 effect (normal vector in camera view space).\r\n */\r\n public normalTexture: FrameGraphTextureHandle;\r\n\r\n private _camera: Camera;\r\n\r\n /**\r\n * The camera used to render the scene.\r\n */\r\n public get camera() {\r\n return this._camera;\r\n }\r\n\r\n public set camera(camera: Camera) {\r\n if (camera === this._camera) {\r\n return;\r\n }\r\n\r\n this._camera = camera;\r\n\r\n this.ssao.camera = camera;\r\n }\r\n\r\n /**\r\n * The target texture to render the SSAO2 effect to.\r\n */\r\n public targetTexture?: FrameGraphTextureHandle;\r\n\r\n /**\r\n * The output texture of the SSAO2 effect.\r\n */\r\n public readonly outputTexture: FrameGraphTextureHandle;\r\n\r\n /**\r\n * The SSAO2 Rendering pipeline.\r\n */\r\n public readonly ssao: ThinSSAO2RenderingPipeline;\r\n\r\n /**\r\n * The name of the task.\r\n */\r\n public override get name() {\r\n return this._name;\r\n }\r\n\r\n public override set name(name: string) {\r\n this._name = name;\r\n if (this._ssao) {\r\n this._ssao.name = `${name} SSAO2 main`;\r\n }\r\n if (this._ssaoBlurX) {\r\n this._ssaoBlurX.name = `${name} SSAO2 Blur X`;\r\n }\r\n if (this._ssaoBlurY) {\r\n this._ssaoBlurY.name = `${name} SSAO2 Blur Y`;\r\n }\r\n if (this._ssaoCombine) {\r\n this._ssaoCombine.name = `${name} SSAO2 Combine`;\r\n }\r\n }\r\n\r\n /**\r\n * The ratio between the SSAO texture size and the source texture size\r\n */\r\n public readonly ratioSSAO: number;\r\n\r\n /**\r\n * The ratio between the SSAO blur texture size and the source texture size\r\n */\r\n public readonly ratioBlur: number;\r\n\r\n /**\r\n * The texture type used by the different post processes created by SSAO2.\r\n * It's a read-only property. If you want to change it, you must recreate the task and pass the appropriate texture type to the constructor.\r\n */\r\n public readonly textureType: number;\r\n\r\n private readonly _ssao: FrameGraphSSAO2Task;\r\n private readonly _ssaoBlurX: FrameGraphSSAO2BlurTask;\r\n private readonly _ssaoBlurY: FrameGraphSSAO2BlurTask;\r\n private readonly _ssaoCombine: FrameGraphPostProcessTask;\r\n\r\n /**\r\n * Constructs a SSAO2 rendering pipeline task.\r\n * @param name The name of the task.\r\n * @param frameGraph The frame graph this task belongs to.\r\n * @param ratioSSAO The ratio between the SSAO texture size and the source texture size\r\n * @param ratioBlur The ratio between the SSAO blur texture size and the source texture size\r\n * @param textureType The texture type used by the different post processes created by SSAO2 (default: Constants.TEXTURETYPE_UNSIGNED_BYTE)\r\n */\r\n constructor(name: string, frameGraph: FrameGraph, ratioSSAO: number, ratioBlur: number, textureType = Constants.TEXTURETYPE_UNSIGNED_BYTE) {\r\n super(name, frameGraph);\r\n\r\n this.ratioSSAO = ratioSSAO;\r\n this.ratioBlur = ratioBlur;\r\n this.textureType = textureType;\r\n\r\n this.ssao = new ThinSSAO2RenderingPipeline(name, frameGraph.scene);\r\n\r\n this._ssao = new FrameGraphSSAO2Task(`${name} SSAO2 main`, this._frameGraph, this.ssao._ssaoPostProcess);\r\n this._ssaoBlurX = new FrameGraphSSAO2BlurTask(`${name} SSAO2 Blur X`, this._frameGraph, true, this.ssao._ssaoBlurXPostProcess);\r\n this._ssaoBlurY = new FrameGraphSSAO2BlurTask(`${name} SSAO2 Blur Y`, this._frameGraph, false, this.ssao._ssaoBlurYPostProcess);\r\n this._ssaoCombine = new FrameGraphPostProcessTask(`${name} SSAO2 Combine`, this._frameGraph, this.ssao._ssaoCombinePostProcess);\r\n\r\n this.outputTexture = this._frameGraph.textureManager.createDanglingHandle();\r\n }\r\n\r\n public override isReady() {\r\n return this.ssao.isReady();\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"FrameGraphSSAO2RenderingPipelineTask\";\r\n }\r\n\r\n public record(): void {\r\n if (this.sourceTexture === undefined || this.depthTexture === undefined || this.normalTexture === undefined || this.camera === undefined) {\r\n throw new Error(`FrameGraphSSAO2RenderingPipelineTask \"${this.name}\": sourceTexture, depthTexture, normalTexture and camera are required`);\r\n }\r\n\r\n const sourceTextureDescription = this._frameGraph.textureManager.getTextureDescription(this.sourceTexture);\r\n\r\n this._ssao.sourceTexture = this.sourceTexture;\r\n this._ssao.sourceSamplingMode = this.sourceSamplingMode;\r\n this._ssao.camera = this.camera;\r\n this._ssao.depthTexture = this.depthTexture;\r\n this._ssao.normalTexture = this.normalTexture;\r\n\r\n const textureSize = {\r\n width: Math.floor(sourceTextureDescription.size.width * this.ratioSSAO) || 1,\r\n height: Math.floor(sourceTextureDescription.size.height * this.ratioSSAO) || 1,\r\n };\r\n const textureCreationOptions: FrameGraphTextureCreationOptions = {\r\n size: textureSize,\r\n options: {\r\n createMipMaps: false,\r\n types: [this.textureType],\r\n formats: [Constants.TEXTUREFORMAT_RGBA],\r\n samples: 1,\r\n useSRGBBuffers: [false],\r\n labels: [\"\"],\r\n },\r\n sizeIsPercentage: false,\r\n };\r\n\r\n const ssaoTextureHandle = this._frameGraph.textureManager.createRenderTargetTexture(this._ssao.name, textureCreationOptions);\r\n\r\n // SSAO main post process\r\n this._ssao.targetTexture = ssaoTextureHandle;\r\n this._ssao.record(true);\r\n\r\n // SSAO Blur X & Y\r\n textureSize.width = Math.floor(sourceTextureDescription.size.width * this.ratioBlur) || 1;\r\n textureSize.height = Math.floor(sourceTextureDescription.size.height * this.ratioBlur) || 1;\r\n\r\n const sourceTextureCreationOptions = this._frameGraph.textureManager.getTextureCreationOptions(this.sourceTexture);\r\n\r\n this._frameGraph.textureManager.resolveDanglingHandle(this.outputTexture, this.targetTexture, this.name + \" Output\", sourceTextureCreationOptions);\r\n\r\n const blurXTextureHandle = this._frameGraph.textureManager.createRenderTargetTexture(this._ssaoBlurX.name, textureCreationOptions);\r\n\r\n this._ssaoBlurX.sourceTexture = ssaoTextureHandle!;\r\n this._ssaoBlurX.depthTexture = this.depthTexture;\r\n this._ssaoBlurX.sourceSamplingMode = Constants.TEXTURE_BILINEAR_SAMPLINGMODE;\r\n this._ssaoBlurX.targetTexture = blurXTextureHandle;\r\n this._ssaoBlurX.record(true);\r\n\r\n const blurYTextureHandle = this._frameGraph.textureManager.createRenderTargetTexture(this._ssaoBlurY.name, textureCreationOptions);\r\n\r\n this._ssaoBlurY.sourceTexture = blurXTextureHandle;\r\n this._ssaoBlurY.depthTexture = this.depthTexture;\r\n this._ssaoBlurY.sourceSamplingMode = Constants.TEXTURE_BILINEAR_SAMPLINGMODE;\r\n this._ssaoBlurY.targetTexture = blurYTextureHandle;\r\n this._ssaoBlurY.record(true);\r\n\r\n // SSAO Combine\r\n this._ssaoCombine.sourceTexture = this.sourceTexture;\r\n this._ssaoCombine.sourceSamplingMode = this.sourceSamplingMode;\r\n this._ssaoCombine.targetTexture = this.outputTexture;\r\n const combinerPass = this._ssaoCombine.record(\r\n true,\r\n (context) => {\r\n context.setTextureSamplingMode(this.sourceTexture, this.sourceSamplingMode);\r\n context.setTextureSamplingMode(blurYTextureHandle, Constants.TEXTURE_BILINEAR_SAMPLINGMODE);\r\n },\r\n (context) => {\r\n context.bindTextureHandle(this._ssaoCombine.drawWrapper.effect!, \"textureSampler\", blurYTextureHandle);\r\n context.bindTextureHandle(this._ssaoCombine.drawWrapper.effect!, \"originalColor\", this.sourceTexture);\r\n }\r\n );\r\n\r\n combinerPass.addDependencies(blurYTextureHandle);\r\n\r\n const passDisabled = this._frameGraph.addRenderPass(this.name + \"_disabled\", true);\r\n\r\n passDisabled.addDependencies(this.sourceTexture);\r\n\r\n passDisabled.setRenderTarget(this.outputTexture);\r\n passDisabled.setExecuteFunc((context) => {\r\n context.copyTexture(this.sourceTexture);\r\n });\r\n }\r\n\r\n public override dispose(): void {\r\n this._ssao.dispose();\r\n this._ssaoBlurX.dispose();\r\n this._ssaoBlurY.dispose();\r\n this._ssaoCombine.dispose();\r\n this.ssao.dispose();\r\n super.dispose();\r\n }\r\n}\r\n"]}
|
|
@@ -11,5 +11,6 @@ export declare class FrameGraphSSAO2Task extends FrameGraphPostProcessTask {
|
|
|
11
11
|
readonly postProcess: ThinSSAO2PostProcess;
|
|
12
12
|
private _currentCameraMode;
|
|
13
13
|
constructor(name: string, frameGraph: FrameGraph, thinPostProcess?: ThinSSAO2PostProcess);
|
|
14
|
+
getClassName(): string;
|
|
14
15
|
record(skipCreationOfDisabledPasses?: boolean): FrameGraphRenderPass;
|
|
15
16
|
}
|
|
@@ -9,6 +9,9 @@ export class FrameGraphSSAO2Task extends FrameGraphPostProcessTask {
|
|
|
9
9
|
super(name, frameGraph, thinPostProcess || new ThinSSAO2PostProcess(name, frameGraph.scene));
|
|
10
10
|
this._currentCameraMode = -1;
|
|
11
11
|
}
|
|
12
|
+
getClassName() {
|
|
13
|
+
return "FrameGraphSSAO2Task";
|
|
14
|
+
}
|
|
12
15
|
record(skipCreationOfDisabledPasses = false) {
|
|
13
16
|
if (this.sourceTexture === undefined || this.depthTexture === undefined || this.normalTexture === undefined || this.camera === undefined) {
|
|
14
17
|
throw new Error(`FrameGraphSSAO2Task "${this.name}": sourceTexture, depthTexture, normalTexture and camera are required`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssao2Task.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/PostProcesses/ssao2Task.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,sCAA+B;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,uDAAgD;AAE/E;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,yBAAyB;IAW9D,YAAY,IAAY,EAAE,UAAsB,EAAE,eAAsC;QACpF,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,IAAI,IAAI,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QAHzF,uBAAkB,GAAG,CAAC,CAAC,CAAC;IAIhC,CAAC;IAEe,MAAM,CAAC,4BAA4B,GAAG,KAAK;QACvD,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACvI,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,CAAC,IAAI,uEAAuE,CAAC,CAAC;QAC9H,CAAC;QAED,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QAEhC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CACrB,4BAA4B,EAC5B,CAAC,OAAO,EAAE,EAAE;YACR,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAEtC,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC/C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC3C,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;YACpC,CAAC;YAED,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,6BAA6B,CAAC,CAAC;YAC3F,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,6BAA6B,CAAC,CAAC;QAChG,CAAC,EACD,CAAC,OAAO,EAAE,EAAE;YACR,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAO,EAAE,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACnG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAO,EAAE,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACzG,CAAC,CACJ,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAE1C,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAClD,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAEpD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ","sourcesContent":["import type { FrameGraph, FrameGraphRenderPass, Camera, FrameGraphTextureHandle } from \"core/index\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { FrameGraphPostProcessTask } from \"./postProcessTask\";\r\nimport { ThinSSAO2PostProcess } from \"core/PostProcesses/thinSSAO2PostProcess\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class FrameGraphSSAO2Task extends FrameGraphPostProcessTask {\r\n public depthTexture: FrameGraphTextureHandle;\r\n\r\n public normalTexture: FrameGraphTextureHandle;\r\n\r\n public camera: Camera;\r\n\r\n public override readonly postProcess: ThinSSAO2PostProcess;\r\n\r\n private _currentCameraMode = -1;\r\n\r\n constructor(name: string, frameGraph: FrameGraph, thinPostProcess?: ThinSSAO2PostProcess) {\r\n super(name, frameGraph, thinPostProcess || new ThinSSAO2PostProcess(name, frameGraph.scene));\r\n }\r\n\r\n public override record(skipCreationOfDisabledPasses = false): FrameGraphRenderPass {\r\n if (this.sourceTexture === undefined || this.depthTexture === undefined || this.normalTexture === undefined || this.camera === undefined) {\r\n throw new Error(`FrameGraphSSAO2Task \"${this.name}\": sourceTexture, depthTexture, normalTexture and camera are required`);\r\n }\r\n\r\n this._currentCameraMode = this.camera.mode;\r\n this.postProcess.updateEffect();\r\n\r\n const pass = super.record(\r\n skipCreationOfDisabledPasses,\r\n (context) => {\r\n this.postProcess.camera = this.camera;\r\n\r\n if (this._currentCameraMode !== this.camera.mode) {\r\n this._currentCameraMode = this.camera.mode;\r\n this.postProcess.updateEffect();\r\n }\r\n\r\n context.setTextureSamplingMode(this.depthTexture, Constants.TEXTURE_BILINEAR_SAMPLINGMODE);\r\n context.setTextureSamplingMode(this.normalTexture, Constants.TEXTURE_BILINEAR_SAMPLINGMODE);\r\n },\r\n (context) => {\r\n context.bindTextureHandle(this._postProcessDrawWrapper.effect!, \"depthSampler\", this.depthTexture);\r\n context.bindTextureHandle(this._postProcessDrawWrapper.effect!, \"normalSampler\", this.normalTexture);\r\n }\r\n );\r\n\r\n pass.addDependencies([this.depthTexture]);\r\n\r\n this.postProcess.textureWidth = this._sourceWidth;\r\n this.postProcess.textureHeight = this._sourceHeight;\r\n\r\n return pass;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ssao2Task.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/PostProcesses/ssao2Task.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,sCAA+B;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,uDAAgD;AAE/E;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,yBAAyB;IAW9D,YAAY,IAAY,EAAE,UAAsB,EAAE,eAAsC;QACpF,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,IAAI,IAAI,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QAHzF,uBAAkB,GAAG,CAAC,CAAC,CAAC;IAIhC,CAAC;IAEe,YAAY;QACxB,OAAO,qBAAqB,CAAC;IACjC,CAAC;IAEe,MAAM,CAAC,4BAA4B,GAAG,KAAK;QACvD,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACvI,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,CAAC,IAAI,uEAAuE,CAAC,CAAC;QAC9H,CAAC;QAED,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QAEhC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CACrB,4BAA4B,EAC5B,CAAC,OAAO,EAAE,EAAE;YACR,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAEtC,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC/C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC3C,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;YACpC,CAAC;YAED,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,6BAA6B,CAAC,CAAC;YAC3F,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,6BAA6B,CAAC,CAAC;QAChG,CAAC,EACD,CAAC,OAAO,EAAE,EAAE;YACR,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAO,EAAE,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACnG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAO,EAAE,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACzG,CAAC,CACJ,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAE1C,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAClD,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAEpD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ","sourcesContent":["import type { FrameGraph, FrameGraphRenderPass, Camera, FrameGraphTextureHandle } from \"core/index\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { FrameGraphPostProcessTask } from \"./postProcessTask\";\r\nimport { ThinSSAO2PostProcess } from \"core/PostProcesses/thinSSAO2PostProcess\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class FrameGraphSSAO2Task extends FrameGraphPostProcessTask {\r\n public depthTexture: FrameGraphTextureHandle;\r\n\r\n public normalTexture: FrameGraphTextureHandle;\r\n\r\n public camera: Camera;\r\n\r\n public override readonly postProcess: ThinSSAO2PostProcess;\r\n\r\n private _currentCameraMode = -1;\r\n\r\n constructor(name: string, frameGraph: FrameGraph, thinPostProcess?: ThinSSAO2PostProcess) {\r\n super(name, frameGraph, thinPostProcess || new ThinSSAO2PostProcess(name, frameGraph.scene));\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"FrameGraphSSAO2Task\";\r\n }\r\n\r\n public override record(skipCreationOfDisabledPasses = false): FrameGraphRenderPass {\r\n if (this.sourceTexture === undefined || this.depthTexture === undefined || this.normalTexture === undefined || this.camera === undefined) {\r\n throw new Error(`FrameGraphSSAO2Task \"${this.name}\": sourceTexture, depthTexture, normalTexture and camera are required`);\r\n }\r\n\r\n this._currentCameraMode = this.camera.mode;\r\n this.postProcess.updateEffect();\r\n\r\n const pass = super.record(\r\n skipCreationOfDisabledPasses,\r\n (context) => {\r\n this.postProcess.camera = this.camera;\r\n\r\n if (this._currentCameraMode !== this.camera.mode) {\r\n this._currentCameraMode = this.camera.mode;\r\n this.postProcess.updateEffect();\r\n }\r\n\r\n context.setTextureSamplingMode(this.depthTexture, Constants.TEXTURE_BILINEAR_SAMPLINGMODE);\r\n context.setTextureSamplingMode(this.normalTexture, Constants.TEXTURE_BILINEAR_SAMPLINGMODE);\r\n },\r\n (context) => {\r\n context.bindTextureHandle(this._postProcessDrawWrapper.effect!, \"depthSampler\", this.depthTexture);\r\n context.bindTextureHandle(this._postProcessDrawWrapper.effect!, \"normalSampler\", this.normalTexture);\r\n }\r\n );\r\n\r\n pass.addDependencies([this.depthTexture]);\r\n\r\n this.postProcess.textureWidth = this._sourceWidth;\r\n this.postProcess.textureHeight = this._sourceHeight;\r\n\r\n return pass;\r\n }\r\n}\r\n"]}
|
|
@@ -7,5 +7,6 @@ import { ThinSSRBlurPostProcess } from "../../../PostProcesses/thinSSRBlurPostPr
|
|
|
7
7
|
export declare class FrameGraphSSRBlurTask extends FrameGraphPostProcessTask {
|
|
8
8
|
readonly postProcess: ThinSSRBlurPostProcess;
|
|
9
9
|
constructor(name: string, frameGraph: FrameGraph, thinPostProcess?: ThinSSRBlurPostProcess);
|
|
10
|
+
getClassName(): string;
|
|
10
11
|
record(skipCreationOfDisabledPasses?: boolean, additionalExecute?: (context: FrameGraphRenderContext) => void, additionalBindings?: (context: FrameGraphRenderContext) => void): FrameGraphRenderPass;
|
|
11
12
|
}
|
|
@@ -8,6 +8,9 @@ export class FrameGraphSSRBlurTask extends FrameGraphPostProcessTask {
|
|
|
8
8
|
constructor(name, frameGraph, thinPostProcess) {
|
|
9
9
|
super(name, frameGraph, thinPostProcess || new ThinSSRBlurPostProcess(name, frameGraph.engine, new Vector2(1, 0), 0.03));
|
|
10
10
|
}
|
|
11
|
+
getClassName() {
|
|
12
|
+
return "FrameGraphSSRBlurTask";
|
|
13
|
+
}
|
|
11
14
|
record(skipCreationOfDisabledPasses = false, additionalExecute, additionalBindings) {
|
|
12
15
|
const pass = super.record(skipCreationOfDisabledPasses, additionalExecute, additionalBindings);
|
|
13
16
|
this.postProcess.textureWidth = this._sourceWidth;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssrBlurTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/PostProcesses/ssrBlurTask.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,yDAAkD;AACnF,OAAO,EAAE,OAAO,EAAE,sCAA+B;AAEjD;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,yBAAyB;IAGhE,YAAY,IAAY,EAAE,UAAsB,EAAE,eAAwC;QACtF,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,IAAI,IAAI,sBAAsB,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7H,CAAC;IAEe,MAAM,CAClB,4BAA4B,GAAG,KAAK,EACpC,iBAA8D,EAC9D,kBAA+D;QAE/D,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,4BAA4B,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;QAE/F,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAClD,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAEpD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ","sourcesContent":["import type { FrameGraph, FrameGraphRenderPass, FrameGraphRenderContext } from \"core/index\";\r\nimport { FrameGraphPostProcessTask } from \"./postProcessTask\";\r\nimport { ThinSSRBlurPostProcess } from \"core/PostProcesses/thinSSRBlurPostProcess\";\r\nimport { Vector2 } from \"core/Maths/math.vector\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class FrameGraphSSRBlurTask extends FrameGraphPostProcessTask {\r\n public override readonly postProcess: ThinSSRBlurPostProcess;\r\n\r\n constructor(name: string, frameGraph: FrameGraph, thinPostProcess?: ThinSSRBlurPostProcess) {\r\n super(name, frameGraph, thinPostProcess || new ThinSSRBlurPostProcess(name, frameGraph.engine, new Vector2(1, 0), 0.03));\r\n }\r\n\r\n public override record(\r\n skipCreationOfDisabledPasses = false,\r\n additionalExecute?: (context: FrameGraphRenderContext) => void,\r\n additionalBindings?: (context: FrameGraphRenderContext) => void\r\n ): FrameGraphRenderPass {\r\n const pass = super.record(skipCreationOfDisabledPasses, additionalExecute, additionalBindings);\r\n\r\n this.postProcess.textureWidth = this._sourceWidth;\r\n this.postProcess.textureHeight = this._sourceHeight;\r\n\r\n return pass;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ssrBlurTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/PostProcesses/ssrBlurTask.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,yDAAkD;AACnF,OAAO,EAAE,OAAO,EAAE,sCAA+B;AAEjD;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,yBAAyB;IAGhE,YAAY,IAAY,EAAE,UAAsB,EAAE,eAAwC;QACtF,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,IAAI,IAAI,sBAAsB,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7H,CAAC;IAEe,YAAY;QACxB,OAAO,uBAAuB,CAAC;IACnC,CAAC;IAEe,MAAM,CAClB,4BAA4B,GAAG,KAAK,EACpC,iBAA8D,EAC9D,kBAA+D;QAE/D,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,4BAA4B,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;QAE/F,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAClD,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAEpD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ","sourcesContent":["import type { FrameGraph, FrameGraphRenderPass, FrameGraphRenderContext } from \"core/index\";\r\nimport { FrameGraphPostProcessTask } from \"./postProcessTask\";\r\nimport { ThinSSRBlurPostProcess } from \"core/PostProcesses/thinSSRBlurPostProcess\";\r\nimport { Vector2 } from \"core/Maths/math.vector\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class FrameGraphSSRBlurTask extends FrameGraphPostProcessTask {\r\n public override readonly postProcess: ThinSSRBlurPostProcess;\r\n\r\n constructor(name: string, frameGraph: FrameGraph, thinPostProcess?: ThinSSRBlurPostProcess) {\r\n super(name, frameGraph, thinPostProcess || new ThinSSRBlurPostProcess(name, frameGraph.engine, new Vector2(1, 0), 0.03));\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"FrameGraphSSRBlurTask\";\r\n }\r\n\r\n public override record(\r\n skipCreationOfDisabledPasses = false,\r\n additionalExecute?: (context: FrameGraphRenderContext) => void,\r\n additionalBindings?: (context: FrameGraphRenderContext) => void\r\n ): FrameGraphRenderPass {\r\n const pass = super.record(skipCreationOfDisabledPasses, additionalExecute, additionalBindings);\r\n\r\n this.postProcess.textureWidth = this._sourceWidth;\r\n this.postProcess.textureHeight = this._sourceHeight;\r\n\r\n return pass;\r\n }\r\n}\r\n"]}
|
|
@@ -65,6 +65,9 @@ export class FrameGraphSSRRenderingPipelineTask extends FrameGraphTask {
|
|
|
65
65
|
isReady() {
|
|
66
66
|
return this.ssr.isReady();
|
|
67
67
|
}
|
|
68
|
+
getClassName() {
|
|
69
|
+
return "FrameGraphSSRRenderingPipelineTask";
|
|
70
|
+
}
|
|
68
71
|
record() {
|
|
69
72
|
if (this.sourceTexture === undefined ||
|
|
70
73
|
this.normalTexture === undefined ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssrRenderingPipelineTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/PostProcesses/ssrRenderingPipelineTask.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FrameGraph, FrameGraphTextureHandle, Camera, FrameGraphTextureCreationOptions } from \"core/index\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { FrameGraphTask } from \"../../frameGraphTask\";\r\nimport { ThinSSRRenderingPipeline } from \"core/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline\";\r\nimport { FrameGraphSSRTask } from \"./ssrTask\";\r\nimport { FrameGraphSSRBlurTask } from \"./ssrBlurTask\";\r\nimport { FrameGraphPostProcessTask } from \"./postProcessTask\";\r\n\r\n/**\r\n * Task which applies a SSR post process.\r\n */\r\nexport class FrameGraphSSRRenderingPipelineTask extends FrameGraphTask {\r\n /**\r\n * The source texture to apply the SSR effect on.\r\n */\r\n public sourceTexture: FrameGraphTextureHandle;\r\n\r\n /**\r\n * The sampling mode to use for the source texture.\r\n */\r\n public sourceSamplingMode = Constants.TEXTURE_BILINEAR_SAMPLINGMODE;\r\n\r\n /**\r\n * The normal texture used by the SSR effect.\r\n */\r\n public normalTexture: FrameGraphTextureHandle;\r\n\r\n /**\r\n * The depth texture used by the SSR effect.\r\n */\r\n public depthTexture: FrameGraphTextureHandle;\r\n\r\n /**\r\n * The back depth texture used by the SSR effect (optional).\r\n * This is used when automatic thickness computation is enabled.\r\n * The back depth texture is the depth texture of the scene rendered for the back side of the objects (that is, front faces are culled).\r\n */\r\n public backDepthTexture?: FrameGraphTextureHandle;\r\n\r\n /**\r\n * The reflectivity texture used by the SSR effect\r\n */\r\n public reflectivityTexture: FrameGraphTextureHandle;\r\n\r\n private _camera: Camera;\r\n\r\n /**\r\n * The camera used to render the scene.\r\n */\r\n public get camera() {\r\n return this._camera;\r\n }\r\n\r\n public set camera(camera: Camera) {\r\n if (camera === this._camera) {\r\n return;\r\n }\r\n\r\n this._camera = camera;\r\n\r\n this.ssr.camera = camera;\r\n }\r\n\r\n /**\r\n * The target texture to render the SSR effect to.\r\n */\r\n public targetTexture?: FrameGraphTextureHandle;\r\n\r\n /**\r\n * The output texture of the SSR effect.\r\n */\r\n public readonly outputTexture: FrameGraphTextureHandle;\r\n\r\n /**\r\n * The SSR Rendering pipeline.\r\n */\r\n public readonly ssr: ThinSSRRenderingPipeline;\r\n\r\n /**\r\n * The name of the task.\r\n */\r\n public override get name() {\r\n return this._name;\r\n }\r\n\r\n public override set name(name: string) {\r\n this._name = name;\r\n if (this._ssr) {\r\n this._ssr.name = `${name} SSR main`;\r\n }\r\n if (this._ssrBlurX) {\r\n this._ssrBlurX.name = `${name} SSR Blur X`;\r\n }\r\n if (this._ssrBlurY) {\r\n this._ssrBlurY.name = `${name} SSR Blur Y`;\r\n }\r\n if (this._ssrBlurCombiner) {\r\n this._ssrBlurCombiner.name = `${name} SSR Blur Combiner`;\r\n }\r\n }\r\n\r\n /**\r\n * The texture type used by the different post processes created by SSR.\r\n * It's a read-only property. If you want to change it, you must recreate the task and pass the appropriate texture type to the constructor.\r\n */\r\n public readonly textureType: number;\r\n\r\n private readonly _ssr: FrameGraphSSRTask;\r\n private readonly _ssrBlurX: FrameGraphSSRBlurTask;\r\n private readonly _ssrBlurY: FrameGraphSSRBlurTask;\r\n private readonly _ssrBlurCombiner: FrameGraphPostProcessTask;\r\n\r\n /**\r\n * Constructs a SSR rendering pipeline task.\r\n * @param name The name of the task.\r\n * @param frameGraph The frame graph this task belongs to.\r\n * @param textureType The texture type used by the different post processes created by SSR (default: Constants.TEXTURETYPE_UNSIGNED_BYTE)\r\n */\r\n constructor(name: string, frameGraph: FrameGraph, textureType = Constants.TEXTURETYPE_UNSIGNED_BYTE) {\r\n super(name, frameGraph);\r\n\r\n this.textureType = textureType;\r\n\r\n this.ssr = new ThinSSRRenderingPipeline(name, frameGraph.scene);\r\n\r\n this._ssr = new FrameGraphSSRTask(`${name} SSR main`, this._frameGraph, this.ssr._ssrPostProcess);\r\n this._ssrBlurX = new FrameGraphSSRBlurTask(`${name} SSR Blur X`, this._frameGraph, this.ssr._ssrBlurXPostProcess);\r\n this._ssrBlurY = new FrameGraphSSRBlurTask(`${name} SSR Blur Y`, this._frameGraph, this.ssr._ssrBlurYPostProcess);\r\n this._ssrBlurCombiner = new FrameGraphPostProcessTask(`${name} SSR Blur Combiner`, this._frameGraph, this.ssr._ssrBlurCombinerPostProcess);\r\n\r\n this.outputTexture = this._frameGraph.textureManager.createDanglingHandle();\r\n }\r\n\r\n public override isReady() {\r\n return this.ssr.isReady();\r\n }\r\n\r\n public record(): void {\r\n if (\r\n this.sourceTexture === undefined ||\r\n this.normalTexture === undefined ||\r\n this.depthTexture === undefined ||\r\n this.reflectivityTexture === undefined ||\r\n this.camera === undefined\r\n ) {\r\n throw new Error(`FrameGraphSSRRenderingPipelineTask \"${this.name}\": sourceTexture, normalTexture, depthTexture, reflectivityTexture and camera are required`);\r\n }\r\n\r\n const sourceTextureDescription = this._frameGraph.textureManager.getTextureDescription(this.sourceTexture);\r\n\r\n this._ssr.sourceTexture = this.sourceTexture;\r\n this._ssr.sourceSamplingMode = this.sourceSamplingMode;\r\n this._ssr.camera = this.camera;\r\n this._ssr.normalTexture = this.normalTexture;\r\n this._ssr.depthTexture = this.depthTexture;\r\n this._ssr.backDepthTexture = this.backDepthTexture;\r\n this._ssr.reflectivityTexture = this.reflectivityTexture;\r\n\r\n let ssrTextureHandle: FrameGraphTextureHandle | undefined;\r\n\r\n const textureSize = {\r\n width: Math.floor(sourceTextureDescription.size.width / (this.ssr.ssrDownsample + 1)) || 1,\r\n height: Math.floor(sourceTextureDescription.size.height / (this.ssr.ssrDownsample + 1)) || 1,\r\n };\r\n const textureCreationOptions: FrameGraphTextureCreationOptions = {\r\n size: textureSize,\r\n options: {\r\n createMipMaps: false,\r\n types: [this.textureType],\r\n formats: [Constants.TEXTUREFORMAT_RGBA],\r\n samples: 1,\r\n useSRGBBuffers: [false],\r\n labels: [\"\"],\r\n },\r\n sizeIsPercentage: false,\r\n };\r\n\r\n if (this.ssr.blurDispersionStrength > 0 || !this.targetTexture) {\r\n ssrTextureHandle = this._frameGraph.textureManager.createRenderTargetTexture(this._ssr.name, textureCreationOptions);\r\n }\r\n\r\n if (this.ssr.blurDispersionStrength === 0) {\r\n this._ssr.targetTexture = this.outputTexture;\r\n\r\n if (ssrTextureHandle !== undefined) {\r\n this._frameGraph.textureManager.resolveDanglingHandle(this.outputTexture, ssrTextureHandle);\r\n } else {\r\n this._frameGraph.textureManager.resolveDanglingHandle(this.outputTexture, this.targetTexture);\r\n }\r\n\r\n this._ssr.record(true);\r\n } else {\r\n this._ssr.targetTexture = ssrTextureHandle;\r\n this._ssr.record(true);\r\n\r\n textureSize.width = Math.floor(sourceTextureDescription.size.width / (this.ssr.blurDownsample + 1)) || 1;\r\n textureSize.height = Math.floor(sourceTextureDescription.size.height / (this.ssr.blurDownsample + 1)) || 1;\r\n\r\n const sourceTextureCreationOptions = this._frameGraph.textureManager.getTextureCreationOptions(this.sourceTexture);\r\n\r\n this._frameGraph.textureManager.resolveDanglingHandle(this.outputTexture, this.targetTexture, this.name + \" Output\", sourceTextureCreationOptions);\r\n\r\n const blurXTextureHandle = this._frameGraph.textureManager.createRenderTargetTexture(this._ssrBlurX.name, textureCreationOptions);\r\n\r\n this._ssrBlurX.sourceTexture = ssrTextureHandle!;\r\n this._ssrBlurX.sourceSamplingMode = Constants.TEXTURE_BILINEAR_SAMPLINGMODE;\r\n this._ssrBlurX.targetTexture = blurXTextureHandle;\r\n this._ssrBlurX.record(true);\r\n\r\n const blurYTextureHandle = this._frameGraph.textureManager.createRenderTargetTexture(this._ssrBlurY.name, textureCreationOptions);\r\n\r\n this._ssrBlurY.sourceTexture = blurXTextureHandle;\r\n this._ssrBlurY.sourceSamplingMode = Constants.TEXTURE_BILINEAR_SAMPLINGMODE;\r\n this._ssrBlurY.targetTexture = blurYTextureHandle;\r\n this._ssrBlurY.record(true);\r\n\r\n this._ssrBlurCombiner.sourceTexture = this.sourceTexture;\r\n this._ssrBlurCombiner.sourceSamplingMode = this.sourceSamplingMode;\r\n this._ssrBlurCombiner.targetTexture = this.outputTexture;\r\n const combinerPass = this._ssrBlurCombiner.record(true, undefined, (context) => {\r\n context.bindTextureHandle(this._ssrBlurCombiner.drawWrapper.effect!, \"mainSampler\", this.sourceTexture);\r\n context.bindTextureHandle(this._ssrBlurCombiner.drawWrapper.effect!, \"textureSampler\", blurYTextureHandle);\r\n context.bindTextureHandle(this._ssrBlurCombiner.drawWrapper.effect!, \"reflectivitySampler\", this.reflectivityTexture);\r\n if (this.ssr.useFresnel) {\r\n context.bindTextureHandle(this._ssrBlurCombiner.drawWrapper.effect!, \"normalSampler\", this.normalTexture);\r\n context.bindTextureHandle(this._ssrBlurCombiner.drawWrapper.effect!, \"depthSampler\", this.depthTexture);\r\n }\r\n });\r\n\r\n combinerPass.addDependencies(blurYTextureHandle);\r\n }\r\n\r\n const passDisabled = this._frameGraph.addRenderPass(this.name + \"_disabled\", true);\r\n\r\n passDisabled.addDependencies(this.sourceTexture);\r\n\r\n passDisabled.setRenderTarget(this.outputTexture);\r\n passDisabled.setExecuteFunc((context) => {\r\n context.copyTexture(this.sourceTexture);\r\n });\r\n }\r\n\r\n public override dispose(): void {\r\n this._ssr.dispose();\r\n this._ssrBlurX.dispose();\r\n this._ssrBlurY.dispose();\r\n this._ssrBlurCombiner.dispose();\r\n this.ssr.dispose();\r\n super.dispose();\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ssrRenderingPipelineTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/PostProcesses/ssrRenderingPipelineTask.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FrameGraph, FrameGraphTextureHandle, Camera, FrameGraphTextureCreationOptions } from \"core/index\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { FrameGraphTask } from \"../../frameGraphTask\";\r\nimport { ThinSSRRenderingPipeline } from \"core/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline\";\r\nimport { FrameGraphSSRTask } from \"./ssrTask\";\r\nimport { FrameGraphSSRBlurTask } from \"./ssrBlurTask\";\r\nimport { FrameGraphPostProcessTask } from \"./postProcessTask\";\r\n\r\n/**\r\n * Task which applies a SSR post process.\r\n */\r\nexport class FrameGraphSSRRenderingPipelineTask extends FrameGraphTask {\r\n /**\r\n * The source texture to apply the SSR effect on.\r\n */\r\n public sourceTexture: FrameGraphTextureHandle;\r\n\r\n /**\r\n * The sampling mode to use for the source texture.\r\n */\r\n public sourceSamplingMode = Constants.TEXTURE_BILINEAR_SAMPLINGMODE;\r\n\r\n /**\r\n * The normal texture used by the SSR effect.\r\n */\r\n public normalTexture: FrameGraphTextureHandle;\r\n\r\n /**\r\n * The depth texture used by the SSR effect.\r\n */\r\n public depthTexture: FrameGraphTextureHandle;\r\n\r\n /**\r\n * The back depth texture used by the SSR effect (optional).\r\n * This is used when automatic thickness computation is enabled.\r\n * The back depth texture is the depth texture of the scene rendered for the back side of the objects (that is, front faces are culled).\r\n */\r\n public backDepthTexture?: FrameGraphTextureHandle;\r\n\r\n /**\r\n * The reflectivity texture used by the SSR effect\r\n */\r\n public reflectivityTexture: FrameGraphTextureHandle;\r\n\r\n private _camera: Camera;\r\n\r\n /**\r\n * The camera used to render the scene.\r\n */\r\n public get camera() {\r\n return this._camera;\r\n }\r\n\r\n public set camera(camera: Camera) {\r\n if (camera === this._camera) {\r\n return;\r\n }\r\n\r\n this._camera = camera;\r\n\r\n this.ssr.camera = camera;\r\n }\r\n\r\n /**\r\n * The target texture to render the SSR effect to.\r\n */\r\n public targetTexture?: FrameGraphTextureHandle;\r\n\r\n /**\r\n * The output texture of the SSR effect.\r\n */\r\n public readonly outputTexture: FrameGraphTextureHandle;\r\n\r\n /**\r\n * The SSR Rendering pipeline.\r\n */\r\n public readonly ssr: ThinSSRRenderingPipeline;\r\n\r\n /**\r\n * The name of the task.\r\n */\r\n public override get name() {\r\n return this._name;\r\n }\r\n\r\n public override set name(name: string) {\r\n this._name = name;\r\n if (this._ssr) {\r\n this._ssr.name = `${name} SSR main`;\r\n }\r\n if (this._ssrBlurX) {\r\n this._ssrBlurX.name = `${name} SSR Blur X`;\r\n }\r\n if (this._ssrBlurY) {\r\n this._ssrBlurY.name = `${name} SSR Blur Y`;\r\n }\r\n if (this._ssrBlurCombiner) {\r\n this._ssrBlurCombiner.name = `${name} SSR Blur Combiner`;\r\n }\r\n }\r\n\r\n /**\r\n * The texture type used by the different post processes created by SSR.\r\n * It's a read-only property. If you want to change it, you must recreate the task and pass the appropriate texture type to the constructor.\r\n */\r\n public readonly textureType: number;\r\n\r\n private readonly _ssr: FrameGraphSSRTask;\r\n private readonly _ssrBlurX: FrameGraphSSRBlurTask;\r\n private readonly _ssrBlurY: FrameGraphSSRBlurTask;\r\n private readonly _ssrBlurCombiner: FrameGraphPostProcessTask;\r\n\r\n /**\r\n * Constructs a SSR rendering pipeline task.\r\n * @param name The name of the task.\r\n * @param frameGraph The frame graph this task belongs to.\r\n * @param textureType The texture type used by the different post processes created by SSR (default: Constants.TEXTURETYPE_UNSIGNED_BYTE)\r\n */\r\n constructor(name: string, frameGraph: FrameGraph, textureType = Constants.TEXTURETYPE_UNSIGNED_BYTE) {\r\n super(name, frameGraph);\r\n\r\n this.textureType = textureType;\r\n\r\n this.ssr = new ThinSSRRenderingPipeline(name, frameGraph.scene);\r\n\r\n this._ssr = new FrameGraphSSRTask(`${name} SSR main`, this._frameGraph, this.ssr._ssrPostProcess);\r\n this._ssrBlurX = new FrameGraphSSRBlurTask(`${name} SSR Blur X`, this._frameGraph, this.ssr._ssrBlurXPostProcess);\r\n this._ssrBlurY = new FrameGraphSSRBlurTask(`${name} SSR Blur Y`, this._frameGraph, this.ssr._ssrBlurYPostProcess);\r\n this._ssrBlurCombiner = new FrameGraphPostProcessTask(`${name} SSR Blur Combiner`, this._frameGraph, this.ssr._ssrBlurCombinerPostProcess);\r\n\r\n this.outputTexture = this._frameGraph.textureManager.createDanglingHandle();\r\n }\r\n\r\n public override isReady() {\r\n return this.ssr.isReady();\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"FrameGraphSSRRenderingPipelineTask\";\r\n }\r\n\r\n public record(): void {\r\n if (\r\n this.sourceTexture === undefined ||\r\n this.normalTexture === undefined ||\r\n this.depthTexture === undefined ||\r\n this.reflectivityTexture === undefined ||\r\n this.camera === undefined\r\n ) {\r\n throw new Error(`FrameGraphSSRRenderingPipelineTask \"${this.name}\": sourceTexture, normalTexture, depthTexture, reflectivityTexture and camera are required`);\r\n }\r\n\r\n const sourceTextureDescription = this._frameGraph.textureManager.getTextureDescription(this.sourceTexture);\r\n\r\n this._ssr.sourceTexture = this.sourceTexture;\r\n this._ssr.sourceSamplingMode = this.sourceSamplingMode;\r\n this._ssr.camera = this.camera;\r\n this._ssr.normalTexture = this.normalTexture;\r\n this._ssr.depthTexture = this.depthTexture;\r\n this._ssr.backDepthTexture = this.backDepthTexture;\r\n this._ssr.reflectivityTexture = this.reflectivityTexture;\r\n\r\n let ssrTextureHandle: FrameGraphTextureHandle | undefined;\r\n\r\n const textureSize = {\r\n width: Math.floor(sourceTextureDescription.size.width / (this.ssr.ssrDownsample + 1)) || 1,\r\n height: Math.floor(sourceTextureDescription.size.height / (this.ssr.ssrDownsample + 1)) || 1,\r\n };\r\n const textureCreationOptions: FrameGraphTextureCreationOptions = {\r\n size: textureSize,\r\n options: {\r\n createMipMaps: false,\r\n types: [this.textureType],\r\n formats: [Constants.TEXTUREFORMAT_RGBA],\r\n samples: 1,\r\n useSRGBBuffers: [false],\r\n labels: [\"\"],\r\n },\r\n sizeIsPercentage: false,\r\n };\r\n\r\n if (this.ssr.blurDispersionStrength > 0 || !this.targetTexture) {\r\n ssrTextureHandle = this._frameGraph.textureManager.createRenderTargetTexture(this._ssr.name, textureCreationOptions);\r\n }\r\n\r\n if (this.ssr.blurDispersionStrength === 0) {\r\n this._ssr.targetTexture = this.outputTexture;\r\n\r\n if (ssrTextureHandle !== undefined) {\r\n this._frameGraph.textureManager.resolveDanglingHandle(this.outputTexture, ssrTextureHandle);\r\n } else {\r\n this._frameGraph.textureManager.resolveDanglingHandle(this.outputTexture, this.targetTexture);\r\n }\r\n\r\n this._ssr.record(true);\r\n } else {\r\n this._ssr.targetTexture = ssrTextureHandle;\r\n this._ssr.record(true);\r\n\r\n textureSize.width = Math.floor(sourceTextureDescription.size.width / (this.ssr.blurDownsample + 1)) || 1;\r\n textureSize.height = Math.floor(sourceTextureDescription.size.height / (this.ssr.blurDownsample + 1)) || 1;\r\n\r\n const sourceTextureCreationOptions = this._frameGraph.textureManager.getTextureCreationOptions(this.sourceTexture);\r\n\r\n this._frameGraph.textureManager.resolveDanglingHandle(this.outputTexture, this.targetTexture, this.name + \" Output\", sourceTextureCreationOptions);\r\n\r\n const blurXTextureHandle = this._frameGraph.textureManager.createRenderTargetTexture(this._ssrBlurX.name, textureCreationOptions);\r\n\r\n this._ssrBlurX.sourceTexture = ssrTextureHandle!;\r\n this._ssrBlurX.sourceSamplingMode = Constants.TEXTURE_BILINEAR_SAMPLINGMODE;\r\n this._ssrBlurX.targetTexture = blurXTextureHandle;\r\n this._ssrBlurX.record(true);\r\n\r\n const blurYTextureHandle = this._frameGraph.textureManager.createRenderTargetTexture(this._ssrBlurY.name, textureCreationOptions);\r\n\r\n this._ssrBlurY.sourceTexture = blurXTextureHandle;\r\n this._ssrBlurY.sourceSamplingMode = Constants.TEXTURE_BILINEAR_SAMPLINGMODE;\r\n this._ssrBlurY.targetTexture = blurYTextureHandle;\r\n this._ssrBlurY.record(true);\r\n\r\n this._ssrBlurCombiner.sourceTexture = this.sourceTexture;\r\n this._ssrBlurCombiner.sourceSamplingMode = this.sourceSamplingMode;\r\n this._ssrBlurCombiner.targetTexture = this.outputTexture;\r\n const combinerPass = this._ssrBlurCombiner.record(true, undefined, (context) => {\r\n context.bindTextureHandle(this._ssrBlurCombiner.drawWrapper.effect!, \"mainSampler\", this.sourceTexture);\r\n context.bindTextureHandle(this._ssrBlurCombiner.drawWrapper.effect!, \"textureSampler\", blurYTextureHandle);\r\n context.bindTextureHandle(this._ssrBlurCombiner.drawWrapper.effect!, \"reflectivitySampler\", this.reflectivityTexture);\r\n if (this.ssr.useFresnel) {\r\n context.bindTextureHandle(this._ssrBlurCombiner.drawWrapper.effect!, \"normalSampler\", this.normalTexture);\r\n context.bindTextureHandle(this._ssrBlurCombiner.drawWrapper.effect!, \"depthSampler\", this.depthTexture);\r\n }\r\n });\r\n\r\n combinerPass.addDependencies(blurYTextureHandle);\r\n }\r\n\r\n const passDisabled = this._frameGraph.addRenderPass(this.name + \"_disabled\", true);\r\n\r\n passDisabled.addDependencies(this.sourceTexture);\r\n\r\n passDisabled.setRenderTarget(this.outputTexture);\r\n passDisabled.setExecuteFunc((context) => {\r\n context.copyTexture(this.sourceTexture);\r\n });\r\n }\r\n\r\n public override dispose(): void {\r\n this._ssr.dispose();\r\n this._ssrBlurX.dispose();\r\n this._ssrBlurY.dispose();\r\n this._ssrBlurCombiner.dispose();\r\n this.ssr.dispose();\r\n super.dispose();\r\n }\r\n}\r\n"]}
|
|
@@ -12,5 +12,6 @@ export declare class FrameGraphSSRTask extends FrameGraphPostProcessTask {
|
|
|
12
12
|
camera: Camera;
|
|
13
13
|
readonly postProcess: ThinSSRPostProcess;
|
|
14
14
|
constructor(name: string, frameGraph: FrameGraph, thinPostProcess?: ThinSSRPostProcess);
|
|
15
|
+
getClassName(): string;
|
|
15
16
|
record(skipCreationOfDisabledPasses?: boolean): FrameGraphRenderPass;
|
|
16
17
|
}
|
|
@@ -8,6 +8,9 @@ export class FrameGraphSSRTask extends FrameGraphPostProcessTask {
|
|
|
8
8
|
constructor(name, frameGraph, thinPostProcess) {
|
|
9
9
|
super(name, frameGraph, thinPostProcess || new ThinSSRPostProcess(name, frameGraph.scene));
|
|
10
10
|
}
|
|
11
|
+
getClassName() {
|
|
12
|
+
return "FrameGraphSSRTask";
|
|
13
|
+
}
|
|
11
14
|
record(skipCreationOfDisabledPasses = false) {
|
|
12
15
|
if (this.sourceTexture === undefined ||
|
|
13
16
|
this.normalTexture === undefined ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssrTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/PostProcesses/ssrTask.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,sCAA+B;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,qDAA8C;AAE3E;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,yBAAyB;IAa5D,YAAY,IAAY,EAAE,UAAsB,EAAE,eAAoC;QAClF,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,IAAI,IAAI,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/F,CAAC;IAEe,MAAM,CAAC,4BAA4B,GAAG,KAAK;QACvD,IACI,IAAI,CAAC,aAAa,KAAK,SAAS;YAChC,IAAI,CAAC,aAAa,KAAK,SAAS;YAChC,IAAI,CAAC,YAAY,KAAK,SAAS;YAC/B,IAAI,CAAC,mBAAmB,KAAK,SAAS;YACtC,IAAI,CAAC,MAAM,KAAK,SAAS,EAC3B,CAAC;YACC,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,CAAC,IAAI,4FAA4F,CAAC,CAAC;QACjJ,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CACrB,4BAA4B,EAC5B,CAAC,OAAO,EAAE,EAAE;YACR,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAEtC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,6BAA6B,CAAC,CAAC;YAC5F,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,6BAA6B,CAAC,CAAC;YAC3F,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,6BAA6B,CAAC,CAAC;YAClG,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,4BAA4B,CAAC,CAAC;YAClG,CAAC;QACL,CAAC,EACD,CAAC,OAAO,EAAE,EAAE;YACR,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAO,EAAE,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACrG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAO,EAAE,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACnG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACjH,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAO,EAAE,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC/G,CAAC;YACD,IAAI,IAAI,CAAC,WAAW,CAAC,mCAAmC,EAAE,CAAC;gBACvD,IAAI,CAAC,uBAAuB,CAAC,MAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;YACvE,CAAC;QACL,CAAC,CACJ,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAExF,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAClD,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAEpD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ","sourcesContent":["import type { FrameGraph, FrameGraphRenderPass, Camera, FrameGraphTextureHandle } from \"core/index\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { FrameGraphPostProcessTask } from \"./postProcessTask\";\r\nimport { ThinSSRPostProcess } from \"core/PostProcesses/thinSSRPostProcess\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class FrameGraphSSRTask extends FrameGraphPostProcessTask {\r\n public normalTexture: FrameGraphTextureHandle;\r\n\r\n public depthTexture: FrameGraphTextureHandle;\r\n\r\n public reflectivityTexture: FrameGraphTextureHandle;\r\n\r\n public backDepthTexture?: FrameGraphTextureHandle;\r\n\r\n public camera: Camera;\r\n\r\n public override readonly postProcess: ThinSSRPostProcess;\r\n\r\n constructor(name: string, frameGraph: FrameGraph, thinPostProcess?: ThinSSRPostProcess) {\r\n super(name, frameGraph, thinPostProcess || new ThinSSRPostProcess(name, frameGraph.scene));\r\n }\r\n\r\n public override record(skipCreationOfDisabledPasses = false): FrameGraphRenderPass {\r\n if (\r\n this.sourceTexture === undefined ||\r\n this.normalTexture === undefined ||\r\n this.depthTexture === undefined ||\r\n this.reflectivityTexture === undefined ||\r\n this.camera === undefined\r\n ) {\r\n throw new Error(`FrameGraphSSRTask \"${this.name}\": sourceTexture, normalTexture, depthTexture, reflectivityTexture and camera are required`);\r\n }\r\n\r\n const pass = super.record(\r\n skipCreationOfDisabledPasses,\r\n (context) => {\r\n this.postProcess.camera = this.camera;\r\n\r\n context.setTextureSamplingMode(this.normalTexture, Constants.TEXTURE_BILINEAR_SAMPLINGMODE);\r\n context.setTextureSamplingMode(this.depthTexture, Constants.TEXTURE_BILINEAR_SAMPLINGMODE);\r\n context.setTextureSamplingMode(this.reflectivityTexture, Constants.TEXTURE_BILINEAR_SAMPLINGMODE);\r\n if (this.backDepthTexture) {\r\n context.setTextureSamplingMode(this.backDepthTexture, Constants.TEXTURE_NEAREST_SAMPLINGMODE);\r\n }\r\n },\r\n (context) => {\r\n context.bindTextureHandle(this._postProcessDrawWrapper.effect!, \"normalSampler\", this.normalTexture);\r\n context.bindTextureHandle(this._postProcessDrawWrapper.effect!, \"depthSampler\", this.depthTexture);\r\n context.bindTextureHandle(this._postProcessDrawWrapper.effect!, \"reflectivitySampler\", this.reflectivityTexture);\r\n if (this.backDepthTexture) {\r\n context.bindTextureHandle(this._postProcessDrawWrapper.effect!, \"backDepthSampler\", this.backDepthTexture);\r\n }\r\n if (this.postProcess.enableAutomaticThicknessComputation) {\r\n this._postProcessDrawWrapper.effect!.setFloat(\"backSizeFactor\", 1);\r\n }\r\n }\r\n );\r\n\r\n pass.addDependencies([this.normalTexture, this.depthTexture, this.reflectivityTexture]);\r\n\r\n this.postProcess.textureWidth = this._sourceWidth;\r\n this.postProcess.textureHeight = this._sourceHeight;\r\n\r\n return pass;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ssrTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/PostProcesses/ssrTask.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,sCAA+B;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,qDAA8C;AAE3E;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,yBAAyB;IAa5D,YAAY,IAAY,EAAE,UAAsB,EAAE,eAAoC;QAClF,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,IAAI,IAAI,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/F,CAAC;IAEe,YAAY;QACxB,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAEe,MAAM,CAAC,4BAA4B,GAAG,KAAK;QACvD,IACI,IAAI,CAAC,aAAa,KAAK,SAAS;YAChC,IAAI,CAAC,aAAa,KAAK,SAAS;YAChC,IAAI,CAAC,YAAY,KAAK,SAAS;YAC/B,IAAI,CAAC,mBAAmB,KAAK,SAAS;YACtC,IAAI,CAAC,MAAM,KAAK,SAAS,EAC3B,CAAC;YACC,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,CAAC,IAAI,4FAA4F,CAAC,CAAC;QACjJ,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CACrB,4BAA4B,EAC5B,CAAC,OAAO,EAAE,EAAE;YACR,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAEtC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,6BAA6B,CAAC,CAAC;YAC5F,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,6BAA6B,CAAC,CAAC;YAC3F,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,6BAA6B,CAAC,CAAC;YAClG,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,4BAA4B,CAAC,CAAC;YAClG,CAAC;QACL,CAAC,EACD,CAAC,OAAO,EAAE,EAAE;YACR,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAO,EAAE,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACrG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAO,EAAE,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACnG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACjH,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAO,EAAE,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC/G,CAAC;YACD,IAAI,IAAI,CAAC,WAAW,CAAC,mCAAmC,EAAE,CAAC;gBACvD,IAAI,CAAC,uBAAuB,CAAC,MAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;YACvE,CAAC;QACL,CAAC,CACJ,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAExF,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAClD,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAEpD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ","sourcesContent":["import type { FrameGraph, FrameGraphRenderPass, Camera, FrameGraphTextureHandle } from \"core/index\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { FrameGraphPostProcessTask } from \"./postProcessTask\";\r\nimport { ThinSSRPostProcess } from \"core/PostProcesses/thinSSRPostProcess\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class FrameGraphSSRTask extends FrameGraphPostProcessTask {\r\n public normalTexture: FrameGraphTextureHandle;\r\n\r\n public depthTexture: FrameGraphTextureHandle;\r\n\r\n public reflectivityTexture: FrameGraphTextureHandle;\r\n\r\n public backDepthTexture?: FrameGraphTextureHandle;\r\n\r\n public camera: Camera;\r\n\r\n public override readonly postProcess: ThinSSRPostProcess;\r\n\r\n constructor(name: string, frameGraph: FrameGraph, thinPostProcess?: ThinSSRPostProcess) {\r\n super(name, frameGraph, thinPostProcess || new ThinSSRPostProcess(name, frameGraph.scene));\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"FrameGraphSSRTask\";\r\n }\r\n\r\n public override record(skipCreationOfDisabledPasses = false): FrameGraphRenderPass {\r\n if (\r\n this.sourceTexture === undefined ||\r\n this.normalTexture === undefined ||\r\n this.depthTexture === undefined ||\r\n this.reflectivityTexture === undefined ||\r\n this.camera === undefined\r\n ) {\r\n throw new Error(`FrameGraphSSRTask \"${this.name}\": sourceTexture, normalTexture, depthTexture, reflectivityTexture and camera are required`);\r\n }\r\n\r\n const pass = super.record(\r\n skipCreationOfDisabledPasses,\r\n (context) => {\r\n this.postProcess.camera = this.camera;\r\n\r\n context.setTextureSamplingMode(this.normalTexture, Constants.TEXTURE_BILINEAR_SAMPLINGMODE);\r\n context.setTextureSamplingMode(this.depthTexture, Constants.TEXTURE_BILINEAR_SAMPLINGMODE);\r\n context.setTextureSamplingMode(this.reflectivityTexture, Constants.TEXTURE_BILINEAR_SAMPLINGMODE);\r\n if (this.backDepthTexture) {\r\n context.setTextureSamplingMode(this.backDepthTexture, Constants.TEXTURE_NEAREST_SAMPLINGMODE);\r\n }\r\n },\r\n (context) => {\r\n context.bindTextureHandle(this._postProcessDrawWrapper.effect!, \"normalSampler\", this.normalTexture);\r\n context.bindTextureHandle(this._postProcessDrawWrapper.effect!, \"depthSampler\", this.depthTexture);\r\n context.bindTextureHandle(this._postProcessDrawWrapper.effect!, \"reflectivitySampler\", this.reflectivityTexture);\r\n if (this.backDepthTexture) {\r\n context.bindTextureHandle(this._postProcessDrawWrapper.effect!, \"backDepthSampler\", this.backDepthTexture);\r\n }\r\n if (this.postProcess.enableAutomaticThicknessComputation) {\r\n this._postProcessDrawWrapper.effect!.setFloat(\"backSizeFactor\", 1);\r\n }\r\n }\r\n );\r\n\r\n pass.addDependencies([this.normalTexture, this.depthTexture, this.reflectivityTexture]);\r\n\r\n this.postProcess.textureWidth = this._sourceWidth;\r\n this.postProcess.textureHeight = this._sourceHeight;\r\n\r\n return pass;\r\n }\r\n}\r\n"]}
|
|
@@ -24,6 +24,7 @@ export declare class FrameGraphTAATask extends FrameGraphPostProcessTask {
|
|
|
24
24
|
* @param thinPostProcess The thin post process to use for the Temporal Anti-Aliasing effect. If not provided, a new one will be created.
|
|
25
25
|
*/
|
|
26
26
|
constructor(name: string, frameGraph: FrameGraph, thinPostProcess?: ThinTAAPostProcess);
|
|
27
|
+
getClassName(): string;
|
|
27
28
|
record(): FrameGraphRenderPass;
|
|
28
29
|
dispose(): void;
|
|
29
30
|
}
|
|
@@ -14,6 +14,9 @@ export class FrameGraphTAATask extends FrameGraphPostProcessTask {
|
|
|
14
14
|
constructor(name, frameGraph, thinPostProcess) {
|
|
15
15
|
super(name, frameGraph, thinPostProcess || new ThinTAAPostProcess(name, frameGraph.scene));
|
|
16
16
|
}
|
|
17
|
+
getClassName() {
|
|
18
|
+
return "FrameGraphTAATask";
|
|
19
|
+
}
|
|
17
20
|
record() {
|
|
18
21
|
if (this.sourceTexture === undefined || this.objectRendererTask === undefined) {
|
|
19
22
|
throw new Error(`FrameGraphPostProcessTask "${this.name}": sourceTexture and objectRendererTask are required`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taaTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/PostProcesses/taaTask.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\r\n FrameGraph,\r\n FrameGraphRenderPass,\r\n FrameGraphObjectRendererTask,\r\n FrameGraphTextureCreationOptions,\r\n Observer,\r\n ObjectRenderer,\r\n FrameGraphTextureHandle,\r\n Scene,\r\n} from \"core/index\";\r\nimport { ThinTAAPostProcess } from \"core/PostProcesses/thinTAAPostProcess\";\r\nimport { FrameGraphPostProcessTask } from \"./postProcessTask\";\r\nimport { Constants } from \"core/Engines/constants\";\r\n\r\n/**\r\n * Task which applies a Temporal Anti-Aliasing post process.\r\n */\r\nexport class FrameGraphTAATask extends FrameGraphPostProcessTask {\r\n public override readonly postProcess: ThinTAAPostProcess;\r\n\r\n /**\r\n * The object renderer task used to render the scene objects.\r\n */\r\n public objectRendererTask: FrameGraphObjectRendererTask;\r\n\r\n /**\r\n * The handle to the velocity texture. Only needed if postProcess.reprojectHistory is enabled.\r\n * Note that you must use the linear velocity texture!\r\n */\r\n public velocityTexture?: FrameGraphTextureHandle;\r\n\r\n protected _onBeforeRenderSceneObserver: Observer<Scene>;\r\n protected _initRenderingObserver: Observer<ObjectRenderer>;\r\n\r\n /**\r\n * Constructs a new Temporal Anti-Aliasing task.\r\n * @param name The name of the task.\r\n * @param frameGraph The frame graph this task is associated with.\r\n * @param thinPostProcess The thin post process to use for the Temporal Anti-Aliasing effect. If not provided, a new one will be created.\r\n */\r\n constructor(name: string, frameGraph: FrameGraph, thinPostProcess?: ThinTAAPostProcess) {\r\n super(name, frameGraph, thinPostProcess || new ThinTAAPostProcess(name, frameGraph.scene));\r\n }\r\n\r\n public override record(): FrameGraphRenderPass {\r\n if (this.sourceTexture === undefined || this.objectRendererTask === undefined) {\r\n throw new Error(`FrameGraphPostProcessTask \"${this.name}\": sourceTexture and objectRendererTask are required`);\r\n }\r\n\r\n this._frameGraph.scene.onBeforeRenderObservable.remove(this._onBeforeRenderSceneObserver);\r\n this._onBeforeRenderSceneObserver = this._frameGraph.scene.onBeforeRenderObservable.add(() => {\r\n if (this.postProcess.reprojectHistory && !this.disabled) {\r\n this.postProcess._updateJitter();\r\n }\r\n });\r\n\r\n const objectRenderer = this.objectRendererTask.objectRenderer;\r\n\r\n objectRenderer.onInitRenderingObservable.remove(this._initRenderingObserver);\r\n this._initRenderingObserver = objectRenderer.onInitRenderingObservable.add(() => {\r\n if (!this.postProcess.reprojectHistory && !this.disabled) {\r\n this.postProcess._updateJitter();\r\n\r\n // We pass false to this.camera.getProjectionMatrix() when TAA is enabled to avoid overwriting the projection matrix calculated by the call to this.postProcess.updateJitter()\r\n const camera = objectRenderer.activeCamera!;\r\n this._frameGraph.scene.setTransformMatrix(camera.getViewMatrix(), camera.getProjectionMatrix(this.postProcess.disabled));\r\n }\r\n });\r\n\r\n const textureManager = this._frameGraph.textureManager;\r\n const sourceSize = textureManager.getTextureAbsoluteDimensions(this.sourceTexture);\r\n\r\n this._sourceWidth = this._outputWidth = sourceSize.width;\r\n this._sourceHeight = this._outputHeight = sourceSize.height;\r\n\r\n const renderTextureSize = textureManager.getTextureAbsoluteDimensions(this.objectRendererTask.outputTexture);\r\n\r\n this.postProcess.textureWidth = renderTextureSize.width;\r\n this.postProcess.textureHeight = renderTextureSize.height;\r\n\r\n const pingPongTextureCreationOptions: FrameGraphTextureCreationOptions = {\r\n size: sourceSize,\r\n options: {\r\n createMipMaps: false,\r\n types: [Constants.TEXTURETYPE_HALF_FLOAT],\r\n formats: [Constants.TEXTUREFORMAT_RGBA],\r\n samples: 1,\r\n useSRGBBuffers: [false],\r\n creationFlags: [0],\r\n labels: [\"\"],\r\n },\r\n sizeIsPercentage: false,\r\n isHistoryTexture: true,\r\n };\r\n\r\n const pingPongHandle = textureManager.createRenderTargetTexture(`${this.name} history`, pingPongTextureCreationOptions);\r\n\r\n textureManager.resolveDanglingHandle(this.outputTexture, pingPongHandle);\r\n\r\n const pass = this._frameGraph.addRenderPass(this.name);\r\n\r\n pass.depthReadOnly = this.depthReadOnly;\r\n pass.stencilReadOnly = this.stencilReadOnly;\r\n\r\n pass.addDependencies(this.sourceTexture);\r\n\r\n pass.setRenderTarget(this.outputTexture);\r\n pass.setRenderTargetDepth(this.depthAttachmentTexture);\r\n pass.setExecuteFunc((context) => {\r\n objectRenderer.dontSetTransformationMatrix = !this.postProcess.reprojectHistory;\r\n this.postProcess.camera = objectRenderer.activeCamera;\r\n\r\n if (this.sourceTexture !== undefined) {\r\n context.setTextureSamplingMode(this.sourceTexture, this.sourceSamplingMode);\r\n }\r\n if (this.velocityTexture !== undefined) {\r\n context.setTextureSamplingMode(this.velocityTexture, Constants.TEXTURE_BILINEAR_SAMPLINGMODE);\r\n }\r\n\r\n context.setTextureSamplingMode(pingPongHandle, Constants.TEXTURE_BILINEAR_SAMPLINGMODE);\r\n\r\n context.applyFullScreenEffect(\r\n this._postProcessDrawWrapper,\r\n () => {\r\n context.bindTextureHandle(this._postProcessDrawWrapper.effect!, \"textureSampler\", this.sourceTexture!);\r\n context.bindTextureHandle(this._postProcessDrawWrapper.effect!, \"historySampler\", pingPongHandle);\r\n if (this.postProcess.reprojectHistory && this.velocityTexture !== undefined) {\r\n context.bindTextureHandle(this._postProcessDrawWrapper.effect!, \"velocitySampler\", this.velocityTexture);\r\n }\r\n this.postProcess.bind();\r\n },\r\n this.stencilState,\r\n this.disableColorWrite,\r\n this.drawBackFace,\r\n this.depthTest\r\n );\r\n });\r\n\r\n const passDisabled = this._frameGraph.addRenderPass(this.name + \"_disabled\", true);\r\n\r\n passDisabled.depthReadOnly = this.depthReadOnly;\r\n passDisabled.stencilReadOnly = this.stencilReadOnly;\r\n\r\n passDisabled.addDependencies(this.sourceTexture);\r\n\r\n passDisabled.setRenderTarget(this.outputTexture);\r\n passDisabled.setRenderTargetDepth(this.depthAttachmentTexture);\r\n passDisabled.setExecuteFunc((context) => {\r\n context.copyTexture(this.sourceTexture!);\r\n });\r\n\r\n return pass;\r\n }\r\n\r\n public override dispose() {\r\n this.objectRendererTask?.objectRenderer.onInitRenderingObservable.remove(this._initRenderingObserver);\r\n this._frameGraph.scene.onBeforeRenderObservable.remove(this._onBeforeRenderSceneObserver);\r\n super.dispose();\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"taaTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/PostProcesses/taaTask.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\r\n FrameGraph,\r\n FrameGraphRenderPass,\r\n FrameGraphObjectRendererTask,\r\n FrameGraphTextureCreationOptions,\r\n Observer,\r\n ObjectRenderer,\r\n FrameGraphTextureHandle,\r\n Scene,\r\n} from \"core/index\";\r\nimport { ThinTAAPostProcess } from \"core/PostProcesses/thinTAAPostProcess\";\r\nimport { FrameGraphPostProcessTask } from \"./postProcessTask\";\r\nimport { Constants } from \"core/Engines/constants\";\r\n\r\n/**\r\n * Task which applies a Temporal Anti-Aliasing post process.\r\n */\r\nexport class FrameGraphTAATask extends FrameGraphPostProcessTask {\r\n public override readonly postProcess: ThinTAAPostProcess;\r\n\r\n /**\r\n * The object renderer task used to render the scene objects.\r\n */\r\n public objectRendererTask: FrameGraphObjectRendererTask;\r\n\r\n /**\r\n * The handle to the velocity texture. Only needed if postProcess.reprojectHistory is enabled.\r\n * Note that you must use the linear velocity texture!\r\n */\r\n public velocityTexture?: FrameGraphTextureHandle;\r\n\r\n protected _onBeforeRenderSceneObserver: Observer<Scene>;\r\n protected _initRenderingObserver: Observer<ObjectRenderer>;\r\n\r\n /**\r\n * Constructs a new Temporal Anti-Aliasing task.\r\n * @param name The name of the task.\r\n * @param frameGraph The frame graph this task is associated with.\r\n * @param thinPostProcess The thin post process to use for the Temporal Anti-Aliasing effect. If not provided, a new one will be created.\r\n */\r\n constructor(name: string, frameGraph: FrameGraph, thinPostProcess?: ThinTAAPostProcess) {\r\n super(name, frameGraph, thinPostProcess || new ThinTAAPostProcess(name, frameGraph.scene));\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"FrameGraphTAATask\";\r\n }\r\n\r\n public override record(): FrameGraphRenderPass {\r\n if (this.sourceTexture === undefined || this.objectRendererTask === undefined) {\r\n throw new Error(`FrameGraphPostProcessTask \"${this.name}\": sourceTexture and objectRendererTask are required`);\r\n }\r\n\r\n this._frameGraph.scene.onBeforeRenderObservable.remove(this._onBeforeRenderSceneObserver);\r\n this._onBeforeRenderSceneObserver = this._frameGraph.scene.onBeforeRenderObservable.add(() => {\r\n if (this.postProcess.reprojectHistory && !this.disabled) {\r\n this.postProcess._updateJitter();\r\n }\r\n });\r\n\r\n const objectRenderer = this.objectRendererTask.objectRenderer;\r\n\r\n objectRenderer.onInitRenderingObservable.remove(this._initRenderingObserver);\r\n this._initRenderingObserver = objectRenderer.onInitRenderingObservable.add(() => {\r\n if (!this.postProcess.reprojectHistory && !this.disabled) {\r\n this.postProcess._updateJitter();\r\n\r\n // We pass false to this.camera.getProjectionMatrix() when TAA is enabled to avoid overwriting the projection matrix calculated by the call to this.postProcess.updateJitter()\r\n const camera = objectRenderer.activeCamera!;\r\n this._frameGraph.scene.setTransformMatrix(camera.getViewMatrix(), camera.getProjectionMatrix(this.postProcess.disabled));\r\n }\r\n });\r\n\r\n const textureManager = this._frameGraph.textureManager;\r\n const sourceSize = textureManager.getTextureAbsoluteDimensions(this.sourceTexture);\r\n\r\n this._sourceWidth = this._outputWidth = sourceSize.width;\r\n this._sourceHeight = this._outputHeight = sourceSize.height;\r\n\r\n const renderTextureSize = textureManager.getTextureAbsoluteDimensions(this.objectRendererTask.outputTexture);\r\n\r\n this.postProcess.textureWidth = renderTextureSize.width;\r\n this.postProcess.textureHeight = renderTextureSize.height;\r\n\r\n const pingPongTextureCreationOptions: FrameGraphTextureCreationOptions = {\r\n size: sourceSize,\r\n options: {\r\n createMipMaps: false,\r\n types: [Constants.TEXTURETYPE_HALF_FLOAT],\r\n formats: [Constants.TEXTUREFORMAT_RGBA],\r\n samples: 1,\r\n useSRGBBuffers: [false],\r\n creationFlags: [0],\r\n labels: [\"\"],\r\n },\r\n sizeIsPercentage: false,\r\n isHistoryTexture: true,\r\n };\r\n\r\n const pingPongHandle = textureManager.createRenderTargetTexture(`${this.name} history`, pingPongTextureCreationOptions);\r\n\r\n textureManager.resolveDanglingHandle(this.outputTexture, pingPongHandle);\r\n\r\n const pass = this._frameGraph.addRenderPass(this.name);\r\n\r\n pass.depthReadOnly = this.depthReadOnly;\r\n pass.stencilReadOnly = this.stencilReadOnly;\r\n\r\n pass.addDependencies(this.sourceTexture);\r\n\r\n pass.setRenderTarget(this.outputTexture);\r\n pass.setRenderTargetDepth(this.depthAttachmentTexture);\r\n pass.setExecuteFunc((context) => {\r\n objectRenderer.dontSetTransformationMatrix = !this.postProcess.reprojectHistory;\r\n this.postProcess.camera = objectRenderer.activeCamera;\r\n\r\n if (this.sourceTexture !== undefined) {\r\n context.setTextureSamplingMode(this.sourceTexture, this.sourceSamplingMode);\r\n }\r\n if (this.velocityTexture !== undefined) {\r\n context.setTextureSamplingMode(this.velocityTexture, Constants.TEXTURE_BILINEAR_SAMPLINGMODE);\r\n }\r\n\r\n context.setTextureSamplingMode(pingPongHandle, Constants.TEXTURE_BILINEAR_SAMPLINGMODE);\r\n\r\n context.applyFullScreenEffect(\r\n this._postProcessDrawWrapper,\r\n () => {\r\n context.bindTextureHandle(this._postProcessDrawWrapper.effect!, \"textureSampler\", this.sourceTexture!);\r\n context.bindTextureHandle(this._postProcessDrawWrapper.effect!, \"historySampler\", pingPongHandle);\r\n if (this.postProcess.reprojectHistory && this.velocityTexture !== undefined) {\r\n context.bindTextureHandle(this._postProcessDrawWrapper.effect!, \"velocitySampler\", this.velocityTexture);\r\n }\r\n this.postProcess.bind();\r\n },\r\n this.stencilState,\r\n this.disableColorWrite,\r\n this.drawBackFace,\r\n this.depthTest\r\n );\r\n });\r\n\r\n const passDisabled = this._frameGraph.addRenderPass(this.name + \"_disabled\", true);\r\n\r\n passDisabled.depthReadOnly = this.depthReadOnly;\r\n passDisabled.stencilReadOnly = this.stencilReadOnly;\r\n\r\n passDisabled.addDependencies(this.sourceTexture);\r\n\r\n passDisabled.setRenderTarget(this.outputTexture);\r\n passDisabled.setRenderTargetDepth(this.depthAttachmentTexture);\r\n passDisabled.setExecuteFunc((context) => {\r\n context.copyTexture(this.sourceTexture!);\r\n });\r\n\r\n return pass;\r\n }\r\n\r\n public override dispose() {\r\n this.objectRendererTask?.objectRenderer.onInitRenderingObservable.remove(this._initRenderingObserver);\r\n this._frameGraph.scene.onBeforeRenderObservable.remove(this._onBeforeRenderSceneObserver);\r\n super.dispose();\r\n }\r\n}\r\n"]}
|
|
@@ -13,4 +13,5 @@ export declare class FrameGraphTonemapTask extends FrameGraphPostProcessTask {
|
|
|
13
13
|
* @param thinPostProcess The thin post process to use for the tonemap effect. If not provided, a new one will be created.
|
|
14
14
|
*/
|
|
15
15
|
constructor(name: string, frameGraph: FrameGraph, thinPostProcess?: ThinTonemapPostProcess);
|
|
16
|
+
getClassName(): string;
|
|
16
17
|
}
|
|
@@ -13,5 +13,8 @@ export class FrameGraphTonemapTask extends FrameGraphPostProcessTask {
|
|
|
13
13
|
constructor(name, frameGraph, thinPostProcess) {
|
|
14
14
|
super(name, frameGraph, thinPostProcess || new ThinTonemapPostProcess(name, frameGraph.engine));
|
|
15
15
|
}
|
|
16
|
+
getClassName() {
|
|
17
|
+
return "FrameGraphTonemapTask";
|
|
18
|
+
}
|
|
16
19
|
}
|
|
17
20
|
//# sourceMappingURL=tonemapTask.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tonemapTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/PostProcesses/tonemapTask.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,yDAAkD;AACnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE9D;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,yBAAyB;IAGhE;;;;;OAKG;IACH,YAAY,IAAY,EAAE,UAAsB,EAAE,eAAwC;QACtF,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,IAAI,IAAI,sBAAsB,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACpG,CAAC;CACJ","sourcesContent":["import type { FrameGraph } from \"core/FrameGraph/frameGraph\";\r\nimport { ThinTonemapPostProcess } from \"core/PostProcesses/thinTonemapPostProcess\";\r\nimport { FrameGraphPostProcessTask } from \"./postProcessTask\";\r\n\r\n/**\r\n * Task which applies a tonemap post process.\r\n */\r\nexport class FrameGraphTonemapTask extends FrameGraphPostProcessTask {\r\n public override readonly postProcess: ThinTonemapPostProcess;\r\n\r\n /**\r\n * Constructs a new tonemap task.\r\n * @param name The name of the task.\r\n * @param frameGraph The frame graph this task is associated with.\r\n * @param thinPostProcess The thin post process to use for the tonemap effect. If not provided, a new one will be created.\r\n */\r\n constructor(name: string, frameGraph: FrameGraph, thinPostProcess?: ThinTonemapPostProcess) {\r\n super(name, frameGraph, thinPostProcess || new ThinTonemapPostProcess(name, frameGraph.engine));\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"tonemapTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/PostProcesses/tonemapTask.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,yDAAkD;AACnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE9D;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,yBAAyB;IAGhE;;;;;OAKG;IACH,YAAY,IAAY,EAAE,UAAsB,EAAE,eAAwC;QACtF,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,IAAI,IAAI,sBAAsB,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACpG,CAAC;IAEe,YAAY;QACxB,OAAO,uBAAuB,CAAC;IACnC,CAAC;CACJ","sourcesContent":["import type { FrameGraph } from \"core/FrameGraph/frameGraph\";\r\nimport { ThinTonemapPostProcess } from \"core/PostProcesses/thinTonemapPostProcess\";\r\nimport { FrameGraphPostProcessTask } from \"./postProcessTask\";\r\n\r\n/**\r\n * Task which applies a tonemap post process.\r\n */\r\nexport class FrameGraphTonemapTask extends FrameGraphPostProcessTask {\r\n public override readonly postProcess: ThinTonemapPostProcess;\r\n\r\n /**\r\n * Constructs a new tonemap task.\r\n * @param name The name of the task.\r\n * @param frameGraph The frame graph this task is associated with.\r\n * @param thinPostProcess The thin post process to use for the tonemap effect. If not provided, a new one will be created.\r\n */\r\n constructor(name: string, frameGraph: FrameGraph, thinPostProcess?: ThinTonemapPostProcess) {\r\n super(name, frameGraph, thinPostProcess || new ThinTonemapPostProcess(name, frameGraph.engine));\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"FrameGraphTonemapTask\";\r\n }\r\n}\r\n"]}
|
|
@@ -25,6 +25,7 @@ export declare class FrameGraphVolumetricLightingBlendVolumeTask extends FrameGr
|
|
|
25
25
|
depthTexture: FrameGraphTextureHandle;
|
|
26
26
|
camera: Camera;
|
|
27
27
|
constructor(name: string, frameGraph: FrameGraph, enableExtinction?: boolean);
|
|
28
|
+
getClassName(): string;
|
|
28
29
|
record(skipCreationOfDisabledPasses?: boolean): FrameGraphRenderPass;
|
|
29
30
|
}
|
|
30
31
|
export {};
|
|
@@ -40,6 +40,9 @@ export class FrameGraphVolumetricLightingBlendVolumeTask extends FrameGraphPostP
|
|
|
40
40
|
constructor(name, frameGraph, enableExtinction = false) {
|
|
41
41
|
super(name, frameGraph, new VolumetricLightingBlendVolumeThinPostProcess(name, frameGraph.engine, enableExtinction));
|
|
42
42
|
}
|
|
43
|
+
getClassName() {
|
|
44
|
+
return "FrameGraphVolumetricLightingBlendVolumeTask";
|
|
45
|
+
}
|
|
43
46
|
record(skipCreationOfDisabledPasses = false) {
|
|
44
47
|
if (this.sourceTexture === undefined || this.depthTexture === undefined || this.camera === undefined) {
|
|
45
48
|
throw new Error(`FrameGraphVolumetricLightingBlendVolumeTask "${this.name}": sourceTexture, depthTexture and camera are required`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"volumetricLightingBlendVolumeTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AbstractEngine, Camera, EffectWrapperCreationOptions, FrameGraph, FrameGraphRenderPass, FrameGraphTextureHandle, Nullable } from \"core/index\";\r\nimport { Vector3, Matrix } from \"core/Maths/math.vector\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { ThinPassPostProcess } from \"core/PostProcesses/thinPassPostProcess\";\r\nimport { FrameGraphPostProcessTask } from \"./postProcessTask\";\r\n\r\nimport \"core/Shaders/volumetricLightingBlendVolume.fragment\";\r\nimport \"core/ShadersWGSL/volumetricLightingBlendVolume.fragment\";\r\n\r\n/**\r\n * @internal\r\n */\r\nclass VolumetricLightingBlendVolumeThinPostProcess extends ThinPassPostProcess {\r\n public camera: Camera;\r\n\r\n public outputTextureWidth = 0;\r\n\r\n public outputTextureHeight = 0;\r\n\r\n public extinction = new Vector3(0, 0, 0);\r\n\r\n public enableExtinction = false;\r\n\r\n private _invProjection: Matrix;\r\n\r\n constructor(name: string, engine: Nullable<AbstractEngine> = null, enableExtinction = false, options?: EffectWrapperCreationOptions) {\r\n super(name, engine, {\r\n ...options,\r\n fragmentShader: \"volumetricLightingBlendVolume\",\r\n samplers: [\"depthSampler\"],\r\n uniforms: [\"invProjection\", \"outputTextureSize\", \"extinction\"],\r\n defines: enableExtinction ? [\"#define DUAL_SOURCE_BLENDING\", \"#define USE_EXTINCTION\"] : undefined,\r\n });\r\n\r\n this._invProjection = new Matrix();\r\n this.alphaMode = enableExtinction ? Constants.ALPHA_DUAL_SRC0_ADD_SRC1xDST : Constants.ALPHA_ADD;\r\n }\r\n\r\n public override bind(noDefaultBindings = false) {\r\n super.bind(noDefaultBindings);\r\n\r\n const effect = this.drawWrapper.effect!;\r\n\r\n this._invProjection.copyFrom(this.camera.getProjectionMatrix());\r\n this._invProjection.invert();\r\n\r\n effect.setMatrix(\"invProjection\", this._invProjection);\r\n effect.setFloat2(\"outputTextureSize\", this.outputTextureWidth, this.outputTextureHeight);\r\n effect.setVector3(\"extinction\", this.extinction);\r\n }\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class FrameGraphVolumetricLightingBlendVolumeTask extends FrameGraphPostProcessTask {\r\n public override readonly postProcess: VolumetricLightingBlendVolumeThinPostProcess;\r\n\r\n public depthTexture: FrameGraphTextureHandle;\r\n\r\n public camera: Camera;\r\n\r\n constructor(name: string, frameGraph: FrameGraph, enableExtinction = false) {\r\n super(name, frameGraph, new VolumetricLightingBlendVolumeThinPostProcess(name, frameGraph.engine, enableExtinction));\r\n }\r\n\r\n public override record(skipCreationOfDisabledPasses = false): FrameGraphRenderPass {\r\n if (this.sourceTexture === undefined || this.depthTexture === undefined || this.camera === undefined) {\r\n throw new Error(`FrameGraphVolumetricLightingBlendVolumeTask \"${this.name}\": sourceTexture, depthTexture and camera are required`);\r\n }\r\n\r\n const pass = super.record(skipCreationOfDisabledPasses, undefined, (context) => {\r\n this.postProcess.camera = this.camera;\r\n context.bindTextureHandle(this._postProcessDrawWrapper.effect!, \"depthSampler\", this.depthTexture);\r\n });\r\n\r\n pass.addDependencies(this.depthTexture);\r\n\r\n this.postProcess.outputTextureWidth = this._outputWidth;\r\n this.postProcess.outputTextureHeight = this._outputHeight;\r\n\r\n return pass;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"volumetricLightingBlendVolumeTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AbstractEngine, Camera, EffectWrapperCreationOptions, FrameGraph, FrameGraphRenderPass, FrameGraphTextureHandle, Nullable } from \"core/index\";\r\nimport { Vector3, Matrix } from \"core/Maths/math.vector\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { ThinPassPostProcess } from \"core/PostProcesses/thinPassPostProcess\";\r\nimport { FrameGraphPostProcessTask } from \"./postProcessTask\";\r\n\r\nimport \"core/Shaders/volumetricLightingBlendVolume.fragment\";\r\nimport \"core/ShadersWGSL/volumetricLightingBlendVolume.fragment\";\r\n\r\n/**\r\n * @internal\r\n */\r\nclass VolumetricLightingBlendVolumeThinPostProcess extends ThinPassPostProcess {\r\n public camera: Camera;\r\n\r\n public outputTextureWidth = 0;\r\n\r\n public outputTextureHeight = 0;\r\n\r\n public extinction = new Vector3(0, 0, 0);\r\n\r\n public enableExtinction = false;\r\n\r\n private _invProjection: Matrix;\r\n\r\n constructor(name: string, engine: Nullable<AbstractEngine> = null, enableExtinction = false, options?: EffectWrapperCreationOptions) {\r\n super(name, engine, {\r\n ...options,\r\n fragmentShader: \"volumetricLightingBlendVolume\",\r\n samplers: [\"depthSampler\"],\r\n uniforms: [\"invProjection\", \"outputTextureSize\", \"extinction\"],\r\n defines: enableExtinction ? [\"#define DUAL_SOURCE_BLENDING\", \"#define USE_EXTINCTION\"] : undefined,\r\n });\r\n\r\n this._invProjection = new Matrix();\r\n this.alphaMode = enableExtinction ? Constants.ALPHA_DUAL_SRC0_ADD_SRC1xDST : Constants.ALPHA_ADD;\r\n }\r\n\r\n public override bind(noDefaultBindings = false) {\r\n super.bind(noDefaultBindings);\r\n\r\n const effect = this.drawWrapper.effect!;\r\n\r\n this._invProjection.copyFrom(this.camera.getProjectionMatrix());\r\n this._invProjection.invert();\r\n\r\n effect.setMatrix(\"invProjection\", this._invProjection);\r\n effect.setFloat2(\"outputTextureSize\", this.outputTextureWidth, this.outputTextureHeight);\r\n effect.setVector3(\"extinction\", this.extinction);\r\n }\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class FrameGraphVolumetricLightingBlendVolumeTask extends FrameGraphPostProcessTask {\r\n public override readonly postProcess: VolumetricLightingBlendVolumeThinPostProcess;\r\n\r\n public depthTexture: FrameGraphTextureHandle;\r\n\r\n public camera: Camera;\r\n\r\n constructor(name: string, frameGraph: FrameGraph, enableExtinction = false) {\r\n super(name, frameGraph, new VolumetricLightingBlendVolumeThinPostProcess(name, frameGraph.engine, enableExtinction));\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"FrameGraphVolumetricLightingBlendVolumeTask\";\r\n }\r\n\r\n public override record(skipCreationOfDisabledPasses = false): FrameGraphRenderPass {\r\n if (this.sourceTexture === undefined || this.depthTexture === undefined || this.camera === undefined) {\r\n throw new Error(`FrameGraphVolumetricLightingBlendVolumeTask \"${this.name}\": sourceTexture, depthTexture and camera are required`);\r\n }\r\n\r\n const pass = super.record(skipCreationOfDisabledPasses, undefined, (context) => {\r\n this.postProcess.camera = this.camera;\r\n context.bindTextureHandle(this._postProcessDrawWrapper.effect!, \"depthSampler\", this.depthTexture);\r\n });\r\n\r\n pass.addDependencies(this.depthTexture);\r\n\r\n this.postProcess.outputTextureWidth = this._outputWidth;\r\n this.postProcess.outputTextureHeight = this._outputHeight;\r\n\r\n return pass;\r\n }\r\n}\r\n"]}
|
|
@@ -58,6 +58,7 @@ export declare class FrameGraphVolumetricLightingTask extends FrameGraphTask {
|
|
|
58
58
|
/**
|
|
59
59
|
* The extinction coefficient for the volumetric lighting effect (default: (0, 0, 0) - no extinction).
|
|
60
60
|
* This parameter controls how much light is absorbed and scattered as it travels through the medium.
|
|
61
|
+
* Will only have an effect if enableExtinction is set to true in the constructor!
|
|
61
62
|
*/
|
|
62
63
|
get extinction(): Vector3;
|
|
63
64
|
set extinction(value: Vector3);
|
|
@@ -71,7 +72,7 @@ export declare class FrameGraphVolumetricLightingTask extends FrameGraphTask {
|
|
|
71
72
|
get name(): string;
|
|
72
73
|
set name(name: string);
|
|
73
74
|
/**
|
|
74
|
-
* The output texture of the task.
|
|
75
|
+
* The output texture of the task. It will be the same as targetTexture.
|
|
75
76
|
*/
|
|
76
77
|
readonly outputTexture: FrameGraphTextureHandle;
|
|
77
78
|
private readonly _clearLightingVolumeTextureTask;
|
|
@@ -86,6 +87,7 @@ export declare class FrameGraphVolumetricLightingTask extends FrameGraphTask {
|
|
|
86
87
|
*/
|
|
87
88
|
constructor(name: string, frameGraph: FrameGraph, enableExtinction?: boolean);
|
|
88
89
|
isReady(): boolean;
|
|
90
|
+
getClassName(): string;
|
|
89
91
|
record(skipCreationOfDisabledPasses?: boolean): void;
|
|
90
92
|
dispose(): void;
|
|
91
93
|
}
|