@onerjs/core 8.28.6 → 8.28.8
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.js +1 -1
- package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.d.ts +55 -0
- package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.js +147 -0
- package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js +1 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/index.d.ts +1 -1
- package/FrameGraph/Node/Blocks/index.js +1 -1
- package/FrameGraph/Node/Blocks/index.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.js +1 -6
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/taaTask.d.ts +29 -0
- package/FrameGraph/Tasks/PostProcesses/taaTask.js +102 -0
- package/FrameGraph/Tasks/PostProcesses/taaTask.js.map +1 -0
- package/FrameGraph/frameGraphTextureManager.d.ts +9 -0
- package/FrameGraph/frameGraphTextureManager.js +15 -0
- package/FrameGraph/frameGraphTextureManager.js.map +1 -1
- package/FrameGraph/index.d.ts +1 -1
- package/FrameGraph/index.js +1 -1
- package/FrameGraph/index.js.map +1 -1
- package/Lights/Clustered/clusteredLightContainer.js +4 -3
- package/Lights/Clustered/clusteredLightContainer.js.map +1 -1
- package/Lights/pointLight.js +6 -4
- package/Lights/pointLight.js.map +1 -1
- package/Lights/rectAreaLight.js +6 -4
- package/Lights/rectAreaLight.js.map +1 -1
- package/Lights/spotLight.js +3 -2
- package/Lights/spotLight.js.map +1 -1
- package/Materials/Background/backgroundMaterial.js +1 -1
- package/Materials/Background/backgroundMaterial.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.d.ts +11 -0
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.js +74 -27
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.js.map +1 -1
- package/Materials/PBR/index.d.ts +1 -1
- package/Materials/PBR/index.js +1 -1
- package/Materials/PBR/index.js.map +1 -1
- package/Materials/PBR/{openPbrMaterial.d.ts → openpbrMaterial.d.ts} +17 -0
- package/Materials/PBR/{openPbrMaterial.js → openpbrMaterial.js} +33 -5
- package/Materials/PBR/openpbrMaterial.js.map +1 -0
- package/Materials/PBR/pbrBaseMaterial.js +1 -1
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Materials/material.d.ts +7 -3
- package/Materials/material.js +11 -7
- package/Materials/material.js.map +1 -1
- package/Materials/standardMaterial.js +1 -1
- package/Materials/standardMaterial.js.map +1 -1
- package/Maths/math.vector.d.ts +1 -1
- package/Maths/math.vector.js +1 -1
- package/Maths/math.vector.js.map +1 -1
- package/Meshes/mesh.js +9 -0
- package/Meshes/mesh.js.map +1 -1
- package/Morph/morphTargetManager.d.ts +2 -0
- package/Morph/morphTargetManager.js +19 -1
- package/Morph/morphTargetManager.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/taaMaterialManager.js +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/taaMaterialManager.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.d.ts +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.js +4 -22
- package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.js.map +1 -1
- package/PostProcesses/thinTAAPostProcess.d.ts +10 -5
- package/PostProcesses/thinTAAPostProcess.js +37 -7
- package/PostProcesses/thinTAAPostProcess.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.d.ts +1 -1
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.js +1 -1
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +1 -1
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
- package/Rendering/boundingBoxRenderer.js +6 -1
- package/Rendering/boundingBoxRenderer.js.map +1 -1
- package/Rendering/edgesRenderer.js +4 -0
- package/Rendering/edgesRenderer.js.map +1 -1
- package/Rendering/geometryBufferRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/gaussianSplatting.js +10 -2
- package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js +4 -4
- package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
- package/Shaders/gaussianSplattingDepth.fragment.d.ts +5 -0
- package/Shaders/gaussianSplattingDepth.fragment.js +11 -0
- package/Shaders/gaussianSplattingDepth.fragment.js.map +1 -0
- package/Shaders/gaussianSplattingDepth.vertex.d.ts +8 -0
- package/Shaders/gaussianSplattingDepth.vertex.js +17 -0
- package/Shaders/gaussianSplattingDepth.vertex.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/gaussianSplatting.js +7 -1
- package/ShadersWGSL/ShadersInclude/gaussianSplatting.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrBaseLayerData.js +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrBaseLayerData.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js +4 -4
- package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrFragmentSamplersDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrFragmentSamplersDeclaration.js.map +1 -1
- package/ShadersWGSL/gaussianSplattingDepth.fragment.d.ts +6 -0
- package/ShadersWGSL/gaussianSplattingDepth.fragment.js +17 -0
- package/ShadersWGSL/gaussianSplattingDepth.fragment.js.map +1 -0
- package/ShadersWGSL/gaussianSplattingDepth.vertex.d.ts +8 -0
- package/ShadersWGSL/gaussianSplattingDepth.vertex.js +19 -0
- package/ShadersWGSL/gaussianSplattingDepth.vertex.js.map +1 -0
- package/package.json +1 -1
- package/scene.d.ts +3 -1
- package/scene.js +6 -5
- package/scene.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/taaObjectRendererBlock.d.ts +0 -48
- package/FrameGraph/Node/Blocks/Rendering/taaObjectRendererBlock.js +0 -119
- package/FrameGraph/Node/Blocks/Rendering/taaObjectRendererBlock.js.map +0 -1
- package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.d.ts +0 -24
- package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js +0 -109
- package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js.map +0 -1
- package/Materials/PBR/openPbrMaterial.js.map +0 -1
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import type { Scene, FrameGraph } from "../../../../index.js";
|
|
2
|
-
import { FrameGraphTAAObjectRendererTask } from "../../../Tasks/Rendering/taaObjectRendererTask.js";
|
|
3
|
-
import { NodeRenderGraphBaseObjectRendererBlock } from "./baseObjectRendererBlock.js";
|
|
4
|
-
/**
|
|
5
|
-
* Block that render objects with temporal anti-aliasing to a render target
|
|
6
|
-
*/
|
|
7
|
-
export declare class NodeRenderGraphTAAObjectRendererBlock extends NodeRenderGraphBaseObjectRendererBlock {
|
|
8
|
-
protected _frameGraphTask: FrameGraphTAAObjectRendererTask;
|
|
9
|
-
/**
|
|
10
|
-
* Gets the frame graph task associated with this block
|
|
11
|
-
*/
|
|
12
|
-
get task(): FrameGraphTAAObjectRendererTask;
|
|
13
|
-
/**
|
|
14
|
-
* Create a new NodeRenderGraphTAAObjectRendererBlock
|
|
15
|
-
* @param name defines the block name
|
|
16
|
-
* @param frameGraph defines the hosting frame graph
|
|
17
|
-
* @param scene defines the hosting scene
|
|
18
|
-
* @param doNotChangeAspectRatio True (default) to not change the aspect ratio of the scene in the RTT
|
|
19
|
-
*/
|
|
20
|
-
constructor(name: string, frameGraph: FrameGraph, scene: Scene, doNotChangeAspectRatio?: boolean);
|
|
21
|
-
protected _createFrameGraphObject(): void;
|
|
22
|
-
protected _saveState(state: {
|
|
23
|
-
[key: string]: any;
|
|
24
|
-
}): void;
|
|
25
|
-
protected _restoreState(state: {
|
|
26
|
-
[key: string]: any;
|
|
27
|
-
}): void;
|
|
28
|
-
/** Number of accumulated samples */
|
|
29
|
-
get samples(): number;
|
|
30
|
-
set samples(value: number);
|
|
31
|
-
/** The factor used to blend the history frame with current frame */
|
|
32
|
-
get factor(): number;
|
|
33
|
-
set factor(value: number);
|
|
34
|
-
/** Indicates if depth testing must be enabled or disabled */
|
|
35
|
-
get disableOnCameraMove(): boolean;
|
|
36
|
-
set disableOnCameraMove(value: boolean);
|
|
37
|
-
/** Indicates if TAA must be enabled or disabled */
|
|
38
|
-
get disableTAA(): boolean;
|
|
39
|
-
set disableTAA(value: boolean);
|
|
40
|
-
/**
|
|
41
|
-
* Gets the current class name
|
|
42
|
-
* @returns the class name
|
|
43
|
-
*/
|
|
44
|
-
getClassName(): string;
|
|
45
|
-
protected _dumpPropertiesCode(): string;
|
|
46
|
-
serialize(): any;
|
|
47
|
-
_deserialize(serializationObject: any): void;
|
|
48
|
-
}
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "../../../../tslib.es6.js";
|
|
2
|
-
import { RegisterClass } from "../../../../Misc/typeStore.js";
|
|
3
|
-
import { editableInPropertyPage } from "../../../../Decorators/nodeDecorator.js";
|
|
4
|
-
import { FrameGraphTAAObjectRendererTask } from "../../../Tasks/Rendering/taaObjectRendererTask.js";
|
|
5
|
-
import { NodeRenderGraphBaseObjectRendererBlock } from "./baseObjectRendererBlock.js";
|
|
6
|
-
/**
|
|
7
|
-
* Block that render objects with temporal anti-aliasing to a render target
|
|
8
|
-
*/
|
|
9
|
-
export class NodeRenderGraphTAAObjectRendererBlock extends NodeRenderGraphBaseObjectRendererBlock {
|
|
10
|
-
/**
|
|
11
|
-
* Gets the frame graph task associated with this block
|
|
12
|
-
*/
|
|
13
|
-
get task() {
|
|
14
|
-
return this._frameGraphTask;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Create a new NodeRenderGraphTAAObjectRendererBlock
|
|
18
|
-
* @param name defines the block name
|
|
19
|
-
* @param frameGraph defines the hosting frame graph
|
|
20
|
-
* @param scene defines the hosting scene
|
|
21
|
-
* @param doNotChangeAspectRatio True (default) to not change the aspect ratio of the scene in the RTT
|
|
22
|
-
*/
|
|
23
|
-
constructor(name, frameGraph, scene, doNotChangeAspectRatio = true) {
|
|
24
|
-
super(name, frameGraph, scene);
|
|
25
|
-
this._additionalConstructionParameters = [doNotChangeAspectRatio, false];
|
|
26
|
-
this._frameGraphTask = new FrameGraphTAAObjectRendererTask(this.name, frameGraph, scene, { doNotChangeAspectRatio });
|
|
27
|
-
}
|
|
28
|
-
_createFrameGraphObject() {
|
|
29
|
-
this._frameGraphTask = new FrameGraphTAAObjectRendererTask(this.name, this._frameGraph, this._scene, {
|
|
30
|
-
doNotChangeAspectRatio: this._additionalConstructionParameters[0],
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
_saveState(state) {
|
|
34
|
-
super._saveState(state);
|
|
35
|
-
state.samples = this.samples;
|
|
36
|
-
state.factor = this.factor;
|
|
37
|
-
state.disableOnCameraMove = this.disableOnCameraMove;
|
|
38
|
-
state.disableTAA = this.disableTAA;
|
|
39
|
-
}
|
|
40
|
-
_restoreState(state) {
|
|
41
|
-
super._restoreState(state);
|
|
42
|
-
this.samples = state.samples;
|
|
43
|
-
this.factor = state.factor;
|
|
44
|
-
this.disableOnCameraMove = state.disableOnCameraMove;
|
|
45
|
-
this.disableTAA = state.disableTAA;
|
|
46
|
-
}
|
|
47
|
-
/** Number of accumulated samples */
|
|
48
|
-
get samples() {
|
|
49
|
-
return this._frameGraphTask.postProcess.samples;
|
|
50
|
-
}
|
|
51
|
-
set samples(value) {
|
|
52
|
-
this._frameGraphTask.postProcess.samples = value;
|
|
53
|
-
}
|
|
54
|
-
/** The factor used to blend the history frame with current frame */
|
|
55
|
-
get factor() {
|
|
56
|
-
return this._frameGraphTask.postProcess.factor;
|
|
57
|
-
}
|
|
58
|
-
set factor(value) {
|
|
59
|
-
this._frameGraphTask.postProcess.factor = value;
|
|
60
|
-
}
|
|
61
|
-
/** Indicates if depth testing must be enabled or disabled */
|
|
62
|
-
get disableOnCameraMove() {
|
|
63
|
-
return this._frameGraphTask.postProcess.disableOnCameraMove;
|
|
64
|
-
}
|
|
65
|
-
set disableOnCameraMove(value) {
|
|
66
|
-
this._frameGraphTask.postProcess.disableOnCameraMove = value;
|
|
67
|
-
}
|
|
68
|
-
/** Indicates if TAA must be enabled or disabled */
|
|
69
|
-
get disableTAA() {
|
|
70
|
-
return this._frameGraphTask.postProcess.disabled;
|
|
71
|
-
}
|
|
72
|
-
set disableTAA(value) {
|
|
73
|
-
this._frameGraphTask.postProcess.disabled = value;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Gets the current class name
|
|
77
|
-
* @returns the class name
|
|
78
|
-
*/
|
|
79
|
-
getClassName() {
|
|
80
|
-
return "NodeRenderGraphTAAObjectRendererBlock";
|
|
81
|
-
}
|
|
82
|
-
_dumpPropertiesCode() {
|
|
83
|
-
const codes = [];
|
|
84
|
-
codes.push(`${this._codeVariableName}.samples = ${this.samples};`);
|
|
85
|
-
codes.push(`${this._codeVariableName}.factor = ${this.factor};`);
|
|
86
|
-
codes.push(`${this._codeVariableName}.disableOnCameraMove = ${this.disableOnCameraMove};`);
|
|
87
|
-
codes.push(`${this._codeVariableName}.disableTAA = ${this.disableTAA};`);
|
|
88
|
-
return super._dumpPropertiesCode() + codes.join("\n");
|
|
89
|
-
}
|
|
90
|
-
serialize() {
|
|
91
|
-
const serializationObject = super.serialize();
|
|
92
|
-
serializationObject.samples = this.samples;
|
|
93
|
-
serializationObject.factor = this.factor;
|
|
94
|
-
serializationObject.disableOnCameraMove = this.disableOnCameraMove;
|
|
95
|
-
serializationObject.disableTAA = this.disableTAA;
|
|
96
|
-
return serializationObject;
|
|
97
|
-
}
|
|
98
|
-
_deserialize(serializationObject) {
|
|
99
|
-
super._deserialize(serializationObject);
|
|
100
|
-
this.samples = serializationObject.samples;
|
|
101
|
-
this.factor = serializationObject.factor;
|
|
102
|
-
this.disableOnCameraMove = serializationObject.disableOnCameraMove;
|
|
103
|
-
this.disableTAA = serializationObject.disableTAA;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
__decorate([
|
|
107
|
-
editableInPropertyPage("Samples", 2 /* PropertyTypeForEdition.Int */, "TEMPORAL ANTI-ALIASING")
|
|
108
|
-
], NodeRenderGraphTAAObjectRendererBlock.prototype, "samples", null);
|
|
109
|
-
__decorate([
|
|
110
|
-
editableInPropertyPage("Factor", 1 /* PropertyTypeForEdition.Float */, "TEMPORAL ANTI-ALIASING")
|
|
111
|
-
], NodeRenderGraphTAAObjectRendererBlock.prototype, "factor", null);
|
|
112
|
-
__decorate([
|
|
113
|
-
editableInPropertyPage("Disable on camera move", 0 /* PropertyTypeForEdition.Boolean */, "TEMPORAL ANTI-ALIASING")
|
|
114
|
-
], NodeRenderGraphTAAObjectRendererBlock.prototype, "disableOnCameraMove", null);
|
|
115
|
-
__decorate([
|
|
116
|
-
editableInPropertyPage("Disable TAA", 0 /* PropertyTypeForEdition.Boolean */, "TEMPORAL ANTI-ALIASING")
|
|
117
|
-
], NodeRenderGraphTAAObjectRendererBlock.prototype, "disableTAA", null);
|
|
118
|
-
RegisterClass("BABYLON.NodeRenderGraphTAAObjectRendererBlock", NodeRenderGraphTAAObjectRendererBlock);
|
|
119
|
-
//# sourceMappingURL=taaObjectRendererBlock.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"taaObjectRendererBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/Rendering/taaObjectRendererBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Scene, FrameGraph } from \"core/index\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport { FrameGraphTAAObjectRendererTask } from \"core/FrameGraph/Tasks/Rendering/taaObjectRendererTask\";\r\nimport { NodeRenderGraphBaseObjectRendererBlock } from \"./baseObjectRendererBlock\";\r\n\r\n/**\r\n * Block that render objects with temporal anti-aliasing to a render target\r\n */\r\nexport class NodeRenderGraphTAAObjectRendererBlock extends NodeRenderGraphBaseObjectRendererBlock {\r\n protected override _frameGraphTask: FrameGraphTAAObjectRendererTask;\r\n\r\n /**\r\n * Gets the frame graph task associated with this block\r\n */\r\n public override get task() {\r\n return this._frameGraphTask;\r\n }\r\n\r\n /**\r\n * Create a new NodeRenderGraphTAAObjectRendererBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n * @param doNotChangeAspectRatio True (default) to not change the aspect ratio of the scene in the RTT\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene, doNotChangeAspectRatio = true) {\r\n super(name, frameGraph, scene);\r\n\r\n this._additionalConstructionParameters = [doNotChangeAspectRatio, false];\r\n\r\n this._frameGraphTask = new FrameGraphTAAObjectRendererTask(this.name, frameGraph, scene, { doNotChangeAspectRatio });\r\n }\r\n\r\n protected override _createFrameGraphObject(): void {\r\n this._frameGraphTask = new FrameGraphTAAObjectRendererTask(this.name, this._frameGraph, this._scene, {\r\n doNotChangeAspectRatio: this._additionalConstructionParameters![0] as boolean,\r\n });\r\n }\r\n\r\n protected override _saveState(state: { [key: string]: any }) {\r\n super._saveState(state);\r\n state.samples = this.samples;\r\n state.factor = this.factor;\r\n state.disableOnCameraMove = this.disableOnCameraMove;\r\n state.disableTAA = this.disableTAA;\r\n }\r\n\r\n protected override _restoreState(state: { [key: string]: any }) {\r\n super._restoreState(state);\r\n this.samples = state.samples;\r\n this.factor = state.factor;\r\n this.disableOnCameraMove = state.disableOnCameraMove;\r\n this.disableTAA = state.disableTAA;\r\n }\r\n\r\n /** Number of accumulated samples */\r\n @editableInPropertyPage(\"Samples\", PropertyTypeForEdition.Int, \"TEMPORAL ANTI-ALIASING\")\r\n public get samples() {\r\n return this._frameGraphTask.postProcess.samples;\r\n }\r\n\r\n public set samples(value: number) {\r\n this._frameGraphTask.postProcess.samples = value;\r\n }\r\n\r\n /** The factor used to blend the history frame with current frame */\r\n @editableInPropertyPage(\"Factor\", PropertyTypeForEdition.Float, \"TEMPORAL ANTI-ALIASING\")\r\n public get factor() {\r\n return this._frameGraphTask.postProcess.factor;\r\n }\r\n\r\n public set factor(value: number) {\r\n this._frameGraphTask.postProcess.factor = value;\r\n }\r\n\r\n /** Indicates if depth testing must be enabled or disabled */\r\n @editableInPropertyPage(\"Disable on camera move\", PropertyTypeForEdition.Boolean, \"TEMPORAL ANTI-ALIASING\")\r\n public get disableOnCameraMove() {\r\n return this._frameGraphTask.postProcess.disableOnCameraMove;\r\n }\r\n\r\n public set disableOnCameraMove(value: boolean) {\r\n this._frameGraphTask.postProcess.disableOnCameraMove = value;\r\n }\r\n\r\n /** Indicates if TAA must be enabled or disabled */\r\n @editableInPropertyPage(\"Disable TAA\", PropertyTypeForEdition.Boolean, \"TEMPORAL ANTI-ALIASING\")\r\n public get disableTAA() {\r\n return this._frameGraphTask.postProcess.disabled;\r\n }\r\n\r\n public set disableTAA(value: boolean) {\r\n this._frameGraphTask.postProcess.disabled = value;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphTAAObjectRendererBlock\";\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.samples = ${this.samples};`);\r\n codes.push(`${this._codeVariableName}.factor = ${this.factor};`);\r\n codes.push(`${this._codeVariableName}.disableOnCameraMove = ${this.disableOnCameraMove};`);\r\n codes.push(`${this._codeVariableName}.disableTAA = ${this.disableTAA};`);\r\n return super._dumpPropertiesCode() + codes.join(\"\\n\");\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.samples = this.samples;\r\n serializationObject.factor = this.factor;\r\n serializationObject.disableOnCameraMove = this.disableOnCameraMove;\r\n serializationObject.disableTAA = this.disableTAA;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n this.samples = serializationObject.samples;\r\n this.factor = serializationObject.factor;\r\n this.disableOnCameraMove = serializationObject.disableOnCameraMove;\r\n this.disableTAA = serializationObject.disableTAA;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.NodeRenderGraphTAAObjectRendererBlock\", NodeRenderGraphTAAObjectRendererBlock);\r\n"]}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { FrameGraph, Scene, DrawWrapper, ObjectRendererOptions, FrameGraphRenderPass, Observer, ObjectRenderer } from "../../../index.js";
|
|
2
|
-
import { FrameGraphObjectRendererTask } from "./objectRendererTask.js";
|
|
3
|
-
import { ThinTAAPostProcess } from "../../../PostProcesses/thinTAAPostProcess.js";
|
|
4
|
-
/**
|
|
5
|
-
* Task used to render objects to a texture with Temporal Anti-Aliasing (TAA).
|
|
6
|
-
*/
|
|
7
|
-
export declare class FrameGraphTAAObjectRendererTask extends FrameGraphObjectRendererTask {
|
|
8
|
-
/**
|
|
9
|
-
* The TAA post process.
|
|
10
|
-
*/
|
|
11
|
-
readonly postProcess: ThinTAAPostProcess;
|
|
12
|
-
protected readonly _postProcessDrawWrapper: DrawWrapper;
|
|
13
|
-
protected _initRenderingObserver: Observer<ObjectRenderer>;
|
|
14
|
-
/**
|
|
15
|
-
* Constructs a new TAA object renderer task.
|
|
16
|
-
* @param name The name of the task
|
|
17
|
-
* @param frameGraph The frame graph the task belongs to.
|
|
18
|
-
* @param scene The scene the frame graph is associated with.
|
|
19
|
-
* @param options The options of the object renderer.
|
|
20
|
-
*/
|
|
21
|
-
constructor(name: string, frameGraph: FrameGraph, scene: Scene, options?: ObjectRendererOptions);
|
|
22
|
-
record(): FrameGraphRenderPass;
|
|
23
|
-
dispose(): void;
|
|
24
|
-
}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { FrameGraphObjectRendererTask } from "./objectRendererTask.js";
|
|
2
|
-
import { ThinTAAPostProcess } from "../../../PostProcesses/thinTAAPostProcess.js";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Task used to render objects to a texture with Temporal Anti-Aliasing (TAA).
|
|
6
|
-
*/
|
|
7
|
-
export class FrameGraphTAAObjectRendererTask extends FrameGraphObjectRendererTask {
|
|
8
|
-
/**
|
|
9
|
-
* Constructs a new TAA object renderer task.
|
|
10
|
-
* @param name The name of the task
|
|
11
|
-
* @param frameGraph The frame graph the task belongs to.
|
|
12
|
-
* @param scene The scene the frame graph is associated with.
|
|
13
|
-
* @param options The options of the object renderer.
|
|
14
|
-
*/
|
|
15
|
-
constructor(name, frameGraph, scene, options) {
|
|
16
|
-
super(name, frameGraph, scene, options);
|
|
17
|
-
this.postProcess = new ThinTAAPostProcess(`${name} post-process`, scene.getEngine());
|
|
18
|
-
this._postProcessDrawWrapper = this.postProcess.drawWrapper;
|
|
19
|
-
this._renderer.dontSetTransformationMatrix = true;
|
|
20
|
-
}
|
|
21
|
-
record() {
|
|
22
|
-
if (this.targetTexture === undefined || this.objectList === undefined) {
|
|
23
|
-
throw new Error(`FrameGraphTAAObjectRendererTask ${this.name}: destinationTexture and objectList are required`);
|
|
24
|
-
}
|
|
25
|
-
const textureManager = this._frameGraph.textureManager;
|
|
26
|
-
const targetTextures = Array.isArray(this.targetTexture) ? this.targetTexture : [this.targetTexture];
|
|
27
|
-
if (textureManager.isBackbuffer(targetTextures[0]) || (this.depthTexture !== undefined && textureManager.isBackbuffer(this.depthTexture))) {
|
|
28
|
-
throw new Error(`FrameGraphTAAObjectRendererTask ${this.name}: the back buffer color/depth textures are not allowed. Use regular textures instead.`);
|
|
29
|
-
}
|
|
30
|
-
// Make sure the renderList / particleSystemList are set when FrameGraphObjectRendererTask.isReady() is called!
|
|
31
|
-
this._renderer.renderList = this.objectList.meshes;
|
|
32
|
-
this._renderer.particleSystemList = this.objectList.particleSystems;
|
|
33
|
-
const outputTextureDescription = textureManager.getTextureDescription(targetTextures[0]);
|
|
34
|
-
let depthEnabled = false;
|
|
35
|
-
if (this.depthTexture !== undefined) {
|
|
36
|
-
const depthTextureDescription = textureManager.getTextureDescription(this.depthTexture);
|
|
37
|
-
if (depthTextureDescription.options.samples !== outputTextureDescription.options.samples) {
|
|
38
|
-
throw new Error(`FrameGraphTAAObjectRendererTask ${this.name}: the depth texture and the output texture must have the same number of samples`);
|
|
39
|
-
}
|
|
40
|
-
depthEnabled = true;
|
|
41
|
-
}
|
|
42
|
-
this.postProcess.camera = this.camera;
|
|
43
|
-
this.postProcess.textureWidth = outputTextureDescription.size.width;
|
|
44
|
-
this.postProcess.textureHeight = outputTextureDescription.size.height;
|
|
45
|
-
const textureCreationOptions = {
|
|
46
|
-
size: outputTextureDescription.size,
|
|
47
|
-
options: {
|
|
48
|
-
createMipMaps: outputTextureDescription.options.createMipMaps,
|
|
49
|
-
types: [2],
|
|
50
|
-
formats: [5],
|
|
51
|
-
samples: 1,
|
|
52
|
-
useSRGBBuffers: [false],
|
|
53
|
-
creationFlags: [0],
|
|
54
|
-
labels: [""],
|
|
55
|
-
},
|
|
56
|
-
sizeIsPercentage: false,
|
|
57
|
-
isHistoryTexture: true,
|
|
58
|
-
};
|
|
59
|
-
const pingPongHandle = textureManager.createRenderTargetTexture(`${this.name} history`, textureCreationOptions);
|
|
60
|
-
textureManager.resolveDanglingHandle(this.outputTexture, pingPongHandle);
|
|
61
|
-
if (this.depthTexture !== undefined) {
|
|
62
|
-
textureManager.resolveDanglingHandle(this.outputDepthTexture, this.depthTexture);
|
|
63
|
-
}
|
|
64
|
-
this._textureWidth = outputTextureDescription.size.width;
|
|
65
|
-
this._textureHeight = outputTextureDescription.size.height;
|
|
66
|
-
let pingPongRenderTargetWrapper;
|
|
67
|
-
this._setLightsForShadow();
|
|
68
|
-
this._renderer.onInitRenderingObservable.remove(this._initRenderingObserver);
|
|
69
|
-
this._initRenderingObserver = this._renderer.onInitRenderingObservable.add(() => {
|
|
70
|
-
// We pass false to this.camera.getProjectionMatrix() when TAA is enabled to avoid overwriting the projection matrix calculated by the call to this.postProcess.updateProjectionMatrix()
|
|
71
|
-
this._scene.setTransformMatrix(this.camera.getViewMatrix(), this.camera.getProjectionMatrix(this.postProcess.disabled));
|
|
72
|
-
});
|
|
73
|
-
const pass = this._frameGraph.addRenderPass(this.name);
|
|
74
|
-
pass.setRenderTarget(this.targetTexture);
|
|
75
|
-
pass.setRenderTargetDepth(this.depthTexture);
|
|
76
|
-
pass.setExecuteFunc((context) => {
|
|
77
|
-
this._renderer.renderList = this.objectList.meshes;
|
|
78
|
-
this._renderer.particleSystemList = this.objectList.particleSystems;
|
|
79
|
-
this.postProcess.updateProjectionMatrix();
|
|
80
|
-
context.setDepthStates(this.depthTest && depthEnabled, this.depthWrite && depthEnabled);
|
|
81
|
-
context.render(this._renderer, this._textureWidth, this._textureHeight);
|
|
82
|
-
this._scene.activeCamera = null;
|
|
83
|
-
pingPongRenderTargetWrapper = pingPongRenderTargetWrapper || context.createRenderTarget(`${this.name} ping/pong`, pingPongHandle);
|
|
84
|
-
context.bindRenderTarget(pingPongRenderTargetWrapper, "frame graph - TAA merge with history texture");
|
|
85
|
-
if (!this.postProcess.disabled) {
|
|
86
|
-
context.applyFullScreenEffect(this._postProcessDrawWrapper, () => {
|
|
87
|
-
this.postProcess.bind();
|
|
88
|
-
context.bindTextureHandle(this._postProcessDrawWrapper.effect, "textureSampler", targetTextures[0]);
|
|
89
|
-
context.bindTextureHandle(this._postProcessDrawWrapper.effect, "historySampler", pingPongHandle);
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
context.copyTexture(targetTextures[0]);
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
const passDisabled = this._frameGraph.addRenderPass(this.name + "_disabled", true);
|
|
97
|
-
passDisabled.setRenderTarget(this.outputTexture);
|
|
98
|
-
passDisabled.setRenderTargetDepth(this.depthTexture);
|
|
99
|
-
passDisabled.setExecuteFunc((context) => {
|
|
100
|
-
context.copyTexture(targetTextures[0]);
|
|
101
|
-
});
|
|
102
|
-
return pass;
|
|
103
|
-
}
|
|
104
|
-
dispose() {
|
|
105
|
-
this._renderer.onInitRenderingObservable.remove(this._initRenderingObserver);
|
|
106
|
-
super.dispose();
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
//# sourceMappingURL=taaObjectRendererTask.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"taaObjectRendererTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/Rendering/taaObjectRendererTask.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\r\n FrameGraph,\r\n Scene,\r\n DrawWrapper,\r\n FrameGraphTextureCreationOptions,\r\n ObjectRendererOptions,\r\n FrameGraphRenderTarget,\r\n FrameGraphRenderPass,\r\n Observer,\r\n ObjectRenderer,\r\n} from \"core/index\";\r\nimport { FrameGraphObjectRendererTask } from \"./objectRendererTask\";\r\nimport { ThinTAAPostProcess } from \"core/PostProcesses/thinTAAPostProcess\";\r\nimport { Constants } from \"core/Engines/constants\";\r\n\r\n/**\r\n * Task used to render objects to a texture with Temporal Anti-Aliasing (TAA).\r\n */\r\nexport class FrameGraphTAAObjectRendererTask extends FrameGraphObjectRendererTask {\r\n /**\r\n * The TAA post process.\r\n */\r\n public readonly postProcess: ThinTAAPostProcess;\r\n\r\n protected readonly _postProcessDrawWrapper: DrawWrapper;\r\n protected _initRenderingObserver: Observer<ObjectRenderer>;\r\n\r\n /**\r\n * Constructs a new TAA object renderer task.\r\n * @param name The name of the task\r\n * @param frameGraph The frame graph the task belongs to.\r\n * @param scene The scene the frame graph is associated with.\r\n * @param options The options of the object renderer.\r\n */\r\n constructor(name: string, frameGraph: FrameGraph, scene: Scene, options?: ObjectRendererOptions) {\r\n super(name, frameGraph, scene, options);\r\n\r\n this.postProcess = new ThinTAAPostProcess(`${name} post-process`, scene.getEngine());\r\n this._postProcessDrawWrapper = this.postProcess.drawWrapper;\r\n this._renderer.dontSetTransformationMatrix = true;\r\n }\r\n\r\n public override record(): FrameGraphRenderPass {\r\n if (this.targetTexture === undefined || this.objectList === undefined) {\r\n throw new Error(`FrameGraphTAAObjectRendererTask ${this.name}: destinationTexture and objectList are required`);\r\n }\r\n\r\n const textureManager = this._frameGraph.textureManager;\r\n const targetTextures = Array.isArray(this.targetTexture) ? this.targetTexture : [this.targetTexture];\r\n\r\n if (textureManager.isBackbuffer(targetTextures[0]) || (this.depthTexture !== undefined && textureManager.isBackbuffer(this.depthTexture))) {\r\n throw new Error(`FrameGraphTAAObjectRendererTask ${this.name}: the back buffer color/depth textures are not allowed. Use regular textures instead.`);\r\n }\r\n\r\n // Make sure the renderList / particleSystemList are set when FrameGraphObjectRendererTask.isReady() is called!\r\n this._renderer.renderList = this.objectList.meshes;\r\n this._renderer.particleSystemList = this.objectList.particleSystems;\r\n\r\n const outputTextureDescription = textureManager.getTextureDescription(targetTextures[0]);\r\n\r\n let depthEnabled = false;\r\n\r\n if (this.depthTexture !== undefined) {\r\n const depthTextureDescription = textureManager.getTextureDescription(this.depthTexture);\r\n if (depthTextureDescription.options.samples !== outputTextureDescription.options.samples) {\r\n throw new Error(`FrameGraphTAAObjectRendererTask ${this.name}: the depth texture and the output texture must have the same number of samples`);\r\n }\r\n\r\n depthEnabled = true;\r\n }\r\n\r\n this.postProcess.camera = this.camera;\r\n this.postProcess.textureWidth = outputTextureDescription.size.width;\r\n this.postProcess.textureHeight = outputTextureDescription.size.height;\r\n\r\n const textureCreationOptions: FrameGraphTextureCreationOptions = {\r\n size: outputTextureDescription.size,\r\n options: {\r\n createMipMaps: outputTextureDescription.options.createMipMaps,\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`, textureCreationOptions);\r\n\r\n textureManager.resolveDanglingHandle(this.outputTexture, pingPongHandle);\r\n if (this.depthTexture !== undefined) {\r\n textureManager.resolveDanglingHandle(this.outputDepthTexture, this.depthTexture);\r\n }\r\n\r\n this._textureWidth = outputTextureDescription.size.width;\r\n this._textureHeight = outputTextureDescription.size.height;\r\n\r\n let pingPongRenderTargetWrapper: FrameGraphRenderTarget | undefined;\r\n\r\n this._setLightsForShadow();\r\n\r\n this._renderer.onInitRenderingObservable.remove(this._initRenderingObserver);\r\n\r\n this._initRenderingObserver = this._renderer.onInitRenderingObservable.add(() => {\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.updateProjectionMatrix()\r\n this._scene.setTransformMatrix(this.camera.getViewMatrix(), this.camera.getProjectionMatrix(this.postProcess.disabled));\r\n });\r\n\r\n const pass = this._frameGraph.addRenderPass(this.name);\r\n\r\n pass.setRenderTarget(this.targetTexture);\r\n pass.setRenderTargetDepth(this.depthTexture);\r\n pass.setExecuteFunc((context) => {\r\n this._renderer.renderList = this.objectList.meshes;\r\n this._renderer.particleSystemList = this.objectList.particleSystems;\r\n\r\n this.postProcess.updateProjectionMatrix();\r\n\r\n context.setDepthStates(this.depthTest && depthEnabled, this.depthWrite && depthEnabled);\r\n\r\n context.render(this._renderer, this._textureWidth, this._textureHeight);\r\n\r\n this._scene.activeCamera = null;\r\n\r\n pingPongRenderTargetWrapper = pingPongRenderTargetWrapper || context.createRenderTarget(`${this.name} ping/pong`, pingPongHandle);\r\n\r\n context.bindRenderTarget(pingPongRenderTargetWrapper, \"frame graph - TAA merge with history texture\");\r\n\r\n if (!this.postProcess.disabled) {\r\n context.applyFullScreenEffect(this._postProcessDrawWrapper, () => {\r\n this.postProcess.bind();\r\n context.bindTextureHandle(this._postProcessDrawWrapper.effect!, \"textureSampler\", targetTextures[0]);\r\n context.bindTextureHandle(this._postProcessDrawWrapper.effect!, \"historySampler\", pingPongHandle);\r\n });\r\n } else {\r\n context.copyTexture(targetTextures[0]);\r\n }\r\n });\r\n\r\n const passDisabled = this._frameGraph.addRenderPass(this.name + \"_disabled\", true);\r\n\r\n passDisabled.setRenderTarget(this.outputTexture);\r\n passDisabled.setRenderTargetDepth(this.depthTexture);\r\n passDisabled.setExecuteFunc((context) => {\r\n context.copyTexture(targetTextures[0]);\r\n });\r\n\r\n return pass;\r\n }\r\n\r\n public override dispose() {\r\n this._renderer.onInitRenderingObservable.remove(this._initRenderingObserver);\r\n super.dispose();\r\n }\r\n}\r\n"]}
|