@babylonjs/core 8.15.1 → 8.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Animations/animationGroup.d.ts +3 -1
- package/Animations/animationGroup.js +3 -2
- package/Animations/animationGroup.js.map +1 -1
- package/AudioV2/webAudio/components/webAudioParameterComponent.d.ts +8 -0
- package/AudioV2/webAudio/components/webAudioParameterComponent.js +36 -3
- package/AudioV2/webAudio/components/webAudioParameterComponent.js.map +1 -1
- package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js +10 -0
- package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js.map +1 -1
- package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js +11 -0
- package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js.map +1 -1
- package/AudioV2/webAudio/webAudioEngine.d.ts +7 -0
- package/AudioV2/webAudio/webAudioEngine.js +45 -0
- package/AudioV2/webAudio/webAudioEngine.js.map +1 -1
- package/Behaviors/Cameras/framingBehavior.js +3 -3
- package/Behaviors/Cameras/framingBehavior.js.map +1 -1
- package/Debug/directionalLightFrustumViewer.d.ts +6 -0
- package/Debug/directionalLightFrustumViewer.js +39 -1
- package/Debug/directionalLightFrustumViewer.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.alpha.d.ts +2 -1
- package/Engines/AbstractEngine/abstractEngine.alpha.js +9 -9
- package/Engines/AbstractEngine/abstractEngine.alpha.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.states.d.ts +4 -104
- package/Engines/AbstractEngine/abstractEngine.states.js +4 -70
- package/Engines/AbstractEngine/abstractEngine.states.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.stencil.d.ts +147 -0
- package/Engines/AbstractEngine/abstractEngine.stencil.js +93 -0
- package/Engines/AbstractEngine/abstractEngine.stencil.js.map +1 -0
- package/Engines/AbstractEngine/index.d.ts +1 -0
- package/Engines/AbstractEngine/index.js +1 -0
- package/Engines/AbstractEngine/index.js.map +1 -1
- package/Engines/Extensions/engine.alpha.d.ts +2 -1
- package/Engines/Extensions/engine.alpha.js +7 -78
- package/Engines/Extensions/engine.alpha.js.map +1 -1
- package/Engines/WebGL/webGL2ShaderProcessors.js +8 -1
- package/Engines/WebGL/webGL2ShaderProcessors.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.alpha.d.ts +2 -1
- package/Engines/WebGPU/Extensions/engine.alpha.js +12 -82
- package/Engines/WebGPU/Extensions/engine.alpha.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.d.ts +12 -5
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js +139 -72
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +13 -1
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
- package/Engines/WebGPU/webgpuStencilStateComposer.d.ts +8 -0
- package/Engines/WebGPU/webgpuStencilStateComposer.js +40 -0
- package/Engines/WebGPU/webgpuStencilStateComposer.js.map +1 -1
- package/Engines/abstractEngine.d.ts +7 -3
- package/Engines/abstractEngine.js +12 -5
- package/Engines/abstractEngine.js.map +1 -1
- package/Engines/constants.d.ts +30 -28
- package/Engines/constants.js +30 -28
- package/Engines/constants.js.map +1 -1
- package/Engines/engine.d.ts +10 -0
- package/Engines/engine.js +1 -0
- package/Engines/engine.js.map +1 -1
- package/Engines/engineCapabilities.d.ts +4 -0
- package/Engines/engineCapabilities.js.map +1 -1
- package/Engines/nativeEngine.d.ts +2 -1
- package/Engines/nativeEngine.js +6 -3
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/nullEngine.d.ts +2 -1
- package/Engines/nullEngine.js +7 -4
- package/Engines/nullEngine.js.map +1 -1
- package/Engines/thinEngine.js +16 -3
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +1 -0
- package/Engines/webgpuEngine.js +6 -4
- package/Engines/webgpuEngine.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/passTask.d.ts +1 -1
- package/FrameGraph/Tasks/PostProcesses/passTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +8 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js +14 -6
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js +3 -0
- package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js +6 -5
- package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Texture/clearTextureTask.d.ts +1 -1
- package/FrameGraph/Tasks/Texture/clearTextureTask.js +7 -5
- package/FrameGraph/Tasks/Texture/clearTextureTask.js.map +1 -1
- package/FrameGraph/frameGraph.d.ts +6 -0
- package/FrameGraph/frameGraph.js +8 -0
- package/FrameGraph/frameGraph.js.map +1 -1
- package/FrameGraph/frameGraphContext.d.ts +16 -0
- package/FrameGraph/frameGraphContext.js +23 -0
- package/FrameGraph/frameGraphContext.js.map +1 -1
- package/FrameGraph/frameGraphRenderContext.d.ts +9 -16
- package/FrameGraph/frameGraphRenderContext.js +15 -23
- package/FrameGraph/frameGraphRenderContext.js.map +1 -1
- package/FrameGraph/frameGraphUtils.d.ts +52 -0
- package/FrameGraph/frameGraphUtils.js +99 -0
- package/FrameGraph/frameGraphUtils.js.map +1 -0
- package/FrameGraph/index.d.ts +1 -0
- package/FrameGraph/index.js +1 -0
- package/FrameGraph/index.js.map +1 -1
- package/Loading/Plugins/babylonFileLoader.js +35 -2
- package/Loading/Plugins/babylonFileLoader.js.map +1 -1
- package/Materials/material.d.ts +32 -12
- package/Materials/material.js +49 -17
- package/Materials/material.js.map +1 -1
- package/Materials/materialStencilState.d.ts +24 -0
- package/Materials/materialStencilState.js +53 -1
- package/Materials/materialStencilState.js.map +1 -1
- package/Meshes/geometry.js +1 -1
- package/Meshes/geometry.js.map +1 -1
- package/Meshes/instancedMesh.d.ts +5 -0
- package/Meshes/instancedMesh.js +3 -3
- package/Meshes/instancedMesh.js.map +1 -1
- package/Meshes/mesh.d.ts +28 -5
- package/Meshes/mesh.js +127 -57
- package/Meshes/mesh.js.map +1 -1
- package/Meshes/thinInstanceMesh.js +4 -0
- package/Meshes/thinInstanceMesh.js.map +1 -1
- package/Misc/snapshotRenderingHelper.js +2 -1
- package/Misc/snapshotRenderingHelper.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.d.ts +1 -0
- package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.js +32 -10
- package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.d.ts +4 -0
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +5 -0
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipelineManager.d.ts +12 -3
- package/PostProcesses/RenderPipeline/postProcessRenderPipelineManager.js +22 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipelineManager.js.map +1 -1
- package/PostProcesses/thinPassPostProcess.js +7 -3
- package/PostProcesses/thinPassPostProcess.js.map +1 -1
- package/Rendering/edgesRenderer.js +3 -2
- package/Rendering/edgesRenderer.js.map +1 -1
- package/Rendering/geometryBufferRenderer.js +1 -1
- package/Rendering/geometryBufferRenderer.js.map +1 -1
- package/Rendering/outlineRenderer.js +1 -1
- package/Rendering/outlineRenderer.js.map +1 -1
- package/Shaders/lod.fragment.js +2 -3
- package/Shaders/lod.fragment.js.map +1 -1
- package/ShadersWGSL/lod.fragment.js +2 -2
- package/ShadersWGSL/lod.fragment.js.map +1 -1
- package/States/IStencilState.d.ts +6 -2
- package/States/IStencilState.js.map +1 -1
- package/States/alphaCullingState.d.ts +7 -5
- package/States/alphaCullingState.js +144 -33
- package/States/alphaCullingState.js.map +1 -1
- package/States/stencilState.d.ts +12 -0
- package/States/stencilState.js +29 -1
- package/States/stencilState.js.map +1 -1
- package/States/stencilStateComposer.d.ts +12 -0
- package/States/stencilStateComposer.js +48 -2
- package/States/stencilStateComposer.js.map +1 -1
- package/assetContainer.js +29 -8
- package/assetContainer.js.map +1 -1
- package/package.json +1 -1
- package/scene.d.ts +2 -1
- package/scene.js +1 -0
- package/scene.js.map +1 -1
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import "./abstractEngine.alpha.js";
|
|
2
|
+
declare module "../../Engines/abstractEngine.js" {
|
|
3
|
+
interface AbstractEngine {
|
|
4
|
+
/** @internal */
|
|
5
|
+
_cachedStencilBuffer: boolean;
|
|
6
|
+
/** @internal */
|
|
7
|
+
_cachedStencilFunction: number;
|
|
8
|
+
/** @internal */
|
|
9
|
+
_cachedStencilMask: number;
|
|
10
|
+
/** @internal */
|
|
11
|
+
_cachedStencilOperationPass: number;
|
|
12
|
+
/** @internal */
|
|
13
|
+
_cachedStencilOperationFail: number;
|
|
14
|
+
/** @internal */
|
|
15
|
+
_cachedStencilOperationDepthFail: number;
|
|
16
|
+
/** @internal */
|
|
17
|
+
_cachedStencilReference: number;
|
|
18
|
+
/**
|
|
19
|
+
* Gets the current stencil operation when stencil passes
|
|
20
|
+
* @returns a number defining stencil operation to use when stencil passes
|
|
21
|
+
*/
|
|
22
|
+
getStencilOperationPass(): number;
|
|
23
|
+
/**
|
|
24
|
+
* Gets the current back stencil operation when stencil passes
|
|
25
|
+
* @returns a number defining back stencil operation to use when stencil passes
|
|
26
|
+
*/
|
|
27
|
+
getStencilBackOperationPass(): number;
|
|
28
|
+
/**
|
|
29
|
+
* Gets a boolean indicating if stencil buffer is enabled
|
|
30
|
+
* @returns the current stencil buffer state
|
|
31
|
+
*/
|
|
32
|
+
getStencilBuffer(): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Enable or disable the stencil buffer
|
|
35
|
+
* @param enable defines if the stencil buffer must be enabled or disabled
|
|
36
|
+
*/
|
|
37
|
+
setStencilBuffer(enable: boolean): void;
|
|
38
|
+
/**
|
|
39
|
+
* Gets the current stencil mask
|
|
40
|
+
* @returns a number defining the new stencil mask to use
|
|
41
|
+
*/
|
|
42
|
+
getStencilMask(): number;
|
|
43
|
+
/**
|
|
44
|
+
* Sets the current stencil mask
|
|
45
|
+
* @param mask defines the new stencil mask to use
|
|
46
|
+
*/
|
|
47
|
+
setStencilMask(mask: number): void;
|
|
48
|
+
/**
|
|
49
|
+
* Gets the current stencil function
|
|
50
|
+
* @returns a number defining the stencil function to use
|
|
51
|
+
*/
|
|
52
|
+
getStencilFunction(): number;
|
|
53
|
+
/**
|
|
54
|
+
* Gets the current back stencil function
|
|
55
|
+
* @returns a number defining the back stencil function to use
|
|
56
|
+
*/
|
|
57
|
+
getStencilBackFunction(): number;
|
|
58
|
+
/**
|
|
59
|
+
* Gets the current stencil reference value
|
|
60
|
+
* @returns a number defining the stencil reference value to use
|
|
61
|
+
*/
|
|
62
|
+
getStencilFunctionReference(): number;
|
|
63
|
+
/**
|
|
64
|
+
* Gets the current stencil mask
|
|
65
|
+
* @returns a number defining the stencil mask to use
|
|
66
|
+
*/
|
|
67
|
+
getStencilFunctionMask(): number;
|
|
68
|
+
/**
|
|
69
|
+
* Sets the current stencil function
|
|
70
|
+
* @param stencilFunc defines the new stencil function to use
|
|
71
|
+
*/
|
|
72
|
+
setStencilFunction(stencilFunc: number): void;
|
|
73
|
+
/**
|
|
74
|
+
* Sets the current back stencil function
|
|
75
|
+
* @param stencilFunc defines the new back stencil function to use
|
|
76
|
+
*/
|
|
77
|
+
setStencilBackFunction(stencilFunc: number): void;
|
|
78
|
+
/**
|
|
79
|
+
* Sets the current stencil reference
|
|
80
|
+
* @param reference defines the new stencil reference to use
|
|
81
|
+
*/
|
|
82
|
+
setStencilFunctionReference(reference: number): void;
|
|
83
|
+
/**
|
|
84
|
+
* Sets the current stencil mask
|
|
85
|
+
* @param mask defines the new stencil mask to use
|
|
86
|
+
*/
|
|
87
|
+
setStencilFunctionMask(mask: number): void;
|
|
88
|
+
/**
|
|
89
|
+
* Gets the current stencil operation when stencil fails
|
|
90
|
+
* @returns a number defining stencil operation to use when stencil fails
|
|
91
|
+
*/
|
|
92
|
+
getStencilOperationFail(): number;
|
|
93
|
+
/**
|
|
94
|
+
* Gets the current back stencil operation when stencil fails
|
|
95
|
+
* @returns a number defining back stencil operation to use when stencil fails
|
|
96
|
+
*/
|
|
97
|
+
getStencilBackOperationFail(): number;
|
|
98
|
+
/**
|
|
99
|
+
* Gets the current stencil operation when depth fails
|
|
100
|
+
* @returns a number defining stencil operation to use when depth fails
|
|
101
|
+
*/
|
|
102
|
+
getStencilOperationDepthFail(): number;
|
|
103
|
+
/**
|
|
104
|
+
* Gets the current back stencil operation when depth fails
|
|
105
|
+
* @returns a number defining back stencil operation to use when depth fails
|
|
106
|
+
*/
|
|
107
|
+
getStencilBackOperationDepthFail(): number;
|
|
108
|
+
/**
|
|
109
|
+
* Sets the stencil operation to use when stencil fails
|
|
110
|
+
* @param operation defines the stencil operation to use when stencil fails
|
|
111
|
+
*/
|
|
112
|
+
setStencilOperationFail(operation: number): void;
|
|
113
|
+
/**
|
|
114
|
+
* Sets the back stencil operation to use when stencil fails
|
|
115
|
+
* @param operation defines the back stencil operation to use when stencil fails
|
|
116
|
+
*/
|
|
117
|
+
setStencilBackOperationFail(operation: number): void;
|
|
118
|
+
/**
|
|
119
|
+
* Sets the stencil operation to use when depth fails
|
|
120
|
+
* @param operation defines the stencil operation to use when depth fails
|
|
121
|
+
*/
|
|
122
|
+
setStencilOperationDepthFail(operation: number): void;
|
|
123
|
+
/**
|
|
124
|
+
* Sets the back stencil operation to use when depth fails
|
|
125
|
+
* @param operation defines the back stencil operation to use when depth fails
|
|
126
|
+
*/
|
|
127
|
+
setStencilBackOperationDepthFail(operation: number): void;
|
|
128
|
+
/**
|
|
129
|
+
* Sets the stencil operation to use when stencil passes
|
|
130
|
+
* @param operation defines the stencil operation to use when stencil passes
|
|
131
|
+
*/
|
|
132
|
+
setStencilOperationPass(operation: number): void;
|
|
133
|
+
/**
|
|
134
|
+
* Sets the back stencil operation to use when stencil passes
|
|
135
|
+
* @param operation defines the back stencil operation to use when stencil passes
|
|
136
|
+
*/
|
|
137
|
+
setStencilBackOperationPass(operation: number): void;
|
|
138
|
+
/**
|
|
139
|
+
* Caches the state of the stencil buffer
|
|
140
|
+
*/
|
|
141
|
+
cacheStencilState(): void;
|
|
142
|
+
/**
|
|
143
|
+
* Restores the state of the stencil buffer
|
|
144
|
+
*/
|
|
145
|
+
restoreStencilState(): void;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { AbstractEngine } from "../abstractEngine.js";
|
|
2
|
+
import "./abstractEngine.alpha.js";
|
|
3
|
+
AbstractEngine.prototype.getStencilBuffer = function () {
|
|
4
|
+
return this._stencilState.stencilTest;
|
|
5
|
+
};
|
|
6
|
+
AbstractEngine.prototype.setStencilBuffer = function (enable) {
|
|
7
|
+
this._stencilState.stencilTest = enable;
|
|
8
|
+
};
|
|
9
|
+
AbstractEngine.prototype.getStencilMask = function () {
|
|
10
|
+
return this._stencilState.stencilMask;
|
|
11
|
+
};
|
|
12
|
+
AbstractEngine.prototype.setStencilMask = function (mask) {
|
|
13
|
+
this._stencilState.stencilMask = mask;
|
|
14
|
+
};
|
|
15
|
+
AbstractEngine.prototype.getStencilFunction = function () {
|
|
16
|
+
return this._stencilState.stencilFunc;
|
|
17
|
+
};
|
|
18
|
+
AbstractEngine.prototype.getStencilBackFunction = function () {
|
|
19
|
+
return this._stencilState.stencilBackFunc;
|
|
20
|
+
};
|
|
21
|
+
AbstractEngine.prototype.getStencilFunctionReference = function () {
|
|
22
|
+
return this._stencilState.stencilFuncRef;
|
|
23
|
+
};
|
|
24
|
+
AbstractEngine.prototype.getStencilFunctionMask = function () {
|
|
25
|
+
return this._stencilState.stencilFuncMask;
|
|
26
|
+
};
|
|
27
|
+
AbstractEngine.prototype.setStencilFunction = function (stencilFunc) {
|
|
28
|
+
this._stencilState.stencilFunc = stencilFunc;
|
|
29
|
+
};
|
|
30
|
+
AbstractEngine.prototype.setStencilBackFunction = function (stencilFunc) {
|
|
31
|
+
this._stencilState.stencilBackFunc = stencilFunc;
|
|
32
|
+
};
|
|
33
|
+
AbstractEngine.prototype.setStencilFunctionReference = function (reference) {
|
|
34
|
+
this._stencilState.stencilFuncRef = reference;
|
|
35
|
+
};
|
|
36
|
+
AbstractEngine.prototype.setStencilFunctionMask = function (mask) {
|
|
37
|
+
this._stencilState.stencilFuncMask = mask;
|
|
38
|
+
};
|
|
39
|
+
AbstractEngine.prototype.getStencilOperationFail = function () {
|
|
40
|
+
return this._stencilState.stencilOpStencilFail;
|
|
41
|
+
};
|
|
42
|
+
AbstractEngine.prototype.getStencilBackOperationFail = function () {
|
|
43
|
+
return this._stencilState.stencilBackOpStencilFail;
|
|
44
|
+
};
|
|
45
|
+
AbstractEngine.prototype.getStencilOperationDepthFail = function () {
|
|
46
|
+
return this._stencilState.stencilOpDepthFail;
|
|
47
|
+
};
|
|
48
|
+
AbstractEngine.prototype.getStencilBackOperationDepthFail = function () {
|
|
49
|
+
return this._stencilState.stencilBackOpDepthFail;
|
|
50
|
+
};
|
|
51
|
+
AbstractEngine.prototype.getStencilOperationPass = function () {
|
|
52
|
+
return this._stencilState.stencilOpStencilDepthPass;
|
|
53
|
+
};
|
|
54
|
+
AbstractEngine.prototype.getStencilBackOperationPass = function () {
|
|
55
|
+
return this._stencilState.stencilBackOpStencilDepthPass;
|
|
56
|
+
};
|
|
57
|
+
AbstractEngine.prototype.setStencilOperationFail = function (operation) {
|
|
58
|
+
this._stencilState.stencilOpStencilFail = operation;
|
|
59
|
+
};
|
|
60
|
+
AbstractEngine.prototype.setStencilBackOperationFail = function (operation) {
|
|
61
|
+
this._stencilState.stencilBackOpStencilFail = operation;
|
|
62
|
+
};
|
|
63
|
+
AbstractEngine.prototype.setStencilOperationDepthFail = function (operation) {
|
|
64
|
+
this._stencilState.stencilOpDepthFail = operation;
|
|
65
|
+
};
|
|
66
|
+
AbstractEngine.prototype.setStencilBackOperationDepthFail = function (operation) {
|
|
67
|
+
this._stencilState.stencilBackOpDepthFail = operation;
|
|
68
|
+
};
|
|
69
|
+
AbstractEngine.prototype.setStencilOperationPass = function (operation) {
|
|
70
|
+
this._stencilState.stencilOpStencilDepthPass = operation;
|
|
71
|
+
};
|
|
72
|
+
AbstractEngine.prototype.setStencilBackOperationPass = function (operation) {
|
|
73
|
+
this._stencilState.stencilBackOpStencilDepthPass = operation;
|
|
74
|
+
};
|
|
75
|
+
AbstractEngine.prototype.cacheStencilState = function () {
|
|
76
|
+
this._cachedStencilBuffer = this.getStencilBuffer();
|
|
77
|
+
this._cachedStencilFunction = this.getStencilFunction();
|
|
78
|
+
this._cachedStencilMask = this.getStencilMask();
|
|
79
|
+
this._cachedStencilOperationPass = this.getStencilOperationPass();
|
|
80
|
+
this._cachedStencilOperationFail = this.getStencilOperationFail();
|
|
81
|
+
this._cachedStencilOperationDepthFail = this.getStencilOperationDepthFail();
|
|
82
|
+
this._cachedStencilReference = this.getStencilFunctionReference();
|
|
83
|
+
};
|
|
84
|
+
AbstractEngine.prototype.restoreStencilState = function () {
|
|
85
|
+
this.setStencilFunction(this._cachedStencilFunction);
|
|
86
|
+
this.setStencilMask(this._cachedStencilMask);
|
|
87
|
+
this.setStencilBuffer(this._cachedStencilBuffer);
|
|
88
|
+
this.setStencilOperationPass(this._cachedStencilOperationPass);
|
|
89
|
+
this.setStencilOperationFail(this._cachedStencilOperationFail);
|
|
90
|
+
this.setStencilOperationDepthFail(this._cachedStencilOperationDepthFail);
|
|
91
|
+
this.setStencilFunctionReference(this._cachedStencilReference);
|
|
92
|
+
};
|
|
93
|
+
//# sourceMappingURL=abstractEngine.stencil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstractEngine.stencil.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/AbstractEngine/abstractEngine.stencil.ts"],"names":[],"mappings":"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","sourcesContent":["import { AbstractEngine } from \"../abstractEngine\";\r\n\r\nimport \"./abstractEngine.alpha\";\r\n\r\ndeclare module \"../../Engines/abstractEngine\" {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n export interface AbstractEngine {\r\n /** @internal */\r\n _cachedStencilBuffer: boolean;\r\n /** @internal */\r\n _cachedStencilFunction: number;\r\n /** @internal */\r\n _cachedStencilMask: number;\r\n /** @internal */\r\n _cachedStencilOperationPass: number;\r\n /** @internal */\r\n _cachedStencilOperationFail: number;\r\n /** @internal */\r\n _cachedStencilOperationDepthFail: number;\r\n /** @internal */\r\n _cachedStencilReference: number;\r\n\r\n /**\r\n * Gets the current stencil operation when stencil passes\r\n * @returns a number defining stencil operation to use when stencil passes\r\n */\r\n getStencilOperationPass(): number;\r\n\r\n /**\r\n * Gets the current back stencil operation when stencil passes\r\n * @returns a number defining back stencil operation to use when stencil passes\r\n */\r\n getStencilBackOperationPass(): number;\r\n\r\n /**\r\n * Gets a boolean indicating if stencil buffer is enabled\r\n * @returns the current stencil buffer state\r\n */\r\n getStencilBuffer(): boolean;\r\n\r\n /**\r\n * Enable or disable the stencil buffer\r\n * @param enable defines if the stencil buffer must be enabled or disabled\r\n */\r\n setStencilBuffer(enable: boolean): void;\r\n\r\n /**\r\n * Gets the current stencil mask\r\n * @returns a number defining the new stencil mask to use\r\n */\r\n getStencilMask(): number;\r\n /**\r\n * Sets the current stencil mask\r\n * @param mask defines the new stencil mask to use\r\n */\r\n setStencilMask(mask: number): void;\r\n\r\n /**\r\n * Gets the current stencil function\r\n * @returns a number defining the stencil function to use\r\n */\r\n getStencilFunction(): number;\r\n\r\n /**\r\n * Gets the current back stencil function\r\n * @returns a number defining the back stencil function to use\r\n */\r\n getStencilBackFunction(): number;\r\n\r\n /**\r\n * Gets the current stencil reference value\r\n * @returns a number defining the stencil reference value to use\r\n */\r\n getStencilFunctionReference(): number;\r\n\r\n /**\r\n * Gets the current stencil mask\r\n * @returns a number defining the stencil mask to use\r\n */\r\n getStencilFunctionMask(): number;\r\n\r\n /**\r\n * Sets the current stencil function\r\n * @param stencilFunc defines the new stencil function to use\r\n */\r\n setStencilFunction(stencilFunc: number): void;\r\n\r\n /**\r\n * Sets the current back stencil function\r\n * @param stencilFunc defines the new back stencil function to use\r\n */\r\n setStencilBackFunction(stencilFunc: number): void;\r\n\r\n /**\r\n * Sets the current stencil reference\r\n * @param reference defines the new stencil reference to use\r\n */\r\n setStencilFunctionReference(reference: number): void;\r\n\r\n /**\r\n * Sets the current stencil mask\r\n * @param mask defines the new stencil mask to use\r\n */\r\n setStencilFunctionMask(mask: number): void;\r\n\r\n /**\r\n * Gets the current stencil operation when stencil fails\r\n * @returns a number defining stencil operation to use when stencil fails\r\n */\r\n getStencilOperationFail(): number;\r\n\r\n /**\r\n * Gets the current back stencil operation when stencil fails\r\n * @returns a number defining back stencil operation to use when stencil fails\r\n */\r\n getStencilBackOperationFail(): number;\r\n\r\n /**\r\n * Gets the current stencil operation when depth fails\r\n * @returns a number defining stencil operation to use when depth fails\r\n */\r\n getStencilOperationDepthFail(): number;\r\n\r\n /**\r\n * Gets the current back stencil operation when depth fails\r\n * @returns a number defining back stencil operation to use when depth fails\r\n */\r\n getStencilBackOperationDepthFail(): number;\r\n\r\n /**\r\n * Sets the stencil operation to use when stencil fails\r\n * @param operation defines the stencil operation to use when stencil fails\r\n */\r\n setStencilOperationFail(operation: number): void;\r\n\r\n /**\r\n * Sets the back stencil operation to use when stencil fails\r\n * @param operation defines the back stencil operation to use when stencil fails\r\n */\r\n setStencilBackOperationFail(operation: number): void;\r\n\r\n /**\r\n * Sets the stencil operation to use when depth fails\r\n * @param operation defines the stencil operation to use when depth fails\r\n */\r\n setStencilOperationDepthFail(operation: number): void;\r\n\r\n /**\r\n * Sets the back stencil operation to use when depth fails\r\n * @param operation defines the back stencil operation to use when depth fails\r\n */\r\n setStencilBackOperationDepthFail(operation: number): void;\r\n\r\n /**\r\n * Sets the stencil operation to use when stencil passes\r\n * @param operation defines the stencil operation to use when stencil passes\r\n */\r\n setStencilOperationPass(operation: number): void;\r\n\r\n /**\r\n * Sets the back stencil operation to use when stencil passes\r\n * @param operation defines the back stencil operation to use when stencil passes\r\n */\r\n setStencilBackOperationPass(operation: number): void;\r\n\r\n /**\r\n * Caches the state of the stencil buffer\r\n */\r\n cacheStencilState(): void;\r\n\r\n /**\r\n * Restores the state of the stencil buffer\r\n */\r\n restoreStencilState(): void;\r\n }\r\n}\r\n\r\nAbstractEngine.prototype.getStencilBuffer = function (): boolean {\r\n return this._stencilState.stencilTest;\r\n};\r\n\r\nAbstractEngine.prototype.setStencilBuffer = function (enable: boolean): void {\r\n this._stencilState.stencilTest = enable;\r\n};\r\n\r\nAbstractEngine.prototype.getStencilMask = function (): number {\r\n return this._stencilState.stencilMask;\r\n};\r\n\r\nAbstractEngine.prototype.setStencilMask = function (mask: number): void {\r\n this._stencilState.stencilMask = mask;\r\n};\r\n\r\nAbstractEngine.prototype.getStencilFunction = function (): number {\r\n return this._stencilState.stencilFunc;\r\n};\r\n\r\nAbstractEngine.prototype.getStencilBackFunction = function (): number {\r\n return this._stencilState.stencilBackFunc;\r\n};\r\n\r\nAbstractEngine.prototype.getStencilFunctionReference = function (): number {\r\n return this._stencilState.stencilFuncRef;\r\n};\r\n\r\nAbstractEngine.prototype.getStencilFunctionMask = function (): number {\r\n return this._stencilState.stencilFuncMask;\r\n};\r\n\r\nAbstractEngine.prototype.setStencilFunction = function (stencilFunc: number) {\r\n this._stencilState.stencilFunc = stencilFunc;\r\n};\r\n\r\nAbstractEngine.prototype.setStencilBackFunction = function (stencilFunc: number) {\r\n this._stencilState.stencilBackFunc = stencilFunc;\r\n};\r\n\r\nAbstractEngine.prototype.setStencilFunctionReference = function (reference: number): void {\r\n this._stencilState.stencilFuncRef = reference;\r\n};\r\n\r\nAbstractEngine.prototype.setStencilFunctionMask = function (mask: number): void {\r\n this._stencilState.stencilFuncMask = mask;\r\n};\r\n\r\nAbstractEngine.prototype.getStencilOperationFail = function (): number {\r\n return this._stencilState.stencilOpStencilFail;\r\n};\r\n\r\nAbstractEngine.prototype.getStencilBackOperationFail = function (): number {\r\n return this._stencilState.stencilBackOpStencilFail;\r\n};\r\n\r\nAbstractEngine.prototype.getStencilOperationDepthFail = function (): number {\r\n return this._stencilState.stencilOpDepthFail;\r\n};\r\n\r\nAbstractEngine.prototype.getStencilBackOperationDepthFail = function (): number {\r\n return this._stencilState.stencilBackOpDepthFail;\r\n};\r\n\r\nAbstractEngine.prototype.getStencilOperationPass = function (): number {\r\n return this._stencilState.stencilOpStencilDepthPass;\r\n};\r\n\r\nAbstractEngine.prototype.getStencilBackOperationPass = function (): number {\r\n return this._stencilState.stencilBackOpStencilDepthPass;\r\n};\r\n\r\nAbstractEngine.prototype.setStencilOperationFail = function (operation: number): void {\r\n this._stencilState.stencilOpStencilFail = operation;\r\n};\r\n\r\nAbstractEngine.prototype.setStencilBackOperationFail = function (operation: number): void {\r\n this._stencilState.stencilBackOpStencilFail = operation;\r\n};\r\n\r\nAbstractEngine.prototype.setStencilOperationDepthFail = function (operation: number): void {\r\n this._stencilState.stencilOpDepthFail = operation;\r\n};\r\n\r\nAbstractEngine.prototype.setStencilBackOperationDepthFail = function (operation: number): void {\r\n this._stencilState.stencilBackOpDepthFail = operation;\r\n};\r\n\r\nAbstractEngine.prototype.setStencilOperationPass = function (operation: number): void {\r\n this._stencilState.stencilOpStencilDepthPass = operation;\r\n};\r\n\r\nAbstractEngine.prototype.setStencilBackOperationPass = function (operation: number): void {\r\n this._stencilState.stencilBackOpStencilDepthPass = operation;\r\n};\r\n\r\nAbstractEngine.prototype.cacheStencilState = function (): void {\r\n this._cachedStencilBuffer = this.getStencilBuffer();\r\n this._cachedStencilFunction = this.getStencilFunction();\r\n this._cachedStencilMask = this.getStencilMask();\r\n this._cachedStencilOperationPass = this.getStencilOperationPass();\r\n this._cachedStencilOperationFail = this.getStencilOperationFail();\r\n this._cachedStencilOperationDepthFail = this.getStencilOperationDepthFail();\r\n this._cachedStencilReference = this.getStencilFunctionReference();\r\n};\r\n\r\nAbstractEngine.prototype.restoreStencilState = function (): void {\r\n this.setStencilFunction(this._cachedStencilFunction);\r\n this.setStencilMask(this._cachedStencilMask);\r\n this.setStencilBuffer(this._cachedStencilBuffer);\r\n this.setStencilOperationPass(this._cachedStencilOperationPass);\r\n this.setStencilOperationFail(this._cachedStencilOperationFail);\r\n this.setStencilOperationDepthFail(this._cachedStencilOperationDepthFail);\r\n this.setStencilFunctionReference(this._cachedStencilReference);\r\n};\r\n"]}
|
|
@@ -2,6 +2,7 @@ export * from "./abstractEngine.cubeTexture.js";
|
|
|
2
2
|
export * from "./abstractEngine.loadingScreen.js";
|
|
3
3
|
export * from "./abstractEngine.dom.js";
|
|
4
4
|
export * from "./abstractEngine.states.js";
|
|
5
|
+
export * from "./abstractEngine.stencil.js";
|
|
5
6
|
export * from "./abstractEngine.timeQuery.js";
|
|
6
7
|
export * from "./abstractEngine.query.js";
|
|
7
8
|
export * from "./abstractEngine.renderPass.js";
|
|
@@ -3,6 +3,7 @@ export * from "./abstractEngine.cubeTexture.js";
|
|
|
3
3
|
export * from "./abstractEngine.loadingScreen.js";
|
|
4
4
|
export * from "./abstractEngine.dom.js";
|
|
5
5
|
export * from "./abstractEngine.states.js";
|
|
6
|
+
export * from "./abstractEngine.stencil.js";
|
|
6
7
|
export * from "./abstractEngine.timeQuery.js";
|
|
7
8
|
export * from "./abstractEngine.query.js";
|
|
8
9
|
export * from "./abstractEngine.renderPass.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/AbstractEngine/index.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC","sourcesContent":["/* eslint-disable import/export */\r\nexport * from \"./abstractEngine.cubeTexture\";\r\nexport * from \"./abstractEngine.loadingScreen\";\r\nexport * from \"./abstractEngine.dom\";\r\nexport * from \"./abstractEngine.states\";\r\nexport * from \"./abstractEngine.timeQuery\";\r\nexport * from \"./abstractEngine.query\";\r\nexport * from \"./abstractEngine.renderPass\";\r\nexport * from \"./abstractEngine.texture\";\r\nexport * from \"./abstractEngine.alpha\";\r\nexport * from \"./abstractEngine.views\";\r\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/AbstractEngine/index.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC","sourcesContent":["/* eslint-disable import/export */\r\nexport * from \"./abstractEngine.cubeTexture\";\r\nexport * from \"./abstractEngine.loadingScreen\";\r\nexport * from \"./abstractEngine.dom\";\r\nexport * from \"./abstractEngine.states\";\r\nexport * from \"./abstractEngine.stencil\";\r\nexport * from \"./abstractEngine.timeQuery\";\r\nexport * from \"./abstractEngine.query\";\r\nexport * from \"./abstractEngine.renderPass\";\r\nexport * from \"./abstractEngine.texture\";\r\nexport * from \"./abstractEngine.alpha\";\r\nexport * from \"./abstractEngine.views\";\r\n"]}
|
|
@@ -4,9 +4,10 @@ declare module "../abstractEngine.js" {
|
|
|
4
4
|
* Sets the current alpha mode
|
|
5
5
|
* @param mode defines the mode to use (one of the Engine.ALPHA_XXX)
|
|
6
6
|
* @param noDepthWriteChange defines if depth writing state should remains unchanged (false by default)
|
|
7
|
+
* @param targetIndex defines the index of the target to set the alpha mode for (default is 0)
|
|
7
8
|
* @see https://doc.babylonjs.com/features/featuresDeepDive/materials/advanced/transparent_rendering
|
|
8
9
|
*/
|
|
9
|
-
setAlphaMode(mode: number, noDepthWriteChange?: boolean): void;
|
|
10
|
+
setAlphaMode(mode: number, noDepthWriteChange?: boolean, targetIndex?: number): void;
|
|
10
11
|
}
|
|
11
12
|
}
|
|
12
13
|
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ThinEngine } from "../../Engines/thinEngine.js";
|
|
2
2
|
|
|
3
|
-
ThinEngine.prototype.setAlphaMode = function (mode, noDepthWriteChange = false) {
|
|
4
|
-
if (this._alphaMode === mode) {
|
|
3
|
+
ThinEngine.prototype.setAlphaMode = function (mode, noDepthWriteChange = false, targetIndex = 0) {
|
|
4
|
+
if (this._alphaMode[targetIndex] === mode) {
|
|
5
5
|
if (!noDepthWriteChange) {
|
|
6
6
|
// Make sure we still have the correct depth mask according to the alpha mode (a transparent material could have forced writting to the depth buffer, for instance)
|
|
7
7
|
const depthMask = mode === 0;
|
|
@@ -11,83 +11,12 @@ ThinEngine.prototype.setAlphaMode = function (mode, noDepthWriteChange = false)
|
|
|
11
11
|
}
|
|
12
12
|
return;
|
|
13
13
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
break;
|
|
18
|
-
case 7:
|
|
19
|
-
this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE);
|
|
20
|
-
this._alphaState.alphaBlend = true;
|
|
21
|
-
break;
|
|
22
|
-
case 8:
|
|
23
|
-
this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA);
|
|
24
|
-
this._alphaState.alphaBlend = true;
|
|
25
|
-
break;
|
|
26
|
-
case 2:
|
|
27
|
-
this._alphaState.setAlphaBlendFunctionParameters(this._gl.SRC_ALPHA, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE);
|
|
28
|
-
this._alphaState.alphaBlend = true;
|
|
29
|
-
break;
|
|
30
|
-
case 6:
|
|
31
|
-
this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE, this._gl.ZERO, this._gl.ONE);
|
|
32
|
-
this._alphaState.alphaBlend = true;
|
|
33
|
-
break;
|
|
34
|
-
case 1:
|
|
35
|
-
this._alphaState.setAlphaBlendFunctionParameters(this._gl.SRC_ALPHA, this._gl.ONE, this._gl.ZERO, this._gl.ONE);
|
|
36
|
-
this._alphaState.alphaBlend = true;
|
|
37
|
-
break;
|
|
38
|
-
case 3:
|
|
39
|
-
this._alphaState.setAlphaBlendFunctionParameters(this._gl.ZERO, this._gl.ONE_MINUS_SRC_COLOR, this._gl.ONE, this._gl.ONE);
|
|
40
|
-
this._alphaState.alphaBlend = true;
|
|
41
|
-
break;
|
|
42
|
-
case 4:
|
|
43
|
-
this._alphaState.setAlphaBlendFunctionParameters(this._gl.DST_COLOR, this._gl.ZERO, this._gl.ONE, this._gl.ONE);
|
|
44
|
-
this._alphaState.alphaBlend = true;
|
|
45
|
-
break;
|
|
46
|
-
case 5:
|
|
47
|
-
this._alphaState.setAlphaBlendFunctionParameters(this._gl.SRC_ALPHA, this._gl.ONE_MINUS_SRC_COLOR, this._gl.ONE, this._gl.ONE);
|
|
48
|
-
this._alphaState.alphaBlend = true;
|
|
49
|
-
break;
|
|
50
|
-
case 9:
|
|
51
|
-
this._alphaState.setAlphaBlendFunctionParameters(this._gl.CONSTANT_COLOR, this._gl.ONE_MINUS_CONSTANT_COLOR, this._gl.CONSTANT_ALPHA, this._gl.ONE_MINUS_CONSTANT_ALPHA);
|
|
52
|
-
this._alphaState.alphaBlend = true;
|
|
53
|
-
break;
|
|
54
|
-
case 10:
|
|
55
|
-
this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE_MINUS_SRC_COLOR, this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA);
|
|
56
|
-
this._alphaState.alphaBlend = true;
|
|
57
|
-
break;
|
|
58
|
-
case 11:
|
|
59
|
-
this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE, this._gl.ONE, this._gl.ONE);
|
|
60
|
-
this._alphaState.alphaBlend = true;
|
|
61
|
-
break;
|
|
62
|
-
case 12:
|
|
63
|
-
this._alphaState.setAlphaBlendFunctionParameters(this._gl.DST_ALPHA, this._gl.ONE, this._gl.ZERO, this._gl.ZERO);
|
|
64
|
-
this._alphaState.alphaBlend = true;
|
|
65
|
-
break;
|
|
66
|
-
case 13:
|
|
67
|
-
this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE_MINUS_DST_COLOR, this._gl.ONE_MINUS_SRC_COLOR, this._gl.ONE_MINUS_DST_ALPHA, this._gl.ONE_MINUS_SRC_ALPHA);
|
|
68
|
-
this._alphaState.alphaBlend = true;
|
|
69
|
-
break;
|
|
70
|
-
case 14:
|
|
71
|
-
this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA);
|
|
72
|
-
this._alphaState.alphaBlend = true;
|
|
73
|
-
break;
|
|
74
|
-
case 15:
|
|
75
|
-
this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE, this._gl.ONE, this._gl.ZERO);
|
|
76
|
-
this._alphaState.alphaBlend = true;
|
|
77
|
-
break;
|
|
78
|
-
case 16:
|
|
79
|
-
this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE_MINUS_DST_COLOR, this._gl.ONE_MINUS_SRC_COLOR, this._gl.ZERO, this._gl.ONE);
|
|
80
|
-
this._alphaState.alphaBlend = true;
|
|
81
|
-
break;
|
|
82
|
-
case 17:
|
|
83
|
-
// Same as ALPHA_COMBINE but accumulates (1 - alpha) values in the alpha channel for a later readout in order independant transparency
|
|
84
|
-
this._alphaState.setAlphaBlendFunctionParameters(this._gl.SRC_ALPHA, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA);
|
|
85
|
-
this._alphaState.alphaBlend = true;
|
|
86
|
-
break;
|
|
87
|
-
}
|
|
14
|
+
const alphaBlendDisabled = mode === 0;
|
|
15
|
+
this._alphaState.setAlphaBlend(!alphaBlendDisabled, targetIndex);
|
|
16
|
+
this._alphaState.setAlphaMode(mode, targetIndex);
|
|
88
17
|
if (!noDepthWriteChange) {
|
|
89
|
-
this.depthCullingState.depthMask =
|
|
18
|
+
this.depthCullingState.depthMask = alphaBlendDisabled;
|
|
90
19
|
}
|
|
91
|
-
this._alphaMode = mode;
|
|
20
|
+
this._alphaMode[targetIndex] = mode;
|
|
92
21
|
};
|
|
93
22
|
//# sourceMappingURL=engine.alpha.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.alpha.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/Extensions/engine.alpha.ts"],"names":[],"mappings":"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","sourcesContent":["import { ThinEngine } from \"../../Engines/thinEngine\";\r\nimport { Constants } from \"../constants\";\r\n\r\ndeclare module \"../abstractEngine\" {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n export interface AbstractEngine {\r\n /**\r\n * Sets the current alpha mode\r\n * @param mode defines the mode to use (one of the Engine.ALPHA_XXX)\r\n * @param noDepthWriteChange defines if depth writing state should remains unchanged (false by default)\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/advanced/transparent_rendering\r\n */\r\n setAlphaMode(mode: number, noDepthWriteChange?: boolean): void;\r\n }\r\n}\r\n\r\nThinEngine.prototype.setAlphaMode = function (mode: number, noDepthWriteChange: boolean = false): void {\r\n if (this._alphaMode === mode) {\r\n if (!noDepthWriteChange) {\r\n // Make sure we still have the correct depth mask according to the alpha mode (a transparent material could have forced writting to the depth buffer, for instance)\r\n const depthMask = mode === Constants.ALPHA_DISABLE;\r\n if (this.depthCullingState.depthMask !== depthMask) {\r\n this.depthCullingState.depthMask = depthMask;\r\n }\r\n }\r\n return;\r\n }\r\n\r\n switch (mode) {\r\n case Constants.ALPHA_DISABLE:\r\n this._alphaState.alphaBlend = false;\r\n break;\r\n case Constants.ALPHA_PREMULTIPLIED:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_PREMULTIPLIED_PORTERDUFF:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_COMBINE:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.SRC_ALPHA, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_ONEONE:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE, this._gl.ZERO, this._gl.ONE);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_ADD:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.SRC_ALPHA, this._gl.ONE, this._gl.ZERO, this._gl.ONE);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_SUBTRACT:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ZERO, this._gl.ONE_MINUS_SRC_COLOR, this._gl.ONE, this._gl.ONE);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_MULTIPLY:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.DST_COLOR, this._gl.ZERO, this._gl.ONE, this._gl.ONE);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_MAXIMIZED:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.SRC_ALPHA, this._gl.ONE_MINUS_SRC_COLOR, this._gl.ONE, this._gl.ONE);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_INTERPOLATE:\r\n this._alphaState.setAlphaBlendFunctionParameters(\r\n this._gl.CONSTANT_COLOR,\r\n this._gl.ONE_MINUS_CONSTANT_COLOR,\r\n this._gl.CONSTANT_ALPHA,\r\n this._gl.ONE_MINUS_CONSTANT_ALPHA\r\n );\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_SCREENMODE:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE_MINUS_SRC_COLOR, this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_ONEONE_ONEONE:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE, this._gl.ONE, this._gl.ONE);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_ALPHATOCOLOR:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.DST_ALPHA, this._gl.ONE, this._gl.ZERO, this._gl.ZERO);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_REVERSEONEMINUS:\r\n this._alphaState.setAlphaBlendFunctionParameters(\r\n this._gl.ONE_MINUS_DST_COLOR,\r\n this._gl.ONE_MINUS_SRC_COLOR,\r\n this._gl.ONE_MINUS_DST_ALPHA,\r\n this._gl.ONE_MINUS_SRC_ALPHA\r\n );\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_SRC_DSTONEMINUSSRCALPHA:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_ONEONE_ONEZERO:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE, this._gl.ONE, this._gl.ZERO);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_EXCLUSION:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE_MINUS_DST_COLOR, this._gl.ONE_MINUS_SRC_COLOR, this._gl.ZERO, this._gl.ONE);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_LAYER_ACCUMULATE:\r\n // Same as ALPHA_COMBINE but accumulates (1 - alpha) values in the alpha channel for a later readout in order independant transparency\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.SRC_ALPHA, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n }\r\n if (!noDepthWriteChange) {\r\n this.depthCullingState.depthMask = mode === Constants.ALPHA_DISABLE;\r\n }\r\n this._alphaMode = mode;\r\n};\r\n"]}
|
|
1
|
+
{"version":3,"file":"engine.alpha.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/Extensions/engine.alpha.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAgBzC,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,IAAY,EAAE,qBAA8B,KAAK,EAAE,cAAsB,CAAC;IACpH,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACtB,mKAAmK;YACnK,MAAM,SAAS,GAAG,IAAI,KAAK,SAAS,CAAC,aAAa,CAAC;YACnD,IAAI,IAAI,CAAC,iBAAiB,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACjD,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,SAAS,CAAC;YACjD,CAAC;QACL,CAAC;QACD,OAAO;IACX,CAAC;IAED,MAAM,kBAAkB,GAAG,IAAI,KAAK,SAAS,CAAC,aAAa,CAAC;IAE5D,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;IACjE,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAEjD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACtB,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,kBAAkB,CAAC;IAC1D,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;AACxC,CAAC,CAAC","sourcesContent":["import { ThinEngine } from \"../../Engines/thinEngine\";\r\nimport { Constants } from \"../constants\";\r\n\r\ndeclare module \"../abstractEngine\" {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n export interface AbstractEngine {\r\n /**\r\n * Sets the current alpha mode\r\n * @param mode defines the mode to use (one of the Engine.ALPHA_XXX)\r\n * @param noDepthWriteChange defines if depth writing state should remains unchanged (false by default)\r\n * @param targetIndex defines the index of the target to set the alpha mode for (default is 0)\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/advanced/transparent_rendering\r\n */\r\n setAlphaMode(mode: number, noDepthWriteChange?: boolean, targetIndex?: number): void;\r\n }\r\n}\r\n\r\nThinEngine.prototype.setAlphaMode = function (mode: number, noDepthWriteChange: boolean = false, targetIndex: number = 0): void {\r\n if (this._alphaMode[targetIndex] === mode) {\r\n if (!noDepthWriteChange) {\r\n // Make sure we still have the correct depth mask according to the alpha mode (a transparent material could have forced writting to the depth buffer, for instance)\r\n const depthMask = mode === Constants.ALPHA_DISABLE;\r\n if (this.depthCullingState.depthMask !== depthMask) {\r\n this.depthCullingState.depthMask = depthMask;\r\n }\r\n }\r\n return;\r\n }\r\n\r\n const alphaBlendDisabled = mode === Constants.ALPHA_DISABLE;\r\n\r\n this._alphaState.setAlphaBlend(!alphaBlendDisabled, targetIndex);\r\n this._alphaState.setAlphaMode(mode, targetIndex);\r\n\r\n if (!noDepthWriteChange) {\r\n this.depthCullingState.depthMask = alphaBlendDisabled;\r\n }\r\n this._alphaMode[targetIndex] = mode;\r\n};\r\n"]}
|
|
@@ -22,13 +22,20 @@ export class WebGL2ShaderProcessor {
|
|
|
22
22
|
code = code.replace(/texture2D\s*\(/g, "texture(");
|
|
23
23
|
if (isFragment) {
|
|
24
24
|
const hasOutput = code.search(/layout *\(location *= *0\) *out/g) !== -1;
|
|
25
|
+
const hasDualSourceBlending = defines.indexOf("#define DUAL_SOURCE_BLENDING") !== -1;
|
|
26
|
+
const outputDeclaration = hasDualSourceBlending
|
|
27
|
+
? "layout(location = 0, index = 0) out vec4 glFragColor;\nlayout(location = 0, index = 1) out vec4 glFragColor2;\n"
|
|
28
|
+
: "layout(location = 0) out vec4 glFragColor;\n";
|
|
29
|
+
if (hasDualSourceBlending) {
|
|
30
|
+
code = "#extension GL_EXT_blend_func_extended : require\n" + code;
|
|
31
|
+
}
|
|
25
32
|
code = code.replace(/texture2DLodEXT\s*\(/g, "textureLod(");
|
|
26
33
|
code = code.replace(/textureCubeLodEXT\s*\(/g, "textureLod(");
|
|
27
34
|
code = code.replace(/textureCube\s*\(/g, "texture(");
|
|
28
35
|
code = code.replace(/gl_FragDepthEXT/g, "gl_FragDepth");
|
|
29
36
|
code = code.replace(/gl_FragColor/g, "glFragColor");
|
|
30
37
|
code = code.replace(/gl_FragData/g, "glFragData");
|
|
31
|
-
code = code.replace(/void\s+?main\s*\(/g, (hasDrawBuffersExtension || hasOutput ? "" :
|
|
38
|
+
code = code.replace(/void\s+?main\s*\(/g, (hasDrawBuffersExtension || hasOutput ? "" : outputDeclaration) + "void main(");
|
|
32
39
|
}
|
|
33
40
|
else {
|
|
34
41
|
const hasMultiviewExtension = defines.indexOf("#define MULTIVIEW") !== -1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webGL2ShaderProcessors.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/WebGL/webGL2ShaderProcessors.ts"],"names":[],"mappings":"AAGA,MAAM,YAAY,GAAG,0BAA0B,CAAC;AAEhD,gBAAgB;AAChB,MAAM,OAAO,qBAAqB;IAAlC;QACW,mBAAc,+BAAuB;
|
|
1
|
+
{"version":3,"file":"webGL2ShaderProcessors.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/WebGL/webGL2ShaderProcessors.ts"],"names":[],"mappings":"AAGA,MAAM,YAAY,GAAG,0BAA0B,CAAC;AAEhD,gBAAgB;AAChB,MAAM,OAAO,qBAAqB;IAAlC;QACW,mBAAc,+BAAuB;IAiDhD,CAAC;IA/CU,kBAAkB,CAAC,SAAiB;QACvC,OAAO,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAEM,YAAY,CAAC,OAAe,EAAE,WAAoB;QACrD,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAEM,gBAAgB,CAAC,OAAe,EAAE,UAAmB;QACxD,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACjE,CAAC;IAEM,aAAa,CAAC,IAAY,EAAE,OAAiB,EAAE,UAAmB;QACrE,MAAM,uBAAuB,GAAG,IAAI,CAAC,MAAM,CAAC,0CAA0C,CAAC,KAAK,CAAC,CAAC,CAAC;QAE/F,oBAAoB;QACpB,MAAM,KAAK,GAAG,gJAAgJ,CAAC;QAC/J,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAE/B,uBAAuB;QACvB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;QACnD,IAAI,UAAU,EAAE,CAAC;YACb,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,kCAAkC,CAAC,KAAK,CAAC,CAAC,CAAC;YACzE,MAAM,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAC;YACrF,MAAM,iBAAiB,GAAG,qBAAqB;gBAC3C,CAAC,CAAC,iHAAiH;gBACnH,CAAC,CAAC,8CAA8C,CAAC;YAErD,IAAI,qBAAqB,EAAE,CAAC;gBACxB,IAAI,GAAG,mDAAmD,GAAG,IAAI,CAAC;YACtE,CAAC;YACD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,aAAa,CAAC,CAAC;YAC5D,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,aAAa,CAAC,CAAC;YAC9D,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;YACrD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;YACxD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;YACpD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YAClD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,uBAAuB,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,YAAY,CAAC,CAAC;QAC9H,CAAC;aAAM,CAAC;YACJ,MAAM,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1E,IAAI,qBAAqB,EAAE,CAAC;gBACxB,OAAO,sEAAsE,GAAG,IAAI,CAAC;YACzF,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ","sourcesContent":["import { ShaderLanguage } from \"../../Materials/shaderLanguage\";\r\nimport type { IShaderProcessor } from \"../Processors/iShaderProcessor\";\r\n\r\nconst VaryingRegex = /(flat\\s)?\\s*varying\\s*.*/;\r\n\r\n/** @internal */\r\nexport class WebGL2ShaderProcessor implements IShaderProcessor {\r\n public shaderLanguage = ShaderLanguage.GLSL;\r\n\r\n public attributeProcessor(attribute: string) {\r\n return attribute.replace(\"attribute\", \"in\");\r\n }\r\n\r\n public varyingCheck(varying: string, _isFragment: boolean) {\r\n return VaryingRegex.test(varying);\r\n }\r\n\r\n public varyingProcessor(varying: string, isFragment: boolean) {\r\n return varying.replace(\"varying\", isFragment ? \"in\" : \"out\");\r\n }\r\n\r\n public postProcessor(code: string, defines: string[], isFragment: boolean) {\r\n const hasDrawBuffersExtension = code.search(/#extension.+GL_EXT_draw_buffers.+require/) !== -1;\r\n\r\n // Remove extensions\r\n const regex = /#extension.+(GL_OVR_multiview2|GL_OES_standard_derivatives|GL_EXT_shader_texture_lod|GL_EXT_frag_depth|GL_EXT_draw_buffers).+(enable|require)/g;\r\n code = code.replace(regex, \"\");\r\n\r\n // Replace instructions\r\n code = code.replace(/texture2D\\s*\\(/g, \"texture(\");\r\n if (isFragment) {\r\n const hasOutput = code.search(/layout *\\(location *= *0\\) *out/g) !== -1;\r\n const hasDualSourceBlending = defines.indexOf(\"#define DUAL_SOURCE_BLENDING\") !== -1;\r\n const outputDeclaration = hasDualSourceBlending\r\n ? \"layout(location = 0, index = 0) out vec4 glFragColor;\\nlayout(location = 0, index = 1) out vec4 glFragColor2;\\n\"\r\n : \"layout(location = 0) out vec4 glFragColor;\\n\";\r\n\r\n if (hasDualSourceBlending) {\r\n code = \"#extension GL_EXT_blend_func_extended : require\\n\" + code;\r\n }\r\n code = code.replace(/texture2DLodEXT\\s*\\(/g, \"textureLod(\");\r\n code = code.replace(/textureCubeLodEXT\\s*\\(/g, \"textureLod(\");\r\n code = code.replace(/textureCube\\s*\\(/g, \"texture(\");\r\n code = code.replace(/gl_FragDepthEXT/g, \"gl_FragDepth\");\r\n code = code.replace(/gl_FragColor/g, \"glFragColor\");\r\n code = code.replace(/gl_FragData/g, \"glFragData\");\r\n code = code.replace(/void\\s+?main\\s*\\(/g, (hasDrawBuffersExtension || hasOutput ? \"\" : outputDeclaration) + \"void main(\");\r\n } else {\r\n const hasMultiviewExtension = defines.indexOf(\"#define MULTIVIEW\") !== -1;\r\n if (hasMultiviewExtension) {\r\n return \"#extension GL_OVR_multiview2 : require\\nlayout (num_views = 2) in;\\n\" + code;\r\n }\r\n }\r\n\r\n return code;\r\n }\r\n}\r\n"]}
|
|
@@ -5,8 +5,9 @@ declare module "../../abstractEngine.js" {
|
|
|
5
5
|
* Sets the current alpha mode
|
|
6
6
|
* @param mode defines the mode to use (one of the Engine.ALPHA_XXX)
|
|
7
7
|
* @param noDepthWriteChange defines if depth writing state should remains unchanged (false by default)
|
|
8
|
+
* @param targetIndex defines the index of the target to set the alpha mode for (default is 0)
|
|
8
9
|
* @see https://doc.babylonjs.com/features/featuresDeepDive/materials/advanced/transparent_rendering
|
|
9
10
|
*/
|
|
10
|
-
setAlphaMode(mode: number, noDepthWriteChange?: boolean): void;
|
|
11
|
+
setAlphaMode(mode: number, noDepthWriteChange?: boolean, targetIndex?: number): void;
|
|
11
12
|
}
|
|
12
13
|
}
|
|
@@ -2,8 +2,9 @@ import { AbstractEngine } from "../../abstractEngine.js";
|
|
|
2
2
|
|
|
3
3
|
import "../../AbstractEngine/abstractEngine.alpha.js";
|
|
4
4
|
import { ThinWebGPUEngine } from "../../thinWebGPUEngine.js";
|
|
5
|
-
ThinWebGPUEngine.prototype.setAlphaMode = function (mode, noDepthWriteChange = false) {
|
|
6
|
-
|
|
5
|
+
ThinWebGPUEngine.prototype.setAlphaMode = function (mode, noDepthWriteChange = false, targetIndex = 0) {
|
|
6
|
+
const alphaBlend = this._alphaState._alphaBlend[targetIndex];
|
|
7
|
+
if (this._alphaMode[targetIndex] === mode && ((mode === 0 && !alphaBlend) || (mode !== 0 && alphaBlend))) {
|
|
7
8
|
if (!noDepthWriteChange) {
|
|
8
9
|
// Make sure we still have the correct depth mask according to the alpha mode (a transparent material could have forced writting to the depth buffer, for instance)
|
|
9
10
|
const depthMask = mode === 0;
|
|
@@ -14,90 +15,19 @@ ThinWebGPUEngine.prototype.setAlphaMode = function (mode, noDepthWriteChange = f
|
|
|
14
15
|
}
|
|
15
16
|
return;
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
break;
|
|
21
|
-
case 7:
|
|
22
|
-
this._alphaState.setAlphaBlendFunctionParameters(1, 771, 1, 1);
|
|
23
|
-
this._alphaState.alphaBlend = true;
|
|
24
|
-
break;
|
|
25
|
-
case 8:
|
|
26
|
-
this._alphaState.setAlphaBlendFunctionParameters(1, 771, 1, 771);
|
|
27
|
-
this._alphaState.alphaBlend = true;
|
|
28
|
-
break;
|
|
29
|
-
case 2:
|
|
30
|
-
this._alphaState.setAlphaBlendFunctionParameters(770, 771, 1, 1);
|
|
31
|
-
this._alphaState.alphaBlend = true;
|
|
32
|
-
break;
|
|
33
|
-
case 6:
|
|
34
|
-
this._alphaState.setAlphaBlendFunctionParameters(1, 1, 0, 1);
|
|
35
|
-
this._alphaState.alphaBlend = true;
|
|
36
|
-
break;
|
|
37
|
-
case 1:
|
|
38
|
-
this._alphaState.setAlphaBlendFunctionParameters(770, 1, 0, 1);
|
|
39
|
-
this._alphaState.alphaBlend = true;
|
|
40
|
-
break;
|
|
41
|
-
case 3:
|
|
42
|
-
this._alphaState.setAlphaBlendFunctionParameters(0, 769, 1, 1);
|
|
43
|
-
this._alphaState.alphaBlend = true;
|
|
44
|
-
break;
|
|
45
|
-
case 4:
|
|
46
|
-
this._alphaState.setAlphaBlendFunctionParameters(774, 0, 1, 1);
|
|
47
|
-
this._alphaState.alphaBlend = true;
|
|
48
|
-
break;
|
|
49
|
-
case 5:
|
|
50
|
-
this._alphaState.setAlphaBlendFunctionParameters(770, 769, 1, 1);
|
|
51
|
-
this._alphaState.alphaBlend = true;
|
|
52
|
-
break;
|
|
53
|
-
case 9:
|
|
54
|
-
this._alphaState.setAlphaBlendFunctionParameters(32769, 32770, 32771, 32772);
|
|
55
|
-
this._alphaState.alphaBlend = true;
|
|
56
|
-
break;
|
|
57
|
-
case 10:
|
|
58
|
-
this._alphaState.setAlphaBlendFunctionParameters(1, 769, 1, 771);
|
|
59
|
-
this._alphaState.alphaBlend = true;
|
|
60
|
-
break;
|
|
61
|
-
case 11:
|
|
62
|
-
this._alphaState.setAlphaBlendFunctionParameters(1, 1, 1, 1);
|
|
63
|
-
this._alphaState.alphaBlend = true;
|
|
64
|
-
break;
|
|
65
|
-
case 12:
|
|
66
|
-
this._alphaState.setAlphaBlendFunctionParameters(772, 1, 0, 0);
|
|
67
|
-
this._alphaState.alphaBlend = true;
|
|
68
|
-
break;
|
|
69
|
-
case 13:
|
|
70
|
-
this._alphaState.setAlphaBlendFunctionParameters(775, 769, 773, 771);
|
|
71
|
-
this._alphaState.alphaBlend = true;
|
|
72
|
-
break;
|
|
73
|
-
case 14:
|
|
74
|
-
this._alphaState.setAlphaBlendFunctionParameters(1, 771, 1, 771);
|
|
75
|
-
this._alphaState.alphaBlend = true;
|
|
76
|
-
break;
|
|
77
|
-
case 15:
|
|
78
|
-
this._alphaState.setAlphaBlendFunctionParameters(1, 1, 1, 0);
|
|
79
|
-
this._alphaState.alphaBlend = true;
|
|
80
|
-
break;
|
|
81
|
-
case 16:
|
|
82
|
-
this._alphaState.setAlphaBlendFunctionParameters(775, 769, 0, 1);
|
|
83
|
-
this._alphaState.alphaBlend = true;
|
|
84
|
-
break;
|
|
85
|
-
case 17:
|
|
86
|
-
// Same as ALPHA_COMBINE but accumulates (1 - alpha) values in the alpha channel for a later readout in order independant transparency
|
|
87
|
-
this._alphaState.setAlphaBlendFunctionParameters(770, 771, 1, 771);
|
|
88
|
-
this._alphaState.alphaBlend = true;
|
|
89
|
-
break;
|
|
90
|
-
}
|
|
18
|
+
const alphaBlendDisabled = mode === 0;
|
|
19
|
+
this._alphaState.setAlphaBlend(!alphaBlendDisabled, targetIndex);
|
|
20
|
+
this._alphaState.setAlphaMode(mode, targetIndex);
|
|
91
21
|
if (!noDepthWriteChange) {
|
|
92
|
-
this.setDepthWrite(
|
|
93
|
-
this._cacheRenderPipeline.setDepthWriteEnabled(
|
|
22
|
+
this.setDepthWrite(alphaBlendDisabled);
|
|
23
|
+
this._cacheRenderPipeline.setDepthWriteEnabled(alphaBlendDisabled);
|
|
94
24
|
}
|
|
95
|
-
this._alphaMode = mode;
|
|
96
|
-
this._cacheRenderPipeline.setAlphaBlendEnabled(this._alphaState.
|
|
25
|
+
this._alphaMode[targetIndex] = mode;
|
|
26
|
+
this._cacheRenderPipeline.setAlphaBlendEnabled(this._alphaState._alphaBlend, this._alphaState._numTargetEnabled);
|
|
97
27
|
this._cacheRenderPipeline.setAlphaBlendFactors(this._alphaState._blendFunctionParameters, this._alphaState._blendEquationParameters);
|
|
98
28
|
};
|
|
99
|
-
ThinWebGPUEngine.prototype.setAlphaEquation = function (equation) {
|
|
100
|
-
AbstractEngine.prototype.setAlphaEquation.call(this, equation);
|
|
29
|
+
ThinWebGPUEngine.prototype.setAlphaEquation = function (equation, targetIndex = 0) {
|
|
30
|
+
AbstractEngine.prototype.setAlphaEquation.call(this, equation, targetIndex);
|
|
101
31
|
this._cacheRenderPipeline.setAlphaBlendFactors(this._alphaState._blendFunctionParameters, this._alphaState._blendEquationParameters);
|
|
102
32
|
};
|
|
103
33
|
//# sourceMappingURL=engine.alpha.js.map
|