@onerjs/core 8.28.4 → 8.28.5
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/Engines/abstractEngine.js +2 -2
- package/Engines/abstractEngine.js.map +1 -1
- package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.d.ts +1 -0
- package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.d.ts +1 -0
- package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.d.ts +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.d.ts +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.d.ts +94 -0
- package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.js +312 -0
- package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.d.ts +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.d.ts +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.d.ts +1 -0
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.d.ts +1 -0
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/taaObjectRendererBlock.js +1 -1
- package/FrameGraph/Node/Blocks/Rendering/taaObjectRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/index.d.ts +1 -0
- package/FrameGraph/Node/Blocks/index.js +1 -0
- package/FrameGraph/Node/Blocks/index.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraph.js +1 -1
- package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
- package/FrameGraph/Tasks/Layers/baseLayerTask.js +1 -7
- package/FrameGraph/Tasks/Layers/baseLayerTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/bloomTask.js +0 -6
- package/FrameGraph/Tasks/PostProcesses/bloomTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/circleOfConfusionTask.js +3 -4
- package/FrameGraph/Tasks/PostProcesses/circleOfConfusionTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js +3 -4
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.js +3 -4
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js +0 -8
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.js +3 -5
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/ssao2BlurTask.d.ts +13 -0
- package/FrameGraph/Tasks/PostProcesses/ssao2BlurTask.js +25 -0
- package/FrameGraph/Tasks/PostProcesses/ssao2BlurTask.js.map +1 -0
- package/FrameGraph/Tasks/PostProcesses/ssao2RenderingPipelineTask.d.ts +76 -0
- package/FrameGraph/Tasks/PostProcesses/ssao2RenderingPipelineTask.js +147 -0
- package/FrameGraph/Tasks/PostProcesses/ssao2RenderingPipelineTask.js.map +1 -0
- package/FrameGraph/Tasks/PostProcesses/ssao2Task.d.ts +14 -0
- package/FrameGraph/Tasks/PostProcesses/ssao2Task.js +29 -0
- package/FrameGraph/Tasks/PostProcesses/ssao2Task.js.map +1 -0
- package/FrameGraph/Tasks/PostProcesses/ssrRenderingPipelineTask.js +2 -11
- package/FrameGraph/Tasks/PostProcesses/ssrRenderingPipelineTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/ssrTask.js +8 -9
- package/FrameGraph/Tasks/PostProcesses/ssrTask.js.map +1 -1
- package/FrameGraph/index.d.ts +1 -0
- package/FrameGraph/index.js +1 -0
- package/FrameGraph/index.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.d.ts +4 -0
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +6 -0
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
- package/Materials/Node/nodeMaterial.js +1 -1
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/PBR/openPbrMaterial.js +5 -5
- package/Materials/PBR/openPbrMaterial.js.map +1 -1
- package/Meshes/Node/nodeGeometry.js +1 -1
- package/Meshes/Node/nodeGeometry.js.map +1 -1
- package/Particles/Node/nodeParticleSystemSet.js +1 -1
- package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.d.ts +21 -30
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +163 -256
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.d.ts +1 -3
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/thinSSAO2RenderingPipeline.d.ts +130 -0
- package/PostProcesses/RenderPipeline/Pipelines/thinSSAO2RenderingPipeline.js +193 -0
- package/PostProcesses/RenderPipeline/Pipelines/thinSSAO2RenderingPipeline.js.map +1 -0
- package/PostProcesses/thinSSAO2BlurPostProcess.d.ts +26 -0
- package/PostProcesses/thinSSAO2BlurPostProcess.js +81 -0
- package/PostProcesses/thinSSAO2BlurPostProcess.js.map +1 -0
- package/PostProcesses/thinSSAO2CombinePostProcess.d.ts +15 -0
- package/PostProcesses/thinSSAO2CombinePostProcess.js +48 -0
- package/PostProcesses/thinSSAO2CombinePostProcess.js.map +1 -0
- package/PostProcesses/thinSSAO2PostProcess.d.ts +45 -0
- package/PostProcesses/thinSSAO2PostProcess.js +208 -0
- package/PostProcesses/thinSSAO2PostProcess.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +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;IAS9D,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;IACjG,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,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,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 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 const pass = super.record(\r\n skipCreationOfDisabledPasses,\r\n (context) => {\r\n this.postProcess.camera = this.camera;\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"]}
|
|
@@ -30,7 +30,7 @@ export class FrameGraphSSRRenderingPipelineTask extends FrameGraphTask {
|
|
|
30
30
|
set name(name) {
|
|
31
31
|
this._name = name;
|
|
32
32
|
if (this._ssr) {
|
|
33
|
-
this._ssr.name = `${name} SSR`;
|
|
33
|
+
this._ssr.name = `${name} SSR main`;
|
|
34
34
|
}
|
|
35
35
|
if (this._ssrBlurX) {
|
|
36
36
|
this._ssrBlurX.name = `${name} SSR Blur X`;
|
|
@@ -56,19 +56,10 @@ export class FrameGraphSSRRenderingPipelineTask extends FrameGraphTask {
|
|
|
56
56
|
this.sourceSamplingMode = 2;
|
|
57
57
|
this.textureType = textureType;
|
|
58
58
|
this.ssr = new ThinSSRRenderingPipeline(name, frameGraph.scene);
|
|
59
|
-
this._ssr = new FrameGraphSSRTask(`${name} SSR`, this._frameGraph, this.ssr._ssrPostProcess);
|
|
59
|
+
this._ssr = new FrameGraphSSRTask(`${name} SSR main`, this._frameGraph, this.ssr._ssrPostProcess);
|
|
60
60
|
this._ssrBlurX = new FrameGraphSSRBlurTask(`${name} SSR Blur X`, this._frameGraph, this.ssr._ssrBlurXPostProcess);
|
|
61
61
|
this._ssrBlurY = new FrameGraphSSRBlurTask(`${name} SSR Blur Y`, this._frameGraph, this.ssr._ssrBlurYPostProcess);
|
|
62
62
|
this._ssrBlurCombiner = new FrameGraphPostProcessTask(`${name} SSR Blur Combiner`, this._frameGraph, this.ssr._ssrBlurCombinerPostProcess);
|
|
63
|
-
this.onTexturesAllocatedObservable.add((context) => {
|
|
64
|
-
this._ssr.onTexturesAllocatedObservable.notifyObservers(context);
|
|
65
|
-
// We should not forward the notification if blur is not enabled
|
|
66
|
-
if (this.ssr.blurDispersionStrength !== 0) {
|
|
67
|
-
this._ssrBlurX.onTexturesAllocatedObservable.notifyObservers(context);
|
|
68
|
-
this._ssrBlurY.onTexturesAllocatedObservable.notifyObservers(context);
|
|
69
|
-
this._ssrBlurCombiner.onTexturesAllocatedObservable.notifyObservers(context);
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
63
|
this.outputTexture = this._frameGraph.textureManager.createDanglingHandle();
|
|
73
64
|
}
|
|
74
65
|
isReady() {
|
|
@@ -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`;\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`, 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.onTexturesAllocatedObservable.add((context) => {\r\n this._ssr.onTexturesAllocatedObservable.notifyObservers(context);\r\n // We should not forward the notification if blur is not enabled\r\n if (this.ssr.blurDispersionStrength !== 0) {\r\n this._ssrBlurX.onTexturesAllocatedObservable.notifyObservers(context);\r\n this._ssrBlurY.onTexturesAllocatedObservable.notifyObservers(context);\r\n this._ssrBlurCombiner.onTexturesAllocatedObservable.notifyObservers(context);\r\n }\r\n });\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 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"]}
|
|
@@ -7,14 +7,6 @@ import { ThinSSRPostProcess } from "../../../PostProcesses/thinSSRPostProcess.js
|
|
|
7
7
|
export class FrameGraphSSRTask extends FrameGraphPostProcessTask {
|
|
8
8
|
constructor(name, frameGraph, thinPostProcess) {
|
|
9
9
|
super(name, frameGraph, thinPostProcess || new ThinSSRPostProcess(name, frameGraph.scene));
|
|
10
|
-
this.onTexturesAllocatedObservable.add((context) => {
|
|
11
|
-
context.setTextureSamplingMode(this.normalTexture, 2);
|
|
12
|
-
context.setTextureSamplingMode(this.depthTexture, 2);
|
|
13
|
-
context.setTextureSamplingMode(this.reflectivityTexture, 2);
|
|
14
|
-
if (this.backDepthTexture) {
|
|
15
|
-
context.setTextureSamplingMode(this.backDepthTexture, 1);
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
10
|
}
|
|
19
11
|
record(skipCreationOfDisabledPasses = false) {
|
|
20
12
|
if (this.sourceTexture === undefined ||
|
|
@@ -24,8 +16,15 @@ export class FrameGraphSSRTask extends FrameGraphPostProcessTask {
|
|
|
24
16
|
this.camera === undefined) {
|
|
25
17
|
throw new Error(`FrameGraphSSRTask "${this.name}": sourceTexture, normalTexture, depthTexture, reflectivityTexture and camera are required`);
|
|
26
18
|
}
|
|
27
|
-
const pass = super.record(skipCreationOfDisabledPasses,
|
|
19
|
+
const pass = super.record(skipCreationOfDisabledPasses, (context) => {
|
|
28
20
|
this.postProcess.camera = this.camera;
|
|
21
|
+
context.setTextureSamplingMode(this.normalTexture, 2);
|
|
22
|
+
context.setTextureSamplingMode(this.depthTexture, 2);
|
|
23
|
+
context.setTextureSamplingMode(this.reflectivityTexture, 2);
|
|
24
|
+
if (this.backDepthTexture) {
|
|
25
|
+
context.setTextureSamplingMode(this.backDepthTexture, 1);
|
|
26
|
+
}
|
|
27
|
+
}, (context) => {
|
|
29
28
|
context.bindTextureHandle(this._postProcessDrawWrapper.effect, "normalSampler", this.normalTexture);
|
|
30
29
|
context.bindTextureHandle(this._postProcessDrawWrapper.effect, "depthSampler", this.depthTexture);
|
|
31
30
|
context.bindTextureHandle(this._postProcessDrawWrapper.effect, "reflectivitySampler", this.reflectivityTexture);
|
|
@@ -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;
|
|
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"]}
|
package/FrameGraph/index.d.ts
CHANGED
|
@@ -31,6 +31,7 @@ export * from "./Tasks/PostProcesses/passTask.js";
|
|
|
31
31
|
export * from "./Tasks/PostProcesses/postProcessTask.js";
|
|
32
32
|
export * from "./Tasks/PostProcesses/sharpenTask.js";
|
|
33
33
|
export * from "./Tasks/PostProcesses/screenSpaceCurvatureTask.js";
|
|
34
|
+
export * from "./Tasks/PostProcesses/ssao2RenderingPipelineTask.js";
|
|
34
35
|
export * from "./Tasks/PostProcesses/ssrRenderingPipelineTask.js";
|
|
35
36
|
export * from "./Tasks/PostProcesses/tonemapTask.js";
|
|
36
37
|
export * from "./Tasks/Texture/clearTextureTask.js";
|
package/FrameGraph/index.js
CHANGED
|
@@ -32,6 +32,7 @@ export * from "./Tasks/PostProcesses/passTask.js";
|
|
|
32
32
|
export * from "./Tasks/PostProcesses/postProcessTask.js";
|
|
33
33
|
export * from "./Tasks/PostProcesses/sharpenTask.js";
|
|
34
34
|
export * from "./Tasks/PostProcesses/screenSpaceCurvatureTask.js";
|
|
35
|
+
export * from "./Tasks/PostProcesses/ssao2RenderingPipelineTask.js";
|
|
35
36
|
export * from "./Tasks/PostProcesses/ssrRenderingPipelineTask.js";
|
|
36
37
|
export * from "./Tasks/PostProcesses/tonemapTask.js";
|
|
37
38
|
export * from "./Tasks/Texture/clearTextureTask.js";
|
package/FrameGraph/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/core/src/FrameGraph/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4CAA4C,CAAC;AAC3D,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,qBAAqB,CAAC;AAEpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AAEpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAElD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AAEzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,yCAAyC,CAAC;AACxD,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,uCAAuC,CAAC;AACtD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC;AACtD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,mCAAmC,CAAC;AAElD,cAAc,kCAAkC,CAAC;AACjD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AAEpD,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,yCAAyC,CAAC;AACxD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./Node/nodeRenderGraph\";\r\nexport * from \"./Node/nodeRenderGraphBlock\";\r\nexport * from \"./Node/nodeRenderGraphBlockConnectionPoint\";\r\nexport * from \"./Node/nodeRenderGraphBuildState\";\r\nexport * from \"./Node/Types/nodeRenderGraphTypes\";\r\nexport * from \"./Node/Blocks/index\";\r\n\r\nexport * from \"./Passes/cullPass\";\r\nexport * from \"./Passes/pass\";\r\nexport * from \"./Passes/renderPass\";\r\n\r\nexport * from \"./Tasks/Layers/glowLayerTask\";\r\nexport * from \"./Tasks/Layers/highlightLayerTask\";\r\n\r\nexport * from \"./Tasks/Misc/cullObjectsTask\";\r\nexport * from \"./Tasks/Misc/executeTask\";\r\n\r\nexport * from \"./Tasks/PostProcesses/anaglyphTask\";\r\nexport * from \"./Tasks/PostProcesses/blackAndWhiteTask\";\r\nexport * from \"./Tasks/PostProcesses/bloomTask\";\r\nexport * from \"./Tasks/PostProcesses/blurTask\";\r\nexport * from \"./Tasks/PostProcesses/chromaticAberrationTask\";\r\nexport * from \"./Tasks/PostProcesses/circleOfConfusionTask\";\r\nexport * from \"./Tasks/PostProcesses/colorCorrectionTask\";\r\nexport * from \"./Tasks/PostProcesses/convolutionTask\";\r\nexport * from \"./Tasks/PostProcesses/customPostProcessTask\";\r\nexport * from \"./Tasks/PostProcesses/depthOfFieldTask\";\r\nexport * from \"./Tasks/PostProcesses/extractHighlightsTask\";\r\nexport * from \"./Tasks/PostProcesses/filterTask\";\r\nexport * from \"./Tasks/PostProcesses/fxaaTask\";\r\nexport * from \"./Tasks/PostProcesses/grainTask\";\r\nexport * from \"./Tasks/PostProcesses/imageProcessingTask\";\r\nexport * from \"./Tasks/PostProcesses/motionBlurTask\";\r\nexport * from \"./Tasks/PostProcesses/passTask\";\r\nexport * from \"./Tasks/PostProcesses/postProcessTask\";\r\nexport * from \"./Tasks/PostProcesses/sharpenTask\";\r\nexport * from \"./Tasks/PostProcesses/screenSpaceCurvatureTask\";\r\nexport * from \"./Tasks/PostProcesses/ssrRenderingPipelineTask\";\r\nexport * from \"./Tasks/PostProcesses/tonemapTask\";\r\n\r\nexport * from \"./Tasks/Texture/clearTextureTask\";\r\nexport * from \"./Tasks/Texture/copyToBackbufferColorTask\";\r\nexport * from \"./Tasks/Texture/copyToTextureTask\";\r\nexport * from \"./Tasks/Texture/generateMipMapsTask\";\r\n\r\nexport * from \"./Tasks/Rendering/csmShadowGeneratorTask\";\r\nexport * from \"./Tasks/Rendering/geometryRendererTask\";\r\nexport * from \"./Tasks/Rendering/objectRendererTask\";\r\nexport * from \"./Tasks/Rendering/shadowGeneratorTask\";\r\nexport * from \"./Tasks/Rendering/taaObjectRendererTask\";\r\nexport * from \"./Tasks/Rendering/utilityLayerRendererTask\";\r\n\r\nexport * from \"./frameGraph\";\r\nexport * from \"./frameGraphContext\";\r\nexport * from \"./frameGraphObjectList\";\r\nexport * from \"./frameGraphRenderContext\";\r\nexport * from \"./frameGraphRenderTarget\";\r\nexport * from \"./frameGraphTask\";\r\nexport * from \"./frameGraphTextureManager\";\r\nexport * from \"./frameGraphTypes\";\r\nexport * from \"./frameGraphUtils\";\r\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/core/src/FrameGraph/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4CAA4C,CAAC;AAC3D,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,qBAAqB,CAAC;AAEpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AAEpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAElD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AAEzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,yCAAyC,CAAC;AACxD,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,uCAAuC,CAAC;AACtD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC;AACtD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,kDAAkD,CAAC;AACjE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,mCAAmC,CAAC;AAElD,cAAc,kCAAkC,CAAC;AACjD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AAEpD,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,yCAAyC,CAAC;AACxD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./Node/nodeRenderGraph\";\r\nexport * from \"./Node/nodeRenderGraphBlock\";\r\nexport * from \"./Node/nodeRenderGraphBlockConnectionPoint\";\r\nexport * from \"./Node/nodeRenderGraphBuildState\";\r\nexport * from \"./Node/Types/nodeRenderGraphTypes\";\r\nexport * from \"./Node/Blocks/index\";\r\n\r\nexport * from \"./Passes/cullPass\";\r\nexport * from \"./Passes/pass\";\r\nexport * from \"./Passes/renderPass\";\r\n\r\nexport * from \"./Tasks/Layers/glowLayerTask\";\r\nexport * from \"./Tasks/Layers/highlightLayerTask\";\r\n\r\nexport * from \"./Tasks/Misc/cullObjectsTask\";\r\nexport * from \"./Tasks/Misc/executeTask\";\r\n\r\nexport * from \"./Tasks/PostProcesses/anaglyphTask\";\r\nexport * from \"./Tasks/PostProcesses/blackAndWhiteTask\";\r\nexport * from \"./Tasks/PostProcesses/bloomTask\";\r\nexport * from \"./Tasks/PostProcesses/blurTask\";\r\nexport * from \"./Tasks/PostProcesses/chromaticAberrationTask\";\r\nexport * from \"./Tasks/PostProcesses/circleOfConfusionTask\";\r\nexport * from \"./Tasks/PostProcesses/colorCorrectionTask\";\r\nexport * from \"./Tasks/PostProcesses/convolutionTask\";\r\nexport * from \"./Tasks/PostProcesses/customPostProcessTask\";\r\nexport * from \"./Tasks/PostProcesses/depthOfFieldTask\";\r\nexport * from \"./Tasks/PostProcesses/extractHighlightsTask\";\r\nexport * from \"./Tasks/PostProcesses/filterTask\";\r\nexport * from \"./Tasks/PostProcesses/fxaaTask\";\r\nexport * from \"./Tasks/PostProcesses/grainTask\";\r\nexport * from \"./Tasks/PostProcesses/imageProcessingTask\";\r\nexport * from \"./Tasks/PostProcesses/motionBlurTask\";\r\nexport * from \"./Tasks/PostProcesses/passTask\";\r\nexport * from \"./Tasks/PostProcesses/postProcessTask\";\r\nexport * from \"./Tasks/PostProcesses/sharpenTask\";\r\nexport * from \"./Tasks/PostProcesses/screenSpaceCurvatureTask\";\r\nexport * from \"./Tasks/PostProcesses/ssao2RenderingPipelineTask\";\r\nexport * from \"./Tasks/PostProcesses/ssrRenderingPipelineTask\";\r\nexport * from \"./Tasks/PostProcesses/tonemapTask\";\r\n\r\nexport * from \"./Tasks/Texture/clearTextureTask\";\r\nexport * from \"./Tasks/Texture/copyToBackbufferColorTask\";\r\nexport * from \"./Tasks/Texture/copyToTextureTask\";\r\nexport * from \"./Tasks/Texture/generateMipMapsTask\";\r\n\r\nexport * from \"./Tasks/Rendering/csmShadowGeneratorTask\";\r\nexport * from \"./Tasks/Rendering/geometryRendererTask\";\r\nexport * from \"./Tasks/Rendering/objectRendererTask\";\r\nexport * from \"./Tasks/Rendering/shadowGeneratorTask\";\r\nexport * from \"./Tasks/Rendering/taaObjectRendererTask\";\r\nexport * from \"./Tasks/Rendering/utilityLayerRendererTask\";\r\n\r\nexport * from \"./frameGraph\";\r\nexport * from \"./frameGraphContext\";\r\nexport * from \"./frameGraphObjectList\";\r\nexport * from \"./frameGraphRenderContext\";\r\nexport * from \"./frameGraphRenderTarget\";\r\nexport * from \"./frameGraphTask\";\r\nexport * from \"./frameGraphTextureManager\";\r\nexport * from \"./frameGraphTypes\";\r\nexport * from \"./frameGraphUtils\";\r\n"]}
|
|
@@ -66,6 +66,10 @@ export declare class FragmentOutputBlock extends NodeMaterialBlock {
|
|
|
66
66
|
* Gets the additionalColor input component (named glow in the UI for now)
|
|
67
67
|
*/
|
|
68
68
|
get additionalColor(): NodeMaterialConnectionPoint;
|
|
69
|
+
/**
|
|
70
|
+
* Gets the glow input component
|
|
71
|
+
*/
|
|
72
|
+
get glow(): NodeMaterialConnectionPoint;
|
|
69
73
|
protected _getOutputString(state: NodeMaterialBuildState): string;
|
|
70
74
|
prepareDefines(defines: NodeMaterialDefines, nodeMaterial: NodeMaterial): void;
|
|
71
75
|
bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh): void;
|
|
@@ -97,6 +97,12 @@ export class FragmentOutputBlock extends NodeMaterialBlock {
|
|
|
97
97
|
get additionalColor() {
|
|
98
98
|
return this._inputs[3];
|
|
99
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Gets the glow input component
|
|
102
|
+
*/
|
|
103
|
+
get glow() {
|
|
104
|
+
return this._inputs[3];
|
|
105
|
+
}
|
|
100
106
|
_getOutputString(state) {
|
|
101
107
|
return state.shaderLanguage === 1 /* ShaderLanguage.WGSL */ ? "fragmentOutputsColor" : "gl_FragColor";
|
|
102
108
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fragmentOutputBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/Fragment/fragmentOutputBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../../nodeMaterialBuildState\";\r\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets\";\r\nimport type { NodeMaterialConnectionPoint } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport type { Scene } from \"../../../../scene\";\r\nimport type { NodeMaterialDefines, NodeMaterial } from \"../../nodeMaterial\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport type { Effect } from \"../../../effect\";\r\nimport type { Mesh } from \"../../../../Meshes/mesh\";\r\nimport { BindLogDepth } from \"../../../materialHelper.functions\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Color spaces supported by the fragment output block\r\n */\r\nexport enum FragmentOutputBlockColorSpace {\r\n /** Unspecified */\r\n NoColorSpace,\r\n /** Gamma */\r\n Gamma,\r\n /** Linear */\r\n Linear,\r\n}\r\n\r\n/**\r\n * Block used to output the final color\r\n */\r\nexport class FragmentOutputBlock extends NodeMaterialBlock {\r\n private _linearDefineName: string;\r\n private _gammaDefineName: string;\r\n private _additionalColorDefineName: string;\r\n protected _outputString: string;\r\n\r\n /**\r\n * Create a new FragmentOutputBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Fragment, true, true);\r\n\r\n this.registerInput(\"rgba\", NodeMaterialBlockConnectionPointTypes.Color4, true);\r\n this.registerInput(\"rgb\", NodeMaterialBlockConnectionPointTypes.Color3, true);\r\n this.registerInput(\"a\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"glow\", NodeMaterialBlockConnectionPointTypes.Color3, true);\r\n\r\n this.rgb.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.rgb.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Float);\r\n\r\n this.additionalColor.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.additionalColor.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Float);\r\n }\r\n\r\n /** Gets or sets a boolean indicating if content needs to be converted to gamma space */\r\n public convertToGammaSpace = false;\r\n\r\n /** Gets or sets a boolean indicating if content needs to be converted to linear space */\r\n public convertToLinearSpace = false;\r\n\r\n /** Gets or sets a boolean indicating if logarithmic depth should be used */\r\n @editableInPropertyPage(\"Use logarithmic depth\", PropertyTypeForEdition.Boolean, \"PROPERTIES\", { embedded: true })\r\n public useLogarithmicDepth = false;\r\n\r\n /**\r\n * Gets or sets the color space used for the block\r\n */\r\n @editableInPropertyPage(\"Color space\", PropertyTypeForEdition.List, \"ADVANCED\", {\r\n notifiers: { rebuild: true },\r\n embedded: true,\r\n options: [\r\n { label: \"No color space\", value: FragmentOutputBlockColorSpace.NoColorSpace },\r\n { label: \"Gamma\", value: FragmentOutputBlockColorSpace.Gamma },\r\n { label: \"Linear\", value: FragmentOutputBlockColorSpace.Linear },\r\n ],\r\n })\r\n public get colorSpace() {\r\n if (this.convertToGammaSpace) {\r\n return FragmentOutputBlockColorSpace.Gamma;\r\n }\r\n if (this.convertToLinearSpace) {\r\n return FragmentOutputBlockColorSpace.Linear;\r\n }\r\n return FragmentOutputBlockColorSpace.NoColorSpace;\r\n }\r\n\r\n public set colorSpace(value: FragmentOutputBlockColorSpace) {\r\n this.convertToGammaSpace = value === FragmentOutputBlockColorSpace.Gamma;\r\n this.convertToLinearSpace = value === FragmentOutputBlockColorSpace.Linear;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"FragmentOutputBlock\";\r\n }\r\n\r\n /**\r\n * Initialize the block and prepare the context for build\r\n * @param state defines the state that will be used for the build\r\n */\r\n public override initialize(state: NodeMaterialBuildState) {\r\n state._excludeVariableName(\"logarithmicDepthConstant\");\r\n state._excludeVariableName(\"vFragmentDepth\");\r\n }\r\n\r\n /**\r\n * Gets the rgba input component\r\n */\r\n public get rgba(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the rgb input component\r\n */\r\n public get rgb(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the a input component\r\n */\r\n public get a(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the additionalColor input component (named glow in the UI for now)\r\n */\r\n public get additionalColor(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n protected _getOutputString(state: NodeMaterialBuildState): string {\r\n return state.shaderLanguage === ShaderLanguage.WGSL ? \"fragmentOutputsColor\" : \"gl_FragColor\";\r\n }\r\n\r\n public override prepareDefines(defines: NodeMaterialDefines, nodeMaterial: NodeMaterial) {\r\n defines.setValue(this._linearDefineName, this.convertToLinearSpace, true);\r\n defines.setValue(this._gammaDefineName, this.convertToGammaSpace, true);\r\n defines.setValue(this._additionalColorDefineName, this.additionalColor.connectedPoint && nodeMaterial._useAdditionalColor, true);\r\n }\r\n\r\n public override bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n if ((this.useLogarithmicDepth || nodeMaterial.useLogarithmicDepth) && mesh) {\r\n BindLogDepth(undefined, effect, mesh.getScene());\r\n }\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n const rgba = this.rgba;\r\n const rgb = this.rgb;\r\n const a = this.a;\r\n const additionalColor = this.additionalColor;\r\n\r\n const isWebGPU = state.shaderLanguage === ShaderLanguage.WGSL;\r\n state.sharedData.hints.needAlphaBlending = rgba.isConnected || a.isConnected;\r\n state.sharedData.blocksWithDefines.push(this);\r\n\r\n if (this.useLogarithmicDepth || state.sharedData.nodeMaterial.useLogarithmicDepth) {\r\n state._emitUniformFromString(\"logarithmicDepthConstant\", NodeMaterialBlockConnectionPointTypes.Float);\r\n state._emitVaryingFromString(\"vFragmentDepth\", NodeMaterialBlockConnectionPointTypes.Float);\r\n state.sharedData.bindableBlocks.push(this);\r\n }\r\n\r\n if (additionalColor.connectedPoint) {\r\n state._excludeVariableName(\"useAdditionalColor\");\r\n state._emitUniformFromString(\"useAdditionalColor\", NodeMaterialBlockConnectionPointTypes.Float);\r\n this._additionalColorDefineName = state._getFreeDefineName(\"USEADDITIONALCOLOR\");\r\n }\r\n\r\n this._linearDefineName = state._getFreeDefineName(\"CONVERTTOLINEAR\");\r\n this._gammaDefineName = state._getFreeDefineName(\"CONVERTTOGAMMA\");\r\n\r\n const comments = `//${this.name}`;\r\n state._emitFunctionFromInclude(\"helperFunctions\", comments);\r\n\r\n const outputString = this._getOutputString(state);\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n state.compilationString += `var ${outputString} : vec4<f32>;\\r\\n`;\r\n }\r\n\r\n const vec4 = state._getShaderType(NodeMaterialBlockConnectionPointTypes.Vector4);\r\n\r\n if (additionalColor.connectedPoint) {\r\n let aValue = \"1.0\";\r\n\r\n if (a.connectedPoint) {\r\n aValue = a.associatedVariableName;\r\n }\r\n state.compilationString += `#ifdef ${this._additionalColorDefineName}\\n`;\r\n if (additionalColor.connectedPoint.type === NodeMaterialBlockConnectionPointTypes.Float) {\r\n state.compilationString += `${outputString} = ${vec4}(${additionalColor.associatedVariableName}, ${additionalColor.associatedVariableName}, ${additionalColor.associatedVariableName}, ${aValue});\\n`;\r\n } else {\r\n state.compilationString += `${outputString} = ${vec4}(${additionalColor.associatedVariableName}, ${aValue});\\n`;\r\n }\r\n state.compilationString += `#else\\n`;\r\n }\r\n\r\n if (rgba.connectedPoint) {\r\n if (a.isConnected) {\r\n state.compilationString += `${outputString} = ${vec4}(${rgba.associatedVariableName}.rgb, ${a.associatedVariableName});\\n`;\r\n } else {\r\n state.compilationString += `${outputString} = ${rgba.associatedVariableName};\\n`;\r\n }\r\n } else if (rgb.connectedPoint) {\r\n let aValue = \"1.0\";\r\n\r\n if (a.connectedPoint) {\r\n aValue = a.associatedVariableName;\r\n }\r\n\r\n if (rgb.connectedPoint.type === NodeMaterialBlockConnectionPointTypes.Float) {\r\n state.compilationString += `${outputString} = ${vec4}(${rgb.associatedVariableName}, ${rgb.associatedVariableName}, ${rgb.associatedVariableName}, ${aValue});\\n`;\r\n } else {\r\n state.compilationString += `${outputString} = ${vec4}(${rgb.associatedVariableName}, ${aValue});\\n`;\r\n }\r\n } else {\r\n state.sharedData.checks.notConnectedNonOptionalInputs.push(rgba);\r\n }\r\n\r\n if (additionalColor.connectedPoint) {\r\n state.compilationString += `#endif\\n`;\r\n }\r\n\r\n state.compilationString += `#ifdef ${this._linearDefineName}\\n`;\r\n state.compilationString += `${outputString} = toLinearSpace(${outputString});\\n`;\r\n state.compilationString += `#endif\\n`;\r\n\r\n state.compilationString += `#ifdef ${this._gammaDefineName}\\n`;\r\n state.compilationString += `${outputString} = toGammaSpace(${outputString});\\n`;\r\n state.compilationString += `#endif\\n`;\r\n\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n state.compilationString += `#if !defined(PREPASS)\\r\\n`;\r\n state.compilationString += `fragmentOutputs.color = ${outputString};\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n }\r\n\r\n if (this.useLogarithmicDepth || state.sharedData.nodeMaterial.useLogarithmicDepth) {\r\n const fragDepth = isWebGPU ? \"input.vFragmentDepth\" : \"vFragmentDepth\";\r\n const uniformP = isWebGPU ? \"uniforms.\" : \"\";\r\n const output = isWebGPU ? \"fragmentOutputs.fragDepth\" : \"gl_FragDepthEXT\";\r\n\r\n state.compilationString += `${output} = log2(${fragDepth}) * ${uniformP}logarithmicDepthConstant * 0.5;\\n`;\r\n }\r\n\r\n state.compilationString += `#if defined(PREPASS)\\r\\n`;\r\n state.compilationString += `${isWebGPU ? \"fragmentOutputs.fragData0\" : \"gl_FragData[0]\"} = ${outputString};\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n\r\n return this;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n let codeString = super._dumpPropertiesCode();\r\n codeString += `${this._codeVariableName}.convertToGammaSpace = ${this.convertToGammaSpace};\\n`;\r\n codeString += `${this._codeVariableName}.convertToLinearSpace = ${this.convertToLinearSpace};\\n`;\r\n codeString += `${this._codeVariableName}.useLogarithmicDepth = ${this.useLogarithmicDepth};\\n`;\r\n\r\n return codeString;\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.convertToGammaSpace = this.convertToGammaSpace;\r\n serializationObject.convertToLinearSpace = this.convertToLinearSpace;\r\n serializationObject.useLogarithmicDepth = this.useLogarithmicDepth;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.convertToGammaSpace = !!serializationObject.convertToGammaSpace;\r\n this.convertToLinearSpace = !!serializationObject.convertToLinearSpace;\r\n this.useLogarithmicDepth = serializationObject.useLogarithmicDepth ?? false;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.FragmentOutputBlock\", FragmentOutputBlock);\r\n"]}
|
|
1
|
+
{"version":3,"file":"fragmentOutputBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/Fragment/fragmentOutputBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../../nodeMaterialBuildState\";\r\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets\";\r\nimport type { NodeMaterialConnectionPoint } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport type { Scene } from \"../../../../scene\";\r\nimport type { NodeMaterialDefines, NodeMaterial } from \"../../nodeMaterial\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport type { Effect } from \"../../../effect\";\r\nimport type { Mesh } from \"../../../../Meshes/mesh\";\r\nimport { BindLogDepth } from \"../../../materialHelper.functions\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Color spaces supported by the fragment output block\r\n */\r\nexport enum FragmentOutputBlockColorSpace {\r\n /** Unspecified */\r\n NoColorSpace,\r\n /** Gamma */\r\n Gamma,\r\n /** Linear */\r\n Linear,\r\n}\r\n\r\n/**\r\n * Block used to output the final color\r\n */\r\nexport class FragmentOutputBlock extends NodeMaterialBlock {\r\n private _linearDefineName: string;\r\n private _gammaDefineName: string;\r\n private _additionalColorDefineName: string;\r\n protected _outputString: string;\r\n\r\n /**\r\n * Create a new FragmentOutputBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Fragment, true, true);\r\n\r\n this.registerInput(\"rgba\", NodeMaterialBlockConnectionPointTypes.Color4, true);\r\n this.registerInput(\"rgb\", NodeMaterialBlockConnectionPointTypes.Color3, true);\r\n this.registerInput(\"a\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"glow\", NodeMaterialBlockConnectionPointTypes.Color3, true);\r\n\r\n this.rgb.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.rgb.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Float);\r\n\r\n this.additionalColor.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.additionalColor.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Float);\r\n }\r\n\r\n /** Gets or sets a boolean indicating if content needs to be converted to gamma space */\r\n public convertToGammaSpace = false;\r\n\r\n /** Gets or sets a boolean indicating if content needs to be converted to linear space */\r\n public convertToLinearSpace = false;\r\n\r\n /** Gets or sets a boolean indicating if logarithmic depth should be used */\r\n @editableInPropertyPage(\"Use logarithmic depth\", PropertyTypeForEdition.Boolean, \"PROPERTIES\", { embedded: true })\r\n public useLogarithmicDepth = false;\r\n\r\n /**\r\n * Gets or sets the color space used for the block\r\n */\r\n @editableInPropertyPage(\"Color space\", PropertyTypeForEdition.List, \"ADVANCED\", {\r\n notifiers: { rebuild: true },\r\n embedded: true,\r\n options: [\r\n { label: \"No color space\", value: FragmentOutputBlockColorSpace.NoColorSpace },\r\n { label: \"Gamma\", value: FragmentOutputBlockColorSpace.Gamma },\r\n { label: \"Linear\", value: FragmentOutputBlockColorSpace.Linear },\r\n ],\r\n })\r\n public get colorSpace() {\r\n if (this.convertToGammaSpace) {\r\n return FragmentOutputBlockColorSpace.Gamma;\r\n }\r\n if (this.convertToLinearSpace) {\r\n return FragmentOutputBlockColorSpace.Linear;\r\n }\r\n return FragmentOutputBlockColorSpace.NoColorSpace;\r\n }\r\n\r\n public set colorSpace(value: FragmentOutputBlockColorSpace) {\r\n this.convertToGammaSpace = value === FragmentOutputBlockColorSpace.Gamma;\r\n this.convertToLinearSpace = value === FragmentOutputBlockColorSpace.Linear;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"FragmentOutputBlock\";\r\n }\r\n\r\n /**\r\n * Initialize the block and prepare the context for build\r\n * @param state defines the state that will be used for the build\r\n */\r\n public override initialize(state: NodeMaterialBuildState) {\r\n state._excludeVariableName(\"logarithmicDepthConstant\");\r\n state._excludeVariableName(\"vFragmentDepth\");\r\n }\r\n\r\n /**\r\n * Gets the rgba input component\r\n */\r\n public get rgba(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the rgb input component\r\n */\r\n public get rgb(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the a input component\r\n */\r\n public get a(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the additionalColor input component (named glow in the UI for now)\r\n */\r\n public get additionalColor(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the glow input component\r\n */\r\n public get glow(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n protected _getOutputString(state: NodeMaterialBuildState): string {\r\n return state.shaderLanguage === ShaderLanguage.WGSL ? \"fragmentOutputsColor\" : \"gl_FragColor\";\r\n }\r\n\r\n public override prepareDefines(defines: NodeMaterialDefines, nodeMaterial: NodeMaterial) {\r\n defines.setValue(this._linearDefineName, this.convertToLinearSpace, true);\r\n defines.setValue(this._gammaDefineName, this.convertToGammaSpace, true);\r\n defines.setValue(this._additionalColorDefineName, this.additionalColor.connectedPoint && nodeMaterial._useAdditionalColor, true);\r\n }\r\n\r\n public override bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n if ((this.useLogarithmicDepth || nodeMaterial.useLogarithmicDepth) && mesh) {\r\n BindLogDepth(undefined, effect, mesh.getScene());\r\n }\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n const rgba = this.rgba;\r\n const rgb = this.rgb;\r\n const a = this.a;\r\n const additionalColor = this.additionalColor;\r\n\r\n const isWebGPU = state.shaderLanguage === ShaderLanguage.WGSL;\r\n state.sharedData.hints.needAlphaBlending = rgba.isConnected || a.isConnected;\r\n state.sharedData.blocksWithDefines.push(this);\r\n\r\n if (this.useLogarithmicDepth || state.sharedData.nodeMaterial.useLogarithmicDepth) {\r\n state._emitUniformFromString(\"logarithmicDepthConstant\", NodeMaterialBlockConnectionPointTypes.Float);\r\n state._emitVaryingFromString(\"vFragmentDepth\", NodeMaterialBlockConnectionPointTypes.Float);\r\n state.sharedData.bindableBlocks.push(this);\r\n }\r\n\r\n if (additionalColor.connectedPoint) {\r\n state._excludeVariableName(\"useAdditionalColor\");\r\n state._emitUniformFromString(\"useAdditionalColor\", NodeMaterialBlockConnectionPointTypes.Float);\r\n this._additionalColorDefineName = state._getFreeDefineName(\"USEADDITIONALCOLOR\");\r\n }\r\n\r\n this._linearDefineName = state._getFreeDefineName(\"CONVERTTOLINEAR\");\r\n this._gammaDefineName = state._getFreeDefineName(\"CONVERTTOGAMMA\");\r\n\r\n const comments = `//${this.name}`;\r\n state._emitFunctionFromInclude(\"helperFunctions\", comments);\r\n\r\n const outputString = this._getOutputString(state);\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n state.compilationString += `var ${outputString} : vec4<f32>;\\r\\n`;\r\n }\r\n\r\n const vec4 = state._getShaderType(NodeMaterialBlockConnectionPointTypes.Vector4);\r\n\r\n if (additionalColor.connectedPoint) {\r\n let aValue = \"1.0\";\r\n\r\n if (a.connectedPoint) {\r\n aValue = a.associatedVariableName;\r\n }\r\n state.compilationString += `#ifdef ${this._additionalColorDefineName}\\n`;\r\n if (additionalColor.connectedPoint.type === NodeMaterialBlockConnectionPointTypes.Float) {\r\n state.compilationString += `${outputString} = ${vec4}(${additionalColor.associatedVariableName}, ${additionalColor.associatedVariableName}, ${additionalColor.associatedVariableName}, ${aValue});\\n`;\r\n } else {\r\n state.compilationString += `${outputString} = ${vec4}(${additionalColor.associatedVariableName}, ${aValue});\\n`;\r\n }\r\n state.compilationString += `#else\\n`;\r\n }\r\n\r\n if (rgba.connectedPoint) {\r\n if (a.isConnected) {\r\n state.compilationString += `${outputString} = ${vec4}(${rgba.associatedVariableName}.rgb, ${a.associatedVariableName});\\n`;\r\n } else {\r\n state.compilationString += `${outputString} = ${rgba.associatedVariableName};\\n`;\r\n }\r\n } else if (rgb.connectedPoint) {\r\n let aValue = \"1.0\";\r\n\r\n if (a.connectedPoint) {\r\n aValue = a.associatedVariableName;\r\n }\r\n\r\n if (rgb.connectedPoint.type === NodeMaterialBlockConnectionPointTypes.Float) {\r\n state.compilationString += `${outputString} = ${vec4}(${rgb.associatedVariableName}, ${rgb.associatedVariableName}, ${rgb.associatedVariableName}, ${aValue});\\n`;\r\n } else {\r\n state.compilationString += `${outputString} = ${vec4}(${rgb.associatedVariableName}, ${aValue});\\n`;\r\n }\r\n } else {\r\n state.sharedData.checks.notConnectedNonOptionalInputs.push(rgba);\r\n }\r\n\r\n if (additionalColor.connectedPoint) {\r\n state.compilationString += `#endif\\n`;\r\n }\r\n\r\n state.compilationString += `#ifdef ${this._linearDefineName}\\n`;\r\n state.compilationString += `${outputString} = toLinearSpace(${outputString});\\n`;\r\n state.compilationString += `#endif\\n`;\r\n\r\n state.compilationString += `#ifdef ${this._gammaDefineName}\\n`;\r\n state.compilationString += `${outputString} = toGammaSpace(${outputString});\\n`;\r\n state.compilationString += `#endif\\n`;\r\n\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n state.compilationString += `#if !defined(PREPASS)\\r\\n`;\r\n state.compilationString += `fragmentOutputs.color = ${outputString};\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n }\r\n\r\n if (this.useLogarithmicDepth || state.sharedData.nodeMaterial.useLogarithmicDepth) {\r\n const fragDepth = isWebGPU ? \"input.vFragmentDepth\" : \"vFragmentDepth\";\r\n const uniformP = isWebGPU ? \"uniforms.\" : \"\";\r\n const output = isWebGPU ? \"fragmentOutputs.fragDepth\" : \"gl_FragDepthEXT\";\r\n\r\n state.compilationString += `${output} = log2(${fragDepth}) * ${uniformP}logarithmicDepthConstant * 0.5;\\n`;\r\n }\r\n\r\n state.compilationString += `#if defined(PREPASS)\\r\\n`;\r\n state.compilationString += `${isWebGPU ? \"fragmentOutputs.fragData0\" : \"gl_FragData[0]\"} = ${outputString};\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n\r\n return this;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n let codeString = super._dumpPropertiesCode();\r\n codeString += `${this._codeVariableName}.convertToGammaSpace = ${this.convertToGammaSpace};\\n`;\r\n codeString += `${this._codeVariableName}.convertToLinearSpace = ${this.convertToLinearSpace};\\n`;\r\n codeString += `${this._codeVariableName}.useLogarithmicDepth = ${this.useLogarithmicDepth};\\n`;\r\n\r\n return codeString;\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.convertToGammaSpace = this.convertToGammaSpace;\r\n serializationObject.convertToLinearSpace = this.convertToLinearSpace;\r\n serializationObject.useLogarithmicDepth = this.useLogarithmicDepth;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.convertToGammaSpace = !!serializationObject.convertToGammaSpace;\r\n this.convertToLinearSpace = !!serializationObject.convertToLinearSpace;\r\n this.useLogarithmicDepth = serializationObject.useLogarithmicDepth ?? false;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.FragmentOutputBlock\", FragmentOutputBlock);\r\n"]}
|
|
@@ -1807,7 +1807,7 @@ export class NodeMaterial extends NodeMaterialBase {
|
|
|
1807
1807
|
this.editorData = source.editorData;
|
|
1808
1808
|
this.editorData.locations = locations;
|
|
1809
1809
|
}
|
|
1810
|
-
const blockMap =
|
|
1810
|
+
const blockMap = {};
|
|
1811
1811
|
for (const key in map) {
|
|
1812
1812
|
blockMap[key] = map[key].uniqueId;
|
|
1813
1813
|
}
|