@babylonjs/core 8.39.0 → 8.39.1
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/Audio/Interfaces/ISoundOptions.d.ts +1 -1
- package/Audio/Interfaces/ISoundOptions.js.map +1 -1
- package/Audio/audioEngine.d.ts +3 -4
- package/Audio/audioEngine.js +9 -6
- package/Audio/audioEngine.js.map +1 -1
- package/Audio/sound.d.ts +33 -54
- package/Audio/sound.js +450 -718
- package/Audio/sound.js.map +1 -1
- package/AudioV2/abstractAudio/abstractAudioOutNode.d.ts +1 -1
- package/AudioV2/abstractAudio/abstractAudioOutNode.js +1 -1
- package/AudioV2/abstractAudio/abstractAudioOutNode.js.map +1 -1
- package/AudioV2/abstractAudio/abstractSound.d.ts +1 -1
- package/AudioV2/abstractAudio/abstractSound.js +2 -2
- package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
- package/AudioV2/abstractAudio/abstractSoundSource.d.ts +11 -3
- package/AudioV2/abstractAudio/abstractSoundSource.js +37 -1
- package/AudioV2/abstractAudio/abstractSoundSource.js.map +1 -1
- package/AudioV2/abstractAudio/audioBus.d.ts +8 -3
- package/AudioV2/abstractAudio/audioBus.js +24 -1
- package/AudioV2/abstractAudio/audioBus.js.map +1 -1
- package/AudioV2/abstractAudio/staticSound.d.ts +1 -1
- package/AudioV2/abstractAudio/staticSound.js +2 -2
- package/AudioV2/abstractAudio/staticSound.js.map +1 -1
- package/AudioV2/abstractAudio/streamingSound.d.ts +1 -1
- package/AudioV2/abstractAudio/streamingSound.js +2 -2
- package/AudioV2/abstractAudio/streamingSound.js.map +1 -1
- package/AudioV2/abstractAudio/subNodes/abstractAudioSubGraph.d.ts +1 -1
- package/AudioV2/abstractAudio/subNodes/abstractAudioSubGraph.js +3 -0
- package/AudioV2/abstractAudio/subNodes/abstractAudioSubGraph.js.map +1 -1
- package/AudioV2/abstractAudio/subNodes/spatialAudioSubNode.d.ts +1 -0
- package/AudioV2/abstractAudio/subNodes/spatialAudioSubNode.js +1 -0
- package/AudioV2/abstractAudio/subNodes/spatialAudioSubNode.js.map +1 -1
- package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.d.ts +12 -2
- package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js +2 -0
- package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js.map +1 -1
- package/AudioV2/abstractAudio/subProperties/spatialAudio.d.ts +6 -0
- package/AudioV2/abstractAudio/subProperties/spatialAudio.js +25 -0
- package/AudioV2/abstractAudio/subProperties/spatialAudio.js.map +1 -1
- package/AudioV2/webAudio/components/webAudioParameterComponent.js +2 -2
- package/AudioV2/webAudio/components/webAudioParameterComponent.js.map +1 -1
- package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.d.ts +3 -0
- package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js +14 -17
- package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js.map +1 -1
- package/AudioV2/webAudio/subNodes/webAudioBusAndSoundSubGraph.js +1 -0
- package/AudioV2/webAudio/subNodes/webAudioBusAndSoundSubGraph.js.map +1 -1
- package/AudioV2/webAudio/subProperties/spatialWebAudio.js +1 -0
- package/AudioV2/webAudio/subProperties/spatialWebAudio.js.map +1 -1
- package/AudioV2/webAudio/webAudioBus.d.ts +2 -7
- package/AudioV2/webAudio/webAudioBus.js +4 -24
- package/AudioV2/webAudio/webAudioBus.js.map +1 -1
- package/AudioV2/webAudio/webAudioEngine.js +1 -0
- package/AudioV2/webAudio/webAudioEngine.js.map +1 -1
- package/AudioV2/webAudio/webAudioSoundSource.d.ts +2 -7
- package/AudioV2/webAudio/webAudioSoundSource.js +3 -24
- package/AudioV2/webAudio/webAudioSoundSource.js.map +1 -1
- package/AudioV2/webAudio/webAudioStaticSound.d.ts +3 -7
- package/AudioV2/webAudio/webAudioStaticSound.js +13 -26
- package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
- package/AudioV2/webAudio/webAudioStreamingSound.d.ts +3 -7
- package/AudioV2/webAudio/webAudioStreamingSound.js +6 -23
- package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
- package/Cameras/geospatialCamera.d.ts +2 -2
- package/Cameras/geospatialCamera.js +13 -12
- package/Cameras/geospatialCamera.js.map +1 -1
- package/Engines/abstractEngine.d.ts +2 -2
- package/Engines/abstractEngine.js +2 -2
- package/Engines/abstractEngine.js.map +1 -1
- package/Engines/webgpuEngine.js +8 -9
- package/Engines/webgpuEngine.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.d.ts +74 -0
- package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.js +179 -0
- package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/index.d.ts +2 -0
- package/FrameGraph/Node/Blocks/index.js +2 -0
- package/FrameGraph/Node/Blocks/index.js.map +1 -1
- package/FrameGraph/Node/Blocks/lightingVolumeBlock.d.ts +46 -0
- package/FrameGraph/Node/Blocks/lightingVolumeBlock.js +106 -0
- package/FrameGraph/Node/Blocks/lightingVolumeBlock.js.map +1 -0
- package/FrameGraph/Tasks/Misc/lightingVolumeTask.d.ts +31 -0
- package/FrameGraph/Tasks/Misc/lightingVolumeTask.js +56 -0
- package/FrameGraph/Tasks/Misc/lightingVolumeTask.js.map +1 -0
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.d.ts +2 -2
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.d.ts +30 -0
- package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.js +57 -0
- package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.js.map +1 -0
- package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.d.ts +91 -0
- package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.js +210 -0
- package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.js.map +1 -0
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js +1 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Texture/clearTextureTask.js +1 -1
- package/FrameGraph/Tasks/Texture/clearTextureTask.js.map +1 -1
- package/FrameGraph/frameGraphRenderContext.d.ts +2 -2
- package/FrameGraph/frameGraphRenderContext.js.map +1 -1
- package/FrameGraph/frameGraphTask.js +2 -2
- package/FrameGraph/frameGraphTask.js.map +1 -1
- package/FrameGraph/index.d.ts +2 -0
- package/FrameGraph/index.js +2 -0
- package/FrameGraph/index.js.map +1 -1
- package/Lights/lightingVolume.d.ts +1 -1
- package/Lights/lightingVolume.js +16 -7
- package/Lights/lightingVolume.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.d.ts +7 -0
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.js +19 -5
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.js.map +1 -1
- package/Materials/uniformBuffer.d.ts +1 -0
- package/Materials/uniformBuffer.js +8 -1
- package/Materials/uniformBuffer.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.d.ts +5 -2
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +138 -45
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
- package/Physics/v2/characterController.d.ts +42 -2
- package/Physics/v2/characterController.js +140 -46
- package/Physics/v2/characterController.js.map +1 -1
- package/Shaders/volumetricLightingBlendVolume.fragment.d.ts +5 -0
- package/Shaders/volumetricLightingBlendVolume.fragment.js +21 -0
- package/Shaders/volumetricLightingBlendVolume.fragment.js.map +1 -0
- package/Shaders/volumetricLightingRenderVolume.fragment.d.ts +7 -0
- package/Shaders/volumetricLightingRenderVolume.fragment.js +25 -0
- package/Shaders/volumetricLightingRenderVolume.fragment.js.map +1 -0
- package/Shaders/volumetricLightingRenderVolume.vertex.d.ts +9 -0
- package/Shaders/volumetricLightingRenderVolume.vertex.js +18 -0
- package/Shaders/volumetricLightingRenderVolume.vertex.js.map +1 -0
- package/ShadersWGSL/gaussianSplattingDepth.fragment.d.ts +0 -1
- package/ShadersWGSL/gaussianSplattingDepth.fragment.js +0 -2
- package/ShadersWGSL/gaussianSplattingDepth.fragment.js.map +1 -1
- package/ShadersWGSL/volumetricLightingBlendVolume.fragment.d.ts +5 -0
- package/ShadersWGSL/volumetricLightingBlendVolume.fragment.js +22 -0
- package/ShadersWGSL/volumetricLightingBlendVolume.fragment.js.map +1 -0
- package/ShadersWGSL/volumetricLightingRenderVolume.fragment.d.ts +7 -0
- package/ShadersWGSL/volumetricLightingRenderVolume.fragment.js +27 -0
- package/ShadersWGSL/volumetricLightingRenderVolume.fragment.js.map +1 -0
- package/ShadersWGSL/volumetricLightingRenderVolume.vertex.d.ts +7 -0
- package/ShadersWGSL/volumetricLightingRenderVolume.vertex.js +17 -0
- package/ShadersWGSL/volumetricLightingRenderVolume.vertex.js.map +1 -0
- package/States/IStencilState.d.ts +48 -2
- package/States/IStencilState.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { FrameGraph, NodeRenderGraphBuildState, NodeRenderGraphConnectionPoint, Scene } from "../../../../index.js";
|
|
2
|
+
import { NodeRenderGraphBlock } from "../../nodeRenderGraphBlock.js";
|
|
3
|
+
import { FrameGraphVolumetricLightingTask } from "../../../Tasks/PostProcesses/volumetricLightingTask.js";
|
|
4
|
+
import { Vector3 } from "../../../../Maths/math.vector.js";
|
|
5
|
+
import { Color3 } from "../../../../Maths/math.color.js";
|
|
6
|
+
/**
|
|
7
|
+
* Block that implements the volumetric lighting post process
|
|
8
|
+
*/
|
|
9
|
+
export declare class NodeRenderGraphVolumetricLightingBlock extends NodeRenderGraphBlock {
|
|
10
|
+
protected _frameGraphTask: FrameGraphVolumetricLightingTask;
|
|
11
|
+
_additionalConstructionParameters: [boolean];
|
|
12
|
+
/**
|
|
13
|
+
* Gets the frame graph task associated with this block
|
|
14
|
+
*/
|
|
15
|
+
get task(): FrameGraphVolumetricLightingTask;
|
|
16
|
+
/**
|
|
17
|
+
* Create a new NodeRenderGraphVolumetricLightingBlock
|
|
18
|
+
* @param name defines the block name
|
|
19
|
+
* @param frameGraph defines the hosting frame graph
|
|
20
|
+
* @param scene defines the hosting scene
|
|
21
|
+
* @param enableExtinction defines whether to enable extinction coefficients
|
|
22
|
+
*/
|
|
23
|
+
constructor(name: string, frameGraph: FrameGraph, scene: Scene, enableExtinction?: boolean);
|
|
24
|
+
private _createTask;
|
|
25
|
+
/** Gets or sets the phaseG parameter */
|
|
26
|
+
get phaseG(): number;
|
|
27
|
+
set phaseG(value: number);
|
|
28
|
+
/** If extinction coefficients should be used */
|
|
29
|
+
get enableExtinction(): boolean;
|
|
30
|
+
set enableExtinction(value: boolean);
|
|
31
|
+
/** Gets or sets the extinction color */
|
|
32
|
+
get extinction(): Vector3;
|
|
33
|
+
set extinction(value: Vector3);
|
|
34
|
+
/** Gets or sets the light power */
|
|
35
|
+
get lightPower(): Color3;
|
|
36
|
+
set lightPower(value: Color3);
|
|
37
|
+
/**
|
|
38
|
+
* Gets the current class name
|
|
39
|
+
* @returns the class name
|
|
40
|
+
*/
|
|
41
|
+
getClassName(): string;
|
|
42
|
+
/**
|
|
43
|
+
* Gets the target input component
|
|
44
|
+
*/
|
|
45
|
+
get target(): NodeRenderGraphConnectionPoint;
|
|
46
|
+
/**
|
|
47
|
+
* Gets the depth texture input component
|
|
48
|
+
*/
|
|
49
|
+
get depth(): NodeRenderGraphConnectionPoint;
|
|
50
|
+
/**
|
|
51
|
+
* Gets the camera input component
|
|
52
|
+
*/
|
|
53
|
+
get camera(): NodeRenderGraphConnectionPoint;
|
|
54
|
+
/**
|
|
55
|
+
* Gets the lighting volume mesh input component
|
|
56
|
+
*/
|
|
57
|
+
get lightingVolumeMesh(): NodeRenderGraphConnectionPoint;
|
|
58
|
+
/**
|
|
59
|
+
* Gets the light input component
|
|
60
|
+
*/
|
|
61
|
+
get light(): NodeRenderGraphConnectionPoint;
|
|
62
|
+
/**
|
|
63
|
+
* Gets the lighting volume texture input component
|
|
64
|
+
*/
|
|
65
|
+
get lightingVolumeTexture(): NodeRenderGraphConnectionPoint;
|
|
66
|
+
/**
|
|
67
|
+
* Gets the output component
|
|
68
|
+
*/
|
|
69
|
+
get output(): NodeRenderGraphConnectionPoint;
|
|
70
|
+
protected _buildBlock(state: NodeRenderGraphBuildState): void;
|
|
71
|
+
protected _dumpPropertiesCode(): string;
|
|
72
|
+
serialize(): any;
|
|
73
|
+
_deserialize(serializationObject: any): void;
|
|
74
|
+
}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { __decorate } from "../../../../tslib.es6.js";
|
|
2
|
+
import { RegisterClass } from "../../../../Misc/typeStore.js";
|
|
3
|
+
import { editableInPropertyPage } from "../../../../Decorators/nodeDecorator.js";
|
|
4
|
+
import { NodeRenderGraphBlock } from "../../nodeRenderGraphBlock.js";
|
|
5
|
+
import { FrameGraphVolumetricLightingTask } from "../../../Tasks/PostProcesses/volumetricLightingTask.js";
|
|
6
|
+
import { NodeRenderGraphBlockConnectionPointTypes } from "../../Types/nodeRenderGraphTypes.js";
|
|
7
|
+
import { Vector3 } from "../../../../Maths/math.vector.js";
|
|
8
|
+
import { Color3 } from "../../../../Maths/math.color.js";
|
|
9
|
+
/**
|
|
10
|
+
* Block that implements the volumetric lighting post process
|
|
11
|
+
*/
|
|
12
|
+
export class NodeRenderGraphVolumetricLightingBlock extends NodeRenderGraphBlock {
|
|
13
|
+
/**
|
|
14
|
+
* Gets the frame graph task associated with this block
|
|
15
|
+
*/
|
|
16
|
+
get task() {
|
|
17
|
+
return this._frameGraphTask;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Create a new NodeRenderGraphVolumetricLightingBlock
|
|
21
|
+
* @param name defines the block name
|
|
22
|
+
* @param frameGraph defines the hosting frame graph
|
|
23
|
+
* @param scene defines the hosting scene
|
|
24
|
+
* @param enableExtinction defines whether to enable extinction coefficients
|
|
25
|
+
*/
|
|
26
|
+
constructor(name, frameGraph, scene, enableExtinction = false) {
|
|
27
|
+
super(name, frameGraph, scene);
|
|
28
|
+
this._additionalConstructionParameters = [enableExtinction];
|
|
29
|
+
this.registerInput("target", NodeRenderGraphBlockConnectionPointTypes.AutoDetect);
|
|
30
|
+
this.registerInput("depth", NodeRenderGraphBlockConnectionPointTypes.AutoDetect);
|
|
31
|
+
this.registerInput("camera", NodeRenderGraphBlockConnectionPointTypes.Camera);
|
|
32
|
+
this.registerInput("lightingVolumeMesh", NodeRenderGraphBlockConnectionPointTypes.ObjectList);
|
|
33
|
+
this.registerInput("light", NodeRenderGraphBlockConnectionPointTypes.ShadowLight);
|
|
34
|
+
this.registerInput("lightingVolumeTexture", NodeRenderGraphBlockConnectionPointTypes.AutoDetect, true);
|
|
35
|
+
this.target.addExcludedConnectionPointFromAllowedTypes(NodeRenderGraphBlockConnectionPointTypes.TextureAllButBackBuffer);
|
|
36
|
+
this.lightingVolumeTexture.addExcludedConnectionPointFromAllowedTypes(NodeRenderGraphBlockConnectionPointTypes.TextureAllButBackBuffer);
|
|
37
|
+
this.depth.addExcludedConnectionPointFromAllowedTypes(NodeRenderGraphBlockConnectionPointTypes.TextureDepthStencilAttachment | NodeRenderGraphBlockConnectionPointTypes.TextureScreenDepth);
|
|
38
|
+
this._addDependenciesInput();
|
|
39
|
+
this.registerOutput("output", NodeRenderGraphBlockConnectionPointTypes.BasedOnInput);
|
|
40
|
+
this.output._typeConnectionSource = () => {
|
|
41
|
+
return this.target;
|
|
42
|
+
};
|
|
43
|
+
this._frameGraphTask = new FrameGraphVolumetricLightingTask(name, frameGraph, enableExtinction);
|
|
44
|
+
}
|
|
45
|
+
_createTask(enableExtinction) {
|
|
46
|
+
const sourceSamplingMode = this._frameGraphTask.sourceSamplingMode;
|
|
47
|
+
const phaseG = this._frameGraphTask.phaseG;
|
|
48
|
+
const extinction = this._frameGraphTask.extinction;
|
|
49
|
+
const lightPower = this._frameGraphTask.lightPower;
|
|
50
|
+
this._frameGraphTask.dispose();
|
|
51
|
+
this._frameGraphTask = new FrameGraphVolumetricLightingTask(this.name, this._frameGraph, enableExtinction);
|
|
52
|
+
this._frameGraphTask.sourceSamplingMode = sourceSamplingMode;
|
|
53
|
+
this._frameGraphTask.phaseG = phaseG;
|
|
54
|
+
this._frameGraphTask.extinction = extinction;
|
|
55
|
+
this._frameGraphTask.lightPower = lightPower;
|
|
56
|
+
this._additionalConstructionParameters = [enableExtinction];
|
|
57
|
+
}
|
|
58
|
+
/** Gets or sets the phaseG parameter */
|
|
59
|
+
get phaseG() {
|
|
60
|
+
return this._frameGraphTask.phaseG;
|
|
61
|
+
}
|
|
62
|
+
set phaseG(value) {
|
|
63
|
+
this._frameGraphTask.phaseG = value;
|
|
64
|
+
}
|
|
65
|
+
/** If extinction coefficients should be used */
|
|
66
|
+
get enableExtinction() {
|
|
67
|
+
return this._frameGraphTask.enableExtinction;
|
|
68
|
+
}
|
|
69
|
+
set enableExtinction(value) {
|
|
70
|
+
this._createTask(value);
|
|
71
|
+
}
|
|
72
|
+
/** Gets or sets the extinction color */
|
|
73
|
+
get extinction() {
|
|
74
|
+
return this._frameGraphTask.extinction;
|
|
75
|
+
}
|
|
76
|
+
set extinction(value) {
|
|
77
|
+
this._frameGraphTask.extinction = value;
|
|
78
|
+
}
|
|
79
|
+
/** Gets or sets the light power */
|
|
80
|
+
get lightPower() {
|
|
81
|
+
return this._frameGraphTask.lightPower;
|
|
82
|
+
}
|
|
83
|
+
set lightPower(value) {
|
|
84
|
+
this._frameGraphTask.lightPower = value;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Gets the current class name
|
|
88
|
+
* @returns the class name
|
|
89
|
+
*/
|
|
90
|
+
getClassName() {
|
|
91
|
+
return "NodeRenderGraphVolumetricLightingBlock";
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Gets the target input component
|
|
95
|
+
*/
|
|
96
|
+
get target() {
|
|
97
|
+
return this._inputs[0];
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Gets the depth texture input component
|
|
101
|
+
*/
|
|
102
|
+
get depth() {
|
|
103
|
+
return this._inputs[1];
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Gets the camera input component
|
|
107
|
+
*/
|
|
108
|
+
get camera() {
|
|
109
|
+
return this._inputs[2];
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Gets the lighting volume mesh input component
|
|
113
|
+
*/
|
|
114
|
+
get lightingVolumeMesh() {
|
|
115
|
+
return this._inputs[3];
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Gets the light input component
|
|
119
|
+
*/
|
|
120
|
+
get light() {
|
|
121
|
+
return this._inputs[4];
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Gets the lighting volume texture input component
|
|
125
|
+
*/
|
|
126
|
+
get lightingVolumeTexture() {
|
|
127
|
+
return this._inputs[5];
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Gets the output component
|
|
131
|
+
*/
|
|
132
|
+
get output() {
|
|
133
|
+
return this._outputs[0];
|
|
134
|
+
}
|
|
135
|
+
_buildBlock(state) {
|
|
136
|
+
super._buildBlock(state);
|
|
137
|
+
this.output.value = this._frameGraphTask.outputTexture;
|
|
138
|
+
this._frameGraphTask.targetTexture = this.target.connectedPoint?.value;
|
|
139
|
+
this._frameGraphTask.depthTexture = this.depth.connectedPoint?.value;
|
|
140
|
+
this._frameGraphTask.camera = this.camera.connectedPoint?.value;
|
|
141
|
+
this._frameGraphTask.lightingVolumeMesh = this.lightingVolumeMesh.connectedPoint?.value;
|
|
142
|
+
this._frameGraphTask.light = this.light.connectedPoint?.value;
|
|
143
|
+
this._frameGraphTask.lightingVolumeTexture = this.lightingVolumeTexture.connectedPoint?.value;
|
|
144
|
+
}
|
|
145
|
+
_dumpPropertiesCode() {
|
|
146
|
+
const codes = [];
|
|
147
|
+
codes.push(`${this._codeVariableName}.phaseG = ${this.phaseG};`);
|
|
148
|
+
codes.push(`${this._codeVariableName}.extinction = new BABYLON.Vector3(${this.extinction.x}, ${this.extinction.y}, ${this.extinction.z});`);
|
|
149
|
+
codes.push(`${this._codeVariableName}.lightPower = new Color3(${this.lightPower.r}, ${this.lightPower.g}, ${this.lightPower.b});`);
|
|
150
|
+
return super._dumpPropertiesCode() + codes.join("\n");
|
|
151
|
+
}
|
|
152
|
+
serialize() {
|
|
153
|
+
const serializationObject = super.serialize();
|
|
154
|
+
serializationObject.phaseG = this.phaseG;
|
|
155
|
+
serializationObject.extinction = this.extinction.asArray();
|
|
156
|
+
serializationObject.lightPower = this.lightPower.asArray();
|
|
157
|
+
return serializationObject;
|
|
158
|
+
}
|
|
159
|
+
_deserialize(serializationObject) {
|
|
160
|
+
super._deserialize(serializationObject);
|
|
161
|
+
this.phaseG = serializationObject.phaseG;
|
|
162
|
+
this.extinction = Vector3.FromArray(serializationObject.extinction);
|
|
163
|
+
this.lightPower = Color3.FromArray(serializationObject.lightPower);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
__decorate([
|
|
167
|
+
editableInPropertyPage("PhaseG", 1 /* PropertyTypeForEdition.Float */, "PROPERTIES", { min: -0.9, max: 0.9 })
|
|
168
|
+
], NodeRenderGraphVolumetricLightingBlock.prototype, "phaseG", null);
|
|
169
|
+
__decorate([
|
|
170
|
+
editableInPropertyPage("Enable extinction", 0 /* PropertyTypeForEdition.Boolean */, "PROPERTIES")
|
|
171
|
+
], NodeRenderGraphVolumetricLightingBlock.prototype, "enableExtinction", null);
|
|
172
|
+
__decorate([
|
|
173
|
+
editableInPropertyPage("Extinction", 4 /* PropertyTypeForEdition.Vector3 */, "PROPERTIES")
|
|
174
|
+
], NodeRenderGraphVolumetricLightingBlock.prototype, "extinction", null);
|
|
175
|
+
__decorate([
|
|
176
|
+
editableInPropertyPage("Light power", 6 /* PropertyTypeForEdition.Color3 */, "PROPERTIES")
|
|
177
|
+
], NodeRenderGraphVolumetricLightingBlock.prototype, "lightPower", null);
|
|
178
|
+
RegisterClass("BABYLON.NodeRenderGraphVolumetricLightingBlock", NodeRenderGraphVolumetricLightingBlock);
|
|
179
|
+
//# sourceMappingURL=volumetricLightingBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"volumetricLightingBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\r\n Camera,\r\n DirectionalLight,\r\n FrameGraph,\r\n FrameGraphObjectList,\r\n FrameGraphTextureHandle,\r\n NodeRenderGraphBuildState,\r\n NodeRenderGraphConnectionPoint,\r\n Scene,\r\n} from \"core/index\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport { NodeRenderGraphBlock } from \"../../nodeRenderGraphBlock\";\r\nimport { FrameGraphVolumetricLightingTask } from \"core/FrameGraph/Tasks/PostProcesses/volumetricLightingTask\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes } from \"../../Types/nodeRenderGraphTypes\";\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\nimport { Color3 } from \"core/Maths/math.color\";\r\n\r\n/**\r\n * Block that implements the volumetric lighting post process\r\n */\r\nexport class NodeRenderGraphVolumetricLightingBlock extends NodeRenderGraphBlock {\r\n protected override _frameGraphTask: FrameGraphVolumetricLightingTask;\r\n\r\n public override _additionalConstructionParameters: [boolean];\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 NodeRenderGraphVolumetricLightingBlock\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 enableExtinction defines whether to enable extinction coefficients\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene, enableExtinction = false) {\r\n super(name, frameGraph, scene);\r\n\r\n this._additionalConstructionParameters = [enableExtinction];\r\n\r\n this.registerInput(\"target\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect);\r\n this.registerInput(\"depth\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect);\r\n this.registerInput(\"camera\", NodeRenderGraphBlockConnectionPointTypes.Camera);\r\n this.registerInput(\"lightingVolumeMesh\", NodeRenderGraphBlockConnectionPointTypes.ObjectList);\r\n this.registerInput(\"light\", NodeRenderGraphBlockConnectionPointTypes.ShadowLight);\r\n this.registerInput(\"lightingVolumeTexture\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect, true);\r\n\r\n this.target.addExcludedConnectionPointFromAllowedTypes(NodeRenderGraphBlockConnectionPointTypes.TextureAllButBackBuffer);\r\n this.lightingVolumeTexture.addExcludedConnectionPointFromAllowedTypes(NodeRenderGraphBlockConnectionPointTypes.TextureAllButBackBuffer);\r\n\r\n this.depth.addExcludedConnectionPointFromAllowedTypes(\r\n NodeRenderGraphBlockConnectionPointTypes.TextureDepthStencilAttachment | NodeRenderGraphBlockConnectionPointTypes.TextureScreenDepth\r\n );\r\n\r\n this._addDependenciesInput();\r\n\r\n this.registerOutput(\"output\", NodeRenderGraphBlockConnectionPointTypes.BasedOnInput);\r\n\r\n this.output._typeConnectionSource = () => {\r\n return this.target;\r\n };\r\n\r\n this._frameGraphTask = new FrameGraphVolumetricLightingTask(name, frameGraph, enableExtinction);\r\n }\r\n\r\n private _createTask(enableExtinction: boolean) {\r\n const sourceSamplingMode = this._frameGraphTask.sourceSamplingMode;\r\n const phaseG = this._frameGraphTask.phaseG;\r\n const extinction = this._frameGraphTask.extinction;\r\n const lightPower = this._frameGraphTask.lightPower;\r\n\r\n this._frameGraphTask.dispose();\r\n\r\n this._frameGraphTask = new FrameGraphVolumetricLightingTask(this.name, this._frameGraph, enableExtinction);\r\n this._frameGraphTask.sourceSamplingMode = sourceSamplingMode;\r\n this._frameGraphTask.phaseG = phaseG;\r\n this._frameGraphTask.extinction = extinction;\r\n this._frameGraphTask.lightPower = lightPower;\r\n\r\n this._additionalConstructionParameters = [enableExtinction];\r\n }\r\n\r\n /** Gets or sets the phaseG parameter */\r\n @editableInPropertyPage(\"PhaseG\", PropertyTypeForEdition.Float, \"PROPERTIES\", { min: -0.9, max: 0.9 })\r\n public get phaseG(): number {\r\n return this._frameGraphTask.phaseG;\r\n }\r\n\r\n public set phaseG(value: number) {\r\n this._frameGraphTask.phaseG = value;\r\n }\r\n\r\n /** If extinction coefficients should be used */\r\n @editableInPropertyPage(\"Enable extinction\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get enableExtinction(): boolean {\r\n return this._frameGraphTask.enableExtinction;\r\n }\r\n\r\n public set enableExtinction(value: boolean) {\r\n this._createTask(value);\r\n }\r\n\r\n /** Gets or sets the extinction color */\r\n @editableInPropertyPage(\"Extinction\", PropertyTypeForEdition.Vector3, \"PROPERTIES\")\r\n public get extinction(): Vector3 {\r\n return this._frameGraphTask.extinction;\r\n }\r\n\r\n public set extinction(value: Vector3) {\r\n this._frameGraphTask.extinction = value;\r\n }\r\n\r\n /** Gets or sets the light power */\r\n @editableInPropertyPage(\"Light power\", PropertyTypeForEdition.Color3, \"PROPERTIES\")\r\n public get lightPower(): Color3 {\r\n return this._frameGraphTask.lightPower;\r\n }\r\n\r\n public set lightPower(value: Color3) {\r\n this._frameGraphTask.lightPower = 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 \"NodeRenderGraphVolumetricLightingBlock\";\r\n }\r\n\r\n /**\r\n * Gets the target input component\r\n */\r\n public get target(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[0];\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[1];\r\n }\r\n\r\n /**\r\n * Gets the camera input component\r\n */\r\n public get camera(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the lighting volume mesh input component\r\n */\r\n public get lightingVolumeMesh(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the light input component\r\n */\r\n public get light(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the lighting volume texture input component\r\n */\r\n public get lightingVolumeTexture(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[5];\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.outputTexture;\r\n\r\n this._frameGraphTask.targetTexture = this.target.connectedPoint?.value as FrameGraphTextureHandle;\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.lightingVolumeMesh = this.lightingVolumeMesh.connectedPoint?.value as FrameGraphObjectList;\r\n this._frameGraphTask.light = this.light.connectedPoint?.value as DirectionalLight;\r\n this._frameGraphTask.lightingVolumeTexture = this.lightingVolumeTexture.connectedPoint?.value as FrameGraphTextureHandle;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.phaseG = ${this.phaseG};`);\r\n codes.push(`${this._codeVariableName}.extinction = new BABYLON.Vector3(${this.extinction.x}, ${this.extinction.y}, ${this.extinction.z});`);\r\n codes.push(`${this._codeVariableName}.lightPower = new Color3(${this.lightPower.r}, ${this.lightPower.g}, ${this.lightPower.b});`);\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.phaseG = this.phaseG;\r\n serializationObject.extinction = this.extinction.asArray();\r\n serializationObject.lightPower = this.lightPower.asArray();\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n this.phaseG = serializationObject.phaseG;\r\n this.extinction = Vector3.FromArray(serializationObject.extinction);\r\n this.lightPower = Color3.FromArray(serializationObject.lightPower);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.NodeRenderGraphVolumetricLightingBlock\", NodeRenderGraphVolumetricLightingBlock);\r\n"]}
|
|
@@ -3,6 +3,7 @@ export * from "./cullObjectsBlock.js";
|
|
|
3
3
|
export * from "./elbowBlock.js";
|
|
4
4
|
export * from "./executeBlock.js";
|
|
5
5
|
export * from "./inputBlock.js";
|
|
6
|
+
export * from "./lightingVolumeBlock.js";
|
|
6
7
|
export * from "./outputBlock.js";
|
|
7
8
|
export * from "./resourceContainerBlock.js";
|
|
8
9
|
export * from "./Layers/glowLayerBlock.js";
|
|
@@ -31,6 +32,7 @@ export * from "./PostProcesses/ssao2PostProcessBlock.js";
|
|
|
31
32
|
export * from "./PostProcesses/ssrPostProcessBlock.js";
|
|
32
33
|
export * from "./PostProcesses/taaPostProcessBlock.js";
|
|
33
34
|
export * from "./PostProcesses/tonemapPostProcessBlock.js";
|
|
35
|
+
export * from "./PostProcesses/volumetricLightingBlock.js";
|
|
34
36
|
export * from "./Rendering/csmShadowGeneratorBlock.js";
|
|
35
37
|
export * from "./Rendering/geometryRendererBlock.js";
|
|
36
38
|
export * from "./Rendering/objectRendererBlock.js";
|
|
@@ -3,6 +3,7 @@ export * from "./cullObjectsBlock.js";
|
|
|
3
3
|
export * from "./elbowBlock.js";
|
|
4
4
|
export * from "./executeBlock.js";
|
|
5
5
|
export * from "./inputBlock.js";
|
|
6
|
+
export * from "./lightingVolumeBlock.js";
|
|
6
7
|
export * from "./outputBlock.js";
|
|
7
8
|
export * from "./resourceContainerBlock.js";
|
|
8
9
|
export * from "./Layers/glowLayerBlock.js";
|
|
@@ -31,6 +32,7 @@ export * from "./PostProcesses/ssao2PostProcessBlock.js";
|
|
|
31
32
|
export * from "./PostProcesses/ssrPostProcessBlock.js";
|
|
32
33
|
export * from "./PostProcesses/taaPostProcessBlock.js";
|
|
33
34
|
export * from "./PostProcesses/tonemapPostProcessBlock.js";
|
|
35
|
+
export * from "./PostProcesses/volumetricLightingBlock.js";
|
|
34
36
|
export * from "./Rendering/csmShadowGeneratorBlock.js";
|
|
35
37
|
export * from "./Rendering/geometryRendererBlock.js";
|
|
36
38
|
export * from "./Rendering/objectRendererBlock.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Node/Blocks/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AAEzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,0CAA0C,CAAC;AACzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oDAAoD,CAAC;AACnE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,qDAAqD,CAAC;AACpE,cAAc,mDAAmD,CAAC;AAClE,cAAc,iDAAiD,CAAC;AAChE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,mDAAmD,CAAC;AAClE,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,iDAAiD,CAAC;AAChE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,sCAAsC,CAAC;AACrD,cAAc,yCAAyC,CAAC;AACxD,cAAc,sDAAsD,CAAC;AACrE,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,yCAAyC,CAAC;AAExD,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,uCAAuC,CAAC;AAEtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC","sourcesContent":["export * from \"./computeShaderBlock\";\r\nexport * from \"./cullObjectsBlock\";\r\nexport * from \"./elbowBlock\";\r\nexport * from \"./executeBlock\";\r\nexport * from \"./inputBlock\";\r\nexport * from \"./outputBlock\";\r\nexport * from \"./resourceContainerBlock\";\r\n\r\nexport * from \"./Layers/glowLayerBlock\";\r\nexport * from \"./Layers/highlightLayerBlock\";\r\n\r\nexport * from \"./PostProcesses/anaglyphPostProcessBlock\";\r\nexport * from \"./PostProcesses/basePostProcessBlock\";\r\nexport * from \"./PostProcesses/baseWithPropertiesPostProcessBlock\";\r\nexport * from \"./PostProcesses/blackAndWhitePostProcessBlock\";\r\nexport * from \"./PostProcesses/bloomPostProcessBlock\";\r\nexport * from \"./PostProcesses/blurPostProcessBlock\";\r\nexport * from \"./PostProcesses/chromaticAberrationPostProcessBlock\";\r\nexport * from \"./PostProcesses/circleOfConfusionPostProcessBlock\";\r\nexport * from \"./PostProcesses/colorCorrectionPostProcessBlock\";\r\nexport * from \"./PostProcesses/convolutionPostProcessBlock\";\r\nexport * from \"./PostProcesses/depthOfFieldPostProcessBlock\";\r\nexport * from \"./PostProcesses/extractHighlightsPostProcessBlock\";\r\nexport * from \"./PostProcesses/filterPostProcessBlock\";\r\nexport * from \"./PostProcesses/fxaaPostProcessBlock\";\r\nexport * from \"./PostProcesses/grainPostProcessBlock\";\r\nexport * from \"./PostProcesses/imageProcessingPostProcessBlock\";\r\nexport * from \"./PostProcesses/motionBlurPostProcessBlock\";\r\nexport * from \"./PostProcesses/passPostProcessBlock\";\r\nexport * from \"./PostProcesses/sharpenPostProcessBlock\";\r\nexport * from \"./PostProcesses/screenSpaceCurvaturePostProcessBlock\";\r\nexport * from \"./PostProcesses/ssao2PostProcessBlock\";\r\nexport * from \"./PostProcesses/ssrPostProcessBlock\";\r\nexport * from \"./PostProcesses/taaPostProcessBlock\";\r\nexport * from \"./PostProcesses/tonemapPostProcessBlock\";\r\n\r\nexport * from \"./Rendering/csmShadowGeneratorBlock\";\r\nexport * from \"./Rendering/geometryRendererBlock\";\r\nexport * from \"./Rendering/objectRendererBlock\";\r\nexport * from \"./Rendering/shadowGeneratorBlock\";\r\nexport * from \"./Rendering/utilityLayerRendererBlock\";\r\n\r\nexport * from \"./Teleport/teleportInBlock\";\r\nexport * from \"./Teleport/teleportOutBlock\";\r\n\r\nexport * from \"./Textures/clearBlock\";\r\nexport * from \"./Textures/copyTextureBlock\";\r\nexport * from \"./Textures/generateMipmapsBlock\";\r\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Node/Blocks/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AAEzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,0CAA0C,CAAC;AACzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oDAAoD,CAAC;AACnE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,qDAAqD,CAAC;AACpE,cAAc,mDAAmD,CAAC;AAClE,cAAc,iDAAiD,CAAC;AAChE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,mDAAmD,CAAC;AAClE,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,iDAAiD,CAAC;AAChE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,sCAAsC,CAAC;AACrD,cAAc,yCAAyC,CAAC;AACxD,cAAc,sDAAsD,CAAC;AACrE,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AAExD,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,uCAAuC,CAAC;AAEtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC","sourcesContent":["export * from \"./computeShaderBlock\";\r\nexport * from \"./cullObjectsBlock\";\r\nexport * from \"./elbowBlock\";\r\nexport * from \"./executeBlock\";\r\nexport * from \"./inputBlock\";\r\nexport * from \"./lightingVolumeBlock\";\r\nexport * from \"./outputBlock\";\r\nexport * from \"./resourceContainerBlock\";\r\n\r\nexport * from \"./Layers/glowLayerBlock\";\r\nexport * from \"./Layers/highlightLayerBlock\";\r\n\r\nexport * from \"./PostProcesses/anaglyphPostProcessBlock\";\r\nexport * from \"./PostProcesses/basePostProcessBlock\";\r\nexport * from \"./PostProcesses/baseWithPropertiesPostProcessBlock\";\r\nexport * from \"./PostProcesses/blackAndWhitePostProcessBlock\";\r\nexport * from \"./PostProcesses/bloomPostProcessBlock\";\r\nexport * from \"./PostProcesses/blurPostProcessBlock\";\r\nexport * from \"./PostProcesses/chromaticAberrationPostProcessBlock\";\r\nexport * from \"./PostProcesses/circleOfConfusionPostProcessBlock\";\r\nexport * from \"./PostProcesses/colorCorrectionPostProcessBlock\";\r\nexport * from \"./PostProcesses/convolutionPostProcessBlock\";\r\nexport * from \"./PostProcesses/depthOfFieldPostProcessBlock\";\r\nexport * from \"./PostProcesses/extractHighlightsPostProcessBlock\";\r\nexport * from \"./PostProcesses/filterPostProcessBlock\";\r\nexport * from \"./PostProcesses/fxaaPostProcessBlock\";\r\nexport * from \"./PostProcesses/grainPostProcessBlock\";\r\nexport * from \"./PostProcesses/imageProcessingPostProcessBlock\";\r\nexport * from \"./PostProcesses/motionBlurPostProcessBlock\";\r\nexport * from \"./PostProcesses/passPostProcessBlock\";\r\nexport * from \"./PostProcesses/sharpenPostProcessBlock\";\r\nexport * from \"./PostProcesses/screenSpaceCurvaturePostProcessBlock\";\r\nexport * from \"./PostProcesses/ssao2PostProcessBlock\";\r\nexport * from \"./PostProcesses/ssrPostProcessBlock\";\r\nexport * from \"./PostProcesses/taaPostProcessBlock\";\r\nexport * from \"./PostProcesses/tonemapPostProcessBlock\";\r\nexport * from \"./PostProcesses/volumetricLightingBlock\";\r\n\r\nexport * from \"./Rendering/csmShadowGeneratorBlock\";\r\nexport * from \"./Rendering/geometryRendererBlock\";\r\nexport * from \"./Rendering/objectRendererBlock\";\r\nexport * from \"./Rendering/shadowGeneratorBlock\";\r\nexport * from \"./Rendering/utilityLayerRendererBlock\";\r\n\r\nexport * from \"./Teleport/teleportInBlock\";\r\nexport * from \"./Teleport/teleportOutBlock\";\r\n\r\nexport * from \"./Textures/clearBlock\";\r\nexport * from \"./Textures/copyTextureBlock\";\r\nexport * from \"./Textures/generateMipmapsBlock\";\r\n"]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { FrameGraph, NodeRenderGraphBuildState, NodeRenderGraphConnectionPoint, Scene } from "../../../index.js";
|
|
2
|
+
import { FrameGraphLightingVolumeTask } from "../../Tasks/Misc/lightingVolumeTask.js";
|
|
3
|
+
import { NodeRenderGraphBlock } from "../nodeRenderGraphBlock.js";
|
|
4
|
+
/**
|
|
5
|
+
* Block that implements the lighting volume
|
|
6
|
+
*/
|
|
7
|
+
export declare class NodeRenderGraphLightingVolumeBlock extends NodeRenderGraphBlock {
|
|
8
|
+
protected _frameGraphTask: FrameGraphLightingVolumeTask;
|
|
9
|
+
/**
|
|
10
|
+
* Gets the frame graph task associated with this block
|
|
11
|
+
*/
|
|
12
|
+
get task(): FrameGraphLightingVolumeTask;
|
|
13
|
+
/**
|
|
14
|
+
* Create a new NodeRenderGraphLightingVolumeBlock
|
|
15
|
+
* @param name defines the block name
|
|
16
|
+
* @param frameGraph defines the hosting frame graph
|
|
17
|
+
* @param scene defines the hosting scene
|
|
18
|
+
*/
|
|
19
|
+
constructor(name: string, frameGraph: FrameGraph, scene: Scene);
|
|
20
|
+
/** Gets or sets the tesselation parameter */
|
|
21
|
+
get tesselation(): number;
|
|
22
|
+
set tesselation(value: number);
|
|
23
|
+
/** Gets or sets the refresh frequency parameter */
|
|
24
|
+
get frequency(): number;
|
|
25
|
+
set frequency(value: number);
|
|
26
|
+
/** Indicates whether to build the full volume (true) or only the far plane (false). Default is false. */
|
|
27
|
+
get buildFullVolume(): boolean;
|
|
28
|
+
set buildFullVolume(value: boolean);
|
|
29
|
+
/**
|
|
30
|
+
* Gets the current class name
|
|
31
|
+
* @returns the class name
|
|
32
|
+
*/
|
|
33
|
+
getClassName(): string;
|
|
34
|
+
/**
|
|
35
|
+
* Gets the shadow generator input component
|
|
36
|
+
*/
|
|
37
|
+
get shadowGenerator(): NodeRenderGraphConnectionPoint;
|
|
38
|
+
/**
|
|
39
|
+
* Gets the output component
|
|
40
|
+
*/
|
|
41
|
+
get output(): NodeRenderGraphConnectionPoint;
|
|
42
|
+
protected _buildBlock(state: NodeRenderGraphBuildState): void;
|
|
43
|
+
protected _dumpPropertiesCode(): string;
|
|
44
|
+
serialize(): any;
|
|
45
|
+
_deserialize(serializationObject: any): void;
|
|
46
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { __decorate } from "../../../tslib.es6.js";
|
|
2
|
+
import { FrameGraphLightingVolumeTask } from "../../Tasks/Misc/lightingVolumeTask.js";
|
|
3
|
+
import { RegisterClass } from "../../../Misc/typeStore.js";
|
|
4
|
+
import { editableInPropertyPage } from "../../../Decorators/nodeDecorator.js";
|
|
5
|
+
import { NodeRenderGraphBlock } from "../nodeRenderGraphBlock.js";
|
|
6
|
+
import { NodeRenderGraphBlockConnectionPointTypes } from "../Types/nodeRenderGraphTypes.js";
|
|
7
|
+
/**
|
|
8
|
+
* Block that implements the lighting volume
|
|
9
|
+
*/
|
|
10
|
+
export class NodeRenderGraphLightingVolumeBlock extends NodeRenderGraphBlock {
|
|
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 NodeRenderGraphLightingVolumeBlock
|
|
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("shadowGenerator", NodeRenderGraphBlockConnectionPointTypes.ShadowGenerator);
|
|
26
|
+
this._addDependenciesInput();
|
|
27
|
+
this.registerOutput("output", NodeRenderGraphBlockConnectionPointTypes.ObjectList);
|
|
28
|
+
this._frameGraphTask = new FrameGraphLightingVolumeTask(name, frameGraph);
|
|
29
|
+
}
|
|
30
|
+
/** Gets or sets the tesselation parameter */
|
|
31
|
+
get tesselation() {
|
|
32
|
+
return this._frameGraphTask.lightingVolume.tesselation;
|
|
33
|
+
}
|
|
34
|
+
set tesselation(value) {
|
|
35
|
+
this._frameGraphTask.lightingVolume.tesselation = value;
|
|
36
|
+
}
|
|
37
|
+
/** Gets or sets the refresh frequency parameter */
|
|
38
|
+
get frequency() {
|
|
39
|
+
return this._frameGraphTask.lightingVolume.frequency;
|
|
40
|
+
}
|
|
41
|
+
set frequency(value) {
|
|
42
|
+
this._frameGraphTask.lightingVolume.frequency = value;
|
|
43
|
+
}
|
|
44
|
+
/** Indicates whether to build the full volume (true) or only the far plane (false). Default is false. */
|
|
45
|
+
get buildFullVolume() {
|
|
46
|
+
return this._frameGraphTask.lightingVolume.buildFullVolume;
|
|
47
|
+
}
|
|
48
|
+
set buildFullVolume(value) {
|
|
49
|
+
this._frameGraphTask.lightingVolume.buildFullVolume = value;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Gets the current class name
|
|
53
|
+
* @returns the class name
|
|
54
|
+
*/
|
|
55
|
+
getClassName() {
|
|
56
|
+
return "NodeRenderGraphLightingVolumeBlock";
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Gets the shadow generator input component
|
|
60
|
+
*/
|
|
61
|
+
get shadowGenerator() {
|
|
62
|
+
return this._inputs[0];
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Gets the output component
|
|
66
|
+
*/
|
|
67
|
+
get output() {
|
|
68
|
+
return this._outputs[0];
|
|
69
|
+
}
|
|
70
|
+
_buildBlock(state) {
|
|
71
|
+
super._buildBlock(state);
|
|
72
|
+
this.output.value = this._frameGraphTask.outputMeshLightingVolume;
|
|
73
|
+
this._frameGraphTask.shadowGenerator = this.shadowGenerator.connectedPoint?.value;
|
|
74
|
+
}
|
|
75
|
+
_dumpPropertiesCode() {
|
|
76
|
+
const codes = [];
|
|
77
|
+
codes.push(`${this._codeVariableName}.tesselation = ${this.tesselation};`);
|
|
78
|
+
codes.push(`${this._codeVariableName}.frequency = ${this.frequency};`);
|
|
79
|
+
codes.push(`${this._codeVariableName}.buildFullVolume = ${this.buildFullVolume};`);
|
|
80
|
+
return super._dumpPropertiesCode() + codes.join("\n");
|
|
81
|
+
}
|
|
82
|
+
serialize() {
|
|
83
|
+
const serializationObject = super.serialize();
|
|
84
|
+
serializationObject.tesselation = this.tesselation;
|
|
85
|
+
serializationObject.frequency = this.frequency;
|
|
86
|
+
serializationObject.buildFullVolume = this.buildFullVolume;
|
|
87
|
+
return serializationObject;
|
|
88
|
+
}
|
|
89
|
+
_deserialize(serializationObject) {
|
|
90
|
+
super._deserialize(serializationObject);
|
|
91
|
+
this.tesselation = serializationObject.tesselation;
|
|
92
|
+
this.frequency = serializationObject.frequency;
|
|
93
|
+
this.buildFullVolume = !!serializationObject.buildFullVolume;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
__decorate([
|
|
97
|
+
editableInPropertyPage("Tesselation", 2 /* PropertyTypeForEdition.Int */, "PROPERTIES", { min: 1, max: 4096 })
|
|
98
|
+
], NodeRenderGraphLightingVolumeBlock.prototype, "tesselation", null);
|
|
99
|
+
__decorate([
|
|
100
|
+
editableInPropertyPage("Refresh frequency", 2 /* PropertyTypeForEdition.Int */, "PROPERTIES")
|
|
101
|
+
], NodeRenderGraphLightingVolumeBlock.prototype, "frequency", null);
|
|
102
|
+
__decorate([
|
|
103
|
+
editableInPropertyPage("Build full volume", 0 /* PropertyTypeForEdition.Boolean */, "PROPERTIES")
|
|
104
|
+
], NodeRenderGraphLightingVolumeBlock.prototype, "buildFullVolume", null);
|
|
105
|
+
RegisterClass("BABYLON.NodeRenderGraphLightingVolumeBlock", NodeRenderGraphLightingVolumeBlock);
|
|
106
|
+
//# sourceMappingURL=lightingVolumeBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lightingVolumeBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Node/Blocks/lightingVolumeBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FrameGraph, FrameGraphShadowGeneratorTask, NodeRenderGraphBuildState, NodeRenderGraphConnectionPoint, Scene } from \"core/index\";\r\nimport { FrameGraphLightingVolumeTask } from \"core/FrameGraph/Tasks/Misc/lightingVolumeTask\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../Decorators/nodeDecorator\";\r\nimport { NodeRenderGraphBlock } from \"../nodeRenderGraphBlock\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes } from \"../Types/nodeRenderGraphTypes\";\r\n\r\n/**\r\n * Block that implements the lighting volume\r\n */\r\nexport class NodeRenderGraphLightingVolumeBlock extends NodeRenderGraphBlock {\r\n protected override _frameGraphTask: FrameGraphLightingVolumeTask;\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 NodeRenderGraphLightingVolumeBlock\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(\"shadowGenerator\", NodeRenderGraphBlockConnectionPointTypes.ShadowGenerator);\r\n\r\n this._addDependenciesInput();\r\n\r\n this.registerOutput(\"output\", NodeRenderGraphBlockConnectionPointTypes.ObjectList);\r\n\r\n this._frameGraphTask = new FrameGraphLightingVolumeTask(name, frameGraph);\r\n }\r\n\r\n /** Gets or sets the tesselation parameter */\r\n @editableInPropertyPage(\"Tesselation\", PropertyTypeForEdition.Int, \"PROPERTIES\", { min: 1, max: 4096 })\r\n public get tesselation(): number {\r\n return this._frameGraphTask.lightingVolume.tesselation;\r\n }\r\n\r\n public set tesselation(value: number) {\r\n this._frameGraphTask.lightingVolume.tesselation = value;\r\n }\r\n\r\n /** Gets or sets the refresh frequency parameter */\r\n @editableInPropertyPage(\"Refresh frequency\", PropertyTypeForEdition.Int, \"PROPERTIES\")\r\n public get frequency(): number {\r\n return this._frameGraphTask.lightingVolume.frequency;\r\n }\r\n\r\n public set frequency(value: number) {\r\n this._frameGraphTask.lightingVolume.frequency = value;\r\n }\r\n\r\n /** Indicates whether to build the full volume (true) or only the far plane (false). Default is false. */\r\n @editableInPropertyPage(\"Build full volume\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get buildFullVolume(): boolean {\r\n return this._frameGraphTask.lightingVolume.buildFullVolume;\r\n }\r\n\r\n public set buildFullVolume(value: boolean) {\r\n this._frameGraphTask.lightingVolume.buildFullVolume = 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 \"NodeRenderGraphLightingVolumeBlock\";\r\n }\r\n\r\n /**\r\n * Gets the shadow generator input component\r\n */\r\n public get shadowGenerator(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[0];\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.outputMeshLightingVolume;\r\n\r\n this._frameGraphTask.shadowGenerator = this.shadowGenerator.connectedPoint?.value as FrameGraphShadowGeneratorTask;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.tesselation = ${this.tesselation};`);\r\n codes.push(`${this._codeVariableName}.frequency = ${this.frequency};`);\r\n codes.push(`${this._codeVariableName}.buildFullVolume = ${this.buildFullVolume};`);\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.tesselation = this.tesselation;\r\n serializationObject.frequency = this.frequency;\r\n serializationObject.buildFullVolume = this.buildFullVolume;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n this.tesselation = serializationObject.tesselation;\r\n this.frequency = serializationObject.frequency;\r\n this.buildFullVolume = !!serializationObject.buildFullVolume;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.NodeRenderGraphLightingVolumeBlock\", NodeRenderGraphLightingVolumeBlock);\r\n"]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { FrameGraph, FrameGraphObjectList, FrameGraphShadowGeneratorTask } from "../../../index.js";
|
|
2
|
+
import { LightingVolume } from "../../../Lights/lightingVolume.js";
|
|
3
|
+
import { FrameGraphTask } from "../../frameGraphTask.js";
|
|
4
|
+
/**
|
|
5
|
+
* Task used to create a lighting volume from a directional light's shadow generator.
|
|
6
|
+
*/
|
|
7
|
+
export declare class FrameGraphLightingVolumeTask extends FrameGraphTask {
|
|
8
|
+
/**
|
|
9
|
+
* The shadow generator used to create the lighting volume.
|
|
10
|
+
*/
|
|
11
|
+
shadowGenerator: FrameGraphShadowGeneratorTask;
|
|
12
|
+
/**
|
|
13
|
+
* The output object list containing the lighting volume mesh.
|
|
14
|
+
*/
|
|
15
|
+
readonly outputMeshLightingVolume: FrameGraphObjectList;
|
|
16
|
+
/**
|
|
17
|
+
* The lighting volume created by this task.
|
|
18
|
+
*/
|
|
19
|
+
readonly lightingVolume: LightingVolume;
|
|
20
|
+
get name(): string;
|
|
21
|
+
set name(name: string);
|
|
22
|
+
/**
|
|
23
|
+
* Creates a new FrameGraphLightingVolumeTask.
|
|
24
|
+
* @param name Name of the task.
|
|
25
|
+
* @param frameGraph The frame graph instance.
|
|
26
|
+
*/
|
|
27
|
+
constructor(name: string, frameGraph: FrameGraph);
|
|
28
|
+
isReady(): boolean;
|
|
29
|
+
record(): void;
|
|
30
|
+
dispose(): void;
|
|
31
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { LightingVolume } from "../../../Lights/lightingVolume.js";
|
|
2
|
+
import { DirectionalLight } from "../../../Lights/directionalLight.js";
|
|
3
|
+
import { FrameGraphTask } from "../../frameGraphTask.js";
|
|
4
|
+
/**
|
|
5
|
+
* Task used to create a lighting volume from a directional light's shadow generator.
|
|
6
|
+
*/
|
|
7
|
+
export class FrameGraphLightingVolumeTask extends FrameGraphTask {
|
|
8
|
+
get name() {
|
|
9
|
+
return this._name;
|
|
10
|
+
}
|
|
11
|
+
set name(name) {
|
|
12
|
+
this._name = name;
|
|
13
|
+
if (this.lightingVolume) {
|
|
14
|
+
this.lightingVolume.name = name;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Creates a new FrameGraphLightingVolumeTask.
|
|
19
|
+
* @param name Name of the task.
|
|
20
|
+
* @param frameGraph The frame graph instance.
|
|
21
|
+
*/
|
|
22
|
+
constructor(name, frameGraph) {
|
|
23
|
+
super(name, frameGraph);
|
|
24
|
+
this.lightingVolume = new LightingVolume(name, frameGraph.scene);
|
|
25
|
+
this.outputMeshLightingVolume = {
|
|
26
|
+
meshes: [this.lightingVolume.mesh],
|
|
27
|
+
particleSystems: [],
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
isReady() {
|
|
31
|
+
return this.lightingVolume.isReady();
|
|
32
|
+
}
|
|
33
|
+
record() {
|
|
34
|
+
if (this.shadowGenerator === undefined) {
|
|
35
|
+
throw new Error(`FrameGraphLightingVolumeTask ${this.name}: shadowGenerator is required`);
|
|
36
|
+
}
|
|
37
|
+
const light = this.shadowGenerator.light;
|
|
38
|
+
if (!(light instanceof DirectionalLight)) {
|
|
39
|
+
throw new Error(`FrameGraphLightingVolumeTask ${this.name}: light must be a directional light`);
|
|
40
|
+
}
|
|
41
|
+
this.lightingVolume.shadowGenerator = this.shadowGenerator.shadowGenerator;
|
|
42
|
+
const pass = this._frameGraph.addObjectListPass(this.name);
|
|
43
|
+
pass.setObjectList(this.outputMeshLightingVolume);
|
|
44
|
+
pass.setExecuteFunc(() => {
|
|
45
|
+
this.lightingVolume.update();
|
|
46
|
+
});
|
|
47
|
+
const passDisabled = this._frameGraph.addObjectListPass(this.name + "_disabled", true);
|
|
48
|
+
passDisabled.setObjectList(this.outputMeshLightingVolume);
|
|
49
|
+
passDisabled.setExecuteFunc(() => { });
|
|
50
|
+
}
|
|
51
|
+
dispose() {
|
|
52
|
+
super.dispose();
|
|
53
|
+
this.lightingVolume.dispose();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=lightingVolumeTask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lightingVolumeTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/Misc/lightingVolumeTask.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,0CAAmC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,4CAAqC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;GAEG;AACH,MAAM,OAAO,4BAA6B,SAAQ,cAAc;IAgB5D,IAAoB,IAAI;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,IAAoB,IAAI,CAAC,IAAY;QACjC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC;QACpC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,YAAY,IAAY,EAAE,UAAsB;QAC5C,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAExB,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAEjE,IAAI,CAAC,wBAAwB,GAAG;YAC5B,MAAM,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YAClC,eAAe,EAAE,EAAE;SACtB,CAAC;IACN,CAAC;IAEe,OAAO;QACnB,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;IACzC,CAAC;IAEM,MAAM;QACT,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,IAAI,+BAA+B,CAAC,CAAC;QAC9F,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QAEzC,IAAI,CAAC,CAAC,KAAK,YAAY,gBAAgB,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,IAAI,qCAAqC,CAAC,CAAC;QACpG,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC;QAE3E,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAClD,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE;YACrB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,GAAG,WAAW,EAAE,IAAI,CAAC,CAAC;QAEvF,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC1D,YAAY,CAAC,cAAc,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IAEe,OAAO;QACnB,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;CACJ","sourcesContent":["import type { FrameGraph, FrameGraphObjectList, FrameGraphShadowGeneratorTask } from \"core/index\";\r\nimport { LightingVolume } from \"core/Lights/lightingVolume\";\r\nimport { DirectionalLight } from \"core/Lights/directionalLight\";\r\nimport { FrameGraphTask } from \"../../frameGraphTask\";\r\n\r\n/**\r\n * Task used to create a lighting volume from a directional light's shadow generator.\r\n */\r\nexport class FrameGraphLightingVolumeTask extends FrameGraphTask {\r\n /**\r\n * The shadow generator used to create the lighting volume.\r\n */\r\n public shadowGenerator: FrameGraphShadowGeneratorTask;\r\n\r\n /**\r\n * The output object list containing the lighting volume mesh.\r\n */\r\n public readonly outputMeshLightingVolume: FrameGraphObjectList;\r\n\r\n /**\r\n * The lighting volume created by this task.\r\n */\r\n public readonly lightingVolume: LightingVolume;\r\n\r\n public override get name() {\r\n return this._name;\r\n }\r\n\r\n public override set name(name: string) {\r\n this._name = name;\r\n if (this.lightingVolume) {\r\n this.lightingVolume.name = name;\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new FrameGraphLightingVolumeTask.\r\n * @param name Name of the task.\r\n * @param frameGraph The frame graph instance.\r\n */\r\n constructor(name: string, frameGraph: FrameGraph) {\r\n super(name, frameGraph);\r\n\r\n this.lightingVolume = new LightingVolume(name, frameGraph.scene);\r\n\r\n this.outputMeshLightingVolume = {\r\n meshes: [this.lightingVolume.mesh],\r\n particleSystems: [],\r\n };\r\n }\r\n\r\n public override isReady() {\r\n return this.lightingVolume.isReady();\r\n }\r\n\r\n public record() {\r\n if (this.shadowGenerator === undefined) {\r\n throw new Error(`FrameGraphLightingVolumeTask ${this.name}: shadowGenerator is required`);\r\n }\r\n\r\n const light = this.shadowGenerator.light;\r\n\r\n if (!(light instanceof DirectionalLight)) {\r\n throw new Error(`FrameGraphLightingVolumeTask ${this.name}: light must be a directional light`);\r\n }\r\n\r\n this.lightingVolume.shadowGenerator = this.shadowGenerator.shadowGenerator;\r\n\r\n const pass = this._frameGraph.addObjectListPass(this.name);\r\n\r\n pass.setObjectList(this.outputMeshLightingVolume);\r\n pass.setExecuteFunc(() => {\r\n this.lightingVolume.update();\r\n });\r\n\r\n const passDisabled = this._frameGraph.addObjectListPass(this.name + \"_disabled\", true);\r\n\r\n passDisabled.setObjectList(this.outputMeshLightingVolume);\r\n passDisabled.setExecuteFunc(() => {});\r\n }\r\n\r\n public override dispose() {\r\n super.dispose();\r\n this.lightingVolume.dispose();\r\n }\r\n}\r\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FrameGraph, FrameGraphTextureHandle, DrawWrapper, FrameGraphRenderPass, FrameGraphRenderContext, EffectWrapper,
|
|
1
|
+
import type { FrameGraph, FrameGraphTextureHandle, DrawWrapper, FrameGraphRenderPass, FrameGraphRenderContext, EffectWrapper, IViewportLike, Nullable, IStencilStateProperties } from "../../../index.js";
|
|
2
2
|
import { FrameGraphTask } from "../../frameGraphTask.js";
|
|
3
3
|
/**
|
|
4
4
|
* Task which applies a post process.
|
|
@@ -22,7 +22,7 @@ export declare class FrameGraphPostProcessTask extends FrameGraphTask {
|
|
|
22
22
|
/**
|
|
23
23
|
* The stencil state to use for the post process (optional).
|
|
24
24
|
*/
|
|
25
|
-
stencilState?:
|
|
25
|
+
stencilState?: IStencilStateProperties;
|
|
26
26
|
/**
|
|
27
27
|
* The depth attachment texture to use for the post process (optional).
|
|
28
28
|
* Note that a post-process task never writes to the depth buffer: attaching a depth texture is only useful if you want to test against the depth/stencil aspect or write to the stencil buffer.
|