@babylonjs/core 7.39.1 → 7.39.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Cameras/arcRotateCamera.d.ts +1 -1
- package/Cameras/arcRotateCamera.js.map +1 -1
- package/Debug/directionalLightFrustumViewer.d.ts +2 -1
- package/Debug/directionalLightFrustumViewer.js +4 -3
- package/Debug/directionalLightFrustumViewer.js.map +1 -1
- package/Engines/Extensions/engine.multiRender.js +1 -0
- package/Engines/Extensions/engine.multiRender.js.map +1 -1
- package/Engines/abstractEngine.js +2 -2
- package/Engines/abstractEngine.js.map +1 -1
- package/Engines/constants.d.ts +8 -0
- package/Engines/constants.js +8 -0
- package/Engines/constants.js.map +1 -1
- package/Engines/thinEngine.js +9 -3
- package/Engines/thinEngine.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.js +3 -9
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.js +3 -9
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.js +3 -9
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.js +5 -17
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.js +5 -17
- package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.js +3 -9
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.d.ts +6 -1
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +40 -20
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.d.ts +77 -0
- package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js +250 -0
- package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.d.ts +57 -0
- package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.js +169 -0
- package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/Rendering/cullObjectsBlock.js +3 -9
- package/FrameGraph/Node/Blocks/Rendering/cullObjectsBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js +4 -13
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.d.ts +6 -0
- package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.js +27 -0
- package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.d.ts +19 -0
- package/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.js +28 -0
- package/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/Textures/clearBlock.js +3 -9
- package/FrameGraph/Node/Blocks/Textures/clearBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.js +3 -9
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Textures/generateMipmapsBlock.js +2 -5
- package/FrameGraph/Node/Blocks/Textures/generateMipmapsBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/executeBlock.d.ts +29 -0
- package/FrameGraph/Node/Blocks/executeBlock.js +43 -0
- package/FrameGraph/Node/Blocks/executeBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/index.d.ts +4 -0
- package/FrameGraph/Node/Blocks/index.js +4 -0
- package/FrameGraph/Node/Blocks/index.js.map +1 -1
- package/FrameGraph/Node/Blocks/inputBlock.d.ts +7 -2
- package/FrameGraph/Node/Blocks/inputBlock.js +13 -0
- package/FrameGraph/Node/Blocks/inputBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/resourceContainerBlock.d.ts +55 -0
- package/FrameGraph/Node/Blocks/resourceContainerBlock.js +97 -0
- package/FrameGraph/Node/Blocks/resourceContainerBlock.js.map +1 -0
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.d.ts +13 -10
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.js +11 -4
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraph.js +32 -4
- package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraphBlock.d.ts +1 -0
- package/FrameGraph/Node/nodeRenderGraphBlock.js +11 -0
- package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraphBlockConnectionPoint.d.ts +18 -0
- package/FrameGraph/Node/nodeRenderGraphBlockConnectionPoint.js +24 -0
- package/FrameGraph/Node/nodeRenderGraphBlockConnectionPoint.js.map +1 -1
- package/FrameGraph/Passes/cullPass.d.ts +1 -1
- package/FrameGraph/Passes/cullPass.js.map +1 -1
- package/FrameGraph/Tasks/Misc/executeTask.d.ts +22 -0
- package/FrameGraph/Tasks/Misc/executeTask.js +28 -0
- package/FrameGraph/Tasks/Misc/executeTask.js.map +1 -0
- package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.d.ts +72 -0
- package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js +183 -0
- package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js.map +1 -0
- package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +16 -5
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js +46 -0
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.d.ts +107 -0
- package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js +264 -0
- package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js.map +1 -0
- package/FrameGraph/Tasks/Texture/clearTextureTask.js +7 -0
- package/FrameGraph/Tasks/Texture/clearTextureTask.js.map +1 -1
- package/FrameGraph/frameGraph.d.ts +9 -0
- package/FrameGraph/frameGraph.js +12 -3
- package/FrameGraph/frameGraph.js.map +1 -1
- package/FrameGraph/frameGraphTextureManager.js +4 -1
- package/FrameGraph/frameGraphTextureManager.js.map +1 -1
- package/FrameGraph/index.d.ts +5 -0
- package/FrameGraph/index.js +5 -0
- package/FrameGraph/index.js.map +1 -1
- package/Inputs/scene.inputManager.d.ts +1 -1
- package/Inputs/scene.inputManager.js +8 -1
- package/Inputs/scene.inputManager.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.d.ts +1 -1
- package/Lights/Shadows/shadowGenerator.js +2 -7
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Lights/directionalLight.d.ts +5 -4
- package/Lights/directionalLight.js +7 -9
- package/Lights/directionalLight.js.map +1 -1
- package/Lights/shadowLight.d.ts +4 -4
- package/Lights/shadowLight.js +3 -2
- package/Lights/shadowLight.js.map +1 -1
- package/Lights/spotLight.d.ts +2 -2
- package/Lights/spotLight.js +3 -2
- package/Lights/spotLight.js.map +1 -1
- package/Loading/sceneLoader.d.ts +1 -1
- package/Loading/sceneLoader.js.map +1 -1
- package/Materials/GreasedLine/greasedLinePluginMaterial.js +1 -1
- package/Materials/GreasedLine/greasedLinePluginMaterial.js.map +1 -1
- package/Materials/PBR/pbrMetallicRoughnessMaterial.js +18 -6
- package/Materials/PBR/pbrMetallicRoughnessMaterial.js.map +1 -1
- package/Materials/PBR/pbrSpecularGlossinessMaterial.js +18 -6
- package/Materials/PBR/pbrSpecularGlossinessMaterial.js.map +1 -1
- package/Materials/Textures/renderTargetTexture.d.ts +2 -0
- package/Materials/Textures/renderTargetTexture.js +18 -8
- package/Materials/Textures/renderTargetTexture.js.map +1 -1
- package/Materials/material.js +3 -1
- package/Materials/material.js.map +1 -1
- package/Materials/materialPluginBase.d.ts +4 -0
- package/Materials/materialPluginBase.js +4 -0
- package/Materials/materialPluginBase.js.map +1 -1
- package/Maths/math.color.js.map +1 -1
- package/Maths/math.vector.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
- package/Meshes/lattice.material.d.ts +3 -8
- package/Meshes/lattice.material.js.map +1 -1
- package/Misc/copyTextureToTexture.js +1 -1
- package/Misc/copyTextureToTexture.js.map +1 -1
- package/Misc/filesInput.d.ts +3 -1
- package/Misc/filesInput.js +8 -4
- package/Misc/filesInput.js.map +1 -1
- package/PostProcesses/postProcess.d.ts +2 -2
- package/PostProcesses/postProcess.js +4 -4
- package/PostProcesses/postProcess.js.map +1 -1
- package/PostProcesses/postProcessManager.js +1 -1
- package/PostProcesses/postProcessManager.js.map +1 -1
- package/Shaders/ShadersInclude/lightsFragmentFunctions.js +1 -1
- package/Shaders/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
- package/Shaders/default.fragment.js +2 -1
- package/Shaders/default.fragment.js.map +1 -1
- package/Shaders/default.vertex.js +2 -1
- package/Shaders/default.vertex.js.map +1 -1
- package/Shaders/pbr.fragment.js +2 -1
- package/Shaders/pbr.fragment.js.map +1 -1
- package/Shaders/pbr.vertex.js +2 -1
- package/Shaders/pbr.vertex.js.map +1 -1
- package/XR/webXRCamera.js +3 -0
- package/XR/webXRCamera.js.map +1 -1
- package/package.json +1 -1
- package/scene.d.ts +7 -0
- package/scene.js +10 -1
- package/scene.js.map +1 -1
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { __decorate } from "../../../../tslib.es6.js";
|
|
2
|
+
import { NodeRenderGraphBaseShadowGeneratorBlock } from "./baseShadowGeneratorBlock.js";
|
|
3
|
+
import { RegisterClass } from "../../../../Misc/typeStore.js";
|
|
4
|
+
import { editableInPropertyPage } from "../../../../Decorators/nodeDecorator.js";
|
|
5
|
+
import { FrameGraphCascadedShadowGeneratorTask } from "../../../Tasks/Rendering/csmShadowGeneratorTask.js";
|
|
6
|
+
import { NodeRenderGraphBlockConnectionPointTypes } from "../../Types/nodeRenderGraphTypes.js";
|
|
7
|
+
/**
|
|
8
|
+
* Block that generates shadows through a shadow generator
|
|
9
|
+
*/
|
|
10
|
+
export class NodeRenderGraphCascadedShadowGeneratorBlock extends NodeRenderGraphBaseShadowGeneratorBlock {
|
|
11
|
+
/**
|
|
12
|
+
* Gets the frame graph task associated with this block
|
|
13
|
+
*/
|
|
14
|
+
get task() {
|
|
15
|
+
return this._frameGraphTask;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Create a new NodeRenderGraphCascadedShadowGeneratorBlock
|
|
19
|
+
* @param name defines the block name
|
|
20
|
+
* @param frameGraph defines the hosting frame graph
|
|
21
|
+
* @param scene defines the hosting scene
|
|
22
|
+
*/
|
|
23
|
+
constructor(name, frameGraph, scene) {
|
|
24
|
+
super(name, frameGraph, scene);
|
|
25
|
+
this.registerInput("camera", NodeRenderGraphBlockConnectionPointTypes.Camera);
|
|
26
|
+
this._addDependenciesInput();
|
|
27
|
+
this._frameGraphTask = new FrameGraphCascadedShadowGeneratorTask(this.name, frameGraph, scene);
|
|
28
|
+
}
|
|
29
|
+
/** Sets the number of cascades */
|
|
30
|
+
get numCascades() {
|
|
31
|
+
return this._frameGraphTask.numCascades;
|
|
32
|
+
}
|
|
33
|
+
set numCascades(value) {
|
|
34
|
+
this._frameGraphTask.numCascades = value;
|
|
35
|
+
}
|
|
36
|
+
/** Gets or sets a value indicating whether the shadow generator should display the cascades. */
|
|
37
|
+
get debug() {
|
|
38
|
+
return this._frameGraphTask.debug;
|
|
39
|
+
}
|
|
40
|
+
set debug(value) {
|
|
41
|
+
this._frameGraphTask.debug = value;
|
|
42
|
+
}
|
|
43
|
+
/** Gets or sets a value indicating whether the shadow generator should stabilize the cascades. */
|
|
44
|
+
get stabilizeCascades() {
|
|
45
|
+
return this._frameGraphTask.stabilizeCascades;
|
|
46
|
+
}
|
|
47
|
+
set stabilizeCascades(value) {
|
|
48
|
+
this._frameGraphTask.stabilizeCascades = value;
|
|
49
|
+
}
|
|
50
|
+
/** Gets or sets the lambda parameter of the shadow generator. */
|
|
51
|
+
get lambda() {
|
|
52
|
+
return this._frameGraphTask.lambda;
|
|
53
|
+
}
|
|
54
|
+
set lambda(value) {
|
|
55
|
+
this._frameGraphTask.lambda = value;
|
|
56
|
+
}
|
|
57
|
+
/** Gets or sets the cascade blend percentage. */
|
|
58
|
+
get cascadeBlendPercentage() {
|
|
59
|
+
return this._frameGraphTask.cascadeBlendPercentage;
|
|
60
|
+
}
|
|
61
|
+
set cascadeBlendPercentage(value) {
|
|
62
|
+
this._frameGraphTask.cascadeBlendPercentage = value;
|
|
63
|
+
}
|
|
64
|
+
/** Gets or sets a value indicating whether the shadow generator should use depth clamping. */
|
|
65
|
+
get depthClamp() {
|
|
66
|
+
return this._frameGraphTask.depthClamp;
|
|
67
|
+
}
|
|
68
|
+
set depthClamp(value) {
|
|
69
|
+
this._frameGraphTask.depthClamp = value;
|
|
70
|
+
}
|
|
71
|
+
/** Gets or sets a value indicating whether the shadow generator should automatically calculate the depth bounds. */
|
|
72
|
+
get autoCalcDepthBounds() {
|
|
73
|
+
return this._frameGraphTask.autoCalcDepthBounds;
|
|
74
|
+
}
|
|
75
|
+
set autoCalcDepthBounds(value) {
|
|
76
|
+
this._frameGraphTask.autoCalcDepthBounds = value;
|
|
77
|
+
}
|
|
78
|
+
/** Gets or sets the maximum shadow Z value. */
|
|
79
|
+
get shadowMaxZ() {
|
|
80
|
+
return this._frameGraphTask.shadowMaxZ;
|
|
81
|
+
}
|
|
82
|
+
set shadowMaxZ(value) {
|
|
83
|
+
this._frameGraphTask.shadowMaxZ = value;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Gets the current class name
|
|
87
|
+
* @returns the class name
|
|
88
|
+
*/
|
|
89
|
+
getClassName() {
|
|
90
|
+
return "NodeRenderGraphCascadedShadowGeneratorBlock";
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Gets the camera input component
|
|
94
|
+
*/
|
|
95
|
+
get camera() {
|
|
96
|
+
return this._inputs[2];
|
|
97
|
+
}
|
|
98
|
+
_buildBlock(state) {
|
|
99
|
+
super._buildBlock(state);
|
|
100
|
+
this._frameGraphTask.camera = this.camera.connectedPoint?.value;
|
|
101
|
+
}
|
|
102
|
+
_dumpPropertiesCode() {
|
|
103
|
+
const codes = [];
|
|
104
|
+
codes.push(`${this._codeVariableName}.numCascades = ${this.numCascades};`);
|
|
105
|
+
codes.push(`${this._codeVariableName}.debug = ${this.debug};`);
|
|
106
|
+
codes.push(`${this._codeVariableName}.stabilizeCascades = ${this.stabilizeCascades};`);
|
|
107
|
+
codes.push(`${this._codeVariableName}.lambda = ${this.lambda};`);
|
|
108
|
+
codes.push(`${this._codeVariableName}.cascadeBlendPercentage = ${this.cascadeBlendPercentage};`);
|
|
109
|
+
codes.push(`${this._codeVariableName}.depthClamp = ${this.depthClamp};`);
|
|
110
|
+
codes.push(`${this._codeVariableName}.autoCalcDepthBounds = ${this.autoCalcDepthBounds};`);
|
|
111
|
+
codes.push(`${this._codeVariableName}.shadowMaxZ = ${this.shadowMaxZ};`);
|
|
112
|
+
return super._dumpPropertiesCode() + codes.join("\n");
|
|
113
|
+
}
|
|
114
|
+
serialize() {
|
|
115
|
+
const serializationObject = super.serialize();
|
|
116
|
+
serializationObject.numCascades = this.numCascades;
|
|
117
|
+
serializationObject.debug = this.debug;
|
|
118
|
+
serializationObject.stabilizeCascades = this.stabilizeCascades;
|
|
119
|
+
serializationObject.lambda = this.lambda;
|
|
120
|
+
serializationObject.cascadeBlendPercentage = this.cascadeBlendPercentage;
|
|
121
|
+
serializationObject.depthClamp = this.depthClamp;
|
|
122
|
+
serializationObject.autoCalcDepthBounds = this.autoCalcDepthBounds;
|
|
123
|
+
serializationObject.shadowMaxZ = this.shadowMaxZ;
|
|
124
|
+
return serializationObject;
|
|
125
|
+
}
|
|
126
|
+
_deserialize(serializationObject) {
|
|
127
|
+
super._deserialize(serializationObject);
|
|
128
|
+
this.numCascades = serializationObject.numCascades;
|
|
129
|
+
this.debug = serializationObject.debug;
|
|
130
|
+
this.stabilizeCascades = serializationObject.stabilizeCascades;
|
|
131
|
+
this.lambda = serializationObject.lambda;
|
|
132
|
+
this.cascadeBlendPercentage = serializationObject.cascadeBlendPercentage;
|
|
133
|
+
this.depthClamp = serializationObject.depthClamp;
|
|
134
|
+
this.autoCalcDepthBounds = serializationObject.autoCalcDepthBounds;
|
|
135
|
+
this.shadowMaxZ = serializationObject.shadowMaxZ;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
__decorate([
|
|
139
|
+
editableInPropertyPage("Number of cascades", 4 /* PropertyTypeForEdition.List */, "CSM PROPERTIES", {
|
|
140
|
+
options: [
|
|
141
|
+
{ label: "2", value: 2 },
|
|
142
|
+
{ label: "3", value: 3 },
|
|
143
|
+
{ label: "4", value: 4 },
|
|
144
|
+
],
|
|
145
|
+
})
|
|
146
|
+
], NodeRenderGraphCascadedShadowGeneratorBlock.prototype, "numCascades", null);
|
|
147
|
+
__decorate([
|
|
148
|
+
editableInPropertyPage("Debug mode", 0 /* PropertyTypeForEdition.Boolean */, "CSM PROPERTIES")
|
|
149
|
+
], NodeRenderGraphCascadedShadowGeneratorBlock.prototype, "debug", null);
|
|
150
|
+
__decorate([
|
|
151
|
+
editableInPropertyPage("Stabilize cascades", 0 /* PropertyTypeForEdition.Boolean */, "CSM PROPERTIES")
|
|
152
|
+
], NodeRenderGraphCascadedShadowGeneratorBlock.prototype, "stabilizeCascades", null);
|
|
153
|
+
__decorate([
|
|
154
|
+
editableInPropertyPage("Lambda", 1 /* PropertyTypeForEdition.Float */, "CSM PROPERTIES", { min: 0, max: 1 })
|
|
155
|
+
], NodeRenderGraphCascadedShadowGeneratorBlock.prototype, "lambda", null);
|
|
156
|
+
__decorate([
|
|
157
|
+
editableInPropertyPage("Cascade blend", 1 /* PropertyTypeForEdition.Float */, "CSM PROPERTIES", { min: 0, max: 1 })
|
|
158
|
+
], NodeRenderGraphCascadedShadowGeneratorBlock.prototype, "cascadeBlendPercentage", null);
|
|
159
|
+
__decorate([
|
|
160
|
+
editableInPropertyPage("Depth clamp", 0 /* PropertyTypeForEdition.Boolean */, "CSM PROPERTIES")
|
|
161
|
+
], NodeRenderGraphCascadedShadowGeneratorBlock.prototype, "depthClamp", null);
|
|
162
|
+
__decorate([
|
|
163
|
+
editableInPropertyPage("Auto-Calc depth bounds", 0 /* PropertyTypeForEdition.Boolean */, "CSM PROPERTIES")
|
|
164
|
+
], NodeRenderGraphCascadedShadowGeneratorBlock.prototype, "autoCalcDepthBounds", null);
|
|
165
|
+
__decorate([
|
|
166
|
+
editableInPropertyPage("Shadow maxZ", 1 /* PropertyTypeForEdition.Float */, "CSM PROPERTIES")
|
|
167
|
+
], NodeRenderGraphCascadedShadowGeneratorBlock.prototype, "shadowMaxZ", null);
|
|
168
|
+
RegisterClass("BABYLON.NodeRenderGraphCascadedShadowGeneratorBlock", NodeRenderGraphCascadedShadowGeneratorBlock);
|
|
169
|
+
//# sourceMappingURL=csmShadowGeneratorBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csmShadowGeneratorBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.ts"],"names":[],"mappings":"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","sourcesContent":["// eslint-disable-next-line import/no-internal-modules\r\nimport type { Scene, FrameGraph, NodeRenderGraphConnectionPoint, NodeRenderGraphBuildState, Camera } from \"core/index\";\r\nimport { NodeRenderGraphBaseShadowGeneratorBlock } from \"./baseShadowGeneratorBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport { FrameGraphCascadedShadowGeneratorTask } from \"../../../Tasks/Rendering/csmShadowGeneratorTask\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes } from \"../../Types/nodeRenderGraphTypes\";\r\n\r\n/**\r\n * Block that generates shadows through a shadow generator\r\n */\r\nexport class NodeRenderGraphCascadedShadowGeneratorBlock extends NodeRenderGraphBaseShadowGeneratorBlock {\r\n protected override _frameGraphTask: FrameGraphCascadedShadowGeneratorTask;\r\n\r\n /**\r\n * Gets the frame graph task associated with this block\r\n */\r\n public override get task() {\r\n return this._frameGraphTask;\r\n }\r\n\r\n /**\r\n * Create a new NodeRenderGraphCascadedShadowGeneratorBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene) {\r\n super(name, frameGraph, scene);\r\n\r\n this.registerInput(\"camera\", NodeRenderGraphBlockConnectionPointTypes.Camera);\r\n this._addDependenciesInput();\r\n\r\n this._frameGraphTask = new FrameGraphCascadedShadowGeneratorTask(this.name, frameGraph, scene);\r\n }\r\n\r\n /** Sets the number of cascades */\r\n @editableInPropertyPage(\"Number of cascades\", PropertyTypeForEdition.List, \"CSM PROPERTIES\", {\r\n options: [\r\n { label: \"2\", value: 2 },\r\n { label: \"3\", value: 3 },\r\n { label: \"4\", value: 4 },\r\n ],\r\n })\r\n public get numCascades() {\r\n return this._frameGraphTask.numCascades;\r\n }\r\n\r\n public set numCascades(value: number) {\r\n this._frameGraphTask.numCascades = value;\r\n }\r\n\r\n /** Gets or sets a value indicating whether the shadow generator should display the cascades. */\r\n @editableInPropertyPage(\"Debug mode\", PropertyTypeForEdition.Boolean, \"CSM PROPERTIES\")\r\n public get debug() {\r\n return this._frameGraphTask.debug;\r\n }\r\n\r\n public set debug(value: boolean) {\r\n this._frameGraphTask.debug = value;\r\n }\r\n\r\n /** Gets or sets a value indicating whether the shadow generator should stabilize the cascades. */\r\n @editableInPropertyPage(\"Stabilize cascades\", PropertyTypeForEdition.Boolean, \"CSM PROPERTIES\")\r\n public get stabilizeCascades() {\r\n return this._frameGraphTask.stabilizeCascades;\r\n }\r\n\r\n public set stabilizeCascades(value: boolean) {\r\n this._frameGraphTask.stabilizeCascades = value;\r\n }\r\n\r\n /** Gets or sets the lambda parameter of the shadow generator. */\r\n @editableInPropertyPage(\"Lambda\", PropertyTypeForEdition.Float, \"CSM PROPERTIES\", { min: 0, max: 1 })\r\n public get lambda() {\r\n return this._frameGraphTask.lambda;\r\n }\r\n\r\n public set lambda(value: number) {\r\n this._frameGraphTask.lambda = value;\r\n }\r\n\r\n /** Gets or sets the cascade blend percentage. */\r\n @editableInPropertyPage(\"Cascade blend\", PropertyTypeForEdition.Float, \"CSM PROPERTIES\", { min: 0, max: 1 })\r\n public get cascadeBlendPercentage() {\r\n return this._frameGraphTask.cascadeBlendPercentage;\r\n }\r\n\r\n public set cascadeBlendPercentage(value: number) {\r\n this._frameGraphTask.cascadeBlendPercentage = value;\r\n }\r\n\r\n /** Gets or sets a value indicating whether the shadow generator should use depth clamping. */\r\n @editableInPropertyPage(\"Depth clamp\", PropertyTypeForEdition.Boolean, \"CSM PROPERTIES\")\r\n public get depthClamp() {\r\n return this._frameGraphTask.depthClamp;\r\n }\r\n\r\n public set depthClamp(value: boolean) {\r\n this._frameGraphTask.depthClamp = value;\r\n }\r\n\r\n /** Gets or sets a value indicating whether the shadow generator should automatically calculate the depth bounds. */\r\n @editableInPropertyPage(\"Auto-Calc depth bounds\", PropertyTypeForEdition.Boolean, \"CSM PROPERTIES\")\r\n public get autoCalcDepthBounds() {\r\n return this._frameGraphTask.autoCalcDepthBounds;\r\n }\r\n\r\n public set autoCalcDepthBounds(value: boolean) {\r\n this._frameGraphTask.autoCalcDepthBounds = value;\r\n }\r\n\r\n /** Gets or sets the maximum shadow Z value. */\r\n @editableInPropertyPage(\"Shadow maxZ\", PropertyTypeForEdition.Float, \"CSM PROPERTIES\")\r\n public get shadowMaxZ() {\r\n return this._frameGraphTask.shadowMaxZ;\r\n }\r\n\r\n public set shadowMaxZ(value: number) {\r\n this._frameGraphTask.shadowMaxZ = value;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphCascadedShadowGeneratorBlock\";\r\n }\r\n\r\n /**\r\n * Gets the camera input component\r\n */\r\n public get camera(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n protected override _buildBlock(state: NodeRenderGraphBuildState) {\r\n super._buildBlock(state);\r\n\r\n this._frameGraphTask.camera = this.camera.connectedPoint?.value as Camera;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.numCascades = ${this.numCascades};`);\r\n codes.push(`${this._codeVariableName}.debug = ${this.debug};`);\r\n codes.push(`${this._codeVariableName}.stabilizeCascades = ${this.stabilizeCascades};`);\r\n codes.push(`${this._codeVariableName}.lambda = ${this.lambda};`);\r\n codes.push(`${this._codeVariableName}.cascadeBlendPercentage = ${this.cascadeBlendPercentage};`);\r\n codes.push(`${this._codeVariableName}.depthClamp = ${this.depthClamp};`);\r\n codes.push(`${this._codeVariableName}.autoCalcDepthBounds = ${this.autoCalcDepthBounds};`);\r\n codes.push(`${this._codeVariableName}.shadowMaxZ = ${this.shadowMaxZ};`);\r\n return super._dumpPropertiesCode() + codes.join(\"\\n\");\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.numCascades = this.numCascades;\r\n serializationObject.debug = this.debug;\r\n serializationObject.stabilizeCascades = this.stabilizeCascades;\r\n serializationObject.lambda = this.lambda;\r\n serializationObject.cascadeBlendPercentage = this.cascadeBlendPercentage;\r\n serializationObject.depthClamp = this.depthClamp;\r\n serializationObject.autoCalcDepthBounds = this.autoCalcDepthBounds;\r\n serializationObject.shadowMaxZ = this.shadowMaxZ;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n this.numCascades = serializationObject.numCascades;\r\n this.debug = serializationObject.debug;\r\n this.stabilizeCascades = serializationObject.stabilizeCascades;\r\n this.lambda = serializationObject.lambda;\r\n this.cascadeBlendPercentage = serializationObject.cascadeBlendPercentage;\r\n this.depthClamp = serializationObject.depthClamp;\r\n this.autoCalcDepthBounds = serializationObject.autoCalcDepthBounds;\r\n this.shadowMaxZ = serializationObject.shadowMaxZ;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.NodeRenderGraphCascadedShadowGeneratorBlock\", NodeRenderGraphCascadedShadowGeneratorBlock);\r\n"]}
|
|
@@ -22,6 +22,7 @@ export class NodeRenderGraphCullObjectsBlock extends NodeRenderGraphBlock {
|
|
|
22
22
|
super(name, frameGraph, scene);
|
|
23
23
|
this.registerInput("camera", NodeRenderGraphBlockConnectionPointTypes.Camera);
|
|
24
24
|
this.registerInput("objects", NodeRenderGraphBlockConnectionPointTypes.ObjectList);
|
|
25
|
+
this._addDependenciesInput();
|
|
25
26
|
this.registerOutput("output", NodeRenderGraphBlockConnectionPointTypes.ObjectList);
|
|
26
27
|
this._frameGraphTask = new FrameGraphCullObjectsTask(this.name, frameGraph, scene);
|
|
27
28
|
}
|
|
@@ -52,16 +53,9 @@ export class NodeRenderGraphCullObjectsBlock extends NodeRenderGraphBlock {
|
|
|
52
53
|
}
|
|
53
54
|
_buildBlock(state) {
|
|
54
55
|
super._buildBlock(state);
|
|
55
|
-
this._frameGraphTask.name = this.name;
|
|
56
56
|
this.output.value = this._frameGraphTask.outputObjectList;
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
this._frameGraphTask.camera = cameraConnectedPoint.value;
|
|
60
|
-
}
|
|
61
|
-
const objectsConnectedPoint = this.objects.connectedPoint;
|
|
62
|
-
if (objectsConnectedPoint) {
|
|
63
|
-
this._frameGraphTask.objectList = objectsConnectedPoint.value;
|
|
64
|
-
}
|
|
57
|
+
this._frameGraphTask.camera = this.camera.connectedPoint?.value;
|
|
58
|
+
this._frameGraphTask.objectList = this.objects.connectedPoint?.value;
|
|
65
59
|
}
|
|
66
60
|
_dumpPropertiesCode() {
|
|
67
61
|
const codes = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cullObjectsBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/Rendering/cullObjectsBlock.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,wCAAwC,EAAE,MAAM,kCAAkC,CAAC;AAC5F,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAIrF;;GAEG;AACH,MAAM,OAAO,+BAAgC,SAAQ,oBAAoB;IAGrE;;OAEG;IACH,IAAoB,IAAI;QACpB,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACH,YAAmB,IAAY,EAAE,UAAsB,EAAE,KAAY;QACjE,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAE/B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,wCAAwC,CAAC,MAAM,CAAC,CAAC;QAC9E,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,wCAAwC,CAAC,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"cullObjectsBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/Rendering/cullObjectsBlock.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,wCAAwC,EAAE,MAAM,kCAAkC,CAAC;AAC5F,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAIrF;;GAEG;AACH,MAAM,OAAO,+BAAgC,SAAQ,oBAAoB;IAGrE;;OAEG;IACH,IAAoB,IAAI;QACpB,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACH,YAAmB,IAAY,EAAE,UAAsB,EAAE,KAAY;QACjE,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAE/B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,wCAAwC,CAAC,MAAM,CAAC,CAAC;QAC9E,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,wCAAwC,CAAC,UAAU,CAAC,CAAC;QACnF,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,wCAAwC,CAAC,UAAU,CAAC,CAAC;QAEnF,IAAI,CAAC,eAAe,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IACvF,CAAC;IAED;;;OAGG;IACa,YAAY;QACxB,OAAO,iCAAiC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAEkB,WAAW,CAAC,KAAgC;QAC3D,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAEzB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC;QAE1D,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,KAAe,CAAC;QAC1E,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,KAA6B,CAAC;IACjG,CAAC;IAEkB,mBAAmB;QAClC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,mBAAmB,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IAEe,SAAS;QACrB,MAAM,mBAAmB,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAC9C,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAEe,YAAY,CAAC,mBAAwB;QACjD,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;IAC5C,CAAC;CACJ;AAED,aAAa,CAAC,yCAAyC,EAAE,+BAA+B,CAAC,CAAC","sourcesContent":["// eslint-disable-next-line import/no-internal-modules\r\nimport type { NodeRenderGraphConnectionPoint, Scene, NodeRenderGraphBuildState, FrameGraph } from \"core/index\";\r\nimport { NodeRenderGraphBlock } from \"../../nodeRenderGraphBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes } from \"../../Types/nodeRenderGraphTypes\";\r\nimport { FrameGraphCullObjectsTask } from \"../../../Tasks/Rendering/cullObjectsTask\";\r\nimport type { Camera } from \"../../../../Cameras/camera\";\r\nimport type { FrameGraphObjectList } from \"core/FrameGraph/frameGraphObjectList\";\r\n\r\n/**\r\n * Block that culls a list of objects\r\n */\r\nexport class NodeRenderGraphCullObjectsBlock extends NodeRenderGraphBlock {\r\n protected override _frameGraphTask: FrameGraphCullObjectsTask;\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 NodeRenderGraphCullObjectsBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene) {\r\n super(name, frameGraph, scene);\r\n\r\n this.registerInput(\"camera\", NodeRenderGraphBlockConnectionPointTypes.Camera);\r\n this.registerInput(\"objects\", NodeRenderGraphBlockConnectionPointTypes.ObjectList);\r\n this._addDependenciesInput();\r\n\r\n this.registerOutput(\"output\", NodeRenderGraphBlockConnectionPointTypes.ObjectList);\r\n\r\n this._frameGraphTask = new FrameGraphCullObjectsTask(this.name, frameGraph, scene);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphCullObjectsBlock\";\r\n }\r\n\r\n /**\r\n * Gets the camera input component\r\n */\r\n public get camera(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the objects input component\r\n */\r\n public get objects(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n protected override _buildBlock(state: NodeRenderGraphBuildState) {\r\n super._buildBlock(state);\r\n\r\n this.output.value = this._frameGraphTask.outputObjectList;\r\n\r\n this._frameGraphTask.camera = this.camera.connectedPoint?.value as Camera;\r\n this._frameGraphTask.objectList = this.objects.connectedPoint?.value as FrameGraphObjectList;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\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 return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.NodeRenderGraphCullObjectsBlock\", NodeRenderGraphCullObjectsBlock);\r\n"]}
|
|
@@ -58,6 +58,7 @@ export class NodeRenderGraphGeometryRendererBlock extends NodeRenderGraphBlock {
|
|
|
58
58
|
this.registerInput("depth", NodeRenderGraphBlockConnectionPointTypes.TextureBackBufferDepthStencilAttachment, true);
|
|
59
59
|
this.registerInput("camera", NodeRenderGraphBlockConnectionPointTypes.Camera);
|
|
60
60
|
this.registerInput("objects", NodeRenderGraphBlockConnectionPointTypes.ObjectList);
|
|
61
|
+
this._addDependenciesInput();
|
|
61
62
|
this.registerOutput("outputDepth", NodeRenderGraphBlockConnectionPointTypes.BasedOnInput);
|
|
62
63
|
this.registerOutput("geomViewDepth", NodeRenderGraphBlockConnectionPointTypes.TextureViewDepth);
|
|
63
64
|
this.registerOutput("geomScreenDepth", NodeRenderGraphBlockConnectionPointTypes.TextureScreenDepth);
|
|
@@ -232,7 +233,6 @@ export class NodeRenderGraphGeometryRendererBlock extends NodeRenderGraphBlock {
|
|
|
232
233
|
if (textureActivation.every((t) => !t)) {
|
|
233
234
|
throw new Error("NodeRenderGraphGeometryRendererBlock: At least one output geometry buffer must be connected");
|
|
234
235
|
}
|
|
235
|
-
this._frameGraphTask.name = this.name;
|
|
236
236
|
this.outputDepth.value = this._frameGraphTask.outputDepthTexture;
|
|
237
237
|
this.geomViewDepth.value = this._frameGraphTask.geometryViewDepthTexture;
|
|
238
238
|
this.geomScreenDepth.value = this._frameGraphTask.geometryScreenDepthTexture;
|
|
@@ -244,18 +244,9 @@ export class NodeRenderGraphGeometryRendererBlock extends NodeRenderGraphBlock {
|
|
|
244
244
|
this.geomReflectivity.value = this._frameGraphTask.geometryReflectivityTexture;
|
|
245
245
|
this.geomVelocity.value = this._frameGraphTask.geometryVelocityTexture;
|
|
246
246
|
this.geomLinearVelocity.value = this._frameGraphTask.geometryLinearVelocityTexture;
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
}
|
|
251
|
-
const cameraConnectedPoint = this.camera.connectedPoint;
|
|
252
|
-
if (cameraConnectedPoint) {
|
|
253
|
-
this._frameGraphTask.camera = cameraConnectedPoint.value;
|
|
254
|
-
}
|
|
255
|
-
const objectsConnectedPoint = this.objects.connectedPoint;
|
|
256
|
-
if (objectsConnectedPoint) {
|
|
257
|
-
this._frameGraphTask.objectList = objectsConnectedPoint.value;
|
|
258
|
-
}
|
|
247
|
+
this._frameGraphTask.depthTexture = this.depth.connectedPoint?.value;
|
|
248
|
+
this._frameGraphTask.camera = this.camera.connectedPoint?.value;
|
|
249
|
+
this._frameGraphTask.objectList = this.objects.connectedPoint?.value;
|
|
259
250
|
this._frameGraphTask.textureDescriptions = [];
|
|
260
251
|
const textureFormats = [
|
|
261
252
|
this.viewDepthFormat,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometryRendererBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.ts"],"names":[],"mappings":"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","sourcesContent":["// eslint-disable-next-line import/no-internal-modules\r\nimport type { NodeRenderGraphConnectionPoint, Scene, NodeRenderGraphBuildState, FrameGraph, FrameGraphTextureHandle, FrameGraphObjectList, Camera } from \"core/index\";\r\nimport { NodeRenderGraphBlock } from \"../../nodeRenderGraphBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes } from \"../../Types/nodeRenderGraphTypes\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport { FrameGraphGeometryRendererTask } from \"../../../Tasks/Rendering/geometryRendererTask\";\r\nimport { Constants } from \"core/Engines/constants\";\r\n\r\n/**\r\n * Block that render geometry of objects to a multi render target\r\n */\r\nexport class NodeRenderGraphGeometryRendererBlock extends NodeRenderGraphBlock {\r\n protected override _frameGraphTask: FrameGraphGeometryRendererTask;\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 NodeRenderGraphGeometryRendererBlock\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];\r\n\r\n this.registerInput(\"depth\", NodeRenderGraphBlockConnectionPointTypes.TextureBackBufferDepthStencilAttachment, true);\r\n this.registerInput(\"camera\", NodeRenderGraphBlockConnectionPointTypes.Camera);\r\n this.registerInput(\"objects\", NodeRenderGraphBlockConnectionPointTypes.ObjectList);\r\n\r\n this.registerOutput(\"outputDepth\", NodeRenderGraphBlockConnectionPointTypes.BasedOnInput);\r\n this.registerOutput(\"geomViewDepth\", NodeRenderGraphBlockConnectionPointTypes.TextureViewDepth);\r\n this.registerOutput(\"geomScreenDepth\", NodeRenderGraphBlockConnectionPointTypes.TextureScreenDepth);\r\n this.registerOutput(\"geomViewNormal\", NodeRenderGraphBlockConnectionPointTypes.TextureViewNormal);\r\n this.registerOutput(\"geomWorldNormal\", NodeRenderGraphBlockConnectionPointTypes.TextureViewNormal);\r\n this.registerOutput(\"geomLocalPosition\", NodeRenderGraphBlockConnectionPointTypes.TextureLocalPosition);\r\n this.registerOutput(\"geomWorldPosition\", NodeRenderGraphBlockConnectionPointTypes.TextureWorldPosition);\r\n this.registerOutput(\"geomAlbedo\", NodeRenderGraphBlockConnectionPointTypes.TextureAlbedo);\r\n this.registerOutput(\"geomReflectivity\", NodeRenderGraphBlockConnectionPointTypes.TextureReflectivity);\r\n this.registerOutput(\"geomVelocity\", NodeRenderGraphBlockConnectionPointTypes.TextureVelocity);\r\n this.registerOutput(\"geomLinearVelocity\", NodeRenderGraphBlockConnectionPointTypes.TextureLinearVelocity);\r\n\r\n this.depth.addAcceptedConnectionPointTypes(NodeRenderGraphBlockConnectionPointTypes.TextureDepthStencilAttachment);\r\n\r\n this.outputDepth._typeConnectionSource = this.depth;\r\n\r\n this._frameGraphTask = new FrameGraphGeometryRendererTask(this.name, frameGraph, scene, { doNotChangeAspectRatio });\r\n }\r\n\r\n /** Indicates if depth testing must be enabled or disabled */\r\n @editableInPropertyPage(\"Depth test\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get depthTest() {\r\n return this._frameGraphTask.depthTest;\r\n }\r\n\r\n public set depthTest(value: boolean) {\r\n this._frameGraphTask.depthTest = value;\r\n }\r\n\r\n /** Indicates if depth writing must be enabled or disabled */\r\n @editableInPropertyPage(\"Depth write\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get depthWrite() {\r\n return this._frameGraphTask.depthWrite;\r\n }\r\n\r\n public set depthWrite(value: boolean) {\r\n this._frameGraphTask.depthWrite = value;\r\n }\r\n\r\n /** True (default) to not change the aspect ratio of the scene in the RTT */\r\n @editableInPropertyPage(\"Do not change aspect ratio\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get doNotChangeAspectRatio() {\r\n return this._frameGraphTask.objectRenderer.options.doNotChangeAspectRatio;\r\n }\r\n\r\n public set doNotChangeAspectRatio(value: boolean) {\r\n this._frameGraphTask.dispose();\r\n this._frameGraphTask = new FrameGraphGeometryRendererTask(this.name, this._frameGraph, this._scene, { doNotChangeAspectRatio: value });\r\n this._additionalConstructionParameters = [value];\r\n }\r\n\r\n /** Width of the geometry texture */\r\n @editableInPropertyPage(\"Texture width\", PropertyTypeForEdition.Int, \"PROPERTIES\")\r\n public get width() {\r\n return this._frameGraphTask.size.width;\r\n }\r\n\r\n public set width(value: number) {\r\n this._frameGraphTask.size.width = value;\r\n }\r\n\r\n /** Height of the geometry texture */\r\n @editableInPropertyPage(\"Texture height\", PropertyTypeForEdition.Int, \"PROPERTIES\")\r\n public get height() {\r\n return this._frameGraphTask.size.height;\r\n }\r\n\r\n public set height(value: number) {\r\n this._frameGraphTask.size.height = value;\r\n }\r\n\r\n /** Indicates if the geometry texture width and height are percentages or absolute values */\r\n @editableInPropertyPage(\"Size is in percentage\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get sizeInPercentage() {\r\n return this._frameGraphTask.sizeIsPercentage;\r\n }\r\n\r\n public set sizeInPercentage(value: boolean) {\r\n this._frameGraphTask.sizeIsPercentage = value;\r\n }\r\n\r\n /** Number of samples of the geometry texture */\r\n @editableInPropertyPage(\"Samples\", PropertyTypeForEdition.Int, \"PROPERTIES\", { min: 1, max: 8 })\r\n public get samples() {\r\n return this._frameGraphTask.samples;\r\n }\r\n\r\n public set samples(value: number) {\r\n this._frameGraphTask.samples = value;\r\n }\r\n\r\n // View depth\r\n @editableInPropertyPage(\"View depth format\", PropertyTypeForEdition.TextureFormat, \"GEOMETRY BUFFERS\")\r\n public viewDepthFormat = Constants.TEXTUREFORMAT_RED;\r\n\r\n @editableInPropertyPage(\"View depth type\", PropertyTypeForEdition.TextureType, \"GEOMETRY BUFFERS\")\r\n public viewDepthType = Constants.TEXTURETYPE_HALF_FLOAT;\r\n\r\n // Screen depth\r\n @editableInPropertyPage(\"Screen depth format\", PropertyTypeForEdition.TextureFormat, \"GEOMETRY BUFFERS\")\r\n public screenDepthFormat = Constants.TEXTUREFORMAT_RED;\r\n\r\n @editableInPropertyPage(\"Screen depth type\", PropertyTypeForEdition.TextureType, \"GEOMETRY BUFFERS\")\r\n public screenDepthType = Constants.TEXTURETYPE_HALF_FLOAT;\r\n\r\n // View normal\r\n @editableInPropertyPage(\"View normal format\", PropertyTypeForEdition.TextureFormat, \"GEOMETRY BUFFERS\")\r\n public viewNormalFormat = Constants.TEXTUREFORMAT_RGBA;\r\n\r\n @editableInPropertyPage(\"View normal type\", PropertyTypeForEdition.TextureType, \"GEOMETRY BUFFERS\")\r\n public viewNormalType = Constants.TEXTURETYPE_UNSIGNED_BYTE;\r\n\r\n // World normal\r\n @editableInPropertyPage(\"World normal format\", PropertyTypeForEdition.TextureFormat, \"GEOMETRY BUFFERS\")\r\n public worldNormalFormat = Constants.TEXTUREFORMAT_RGBA;\r\n\r\n @editableInPropertyPage(\"World normal type\", PropertyTypeForEdition.TextureType, \"GEOMETRY BUFFERS\")\r\n public worldNormalType = Constants.TEXTURETYPE_UNSIGNED_BYTE;\r\n\r\n // Local position\r\n @editableInPropertyPage(\"Local position format\", PropertyTypeForEdition.TextureFormat, \"GEOMETRY BUFFERS\")\r\n public localPositionFormat = Constants.TEXTUREFORMAT_RGBA;\r\n\r\n @editableInPropertyPage(\"Local position type\", PropertyTypeForEdition.TextureType, \"GEOMETRY BUFFERS\")\r\n public localPositionType = Constants.TEXTURETYPE_HALF_FLOAT;\r\n\r\n // World Position\r\n @editableInPropertyPage(\"World position format\", PropertyTypeForEdition.TextureFormat, \"GEOMETRY BUFFERS\")\r\n public worldPositionFormat = Constants.TEXTUREFORMAT_RGBA;\r\n\r\n @editableInPropertyPage(\"World position type\", PropertyTypeForEdition.TextureType, \"GEOMETRY BUFFERS\")\r\n public worldPositionType = Constants.TEXTURETYPE_HALF_FLOAT;\r\n\r\n // Albedo\r\n @editableInPropertyPage(\"Albedo format\", PropertyTypeForEdition.TextureFormat, \"GEOMETRY BUFFERS\")\r\n public albedoFormat = Constants.TEXTUREFORMAT_RGBA;\r\n\r\n @editableInPropertyPage(\"Albedo type\", PropertyTypeForEdition.TextureType, \"GEOMETRY BUFFERS\")\r\n public albedoType = Constants.TEXTURETYPE_UNSIGNED_BYTE;\r\n\r\n // Reflectivity\r\n @editableInPropertyPage(\"Reflectivity format\", PropertyTypeForEdition.TextureFormat, \"GEOMETRY BUFFERS\")\r\n public reflectivityFormat = Constants.TEXTUREFORMAT_RGBA;\r\n\r\n @editableInPropertyPage(\"Reflectivity type\", PropertyTypeForEdition.TextureType, \"GEOMETRY BUFFERS\")\r\n public reflectivityType = Constants.TEXTURETYPE_UNSIGNED_BYTE;\r\n\r\n // Velocity\r\n @editableInPropertyPage(\"Velocity format\", PropertyTypeForEdition.TextureFormat, \"GEOMETRY BUFFERS\")\r\n public velocityFormat = Constants.TEXTUREFORMAT_RGBA;\r\n\r\n @editableInPropertyPage(\"Velocity type\", PropertyTypeForEdition.TextureType, \"GEOMETRY BUFFERS\")\r\n public velocityType = Constants.TEXTURETYPE_UNSIGNED_BYTE;\r\n\r\n // Linear velocity\r\n @editableInPropertyPage(\"Linear velocity format\", PropertyTypeForEdition.TextureFormat, \"GEOMETRY BUFFERS\")\r\n public linearVelocityFormat = Constants.TEXTUREFORMAT_RGBA;\r\n\r\n @editableInPropertyPage(\"Linear velocity type\", PropertyTypeForEdition.TextureType, \"GEOMETRY BUFFERS\")\r\n public linearVelocityType = Constants.TEXTURETYPE_UNSIGNED_BYTE;\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 \"NodeRenderGraphGeometryRendererBlock\";\r\n }\r\n\r\n /**\r\n * Gets the depth texture input component\r\n */\r\n public get depth(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the camera input component\r\n */\r\n public get camera(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the objects input component\r\n */\r\n public get objects(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the output depth component\r\n */\r\n public get outputDepth(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the geometry view depth component\r\n */\r\n public get geomViewDepth(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the geometry screen depth component\r\n */\r\n public get geomScreenDepth(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n /**\r\n * Gets the geometry view normal component\r\n */\r\n public get geomViewNormal(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[3];\r\n }\r\n\r\n /**\r\n * Gets the world geometry normal component\r\n */\r\n public get geomWorldNormal(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[4];\r\n }\r\n\r\n /**\r\n * Gets the geometry local position component\r\n */\r\n public get geomLocalPosition(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[5];\r\n }\r\n\r\n /**\r\n * Gets the geometry world position component\r\n */\r\n public get geomWorldPosition(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[6];\r\n }\r\n\r\n /**\r\n * Gets the geometry albedo component\r\n */\r\n public get geomAlbedo(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[7];\r\n }\r\n\r\n /**\r\n * Gets the geometry reflectivity component\r\n */\r\n public get geomReflectivity(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[8];\r\n }\r\n\r\n /**\r\n * Gets the geometry velocity component\r\n */\r\n public get geomVelocity(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[9];\r\n }\r\n\r\n /**\r\n * Gets the geometry linear velocity component\r\n */\r\n public get geomLinearVelocity(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[10];\r\n }\r\n\r\n protected override _buildBlock(state: NodeRenderGraphBuildState) {\r\n super._buildBlock(state);\r\n\r\n const textureActivation = [\r\n this.geomViewDepth.isConnected,\r\n this.geomScreenDepth.isConnected,\r\n this.geomViewNormal.isConnected,\r\n this.geomWorldNormal.isConnected,\r\n this.geomLocalPosition.isConnected,\r\n this.geomWorldPosition.isConnected,\r\n this.geomAlbedo.isConnected,\r\n this.geomReflectivity.isConnected,\r\n this.geomVelocity.isConnected,\r\n this.geomLinearVelocity.isConnected,\r\n ];\r\n\r\n if (textureActivation.every((t) => !t)) {\r\n throw new Error(\"NodeRenderGraphGeometryRendererBlock: At least one output geometry buffer must be connected\");\r\n }\r\n\r\n this._frameGraphTask.name = this.name;\r\n\r\n this.outputDepth.value = this._frameGraphTask.outputDepthTexture;\r\n this.geomViewDepth.value = this._frameGraphTask.geometryViewDepthTexture;\r\n this.geomScreenDepth.value = this._frameGraphTask.geometryScreenDepthTexture;\r\n this.geomViewNormal.value = this._frameGraphTask.geometryViewNormalTexture;\r\n this.geomWorldNormal.value = this._frameGraphTask.geometryWorldNormalTexture;\r\n this.geomLocalPosition.value = this._frameGraphTask.geometryLocalPositionTexture;\r\n this.geomWorldPosition.value = this._frameGraphTask.geometryWorldPositionTexture;\r\n this.geomAlbedo.value = this._frameGraphTask.geometryAlbedoTexture;\r\n this.geomReflectivity.value = this._frameGraphTask.geometryReflectivityTexture;\r\n this.geomVelocity.value = this._frameGraphTask.geometryVelocityTexture;\r\n this.geomLinearVelocity.value = this._frameGraphTask.geometryLinearVelocityTexture;\r\n\r\n const depthConnectedPoint = this.depth.connectedPoint;\r\n if (depthConnectedPoint) {\r\n this._frameGraphTask.depthTexture = depthConnectedPoint.value as FrameGraphTextureHandle;\r\n }\r\n\r\n const cameraConnectedPoint = this.camera.connectedPoint;\r\n if (cameraConnectedPoint) {\r\n this._frameGraphTask.camera = cameraConnectedPoint.value as Camera;\r\n }\r\n\r\n const objectsConnectedPoint = this.objects.connectedPoint;\r\n if (objectsConnectedPoint) {\r\n this._frameGraphTask.objectList = objectsConnectedPoint.value as FrameGraphObjectList;\r\n }\r\n\r\n this._frameGraphTask.textureDescriptions = [];\r\n\r\n const textureFormats = [\r\n this.viewDepthFormat,\r\n this.screenDepthFormat,\r\n this.viewNormalFormat,\r\n this.worldNormalFormat,\r\n this.localPositionFormat,\r\n this.worldPositionFormat,\r\n this.albedoFormat,\r\n this.reflectivityFormat,\r\n this.velocityFormat,\r\n this.linearVelocityFormat,\r\n ];\r\n const textureTypes = [\r\n this.viewDepthType,\r\n this.screenDepthType,\r\n this.viewNormalType,\r\n this.worldNormalType,\r\n this.localPositionType,\r\n this.worldPositionType,\r\n this.albedoType,\r\n this.reflectivityType,\r\n this.velocityType,\r\n this.linearVelocityType,\r\n ];\r\n const bufferTypes = [\r\n Constants.PREPASS_DEPTH_TEXTURE_TYPE,\r\n Constants.PREPASS_SCREENSPACE_DEPTH_TEXTURE_TYPE,\r\n Constants.PREPASS_NORMAL_TEXTURE_TYPE,\r\n Constants.PREPASS_WORLD_NORMAL_TEXTURE_TYPE,\r\n Constants.PREPASS_LOCAL_POSITION_TEXTURE_TYPE,\r\n Constants.PREPASS_POSITION_TEXTURE_TYPE,\r\n Constants.PREPASS_ALBEDO_TEXTURE_TYPE,\r\n Constants.PREPASS_REFLECTIVITY_TEXTURE_TYPE,\r\n Constants.PREPASS_VELOCITY_TEXTURE_TYPE,\r\n Constants.PREPASS_VELOCITY_LINEAR_TEXTURE_TYPE,\r\n ];\r\n\r\n for (let i = 0; i < textureActivation.length; i++) {\r\n if (textureActivation[i]) {\r\n this._frameGraphTask.textureDescriptions.push({\r\n textureFormat: textureFormats[i],\r\n textureType: textureTypes[i],\r\n type: bufferTypes[i],\r\n });\r\n }\r\n }\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.depthTest = ${this.depthTest};`);\r\n codes.push(`${this._codeVariableName}.depthWrite = ${this.depthWrite};`);\r\n codes.push(`${this._codeVariableName}.samples = ${this.samples};`);\r\n codes.push(`${this._codeVariableName}.viewDepthFormat = ${this.viewDepthFormat};`);\r\n codes.push(`${this._codeVariableName}.viewDepthType = ${this.viewDepthType};`);\r\n codes.push(`${this._codeVariableName}.screenDepthFormat = ${this.screenDepthFormat};`);\r\n codes.push(`${this._codeVariableName}.screenDepthType = ${this.screenDepthType};`);\r\n codes.push(`${this._codeVariableName}.localPositionFormat = ${this.localPositionFormat};`);\r\n codes.push(`${this._codeVariableName}.localPositionType = ${this.localPositionType};`);\r\n codes.push(`${this._codeVariableName}.worldPositionFormat = ${this.worldPositionFormat};`);\r\n codes.push(`${this._codeVariableName}.worldPositionType = ${this.worldPositionType};`);\r\n codes.push(`${this._codeVariableName}.viewNormalFormat = ${this.viewNormalFormat};`);\r\n codes.push(`${this._codeVariableName}.viewNormalType = ${this.viewNormalType};`);\r\n codes.push(`${this._codeVariableName}.worldNormalFormat = ${this.worldNormalFormat};`);\r\n codes.push(`${this._codeVariableName}.worldNormalType = ${this.worldNormalType};`);\r\n codes.push(`${this._codeVariableName}.albedoFormat = ${this.albedoFormat};`);\r\n codes.push(`${this._codeVariableName}.albedoType = ${this.albedoType};`);\r\n codes.push(`${this._codeVariableName}.reflectivityFormat = ${this.reflectivityFormat};`);\r\n codes.push(`${this._codeVariableName}.reflectivityType = ${this.reflectivityType};`);\r\n codes.push(`${this._codeVariableName}.velocityFormat = ${this.velocityFormat};`);\r\n codes.push(`${this._codeVariableName}.velocityType = ${this.velocityType};`);\r\n codes.push(`${this._codeVariableName}.linearVelocityFormat = ${this.linearVelocityFormat};`);\r\n codes.push(`${this._codeVariableName}.linearVelocityType = ${this.linearVelocityType};`);\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.depthTest = this.depthTest;\r\n serializationObject.depthWrite = this.depthWrite;\r\n serializationObject.samples = this.samples;\r\n serializationObject.viewDepthFormat = this.viewDepthFormat;\r\n serializationObject.viewDepthType = this.viewDepthType;\r\n serializationObject.screenDepthFormat = this.screenDepthFormat;\r\n serializationObject.screenDepthType = this.screenDepthType;\r\n serializationObject.localPositionFormat = this.localPositionFormat;\r\n serializationObject.localPositionType = this.localPositionType;\r\n serializationObject.worldPositionFormat = this.worldPositionFormat;\r\n serializationObject.worldPositionType = this.worldPositionType;\r\n serializationObject.viewNormalFormat = this.viewNormalFormat;\r\n serializationObject.viewNormalType = this.viewNormalType;\r\n serializationObject.worldNormalFormat = this.worldNormalFormat;\r\n serializationObject.worldNormalType = this.worldNormalType;\r\n serializationObject.albedoFormat = this.albedoFormat;\r\n serializationObject.albedoType = this.albedoType;\r\n serializationObject.reflectivityFormat = this.reflectivityFormat;\r\n serializationObject.reflectivityType = this.reflectivityType;\r\n serializationObject.velocityFormat = this.velocityFormat;\r\n serializationObject.velocityType = this.velocityType;\r\n serializationObject.linearVelocityFormat = this.linearVelocityFormat;\r\n serializationObject.linearVelocityType = this.linearVelocityType;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n this.depthTest = serializationObject.depthTest;\r\n this.depthWrite = serializationObject.depthWrite;\r\n this.samples = serializationObject.samples;\r\n this.viewDepthFormat = serializationObject.viewDepthFormat;\r\n this.viewDepthType = serializationObject.viewDepthType;\r\n this.screenDepthFormat = serializationObject.screenDepthFormat;\r\n this.screenDepthType = serializationObject.screenDepthType;\r\n this.localPositionFormat = serializationObject.localPositionFormat;\r\n this.localPositionType = serializationObject.localPositionType;\r\n this.worldPositionFormat = serializationObject.worldPositionFormat;\r\n this.worldPositionType = serializationObject.worldPositionType;\r\n this.viewNormalFormat = serializationObject.viewNormalFormat;\r\n this.viewNormalType = serializationObject.viewNormalType;\r\n this.worldNormalFormat = serializationObject.worldNormalFormat;\r\n this.worldNormalType = serializationObject.worldNormalType;\r\n this.albedoFormat = serializationObject.albedoFormat;\r\n this.albedoType = serializationObject.albedoType;\r\n this.reflectivityFormat = serializationObject.reflectivityFormat;\r\n this.reflectivityType = serializationObject.reflectivityType;\r\n this.velocityFormat = serializationObject.velocityFormat;\r\n this.velocityType = serializationObject.velocityType;\r\n this.linearVelocityFormat = serializationObject.linearVelocityFormat;\r\n this.linearVelocityType = serializationObject.linearVelocityType;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.NodeRenderGraphGeometryRendererBlock\", NodeRenderGraphGeometryRendererBlock);\r\n"]}
|
|
1
|
+
{"version":3,"file":"geometryRendererBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,wCAAwC,EAAE,MAAM,kCAAkC,CAAC;AAC5F,OAAO,EAAE,sBAAsB,EAA0B,MAAM,sCAAsC,CAAC;AACtG,OAAO,EAAE,8BAA8B,EAAE,MAAM,+CAA+C,CAAC;AAC/F,OAAO,EAAE,SAAS,EAAE,yCAA+B;AAEnD;;GAEG;AACH,MAAM,OAAO,oCAAqC,SAAQ,oBAAoB;IAG1E;;OAEG;IACH,IAAoB,IAAI;QACpB,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED;;;;;;OAMG;IACH,YAAmB,IAAY,EAAE,UAAsB,EAAE,KAAY,EAAE,sBAAsB,GAAG,IAAI;QAChG,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAoGnC,aAAa;QAEN,oBAAe,GAAG,SAAS,CAAC,iBAAiB,CAAC;QAG9C,kBAAa,GAAG,SAAS,CAAC,sBAAsB,CAAC;QAExD,eAAe;QAER,sBAAiB,GAAG,SAAS,CAAC,iBAAiB,CAAC;QAGhD,oBAAe,GAAG,SAAS,CAAC,sBAAsB,CAAC;QAE1D,cAAc;QAEP,qBAAgB,GAAG,SAAS,CAAC,kBAAkB,CAAC;QAGhD,mBAAc,GAAG,SAAS,CAAC,yBAAyB,CAAC;QAE5D,eAAe;QAER,sBAAiB,GAAG,SAAS,CAAC,kBAAkB,CAAC;QAGjD,oBAAe,GAAG,SAAS,CAAC,yBAAyB,CAAC;QAE7D,iBAAiB;QAEV,wBAAmB,GAAG,SAAS,CAAC,kBAAkB,CAAC;QAGnD,sBAAiB,GAAG,SAAS,CAAC,sBAAsB,CAAC;QAE5D,iBAAiB;QAEV,wBAAmB,GAAG,SAAS,CAAC,kBAAkB,CAAC;QAGnD,sBAAiB,GAAG,SAAS,CAAC,sBAAsB,CAAC;QAE5D,SAAS;QAEF,iBAAY,GAAG,SAAS,CAAC,kBAAkB,CAAC;QAG5C,eAAU,GAAG,SAAS,CAAC,yBAAyB,CAAC;QAExD,eAAe;QAER,uBAAkB,GAAG,SAAS,CAAC,kBAAkB,CAAC;QAGlD,qBAAgB,GAAG,SAAS,CAAC,yBAAyB,CAAC;QAE9D,WAAW;QAEJ,mBAAc,GAAG,SAAS,CAAC,kBAAkB,CAAC;QAG9C,iBAAY,GAAG,SAAS,CAAC,yBAAyB,CAAC;QAE1D,kBAAkB;QAEX,yBAAoB,GAAG,SAAS,CAAC,kBAAkB,CAAC;QAGpD,uBAAkB,GAAG,SAAS,CAAC,yBAAyB,CAAC;QAtK5D,IAAI,CAAC,iCAAiC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAElE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,wCAAwC,CAAC,uCAAuC,EAAE,IAAI,CAAC,CAAC;QACpH,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,wCAAwC,CAAC,MAAM,CAAC,CAAC;QAC9E,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,wCAAwC,CAAC,UAAU,CAAC,CAAC;QACnF,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,wCAAwC,CAAC,YAAY,CAAC,CAAC;QAC1F,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,wCAAwC,CAAC,gBAAgB,CAAC,CAAC;QAChG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,wCAAwC,CAAC,kBAAkB,CAAC,CAAC;QACpG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,wCAAwC,CAAC,iBAAiB,CAAC,CAAC;QAClG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,wCAAwC,CAAC,iBAAiB,CAAC,CAAC;QACnG,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,wCAAwC,CAAC,oBAAoB,CAAC,CAAC;QACxG,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,wCAAwC,CAAC,oBAAoB,CAAC,CAAC;QACxG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,wCAAwC,CAAC,aAAa,CAAC,CAAC;QAC1F,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,wCAAwC,CAAC,mBAAmB,CAAC,CAAC;QACtG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,wCAAwC,CAAC,eAAe,CAAC,CAAC;QAC9F,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,wCAAwC,CAAC,qBAAqB,CAAC,CAAC;QAE1G,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,wCAAwC,CAAC,6BAA6B,CAAC,CAAC;QAEnH,IAAI,CAAC,WAAW,CAAC,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC;QAEpD,IAAI,CAAC,eAAe,GAAG,IAAI,8BAA8B,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACxH,CAAC;IAED,6DAA6D;IAE7D,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;IAC1C,CAAC;IAED,IAAW,SAAS,CAAC,KAAc;QAC/B,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,KAAK,CAAC;IAC3C,CAAC;IAED,6DAA6D;IAE7D,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;IAC3C,CAAC;IAED,IAAW,UAAU,CAAC,KAAc;QAChC,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,KAAK,CAAC;IAC5C,CAAC;IAED,4EAA4E;IAE5E,IAAW,sBAAsB;QAC7B,OAAO,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,OAAO,CAAC,sBAAsB,CAAC;IAC9E,CAAC;IAED,IAAW,sBAAsB,CAAC,KAAc;QAC5C,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,8BAA8B,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,CAAC;QACvI,IAAI,CAAC,iCAAiC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,oCAAoC;IAEpC,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3C,CAAC;IAED,IAAW,KAAK,CAAC,KAAa;QAC1B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAC5C,CAAC;IAED,qCAAqC;IAErC,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;IAC5C,CAAC;IAED,IAAW,MAAM,CAAC,KAAa;QAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IAC7C,CAAC;IAED,4FAA4F;IAE5F,IAAW,gBAAgB;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC;IACjD,CAAC;IAED,IAAW,gBAAgB,CAAC,KAAc;QACtC,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,KAAK,CAAC;IAClD,CAAC;IAED,gDAAgD;IAEhD,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;IACxC,CAAC;IAED,IAAW,OAAO,CAAC,KAAa;QAC5B,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,KAAK,CAAC;IACzC,CAAC;IAwED;;;OAGG;IACa,YAAY;QACxB,OAAO,sCAAsC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,IAAW,eAAe;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,IAAW,eAAe;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,IAAW,iBAAiB;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,IAAW,iBAAiB;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,IAAW,gBAAgB;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,IAAW,kBAAkB;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAEkB,WAAW,CAAC,KAAgC;QAC3D,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAEzB,MAAM,iBAAiB,GAAG;YACtB,IAAI,CAAC,aAAa,CAAC,WAAW;YAC9B,IAAI,CAAC,eAAe,CAAC,WAAW;YAChC,IAAI,CAAC,cAAc,CAAC,WAAW;YAC/B,IAAI,CAAC,eAAe,CAAC,WAAW;YAChC,IAAI,CAAC,iBAAiB,CAAC,WAAW;YAClC,IAAI,CAAC,iBAAiB,CAAC,WAAW;YAClC,IAAI,CAAC,UAAU,CAAC,WAAW;YAC3B,IAAI,CAAC,gBAAgB,CAAC,WAAW;YACjC,IAAI,CAAC,YAAY,CAAC,WAAW;YAC7B,IAAI,CAAC,kBAAkB,CAAC,WAAW;SACtC,CAAC;QAEF,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,6FAA6F,CAAC,CAAC;QACnH,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;QACjE,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC;QACzE,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC;QAC7E,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,yBAAyB,CAAC;QAC3E,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC;QAC7E,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,4BAA4B,CAAC;QACjF,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,4BAA4B,CAAC;QACjF,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC;QACnE,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,2BAA2B,CAAC;QAC/E,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC;QACvE,IAAI,CAAC,kBAAkB,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC;QAEnF,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,KAAgC,CAAC;QAChG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,KAAe,CAAC;QAC1E,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,KAA6B,CAAC;QAE7F,IAAI,CAAC,eAAe,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAE9C,MAAM,cAAc,GAAG;YACnB,IAAI,CAAC,eAAe;YACpB,IAAI,CAAC,iBAAiB;YACtB,IAAI,CAAC,gBAAgB;YACrB,IAAI,CAAC,iBAAiB;YACtB,IAAI,CAAC,mBAAmB;YACxB,IAAI,CAAC,mBAAmB;YACxB,IAAI,CAAC,YAAY;YACjB,IAAI,CAAC,kBAAkB;YACvB,IAAI,CAAC,cAAc;YACnB,IAAI,CAAC,oBAAoB;SAC5B,CAAC;QACF,MAAM,YAAY,GAAG;YACjB,IAAI,CAAC,aAAa;YAClB,IAAI,CAAC,eAAe;YACpB,IAAI,CAAC,cAAc;YACnB,IAAI,CAAC,eAAe;YACpB,IAAI,CAAC,iBAAiB;YACtB,IAAI,CAAC,iBAAiB;YACtB,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,gBAAgB;YACrB,IAAI,CAAC,YAAY;YACjB,IAAI,CAAC,kBAAkB;SAC1B,CAAC;QACF,MAAM,WAAW,GAAG;YAChB,SAAS,CAAC,0BAA0B;YACpC,SAAS,CAAC,sCAAsC;YAChD,SAAS,CAAC,2BAA2B;YACrC,SAAS,CAAC,iCAAiC;YAC3C,SAAS,CAAC,mCAAmC;YAC7C,SAAS,CAAC,6BAA6B;YACvC,SAAS,CAAC,2BAA2B;YACrC,SAAS,CAAC,iCAAiC;YAC3C,SAAS,CAAC,6BAA6B;YACvC,SAAS,CAAC,oCAAoC;SACjD,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,IAAI,CAAC;oBAC1C,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;oBAChC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;oBAC5B,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;iBACvB,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;IAEkB,mBAAmB;QAClC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,gBAAgB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACvE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,iBAAiB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACzE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,cAAc,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,sBAAsB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACnF,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,oBAAoB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QAC/E,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,wBAAwB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QACvF,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,sBAAsB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACnF,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,0BAA0B,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAC3F,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,wBAAwB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QACvF,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,0BAA0B,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAC3F,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,wBAAwB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QACvF,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,uBAAuB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QACrF,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,qBAAqB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACjF,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,wBAAwB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QACvF,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,sBAAsB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACnF,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,mBAAmB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QAC7E,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,iBAAiB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACzE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,yBAAyB,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QACzF,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,uBAAuB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QACrF,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,qBAAqB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACjF,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,mBAAmB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QAC7E,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,2BAA2B,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;QAC7F,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,yBAAyB,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QACzF,OAAO,KAAK,CAAC,mBAAmB,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IAEe,SAAS;QACrB,MAAM,mBAAmB,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAC9C,mBAAmB,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/C,mBAAmB,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACjD,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3C,mBAAmB,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC3D,mBAAmB,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACvD,mBAAmB,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC/D,mBAAmB,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC3D,mBAAmB,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACnE,mBAAmB,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC/D,mBAAmB,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACnE,mBAAmB,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC/D,mBAAmB,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC7D,mBAAmB,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QACzD,mBAAmB,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC/D,mBAAmB,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC3D,mBAAmB,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACrD,mBAAmB,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACjD,mBAAmB,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACjE,mBAAmB,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC7D,mBAAmB,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QACzD,mBAAmB,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACrD,mBAAmB,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACrE,mBAAmB,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACjE,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAEe,YAAY,CAAC,mBAAwB;QACjD,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC,SAAS,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC,UAAU,CAAC;QACjD,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC;QAC3C,IAAI,CAAC,eAAe,GAAG,mBAAmB,CAAC,eAAe,CAAC;QAC3D,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,aAAa,CAAC;QACvD,IAAI,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,iBAAiB,CAAC;QAC/D,IAAI,CAAC,eAAe,GAAG,mBAAmB,CAAC,eAAe,CAAC;QAC3D,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC,mBAAmB,CAAC;QACnE,IAAI,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,iBAAiB,CAAC;QAC/D,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC,mBAAmB,CAAC;QACnE,IAAI,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,iBAAiB,CAAC;QAC/D,IAAI,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,gBAAgB,CAAC;QAC7D,IAAI,CAAC,cAAc,GAAG,mBAAmB,CAAC,cAAc,CAAC;QACzD,IAAI,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,iBAAiB,CAAC;QAC/D,IAAI,CAAC,eAAe,GAAG,mBAAmB,CAAC,eAAe,CAAC;QAC3D,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC,YAAY,CAAC;QACrD,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC,UAAU,CAAC;QACjD,IAAI,CAAC,kBAAkB,GAAG,mBAAmB,CAAC,kBAAkB,CAAC;QACjE,IAAI,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,gBAAgB,CAAC;QAC7D,IAAI,CAAC,cAAc,GAAG,mBAAmB,CAAC,cAAc,CAAC;QACzD,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC,YAAY,CAAC;QACrD,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC,oBAAoB,CAAC;QACrE,IAAI,CAAC,kBAAkB,GAAG,mBAAmB,CAAC,kBAAkB,CAAC;IACrE,CAAC;CACJ;AA9ZG;IADC,sBAAsB,CAAC,YAAY,0CAAkC,YAAY,CAAC;qEAGlF;AAQD;IADC,sBAAsB,CAAC,aAAa,0CAAkC,YAAY,CAAC;sEAGnF;AAQD;IADC,sBAAsB,CAAC,4BAA4B,0CAAkC,YAAY,CAAC;kFAGlG;AAUD;IADC,sBAAsB,CAAC,eAAe,sCAA8B,YAAY,CAAC;iEAGjF;AAQD;IADC,sBAAsB,CAAC,gBAAgB,sCAA8B,YAAY,CAAC;kEAGlF;AAQD;IADC,sBAAsB,CAAC,uBAAuB,0CAAkC,YAAY,CAAC;4EAG7F;AAQD;IADC,sBAAsB,CAAC,SAAS,sCAA8B,YAAY,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;mEAG/F;AAQM;IADN,sBAAsB,CAAC,mBAAmB,gDAAwC,kBAAkB,CAAC;6EACjD;AAG9C;IADN,sBAAsB,CAAC,iBAAiB,8CAAsC,kBAAkB,CAAC;2EAC1C;AAIjD;IADN,sBAAsB,CAAC,qBAAqB,gDAAwC,kBAAkB,CAAC;+EACjD;AAGhD;IADN,sBAAsB,CAAC,mBAAmB,8CAAsC,kBAAkB,CAAC;6EAC1C;AAInD;IADN,sBAAsB,CAAC,oBAAoB,gDAAwC,kBAAkB,CAAC;8EAChD;AAGhD;IADN,sBAAsB,CAAC,kBAAkB,8CAAsC,kBAAkB,CAAC;4EACvC;AAIrD;IADN,sBAAsB,CAAC,qBAAqB,gDAAwC,kBAAkB,CAAC;+EAChD;AAGjD;IADN,sBAAsB,CAAC,mBAAmB,8CAAsC,kBAAkB,CAAC;6EACvC;AAItD;IADN,sBAAsB,CAAC,uBAAuB,gDAAwC,kBAAkB,CAAC;iFAChD;AAGnD;IADN,sBAAsB,CAAC,qBAAqB,8CAAsC,kBAAkB,CAAC;+EAC1C;AAIrD;IADN,sBAAsB,CAAC,uBAAuB,gDAAwC,kBAAkB,CAAC;iFAChD;AAGnD;IADN,sBAAsB,CAAC,qBAAqB,8CAAsC,kBAAkB,CAAC;+EAC1C;AAIrD;IADN,sBAAsB,CAAC,eAAe,gDAAwC,kBAAkB,CAAC;0EAC/C;AAG5C;IADN,sBAAsB,CAAC,aAAa,8CAAsC,kBAAkB,CAAC;wEACtC;AAIjD;IADN,sBAAsB,CAAC,qBAAqB,gDAAwC,kBAAkB,CAAC;gFAC/C;AAGlD;IADN,sBAAsB,CAAC,mBAAmB,8CAAsC,kBAAkB,CAAC;8EACtC;AAIvD;IADN,sBAAsB,CAAC,iBAAiB,gDAAwC,kBAAkB,CAAC;4EAC/C;AAG9C;IADN,sBAAsB,CAAC,eAAe,8CAAsC,kBAAkB,CAAC;0EACtC;AAInD;IADN,sBAAsB,CAAC,wBAAwB,gDAAwC,kBAAkB,CAAC;kFAChD;AAGpD;IADN,sBAAsB,CAAC,sBAAsB,8CAAsC,kBAAkB,CAAC;gFACvC;AAsRpE,aAAa,CAAC,8CAA8C,EAAE,oCAAoC,CAAC,CAAC","sourcesContent":["// eslint-disable-next-line import/no-internal-modules\r\nimport type { NodeRenderGraphConnectionPoint, Scene, NodeRenderGraphBuildState, FrameGraph, FrameGraphTextureHandle, FrameGraphObjectList, Camera } from \"core/index\";\r\nimport { NodeRenderGraphBlock } from \"../../nodeRenderGraphBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes } from \"../../Types/nodeRenderGraphTypes\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport { FrameGraphGeometryRendererTask } from \"../../../Tasks/Rendering/geometryRendererTask\";\r\nimport { Constants } from \"core/Engines/constants\";\r\n\r\n/**\r\n * Block that render geometry of objects to a multi render target\r\n */\r\nexport class NodeRenderGraphGeometryRendererBlock extends NodeRenderGraphBlock {\r\n protected override _frameGraphTask: FrameGraphGeometryRendererTask;\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 NodeRenderGraphGeometryRendererBlock\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];\r\n\r\n this.registerInput(\"depth\", NodeRenderGraphBlockConnectionPointTypes.TextureBackBufferDepthStencilAttachment, true);\r\n this.registerInput(\"camera\", NodeRenderGraphBlockConnectionPointTypes.Camera);\r\n this.registerInput(\"objects\", NodeRenderGraphBlockConnectionPointTypes.ObjectList);\r\n this._addDependenciesInput();\r\n\r\n this.registerOutput(\"outputDepth\", NodeRenderGraphBlockConnectionPointTypes.BasedOnInput);\r\n this.registerOutput(\"geomViewDepth\", NodeRenderGraphBlockConnectionPointTypes.TextureViewDepth);\r\n this.registerOutput(\"geomScreenDepth\", NodeRenderGraphBlockConnectionPointTypes.TextureScreenDepth);\r\n this.registerOutput(\"geomViewNormal\", NodeRenderGraphBlockConnectionPointTypes.TextureViewNormal);\r\n this.registerOutput(\"geomWorldNormal\", NodeRenderGraphBlockConnectionPointTypes.TextureViewNormal);\r\n this.registerOutput(\"geomLocalPosition\", NodeRenderGraphBlockConnectionPointTypes.TextureLocalPosition);\r\n this.registerOutput(\"geomWorldPosition\", NodeRenderGraphBlockConnectionPointTypes.TextureWorldPosition);\r\n this.registerOutput(\"geomAlbedo\", NodeRenderGraphBlockConnectionPointTypes.TextureAlbedo);\r\n this.registerOutput(\"geomReflectivity\", NodeRenderGraphBlockConnectionPointTypes.TextureReflectivity);\r\n this.registerOutput(\"geomVelocity\", NodeRenderGraphBlockConnectionPointTypes.TextureVelocity);\r\n this.registerOutput(\"geomLinearVelocity\", NodeRenderGraphBlockConnectionPointTypes.TextureLinearVelocity);\r\n\r\n this.depth.addAcceptedConnectionPointTypes(NodeRenderGraphBlockConnectionPointTypes.TextureDepthStencilAttachment);\r\n\r\n this.outputDepth._typeConnectionSource = this.depth;\r\n\r\n this._frameGraphTask = new FrameGraphGeometryRendererTask(this.name, frameGraph, scene, { doNotChangeAspectRatio });\r\n }\r\n\r\n /** Indicates if depth testing must be enabled or disabled */\r\n @editableInPropertyPage(\"Depth test\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get depthTest() {\r\n return this._frameGraphTask.depthTest;\r\n }\r\n\r\n public set depthTest(value: boolean) {\r\n this._frameGraphTask.depthTest = value;\r\n }\r\n\r\n /** Indicates if depth writing must be enabled or disabled */\r\n @editableInPropertyPage(\"Depth write\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get depthWrite() {\r\n return this._frameGraphTask.depthWrite;\r\n }\r\n\r\n public set depthWrite(value: boolean) {\r\n this._frameGraphTask.depthWrite = value;\r\n }\r\n\r\n /** True (default) to not change the aspect ratio of the scene in the RTT */\r\n @editableInPropertyPage(\"Do not change aspect ratio\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get doNotChangeAspectRatio() {\r\n return this._frameGraphTask.objectRenderer.options.doNotChangeAspectRatio;\r\n }\r\n\r\n public set doNotChangeAspectRatio(value: boolean) {\r\n this._frameGraphTask.dispose();\r\n this._frameGraphTask = new FrameGraphGeometryRendererTask(this.name, this._frameGraph, this._scene, { doNotChangeAspectRatio: value });\r\n this._additionalConstructionParameters = [value];\r\n }\r\n\r\n /** Width of the geometry texture */\r\n @editableInPropertyPage(\"Texture width\", PropertyTypeForEdition.Int, \"PROPERTIES\")\r\n public get width() {\r\n return this._frameGraphTask.size.width;\r\n }\r\n\r\n public set width(value: number) {\r\n this._frameGraphTask.size.width = value;\r\n }\r\n\r\n /** Height of the geometry texture */\r\n @editableInPropertyPage(\"Texture height\", PropertyTypeForEdition.Int, \"PROPERTIES\")\r\n public get height() {\r\n return this._frameGraphTask.size.height;\r\n }\r\n\r\n public set height(value: number) {\r\n this._frameGraphTask.size.height = value;\r\n }\r\n\r\n /** Indicates if the geometry texture width and height are percentages or absolute values */\r\n @editableInPropertyPage(\"Size is in percentage\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get sizeInPercentage() {\r\n return this._frameGraphTask.sizeIsPercentage;\r\n }\r\n\r\n public set sizeInPercentage(value: boolean) {\r\n this._frameGraphTask.sizeIsPercentage = value;\r\n }\r\n\r\n /** Number of samples of the geometry texture */\r\n @editableInPropertyPage(\"Samples\", PropertyTypeForEdition.Int, \"PROPERTIES\", { min: 1, max: 8 })\r\n public get samples() {\r\n return this._frameGraphTask.samples;\r\n }\r\n\r\n public set samples(value: number) {\r\n this._frameGraphTask.samples = value;\r\n }\r\n\r\n // View depth\r\n @editableInPropertyPage(\"View depth format\", PropertyTypeForEdition.TextureFormat, \"GEOMETRY BUFFERS\")\r\n public viewDepthFormat = Constants.TEXTUREFORMAT_RED;\r\n\r\n @editableInPropertyPage(\"View depth type\", PropertyTypeForEdition.TextureType, \"GEOMETRY BUFFERS\")\r\n public viewDepthType = Constants.TEXTURETYPE_HALF_FLOAT;\r\n\r\n // Screen depth\r\n @editableInPropertyPage(\"Screen depth format\", PropertyTypeForEdition.TextureFormat, \"GEOMETRY BUFFERS\")\r\n public screenDepthFormat = Constants.TEXTUREFORMAT_RED;\r\n\r\n @editableInPropertyPage(\"Screen depth type\", PropertyTypeForEdition.TextureType, \"GEOMETRY BUFFERS\")\r\n public screenDepthType = Constants.TEXTURETYPE_HALF_FLOAT;\r\n\r\n // View normal\r\n @editableInPropertyPage(\"View normal format\", PropertyTypeForEdition.TextureFormat, \"GEOMETRY BUFFERS\")\r\n public viewNormalFormat = Constants.TEXTUREFORMAT_RGBA;\r\n\r\n @editableInPropertyPage(\"View normal type\", PropertyTypeForEdition.TextureType, \"GEOMETRY BUFFERS\")\r\n public viewNormalType = Constants.TEXTURETYPE_UNSIGNED_BYTE;\r\n\r\n // World normal\r\n @editableInPropertyPage(\"World normal format\", PropertyTypeForEdition.TextureFormat, \"GEOMETRY BUFFERS\")\r\n public worldNormalFormat = Constants.TEXTUREFORMAT_RGBA;\r\n\r\n @editableInPropertyPage(\"World normal type\", PropertyTypeForEdition.TextureType, \"GEOMETRY BUFFERS\")\r\n public worldNormalType = Constants.TEXTURETYPE_UNSIGNED_BYTE;\r\n\r\n // Local position\r\n @editableInPropertyPage(\"Local position format\", PropertyTypeForEdition.TextureFormat, \"GEOMETRY BUFFERS\")\r\n public localPositionFormat = Constants.TEXTUREFORMAT_RGBA;\r\n\r\n @editableInPropertyPage(\"Local position type\", PropertyTypeForEdition.TextureType, \"GEOMETRY BUFFERS\")\r\n public localPositionType = Constants.TEXTURETYPE_HALF_FLOAT;\r\n\r\n // World Position\r\n @editableInPropertyPage(\"World position format\", PropertyTypeForEdition.TextureFormat, \"GEOMETRY BUFFERS\")\r\n public worldPositionFormat = Constants.TEXTUREFORMAT_RGBA;\r\n\r\n @editableInPropertyPage(\"World position type\", PropertyTypeForEdition.TextureType, \"GEOMETRY BUFFERS\")\r\n public worldPositionType = Constants.TEXTURETYPE_HALF_FLOAT;\r\n\r\n // Albedo\r\n @editableInPropertyPage(\"Albedo format\", PropertyTypeForEdition.TextureFormat, \"GEOMETRY BUFFERS\")\r\n public albedoFormat = Constants.TEXTUREFORMAT_RGBA;\r\n\r\n @editableInPropertyPage(\"Albedo type\", PropertyTypeForEdition.TextureType, \"GEOMETRY BUFFERS\")\r\n public albedoType = Constants.TEXTURETYPE_UNSIGNED_BYTE;\r\n\r\n // Reflectivity\r\n @editableInPropertyPage(\"Reflectivity format\", PropertyTypeForEdition.TextureFormat, \"GEOMETRY BUFFERS\")\r\n public reflectivityFormat = Constants.TEXTUREFORMAT_RGBA;\r\n\r\n @editableInPropertyPage(\"Reflectivity type\", PropertyTypeForEdition.TextureType, \"GEOMETRY BUFFERS\")\r\n public reflectivityType = Constants.TEXTURETYPE_UNSIGNED_BYTE;\r\n\r\n // Velocity\r\n @editableInPropertyPage(\"Velocity format\", PropertyTypeForEdition.TextureFormat, \"GEOMETRY BUFFERS\")\r\n public velocityFormat = Constants.TEXTUREFORMAT_RGBA;\r\n\r\n @editableInPropertyPage(\"Velocity type\", PropertyTypeForEdition.TextureType, \"GEOMETRY BUFFERS\")\r\n public velocityType = Constants.TEXTURETYPE_UNSIGNED_BYTE;\r\n\r\n // Linear velocity\r\n @editableInPropertyPage(\"Linear velocity format\", PropertyTypeForEdition.TextureFormat, \"GEOMETRY BUFFERS\")\r\n public linearVelocityFormat = Constants.TEXTUREFORMAT_RGBA;\r\n\r\n @editableInPropertyPage(\"Linear velocity type\", PropertyTypeForEdition.TextureType, \"GEOMETRY BUFFERS\")\r\n public linearVelocityType = Constants.TEXTURETYPE_UNSIGNED_BYTE;\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 \"NodeRenderGraphGeometryRendererBlock\";\r\n }\r\n\r\n /**\r\n * Gets the depth texture input component\r\n */\r\n public get depth(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the camera input component\r\n */\r\n public get camera(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the objects input component\r\n */\r\n public get objects(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the output depth component\r\n */\r\n public get outputDepth(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the geometry view depth component\r\n */\r\n public get geomViewDepth(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the geometry screen depth component\r\n */\r\n public get geomScreenDepth(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n /**\r\n * Gets the geometry view normal component\r\n */\r\n public get geomViewNormal(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[3];\r\n }\r\n\r\n /**\r\n * Gets the world geometry normal component\r\n */\r\n public get geomWorldNormal(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[4];\r\n }\r\n\r\n /**\r\n * Gets the geometry local position component\r\n */\r\n public get geomLocalPosition(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[5];\r\n }\r\n\r\n /**\r\n * Gets the geometry world position component\r\n */\r\n public get geomWorldPosition(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[6];\r\n }\r\n\r\n /**\r\n * Gets the geometry albedo component\r\n */\r\n public get geomAlbedo(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[7];\r\n }\r\n\r\n /**\r\n * Gets the geometry reflectivity component\r\n */\r\n public get geomReflectivity(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[8];\r\n }\r\n\r\n /**\r\n * Gets the geometry velocity component\r\n */\r\n public get geomVelocity(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[9];\r\n }\r\n\r\n /**\r\n * Gets the geometry linear velocity component\r\n */\r\n public get geomLinearVelocity(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[10];\r\n }\r\n\r\n protected override _buildBlock(state: NodeRenderGraphBuildState) {\r\n super._buildBlock(state);\r\n\r\n const textureActivation = [\r\n this.geomViewDepth.isConnected,\r\n this.geomScreenDepth.isConnected,\r\n this.geomViewNormal.isConnected,\r\n this.geomWorldNormal.isConnected,\r\n this.geomLocalPosition.isConnected,\r\n this.geomWorldPosition.isConnected,\r\n this.geomAlbedo.isConnected,\r\n this.geomReflectivity.isConnected,\r\n this.geomVelocity.isConnected,\r\n this.geomLinearVelocity.isConnected,\r\n ];\r\n\r\n if (textureActivation.every((t) => !t)) {\r\n throw new Error(\"NodeRenderGraphGeometryRendererBlock: At least one output geometry buffer must be connected\");\r\n }\r\n\r\n this.outputDepth.value = this._frameGraphTask.outputDepthTexture;\r\n this.geomViewDepth.value = this._frameGraphTask.geometryViewDepthTexture;\r\n this.geomScreenDepth.value = this._frameGraphTask.geometryScreenDepthTexture;\r\n this.geomViewNormal.value = this._frameGraphTask.geometryViewNormalTexture;\r\n this.geomWorldNormal.value = this._frameGraphTask.geometryWorldNormalTexture;\r\n this.geomLocalPosition.value = this._frameGraphTask.geometryLocalPositionTexture;\r\n this.geomWorldPosition.value = this._frameGraphTask.geometryWorldPositionTexture;\r\n this.geomAlbedo.value = this._frameGraphTask.geometryAlbedoTexture;\r\n this.geomReflectivity.value = this._frameGraphTask.geometryReflectivityTexture;\r\n this.geomVelocity.value = this._frameGraphTask.geometryVelocityTexture;\r\n this.geomLinearVelocity.value = this._frameGraphTask.geometryLinearVelocityTexture;\r\n\r\n this._frameGraphTask.depthTexture = this.depth.connectedPoint?.value as FrameGraphTextureHandle;\r\n this._frameGraphTask.camera = this.camera.connectedPoint?.value as Camera;\r\n this._frameGraphTask.objectList = this.objects.connectedPoint?.value as FrameGraphObjectList;\r\n\r\n this._frameGraphTask.textureDescriptions = [];\r\n\r\n const textureFormats = [\r\n this.viewDepthFormat,\r\n this.screenDepthFormat,\r\n this.viewNormalFormat,\r\n this.worldNormalFormat,\r\n this.localPositionFormat,\r\n this.worldPositionFormat,\r\n this.albedoFormat,\r\n this.reflectivityFormat,\r\n this.velocityFormat,\r\n this.linearVelocityFormat,\r\n ];\r\n const textureTypes = [\r\n this.viewDepthType,\r\n this.screenDepthType,\r\n this.viewNormalType,\r\n this.worldNormalType,\r\n this.localPositionType,\r\n this.worldPositionType,\r\n this.albedoType,\r\n this.reflectivityType,\r\n this.velocityType,\r\n this.linearVelocityType,\r\n ];\r\n const bufferTypes = [\r\n Constants.PREPASS_DEPTH_TEXTURE_TYPE,\r\n Constants.PREPASS_SCREENSPACE_DEPTH_TEXTURE_TYPE,\r\n Constants.PREPASS_NORMAL_TEXTURE_TYPE,\r\n Constants.PREPASS_WORLD_NORMAL_TEXTURE_TYPE,\r\n Constants.PREPASS_LOCAL_POSITION_TEXTURE_TYPE,\r\n Constants.PREPASS_POSITION_TEXTURE_TYPE,\r\n Constants.PREPASS_ALBEDO_TEXTURE_TYPE,\r\n Constants.PREPASS_REFLECTIVITY_TEXTURE_TYPE,\r\n Constants.PREPASS_VELOCITY_TEXTURE_TYPE,\r\n Constants.PREPASS_VELOCITY_LINEAR_TEXTURE_TYPE,\r\n ];\r\n\r\n for (let i = 0; i < textureActivation.length; i++) {\r\n if (textureActivation[i]) {\r\n this._frameGraphTask.textureDescriptions.push({\r\n textureFormat: textureFormats[i],\r\n textureType: textureTypes[i],\r\n type: bufferTypes[i],\r\n });\r\n }\r\n }\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.depthTest = ${this.depthTest};`);\r\n codes.push(`${this._codeVariableName}.depthWrite = ${this.depthWrite};`);\r\n codes.push(`${this._codeVariableName}.samples = ${this.samples};`);\r\n codes.push(`${this._codeVariableName}.viewDepthFormat = ${this.viewDepthFormat};`);\r\n codes.push(`${this._codeVariableName}.viewDepthType = ${this.viewDepthType};`);\r\n codes.push(`${this._codeVariableName}.screenDepthFormat = ${this.screenDepthFormat};`);\r\n codes.push(`${this._codeVariableName}.screenDepthType = ${this.screenDepthType};`);\r\n codes.push(`${this._codeVariableName}.localPositionFormat = ${this.localPositionFormat};`);\r\n codes.push(`${this._codeVariableName}.localPositionType = ${this.localPositionType};`);\r\n codes.push(`${this._codeVariableName}.worldPositionFormat = ${this.worldPositionFormat};`);\r\n codes.push(`${this._codeVariableName}.worldPositionType = ${this.worldPositionType};`);\r\n codes.push(`${this._codeVariableName}.viewNormalFormat = ${this.viewNormalFormat};`);\r\n codes.push(`${this._codeVariableName}.viewNormalType = ${this.viewNormalType};`);\r\n codes.push(`${this._codeVariableName}.worldNormalFormat = ${this.worldNormalFormat};`);\r\n codes.push(`${this._codeVariableName}.worldNormalType = ${this.worldNormalType};`);\r\n codes.push(`${this._codeVariableName}.albedoFormat = ${this.albedoFormat};`);\r\n codes.push(`${this._codeVariableName}.albedoType = ${this.albedoType};`);\r\n codes.push(`${this._codeVariableName}.reflectivityFormat = ${this.reflectivityFormat};`);\r\n codes.push(`${this._codeVariableName}.reflectivityType = ${this.reflectivityType};`);\r\n codes.push(`${this._codeVariableName}.velocityFormat = ${this.velocityFormat};`);\r\n codes.push(`${this._codeVariableName}.velocityType = ${this.velocityType};`);\r\n codes.push(`${this._codeVariableName}.linearVelocityFormat = ${this.linearVelocityFormat};`);\r\n codes.push(`${this._codeVariableName}.linearVelocityType = ${this.linearVelocityType};`);\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.depthTest = this.depthTest;\r\n serializationObject.depthWrite = this.depthWrite;\r\n serializationObject.samples = this.samples;\r\n serializationObject.viewDepthFormat = this.viewDepthFormat;\r\n serializationObject.viewDepthType = this.viewDepthType;\r\n serializationObject.screenDepthFormat = this.screenDepthFormat;\r\n serializationObject.screenDepthType = this.screenDepthType;\r\n serializationObject.localPositionFormat = this.localPositionFormat;\r\n serializationObject.localPositionType = this.localPositionType;\r\n serializationObject.worldPositionFormat = this.worldPositionFormat;\r\n serializationObject.worldPositionType = this.worldPositionType;\r\n serializationObject.viewNormalFormat = this.viewNormalFormat;\r\n serializationObject.viewNormalType = this.viewNormalType;\r\n serializationObject.worldNormalFormat = this.worldNormalFormat;\r\n serializationObject.worldNormalType = this.worldNormalType;\r\n serializationObject.albedoFormat = this.albedoFormat;\r\n serializationObject.albedoType = this.albedoType;\r\n serializationObject.reflectivityFormat = this.reflectivityFormat;\r\n serializationObject.reflectivityType = this.reflectivityType;\r\n serializationObject.velocityFormat = this.velocityFormat;\r\n serializationObject.velocityType = this.velocityType;\r\n serializationObject.linearVelocityFormat = this.linearVelocityFormat;\r\n serializationObject.linearVelocityType = this.linearVelocityType;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n this.depthTest = serializationObject.depthTest;\r\n this.depthWrite = serializationObject.depthWrite;\r\n this.samples = serializationObject.samples;\r\n this.viewDepthFormat = serializationObject.viewDepthFormat;\r\n this.viewDepthType = serializationObject.viewDepthType;\r\n this.screenDepthFormat = serializationObject.screenDepthFormat;\r\n this.screenDepthType = serializationObject.screenDepthType;\r\n this.localPositionFormat = serializationObject.localPositionFormat;\r\n this.localPositionType = serializationObject.localPositionType;\r\n this.worldPositionFormat = serializationObject.worldPositionFormat;\r\n this.worldPositionType = serializationObject.worldPositionType;\r\n this.viewNormalFormat = serializationObject.viewNormalFormat;\r\n this.viewNormalType = serializationObject.viewNormalType;\r\n this.worldNormalFormat = serializationObject.worldNormalFormat;\r\n this.worldNormalType = serializationObject.worldNormalType;\r\n this.albedoFormat = serializationObject.albedoFormat;\r\n this.albedoType = serializationObject.albedoType;\r\n this.reflectivityFormat = serializationObject.reflectivityFormat;\r\n this.reflectivityType = serializationObject.reflectivityType;\r\n this.velocityFormat = serializationObject.velocityFormat;\r\n this.velocityType = serializationObject.velocityType;\r\n this.linearVelocityFormat = serializationObject.linearVelocityFormat;\r\n this.linearVelocityType = serializationObject.linearVelocityType;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.NodeRenderGraphGeometryRendererBlock\", NodeRenderGraphGeometryRendererBlock);\r\n"]}
|
|
@@ -15,9 +15,15 @@ export declare class NodeRenderGraphObjectRendererBlock extends NodeRenderGraphB
|
|
|
15
15
|
/** True (default) to not change the aspect ratio of the scene in the RTT */
|
|
16
16
|
get doNotChangeAspectRatio(): boolean;
|
|
17
17
|
set doNotChangeAspectRatio(value: boolean);
|
|
18
|
+
/** Indicates if shadows must be enabled or disabled */
|
|
19
|
+
get disableShadows(): boolean;
|
|
20
|
+
set disableShadows(value: boolean);
|
|
18
21
|
/**
|
|
19
22
|
* Gets the current class name
|
|
20
23
|
* @returns the class name
|
|
21
24
|
*/
|
|
22
25
|
getClassName(): string;
|
|
26
|
+
protected _dumpPropertiesCode(): string;
|
|
27
|
+
serialize(): any;
|
|
28
|
+
_deserialize(serializationObject: any): void;
|
|
23
29
|
}
|
|
@@ -28,6 +28,13 @@ export class NodeRenderGraphObjectRendererBlock extends NodeRenderGraphBaseObjec
|
|
|
28
28
|
this._frameGraphTask = new FrameGraphObjectRendererTask(this.name, this._frameGraph, this._scene, { doNotChangeAspectRatio: value });
|
|
29
29
|
this._additionalConstructionParameters = [value];
|
|
30
30
|
}
|
|
31
|
+
/** Indicates if shadows must be enabled or disabled */
|
|
32
|
+
get disableShadows() {
|
|
33
|
+
return this._frameGraphTask.disableShadows;
|
|
34
|
+
}
|
|
35
|
+
set disableShadows(value) {
|
|
36
|
+
this._frameGraphTask.disableShadows = value;
|
|
37
|
+
}
|
|
31
38
|
/**
|
|
32
39
|
* Gets the current class name
|
|
33
40
|
* @returns the class name
|
|
@@ -35,9 +42,29 @@ export class NodeRenderGraphObjectRendererBlock extends NodeRenderGraphBaseObjec
|
|
|
35
42
|
getClassName() {
|
|
36
43
|
return "NodeRenderGraphObjectRendererBlock";
|
|
37
44
|
}
|
|
45
|
+
_dumpPropertiesCode() {
|
|
46
|
+
const codes = [];
|
|
47
|
+
codes.push(`${this._codeVariableName}.doNotChangeAspectRatio = ${this.doNotChangeAspectRatio};`);
|
|
48
|
+
codes.push(`${this._codeVariableName}.disableShadows = ${this.disableShadows};`);
|
|
49
|
+
return super._dumpPropertiesCode() + codes.join("\n");
|
|
50
|
+
}
|
|
51
|
+
serialize() {
|
|
52
|
+
const serializationObject = super.serialize();
|
|
53
|
+
serializationObject.doNotChangeAspectRatio = this.doNotChangeAspectRatio;
|
|
54
|
+
serializationObject.disableShadows = this.disableShadows;
|
|
55
|
+
return serializationObject;
|
|
56
|
+
}
|
|
57
|
+
_deserialize(serializationObject) {
|
|
58
|
+
super._deserialize(serializationObject);
|
|
59
|
+
this.doNotChangeAspectRatio = serializationObject.doNotChangeAspectRatio;
|
|
60
|
+
this.disableShadows = serializationObject.disableShadows;
|
|
61
|
+
}
|
|
38
62
|
}
|
|
39
63
|
__decorate([
|
|
40
64
|
editableInPropertyPage("Do not change aspect ratio", 0 /* PropertyTypeForEdition.Boolean */, "PROPERTIES")
|
|
41
65
|
], NodeRenderGraphObjectRendererBlock.prototype, "doNotChangeAspectRatio", null);
|
|
66
|
+
__decorate([
|
|
67
|
+
editableInPropertyPage("Disable shadows", 0 /* PropertyTypeForEdition.Boolean */, "PROPERTIES")
|
|
68
|
+
], NodeRenderGraphObjectRendererBlock.prototype, "disableShadows", null);
|
|
42
69
|
RegisterClass("BABYLON.NodeRenderGraphObjectRendererBlock", NodeRenderGraphObjectRendererBlock);
|
|
43
70
|
//# sourceMappingURL=objectRendererBlock.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objectRendererBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAA0B,MAAM,sCAAsC,CAAC;AACtG,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,sCAAsC,EAAE,MAAM,2BAA2B,CAAC;AAEnF;;GAEG;AACH,MAAM,OAAO,kCAAmC,SAAQ,sCAAsC;IAC1F;;;;;;OAMG;IACH,YAAmB,IAAY,EAAE,UAAsB,EAAE,KAAY,EAAE,sBAAsB,GAAG,IAAI;QAChG,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAE/B,IAAI,CAAC,iCAAiC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAElE,IAAI,CAAC,eAAe,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACtH,CAAC;IAED,4EAA4E;IAE5E,IAAW,sBAAsB;QAC7B,OAAO,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,OAAO,CAAC,sBAAsB,CAAC;IAC9E,CAAC;IAED,IAAW,sBAAsB,CAAC,KAAc;QAC5C,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,CAAC;QACrI,IAAI,CAAC,iCAAiC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC;IAED;;;OAGG;IACa,YAAY;QACxB,OAAO,oCAAoC,CAAC;IAChD,CAAC;CACJ;
|
|
1
|
+
{"version":3,"file":"objectRendererBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAA0B,MAAM,sCAAsC,CAAC;AACtG,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,sCAAsC,EAAE,MAAM,2BAA2B,CAAC;AAEnF;;GAEG;AACH,MAAM,OAAO,kCAAmC,SAAQ,sCAAsC;IAC1F;;;;;;OAMG;IACH,YAAmB,IAAY,EAAE,UAAsB,EAAE,KAAY,EAAE,sBAAsB,GAAG,IAAI;QAChG,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAE/B,IAAI,CAAC,iCAAiC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAElE,IAAI,CAAC,eAAe,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACtH,CAAC;IAED,4EAA4E;IAE5E,IAAW,sBAAsB;QAC7B,OAAO,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,OAAO,CAAC,sBAAsB,CAAC;IAC9E,CAAC;IAED,IAAW,sBAAsB,CAAC,KAAc;QAC5C,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,CAAC;QACrI,IAAI,CAAC,iCAAiC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,uDAAuD;IAEvD,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC;IAC/C,CAAC;IAED,IAAW,cAAc,CAAC,KAAc;QACpC,IAAI,CAAC,eAAe,CAAC,cAAc,GAAG,KAAK,CAAC;IAChD,CAAC;IAED;;;OAGG;IACa,YAAY;QACxB,OAAO,oCAAoC,CAAC;IAChD,CAAC;IAEkB,mBAAmB;QAClC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,6BAA6B,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC;QACjG,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,qBAAqB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACjF,OAAO,KAAK,CAAC,mBAAmB,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IAEe,SAAS;QACrB,MAAM,mBAAmB,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAC9C,mBAAmB,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;QACzE,mBAAmB,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QACzD,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAEe,YAAY,CAAC,mBAAwB;QACjD,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;QACxC,IAAI,CAAC,sBAAsB,GAAG,mBAAmB,CAAC,sBAAsB,CAAC;QACzE,IAAI,CAAC,cAAc,GAAG,mBAAmB,CAAC,cAAc,CAAC;IAC7D,CAAC;CACJ;AA/CG;IADC,sBAAsB,CAAC,4BAA4B,0CAAkC,YAAY,CAAC;gFAGlG;AAUD;IADC,sBAAsB,CAAC,iBAAiB,0CAAkC,YAAY,CAAC;wEAGvF;AAmCL,aAAa,CAAC,4CAA4C,EAAE,kCAAkC,CAAC,CAAC","sourcesContent":["// eslint-disable-next-line import/no-internal-modules\r\nimport type { Scene, FrameGraph } from \"core/index\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport { FrameGraphObjectRendererTask } from \"../../../Tasks/Rendering/objectRendererTask\";\r\nimport { NodeRenderGraphBaseObjectRendererBlock } from \"./baseObjectRendererBlock\";\r\n\r\n/**\r\n * Block that render objects to a render target\r\n */\r\nexport class NodeRenderGraphObjectRendererBlock extends NodeRenderGraphBaseObjectRendererBlock {\r\n /**\r\n * Create a new NodeRenderGraphObjectRendererBlock\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];\r\n\r\n this._frameGraphTask = new FrameGraphObjectRendererTask(this.name, frameGraph, scene, { doNotChangeAspectRatio });\r\n }\r\n\r\n /** True (default) to not change the aspect ratio of the scene in the RTT */\r\n @editableInPropertyPage(\"Do not change aspect ratio\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get doNotChangeAspectRatio() {\r\n return this._frameGraphTask.objectRenderer.options.doNotChangeAspectRatio;\r\n }\r\n\r\n public set doNotChangeAspectRatio(value: boolean) {\r\n this._frameGraphTask.dispose();\r\n this._frameGraphTask = new FrameGraphObjectRendererTask(this.name, this._frameGraph, this._scene, { doNotChangeAspectRatio: value });\r\n this._additionalConstructionParameters = [value];\r\n }\r\n\r\n /** Indicates if shadows must be enabled or disabled */\r\n @editableInPropertyPage(\"Disable shadows\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get disableShadows() {\r\n return this._frameGraphTask.disableShadows;\r\n }\r\n\r\n public set disableShadows(value: boolean) {\r\n this._frameGraphTask.disableShadows = 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 \"NodeRenderGraphObjectRendererBlock\";\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.doNotChangeAspectRatio = ${this.doNotChangeAspectRatio};`);\r\n codes.push(`${this._codeVariableName}.disableShadows = ${this.disableShadows};`);\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.doNotChangeAspectRatio = this.doNotChangeAspectRatio;\r\n serializationObject.disableShadows = this.disableShadows;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n this.doNotChangeAspectRatio = serializationObject.doNotChangeAspectRatio;\r\n this.disableShadows = serializationObject.disableShadows;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.NodeRenderGraphObjectRendererBlock\", NodeRenderGraphObjectRendererBlock);\r\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Scene, FrameGraph } from "../../../../index.js";
|
|
2
|
+
import { NodeRenderGraphBaseShadowGeneratorBlock } from "./baseShadowGeneratorBlock";
|
|
3
|
+
/**
|
|
4
|
+
* Block that generate shadows through a shadow generator
|
|
5
|
+
*/
|
|
6
|
+
export declare class NodeRenderGraphShadowGeneratorBlock extends NodeRenderGraphBaseShadowGeneratorBlock {
|
|
7
|
+
/**
|
|
8
|
+
* Create a new NodeRenderGraphShadowGeneratorBlock
|
|
9
|
+
* @param name defines the block name
|
|
10
|
+
* @param frameGraph defines the hosting frame graph
|
|
11
|
+
* @param scene defines the hosting scene
|
|
12
|
+
*/
|
|
13
|
+
constructor(name: string, frameGraph: FrameGraph, scene: Scene);
|
|
14
|
+
/**
|
|
15
|
+
* Gets the current class name
|
|
16
|
+
* @returns the class name
|
|
17
|
+
*/
|
|
18
|
+
getClassName(): string;
|
|
19
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { NodeRenderGraphBaseShadowGeneratorBlock } from "./baseShadowGeneratorBlock.js";
|
|
2
|
+
import { RegisterClass } from "../../../../Misc/typeStore.js";
|
|
3
|
+
import { FrameGraphShadowGeneratorTask } from "../../../Tasks/Rendering/shadowGeneratorTask.js";
|
|
4
|
+
/**
|
|
5
|
+
* Block that generate shadows through a shadow generator
|
|
6
|
+
*/
|
|
7
|
+
export class NodeRenderGraphShadowGeneratorBlock extends NodeRenderGraphBaseShadowGeneratorBlock {
|
|
8
|
+
/**
|
|
9
|
+
* Create a new NodeRenderGraphShadowGeneratorBlock
|
|
10
|
+
* @param name defines the block name
|
|
11
|
+
* @param frameGraph defines the hosting frame graph
|
|
12
|
+
* @param scene defines the hosting scene
|
|
13
|
+
*/
|
|
14
|
+
constructor(name, frameGraph, scene) {
|
|
15
|
+
super(name, frameGraph, scene);
|
|
16
|
+
this._addDependenciesInput();
|
|
17
|
+
this._frameGraphTask = new FrameGraphShadowGeneratorTask(this.name, frameGraph, scene);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Gets the current class name
|
|
21
|
+
* @returns the class name
|
|
22
|
+
*/
|
|
23
|
+
getClassName() {
|
|
24
|
+
return "NodeRenderGraphShadowGeneratorBlock";
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
RegisterClass("BABYLON.NodeRenderGraphShadowGeneratorBlock", NodeRenderGraphShadowGeneratorBlock);
|
|
28
|
+
//# sourceMappingURL=shadowGeneratorBlock.js.map
|