@shapediver/viewer.rendering-engine.rendering-engine-threejs 3.16.7 → 3.16.9
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/dist/RenderingEngine.d.ts +294 -294
- package/dist/RenderingEngine.js +987 -977
- package/dist/RenderingEngine.js.map +1 -1
- package/dist/index.d.ts +16 -16
- package/dist/index.js +57 -57
- package/dist/injectors/TextureUnifierInjector.d.ts +13 -13
- package/dist/injectors/TextureUnifierInjector.js +181 -171
- package/dist/injectors/TextureUnifierInjector.js.map +1 -1
- package/dist/interfaces/ILoader.d.ts +3 -3
- package/dist/interfaces/ILoader.js +2 -2
- package/dist/interfaces/IRenderingEngine.d.ts +45 -45
- package/dist/interfaces/IRenderingEngine.js +2 -2
- package/dist/loaders/EnvironmentMapLoader.d.ts +119 -119
- package/dist/loaders/EnvironmentMapLoader.js +512 -502
- package/dist/loaders/EnvironmentMapLoader.js.map +1 -1
- package/dist/loaders/GeometryLoader.d.ts +39 -39
- package/dist/loaders/GeometryLoader.d.ts.map +1 -1
- package/dist/loaders/GeometryLoader.js +603 -593
- package/dist/loaders/GeometryLoader.js.map +1 -1
- package/dist/loaders/HTMLElementAnchorLoader.d.ts +15 -15
- package/dist/loaders/HTMLElementAnchorLoader.js +98 -98
- package/dist/loaders/HTMLElementAnchorLoader.js.map +1 -1
- package/dist/loaders/LightLoader.d.ts +19 -19
- package/dist/loaders/LightLoader.js +197 -187
- package/dist/loaders/LightLoader.js.map +1 -1
- package/dist/loaders/MaterialLoader.d.ts +115 -115
- package/dist/loaders/MaterialLoader.d.ts.map +1 -1
- package/dist/loaders/MaterialLoader.js +1612 -1602
- package/dist/loaders/MaterialLoader.js.map +1 -1
- package/dist/managers/ARManager.d.ts +17 -17
- package/dist/managers/ARManager.js +128 -128
- package/dist/managers/ARManager.js.map +1 -1
- package/dist/managers/CameraManager.d.ts +19 -19
- package/dist/managers/CameraManager.js +244 -234
- package/dist/managers/CameraManager.js.map +1 -1
- package/dist/managers/EnvironmentGeometryManager.d.ts +32 -32
- package/dist/managers/EnvironmentGeometryManager.js +114 -114
- package/dist/managers/EnvironmentGeometryManager.js.map +1 -1
- package/dist/managers/FlagManager.d.ts +19 -19
- package/dist/managers/FlagManager.js +143 -143
- package/dist/managers/FlagManager.js.map +1 -1
- package/dist/managers/PostProcessingManager.d.ts +1019 -1019
- package/dist/managers/PostProcessingManager.js +1306 -1296
- package/dist/managers/PostProcessingManager.js.map +1 -1
- package/dist/managers/RenderingManager.d.ts +84 -84
- package/dist/managers/RenderingManager.d.ts.map +1 -1
- package/dist/managers/RenderingManager.js +679 -669
- package/dist/managers/RenderingManager.js.map +1 -1
- package/dist/managers/SceneTracingManager.d.ts +28 -28
- package/dist/managers/SceneTracingManager.js +160 -150
- package/dist/managers/SceneTracingManager.js.map +1 -1
- package/dist/managers/SceneTreeManager.d.ts +81 -81
- package/dist/managers/SceneTreeManager.d.ts.map +1 -1
- package/dist/managers/SceneTreeManager.js +500 -490
- package/dist/managers/SceneTreeManager.js.map +1 -1
- package/dist/managers/SettingsManager.d.ts +28 -28
- package/dist/managers/SettingsManager.js +284 -284
- package/dist/managers/SettingsManager.js.map +1 -1
- package/dist/managers/environmentGeometry/ContactShadow.d.ts +42 -42
- package/dist/managers/environmentGeometry/ContactShadow.js +295 -285
- package/dist/managers/environmentGeometry/ContactShadow.js.map +1 -1
- package/dist/managers/environmentGeometry/Grid.d.ts +20 -20
- package/dist/managers/environmentGeometry/Grid.js +110 -100
- package/dist/managers/environmentGeometry/Grid.js.map +1 -1
- package/dist/managers/environmentGeometry/GroundPlane.d.ts +21 -21
- package/dist/managers/environmentGeometry/GroundPlane.js +105 -95
- package/dist/managers/environmentGeometry/GroundPlane.js.map +1 -1
- package/dist/managers/environmentGeometry/GroundPlaneShadow.d.ts +21 -21
- package/dist/managers/environmentGeometry/GroundPlaneShadow.js +96 -86
- package/dist/managers/environmentGeometry/GroundPlaneShadow.js.map +1 -1
- package/dist/managers/environmentGeometry/IEnvironmentGeometry.d.ts +8 -8
- package/dist/managers/environmentGeometry/IEnvironmentGeometry.js +2 -2
- package/dist/managers/postprocessing/GodRaysManager.d.ts +12 -12
- package/dist/managers/postprocessing/GodRaysManager.js +73 -63
- package/dist/managers/postprocessing/GodRaysManager.js.map +1 -1
- package/dist/managers/postprocessing/OutlineManager.d.ts +15 -15
- package/dist/managers/postprocessing/OutlineManager.js +86 -76
- package/dist/managers/postprocessing/OutlineManager.js.map +1 -1
- package/dist/managers/postprocessing/SSAARenderPass.d.ts +53 -53
- package/dist/managers/postprocessing/SSAARenderPass.js +281 -281
- package/dist/managers/postprocessing/SSAARenderPass.js.map +1 -1
- package/dist/managers/postprocessing/SelectiveBloomManager.d.ts +14 -14
- package/dist/managers/postprocessing/SelectiveBloomManager.js +76 -66
- package/dist/managers/postprocessing/SelectiveBloomManager.js.map +1 -1
- package/dist/managers/postprocessing/ao/ao/AOEffect.d.ts +46 -46
- package/dist/managers/postprocessing/ao/ao/AOEffect.js +142 -142
- package/dist/managers/postprocessing/ao/ao/AOEffect.js.map +1 -1
- package/dist/managers/postprocessing/ao/ao/AOPass.d.ts +12 -12
- package/dist/managers/postprocessing/ao/ao/AOPass.js +108 -108
- package/dist/managers/postprocessing/ao/ao/AOPass.js.map +1 -1
- package/dist/managers/postprocessing/ao/ao/shader/ao_compose.d.ts +1 -1
- package/dist/managers/postprocessing/ao/ao/shader/ao_compose.js +4 -4
- package/dist/managers/postprocessing/ao/ao/shader/ao_utils.d.ts +1 -1
- package/dist/managers/postprocessing/ao/ao/shader/ao_utils.js +4 -4
- package/dist/managers/postprocessing/ao/hbao/HBAOEffect.d.ts +14 -14
- package/dist/managers/postprocessing/ao/hbao/HBAOEffect.js +24 -24
- package/dist/managers/postprocessing/ao/hbao/shader/hbao.d.ts +1 -1
- package/dist/managers/postprocessing/ao/hbao/shader/hbao.js +4 -4
- package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.d.ts +33 -33
- package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.js +211 -211
- package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.js.map +1 -1
- package/dist/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.d.ts +1 -1
- package/dist/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.js +4 -4
- package/dist/managers/postprocessing/ao/ssao/SSAOEffect.d.ts +14 -14
- package/dist/managers/postprocessing/ao/ssao/SSAOEffect.js +82 -82
- package/dist/managers/postprocessing/ao/ssao/SSAOEffect.js.map +1 -1
- package/dist/managers/postprocessing/ao/ssao/shader/ssao.d.ts +1 -1
- package/dist/managers/postprocessing/ao/ssao/shader/ssao.js +4 -4
- package/dist/managers/postprocessing/ao/utils/shader/basic.d.ts +1 -1
- package/dist/managers/postprocessing/ao/utils/shader/basic.js +4 -4
- package/dist/managers/postprocessing/ao/utils/shader/sampleBlueNoise.d.ts +1 -1
- package/dist/managers/postprocessing/ao/utils/shader/sampleBlueNoise.js +4 -4
- package/dist/managers/postprocessing/effects/tone-mapping/ToneMappingEffect.d.ts +165 -165
- package/dist/managers/postprocessing/effects/tone-mapping/ToneMappingEffect.js +299 -299
- package/dist/managers/postprocessing/effects/tone-mapping/ToneMappingEffect.js.map +1 -1
- package/dist/managers/postprocessing/effects/tone-mapping/tone-mapping.d.ts +1 -1
- package/dist/managers/postprocessing/effects/tone-mapping/tone-mapping.js +4 -4
- package/dist/managers/postprocessing/utils/CopyMaterial.d.ts +37 -37
- package/dist/managers/postprocessing/utils/CopyMaterial.js +69 -69
- package/dist/managers/postprocessing/utils/CopyShader.d.ts +13 -13
- package/dist/managers/postprocessing/utils/CopyShader.js +12 -12
- package/dist/managers/postprocessing/utils/FullScreenQuad.d.ts +9 -9
- package/dist/managers/postprocessing/utils/FullScreenQuad.js +28 -28
- package/dist/managers/postprocessing/utils/NormalPass.d.ts +87 -87
- package/dist/managers/postprocessing/utils/NormalPass.js +156 -156
- package/dist/managers/postprocessing/utils/NormalPass.js.map +1 -1
- package/dist/managers/postprocessing/utils/RenderPass.d.ts +114 -114
- package/dist/managers/postprocessing/utils/RenderPass.js +259 -259
- package/dist/managers/postprocessing/utils/RenderPass.js.map +1 -1
- package/dist/managers/sceneTree/SDTFUtils.d.ts +6 -6
- package/dist/managers/sceneTree/SDTFUtils.d.ts.map +1 -1
- package/dist/managers/sceneTree/SDTFUtils.js +50 -50
- package/dist/managers/sceneTree/SDTFUtils.js.map +1 -1
- package/dist/managers/sceneTree/SceenTreeManagerUtils.d.ts +7 -7
- package/dist/managers/sceneTree/SceenTreeManagerUtils.d.ts.map +1 -1
- package/dist/managers/sceneTree/SceenTreeManagerUtils.js +175 -165
- package/dist/managers/sceneTree/SceenTreeManagerUtils.js.map +1 -1
- package/dist/managers/sceneTree/ThreeJsDataUtils.d.ts +6 -6
- package/dist/managers/sceneTree/ThreeJsDataUtils.d.ts.map +1 -1
- package/dist/managers/sceneTree/ThreeJsDataUtils.js +80 -70
- package/dist/managers/sceneTree/ThreeJsDataUtils.js.map +1 -1
- package/dist/materials/GemMaterial.d.ts +37 -37
- package/dist/materials/GemMaterial.js +262 -252
- package/dist/materials/GemMaterial.js.map +1 -1
- package/dist/materials/MeshUnlitMaterialParameters.d.ts +3 -3
- package/dist/materials/MeshUnlitMaterialParameters.js +2 -2
- package/dist/materials/MultiPointsMaterial.d.ts +93 -93
- package/dist/materials/MultiPointsMaterial.js +577 -567
- package/dist/materials/MultiPointsMaterial.js.map +1 -1
- package/dist/materials/SpecularGlossinessMaterial.d.ts +13 -13
- package/dist/materials/SpecularGlossinessMaterial.js +171 -161
- package/dist/materials/SpecularGlossinessMaterial.js.map +1 -1
- package/dist/objects/SDColor.d.ts +16 -16
- package/dist/objects/SDColor.js +52 -52
- package/dist/objects/SDColor.js.map +1 -1
- package/dist/objects/SDObject.d.ts +27 -27
- package/dist/objects/SDObject.js +112 -102
- package/dist/objects/SDObject.js.map +1 -1
- package/dist/shaders/PCSS.d.ts +2 -2
- package/dist/shaders/PCSS.js +5 -5
- package/dist/shaders/gem.d.ts +2 -2
- package/dist/shaders/gem.js +5 -5
- package/dist/shaders/multi_points.d.ts +2 -2
- package/dist/shaders/multi_points.js +5 -5
- package/dist/styling/viewport-css.d.ts +1 -1
- package/dist/styling/viewport-css.js +4 -4
- package/dist/three/CSS2DRenderer.d.ts +31 -31
- package/dist/three/CSS2DRenderer.d.ts.map +1 -1
- package/dist/three/CSS2DRenderer.js +152 -152
- package/dist/three/CSS2DRenderer.js.map +1 -1
- package/dist/three/geometries/TextGeometry.d.ts +21 -21
- package/dist/three/geometries/TextGeometry.js +45 -45
- package/dist/three/geometries/TextGeometry.js.map +1 -1
- package/dist/three/loaders/RGBELoader.d.ts +23 -23
- package/dist/three/loaders/RGBELoader.js +311 -311
- package/dist/three/loaders/RGBELoader.js.map +1 -1
- package/dist/types/IThreejsData.d.ts +6 -6
- package/dist/types/IThreejsData.js +2 -2
- package/dist/types/ThreejsData.d.ts +10 -10
- package/dist/types/ThreejsData.js +41 -41
- package/package.json +18 -18
|
@@ -1,282 +1,282 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SSAARenderPass = void 0;
|
|
4
|
-
const postprocessing_1 = require("postprocessing");
|
|
5
|
-
const three_1 = require("three");
|
|
6
|
-
const CopyMaterial_1 = require("./utils/CopyMaterial");
|
|
7
|
-
const CopyShader_1 = require("./utils/CopyShader");
|
|
8
|
-
const FullScreenQuad_1 = require("./utils/FullScreenQuad");
|
|
9
|
-
let geometry = null;
|
|
10
|
-
/**
|
|
11
|
-
* Returns a shared fullscreen triangle.
|
|
12
|
-
*
|
|
13
|
-
* The screen size is 2x2 units (NDC). A triangle needs to be 4x4 units to fill the screen.
|
|
14
|
-
*
|
|
15
|
-
* @private
|
|
16
|
-
* @return {BufferGeometry} The fullscreen geometry.
|
|
17
|
-
*/
|
|
18
|
-
const getFullscreenTriangle = () => {
|
|
19
|
-
if (geometry === null) {
|
|
20
|
-
const vertices = new Float32Array([-1, -1, 0, 3, -1, 0, -1, 3, 0]);
|
|
21
|
-
const uvs = new Float32Array([0, 0, 2, 0, 0, 2]);
|
|
22
|
-
geometry = new three_1.BufferGeometry();
|
|
23
|
-
geometry.setAttribute("position", new three_1.BufferAttribute(vertices, 3));
|
|
24
|
-
geometry.setAttribute("uv", new three_1.BufferAttribute(uvs, 2));
|
|
25
|
-
}
|
|
26
|
-
return geometry;
|
|
27
|
-
};
|
|
28
|
-
/**
|
|
29
|
-
*
|
|
30
|
-
* Supersample Anti-Aliasing Render Pass
|
|
31
|
-
*
|
|
32
|
-
* This manual approach to SSAA re-renders the scene once for each sample with camera jitter and accumulates the results.
|
|
33
|
-
*
|
|
34
|
-
* References: https://en.wikipedia.org/wiki/Supersampling
|
|
35
|
-
*
|
|
36
|
-
* original implementation from three.js@0.152.2 was modified to work with the postprocessing library
|
|
37
|
-
*
|
|
38
|
-
*/
|
|
39
|
-
class SSAARenderPass extends postprocessing_1.Pass {
|
|
40
|
-
// #endregion Properties (9)
|
|
41
|
-
// #region Constructors (1)
|
|
42
|
-
constructor(scene, camera) {
|
|
43
|
-
super("SSAARenderPass", scene, camera);
|
|
44
|
-
this._clearColor = new three_1.Color();
|
|
45
|
-
this._oldClearColor = new three_1.Color();
|
|
46
|
-
this._sampleLevel = 2;
|
|
47
|
-
this._unbiased = true;
|
|
48
|
-
this.needsSwap = false;
|
|
49
|
-
this._sampleRenderTarget = new three_1.WebGLRenderTarget(1, 1, {
|
|
50
|
-
type: three_1.HalfFloatType,
|
|
51
|
-
});
|
|
52
|
-
this._sampleRenderTarget.texture.name = "SSAARender.Target";
|
|
53
|
-
this._sampleRenderTarget.texture.colorSpace = three_1.SRGBColorSpace;
|
|
54
|
-
const copyShader = CopyShader_1.CopyShader;
|
|
55
|
-
this._copyUniforms = three_1.UniformsUtils.clone(copyShader.uniforms);
|
|
56
|
-
// Create a copy material to render the ssaa sample render target to.
|
|
57
|
-
this._ssaaCopyMaterial = new three_1.ShaderMaterial({
|
|
58
|
-
uniforms: this._copyUniforms,
|
|
59
|
-
vertexShader: copyShader.vertexShader,
|
|
60
|
-
fragmentShader: copyShader.fragmentShader,
|
|
61
|
-
transparent: true,
|
|
62
|
-
depthTest: false,
|
|
63
|
-
depthWrite: false,
|
|
64
|
-
// do not use AdditiveBlending because it mixes the alpha channel instead of adding
|
|
65
|
-
blending: three_1.CustomBlending,
|
|
66
|
-
blendEquation: three_1.AddEquation,
|
|
67
|
-
blendDst: three_1.OneFactor,
|
|
68
|
-
blendDstAlpha: three_1.OneFactor,
|
|
69
|
-
blendSrc: three_1.SrcAlphaFactor,
|
|
70
|
-
blendSrcAlpha: three_1.OneFactor,
|
|
71
|
-
});
|
|
72
|
-
this._fsQuad = new FullScreenQuad_1.FullScreenQuad(this._ssaaCopyMaterial);
|
|
73
|
-
// create a second copy material to render the final results to
|
|
74
|
-
this._copyMaterial = new CopyMaterial_1.CopyMaterial();
|
|
75
|
-
this._fullScreen = new three_1.Mesh(getFullscreenTriangle(), this._copyMaterial);
|
|
76
|
-
this._fullScreen.frustumCulled = false;
|
|
77
|
-
// clear pass for color and depth
|
|
78
|
-
this._clearPass = new postprocessing_1.ClearPass(true, true, false);
|
|
79
|
-
}
|
|
80
|
-
// #endregion Constructors (1)
|
|
81
|
-
// #region Public Accessors (6)
|
|
82
|
-
set mainCamera(value) {
|
|
83
|
-
this.camera = value;
|
|
84
|
-
}
|
|
85
|
-
set mainScene(value) {
|
|
86
|
-
this.scene = value;
|
|
87
|
-
}
|
|
88
|
-
get renderToScreen() {
|
|
89
|
-
return super.renderToScreen;
|
|
90
|
-
}
|
|
91
|
-
set renderToScreen(value) {
|
|
92
|
-
super.renderToScreen = value;
|
|
93
|
-
}
|
|
94
|
-
get sampleLevel() {
|
|
95
|
-
return this._sampleLevel;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* specified as n, where the number of samples is 2^n, so sampleLevel = 4, is 2^4 samples, 16.
|
|
99
|
-
*/
|
|
100
|
-
set sampleLevel(value) {
|
|
101
|
-
this._sampleLevel = value;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* to cancel out rounding errors
|
|
105
|
-
*/
|
|
106
|
-
set unbiased(value) {
|
|
107
|
-
this._unbiased = value;
|
|
108
|
-
}
|
|
109
|
-
// #endregion Public Accessors (6)
|
|
110
|
-
// #region Public Methods (3)
|
|
111
|
-
dispose() {
|
|
112
|
-
this._sampleRenderTarget.dispose();
|
|
113
|
-
this._ssaaCopyMaterial.dispose();
|
|
114
|
-
this._fsQuad.dispose();
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Renders the scene.
|
|
118
|
-
*
|
|
119
|
-
* @param {WebGLRenderer} renderer - The renderer.
|
|
120
|
-
* @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.
|
|
121
|
-
* @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.
|
|
122
|
-
* @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.
|
|
123
|
-
* @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.
|
|
124
|
-
*/
|
|
125
|
-
render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {
|
|
126
|
-
// set clear color / clear alpha / color space from the current renderer
|
|
127
|
-
this._clearColor = renderer.getClearColor(new three_1.Color());
|
|
128
|
-
this._clearAlpha = renderer.getClearAlpha();
|
|
129
|
-
this._sampleRenderTarget.texture.colorSpace = renderer.outputColorSpace;
|
|
130
|
-
const jitterOffsets = _JitterVectors[Math.max(0, Math.min(this._sampleLevel, 5))];
|
|
131
|
-
// save the original auto clear and set to false
|
|
132
|
-
const autoClear = renderer.autoClear;
|
|
133
|
-
renderer.autoClear = false;
|
|
134
|
-
// save the original clear color and alpha
|
|
135
|
-
renderer.getClearColor(this._oldClearColor);
|
|
136
|
-
const oldClearAlpha = renderer.getClearAlpha();
|
|
137
|
-
const baseSampleWeight = 1.0 / jitterOffsets.length;
|
|
138
|
-
const roundingRange = 1 / 32;
|
|
139
|
-
this._copyUniforms["tDiffuse"].value = this._sampleRenderTarget.texture;
|
|
140
|
-
const viewOffset = {
|
|
141
|
-
fullWidth: inputBuffer.width,
|
|
142
|
-
fullHeight: inputBuffer.height,
|
|
143
|
-
offsetX: 0,
|
|
144
|
-
offsetY: 0,
|
|
145
|
-
width: inputBuffer.width,
|
|
146
|
-
height: inputBuffer.height,
|
|
147
|
-
};
|
|
148
|
-
const originalViewOffset = Object.assign({}, this.camera.view);
|
|
149
|
-
if (originalViewOffset.enabled)
|
|
150
|
-
Object.assign(viewOffset, originalViewOffset);
|
|
151
|
-
// render the scene multiple times, each slightly jitter offset from the last and accumulate the results.
|
|
152
|
-
for (let i = 0; i < jitterOffsets.length; i++) {
|
|
153
|
-
const jitterOffset = jitterOffsets[i];
|
|
154
|
-
if (this.camera
|
|
155
|
-
.setViewOffset) {
|
|
156
|
-
(this.camera).setViewOffset(viewOffset.fullWidth, viewOffset.fullHeight, viewOffset.offsetX + jitterOffset[0] * 0.0625, viewOffset.offsetY + jitterOffset[1] * 0.0625, // 0.0625 = 1 / 16
|
|
157
|
-
viewOffset.width, viewOffset.height);
|
|
158
|
-
}
|
|
159
|
-
let sampleWeight = baseSampleWeight;
|
|
160
|
-
if (this._unbiased) {
|
|
161
|
-
// the theory is that equal weights for each sample lead to an accumulation of rounding errors.
|
|
162
|
-
// The following equation varies the sampleWeight per sample so that it is uniformly distributed
|
|
163
|
-
// across a range of values whose rounding errors cancel each other out.
|
|
164
|
-
const uniformCenteredDistribution = -0.5 + (i + 0.5) / jitterOffsets.length;
|
|
165
|
-
sampleWeight += roundingRange * uniformCenteredDistribution;
|
|
166
|
-
}
|
|
167
|
-
renderer.setClearColor(this._clearColor, this._clearAlpha);
|
|
168
|
-
renderer.setRenderTarget(this._sampleRenderTarget);
|
|
169
|
-
renderer.clear();
|
|
170
|
-
renderer.render(this.scene, this.camera);
|
|
171
|
-
renderer.setRenderTarget(this.renderToScreen ? null : outputBuffer);
|
|
172
|
-
if (i === 0) {
|
|
173
|
-
renderer.setClearColor(0x000000, 0.0);
|
|
174
|
-
renderer.clear();
|
|
175
|
-
}
|
|
176
|
-
// set the weight of the current samples in the ssaaCopyMaterial
|
|
177
|
-
this._copyUniforms["opacity"].value = sampleWeight;
|
|
178
|
-
// render the sampleRenderTarget to fullscreen
|
|
179
|
-
this._fsQuad.render(renderer);
|
|
180
|
-
}
|
|
181
|
-
// clear color and depth
|
|
182
|
-
this._clearPass.render(renderer, inputBuffer, inputBuffer);
|
|
183
|
-
// render to the final result to fullscreen
|
|
184
|
-
this._copyMaterial.uniforms.inputBuffer.value = outputBuffer.texture;
|
|
185
|
-
this._copyMaterial.uniforms.opacity.value = 1;
|
|
186
|
-
renderer.setRenderTarget(this.renderToScreen ? null : inputBuffer);
|
|
187
|
-
this.scene.add(this._fullScreen);
|
|
188
|
-
renderer.render(this.scene, this.camera);
|
|
189
|
-
this.scene.remove(this._fullScreen);
|
|
190
|
-
if (this.camera
|
|
191
|
-
.setViewOffset &&
|
|
192
|
-
originalViewOffset.enabled) {
|
|
193
|
-
this.camera.setViewOffset(originalViewOffset.fullWidth, originalViewOffset.fullHeight, originalViewOffset.offsetX, originalViewOffset.offsetY, originalViewOffset.width, originalViewOffset.height);
|
|
194
|
-
}
|
|
195
|
-
else if (this.camera
|
|
196
|
-
.clearViewOffset) {
|
|
197
|
-
(this.camera).clearViewOffset();
|
|
198
|
-
}
|
|
199
|
-
renderer.autoClear = autoClear;
|
|
200
|
-
renderer.setClearColor(this._oldClearColor, oldClearAlpha);
|
|
201
|
-
}
|
|
202
|
-
setSize(width, height) {
|
|
203
|
-
this._sampleRenderTarget.setSize(width, height);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
exports.SSAARenderPass = SSAARenderPass;
|
|
207
|
-
const _JitterVectors = [
|
|
208
|
-
[[0, 0]],
|
|
209
|
-
[
|
|
210
|
-
[4, 4],
|
|
211
|
-
[-4, -4],
|
|
212
|
-
],
|
|
213
|
-
[
|
|
214
|
-
[-2, -6],
|
|
215
|
-
[6, -2],
|
|
216
|
-
[-6, 2],
|
|
217
|
-
[2, 6],
|
|
218
|
-
],
|
|
219
|
-
[
|
|
220
|
-
[1, -3],
|
|
221
|
-
[-1, 3],
|
|
222
|
-
[5, 1],
|
|
223
|
-
[-3, -5],
|
|
224
|
-
[-5, 5],
|
|
225
|
-
[-7, -1],
|
|
226
|
-
[3, 7],
|
|
227
|
-
[7, -7],
|
|
228
|
-
],
|
|
229
|
-
[
|
|
230
|
-
[1, 1],
|
|
231
|
-
[-1, -3],
|
|
232
|
-
[-3, 2],
|
|
233
|
-
[4, -1],
|
|
234
|
-
[-5, -2],
|
|
235
|
-
[2, 5],
|
|
236
|
-
[5, 3],
|
|
237
|
-
[3, -5],
|
|
238
|
-
[-2, 6],
|
|
239
|
-
[0, -7],
|
|
240
|
-
[-4, -6],
|
|
241
|
-
[-6, 4],
|
|
242
|
-
[-8, 0],
|
|
243
|
-
[7, -4],
|
|
244
|
-
[6, 7],
|
|
245
|
-
[-7, -8],
|
|
246
|
-
],
|
|
247
|
-
[
|
|
248
|
-
[-4, -7],
|
|
249
|
-
[-7, -5],
|
|
250
|
-
[-3, -5],
|
|
251
|
-
[-5, -4],
|
|
252
|
-
[-1, -4],
|
|
253
|
-
[-2, -2],
|
|
254
|
-
[-6, -1],
|
|
255
|
-
[-4, 0],
|
|
256
|
-
[-7, 1],
|
|
257
|
-
[-1, 2],
|
|
258
|
-
[-6, 3],
|
|
259
|
-
[-3, 3],
|
|
260
|
-
[-7, 6],
|
|
261
|
-
[-3, 6],
|
|
262
|
-
[-5, 7],
|
|
263
|
-
[-1, 7],
|
|
264
|
-
[5, -7],
|
|
265
|
-
[1, -6],
|
|
266
|
-
[6, -5],
|
|
267
|
-
[4, -4],
|
|
268
|
-
[2, -3],
|
|
269
|
-
[7, -2],
|
|
270
|
-
[1, -1],
|
|
271
|
-
[4, -1],
|
|
272
|
-
[2, 1],
|
|
273
|
-
[6, 2],
|
|
274
|
-
[0, 4],
|
|
275
|
-
[4, 4],
|
|
276
|
-
[2, 5],
|
|
277
|
-
[7, 5],
|
|
278
|
-
[5, 6],
|
|
279
|
-
[3, 7],
|
|
280
|
-
],
|
|
281
|
-
];
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SSAARenderPass = void 0;
|
|
4
|
+
const postprocessing_1 = require("postprocessing");
|
|
5
|
+
const three_1 = require("three");
|
|
6
|
+
const CopyMaterial_1 = require("./utils/CopyMaterial");
|
|
7
|
+
const CopyShader_1 = require("./utils/CopyShader");
|
|
8
|
+
const FullScreenQuad_1 = require("./utils/FullScreenQuad");
|
|
9
|
+
let geometry = null;
|
|
10
|
+
/**
|
|
11
|
+
* Returns a shared fullscreen triangle.
|
|
12
|
+
*
|
|
13
|
+
* The screen size is 2x2 units (NDC). A triangle needs to be 4x4 units to fill the screen.
|
|
14
|
+
*
|
|
15
|
+
* @private
|
|
16
|
+
* @return {BufferGeometry} The fullscreen geometry.
|
|
17
|
+
*/
|
|
18
|
+
const getFullscreenTriangle = () => {
|
|
19
|
+
if (geometry === null) {
|
|
20
|
+
const vertices = new Float32Array([-1, -1, 0, 3, -1, 0, -1, 3, 0]);
|
|
21
|
+
const uvs = new Float32Array([0, 0, 2, 0, 0, 2]);
|
|
22
|
+
geometry = new three_1.BufferGeometry();
|
|
23
|
+
geometry.setAttribute("position", new three_1.BufferAttribute(vertices, 3));
|
|
24
|
+
geometry.setAttribute("uv", new three_1.BufferAttribute(uvs, 2));
|
|
25
|
+
}
|
|
26
|
+
return geometry;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
*
|
|
30
|
+
* Supersample Anti-Aliasing Render Pass
|
|
31
|
+
*
|
|
32
|
+
* This manual approach to SSAA re-renders the scene once for each sample with camera jitter and accumulates the results.
|
|
33
|
+
*
|
|
34
|
+
* References: https://en.wikipedia.org/wiki/Supersampling
|
|
35
|
+
*
|
|
36
|
+
* original implementation from three.js@0.152.2 was modified to work with the postprocessing library
|
|
37
|
+
*
|
|
38
|
+
*/
|
|
39
|
+
class SSAARenderPass extends postprocessing_1.Pass {
|
|
40
|
+
// #endregion Properties (9)
|
|
41
|
+
// #region Constructors (1)
|
|
42
|
+
constructor(scene, camera) {
|
|
43
|
+
super("SSAARenderPass", scene, camera);
|
|
44
|
+
this._clearColor = new three_1.Color();
|
|
45
|
+
this._oldClearColor = new three_1.Color();
|
|
46
|
+
this._sampleLevel = 2;
|
|
47
|
+
this._unbiased = true;
|
|
48
|
+
this.needsSwap = false;
|
|
49
|
+
this._sampleRenderTarget = new three_1.WebGLRenderTarget(1, 1, {
|
|
50
|
+
type: three_1.HalfFloatType,
|
|
51
|
+
});
|
|
52
|
+
this._sampleRenderTarget.texture.name = "SSAARender.Target";
|
|
53
|
+
this._sampleRenderTarget.texture.colorSpace = three_1.SRGBColorSpace;
|
|
54
|
+
const copyShader = CopyShader_1.CopyShader;
|
|
55
|
+
this._copyUniforms = three_1.UniformsUtils.clone(copyShader.uniforms);
|
|
56
|
+
// Create a copy material to render the ssaa sample render target to.
|
|
57
|
+
this._ssaaCopyMaterial = new three_1.ShaderMaterial({
|
|
58
|
+
uniforms: this._copyUniforms,
|
|
59
|
+
vertexShader: copyShader.vertexShader,
|
|
60
|
+
fragmentShader: copyShader.fragmentShader,
|
|
61
|
+
transparent: true,
|
|
62
|
+
depthTest: false,
|
|
63
|
+
depthWrite: false,
|
|
64
|
+
// do not use AdditiveBlending because it mixes the alpha channel instead of adding
|
|
65
|
+
blending: three_1.CustomBlending,
|
|
66
|
+
blendEquation: three_1.AddEquation,
|
|
67
|
+
blendDst: three_1.OneFactor,
|
|
68
|
+
blendDstAlpha: three_1.OneFactor,
|
|
69
|
+
blendSrc: three_1.SrcAlphaFactor,
|
|
70
|
+
blendSrcAlpha: three_1.OneFactor,
|
|
71
|
+
});
|
|
72
|
+
this._fsQuad = new FullScreenQuad_1.FullScreenQuad(this._ssaaCopyMaterial);
|
|
73
|
+
// create a second copy material to render the final results to
|
|
74
|
+
this._copyMaterial = new CopyMaterial_1.CopyMaterial();
|
|
75
|
+
this._fullScreen = new three_1.Mesh(getFullscreenTriangle(), this._copyMaterial);
|
|
76
|
+
this._fullScreen.frustumCulled = false;
|
|
77
|
+
// clear pass for color and depth
|
|
78
|
+
this._clearPass = new postprocessing_1.ClearPass(true, true, false);
|
|
79
|
+
}
|
|
80
|
+
// #endregion Constructors (1)
|
|
81
|
+
// #region Public Accessors (6)
|
|
82
|
+
set mainCamera(value) {
|
|
83
|
+
this.camera = value;
|
|
84
|
+
}
|
|
85
|
+
set mainScene(value) {
|
|
86
|
+
this.scene = value;
|
|
87
|
+
}
|
|
88
|
+
get renderToScreen() {
|
|
89
|
+
return super.renderToScreen;
|
|
90
|
+
}
|
|
91
|
+
set renderToScreen(value) {
|
|
92
|
+
super.renderToScreen = value;
|
|
93
|
+
}
|
|
94
|
+
get sampleLevel() {
|
|
95
|
+
return this._sampleLevel;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* specified as n, where the number of samples is 2^n, so sampleLevel = 4, is 2^4 samples, 16.
|
|
99
|
+
*/
|
|
100
|
+
set sampleLevel(value) {
|
|
101
|
+
this._sampleLevel = value;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* to cancel out rounding errors
|
|
105
|
+
*/
|
|
106
|
+
set unbiased(value) {
|
|
107
|
+
this._unbiased = value;
|
|
108
|
+
}
|
|
109
|
+
// #endregion Public Accessors (6)
|
|
110
|
+
// #region Public Methods (3)
|
|
111
|
+
dispose() {
|
|
112
|
+
this._sampleRenderTarget.dispose();
|
|
113
|
+
this._ssaaCopyMaterial.dispose();
|
|
114
|
+
this._fsQuad.dispose();
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Renders the scene.
|
|
118
|
+
*
|
|
119
|
+
* @param {WebGLRenderer} renderer - The renderer.
|
|
120
|
+
* @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.
|
|
121
|
+
* @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.
|
|
122
|
+
* @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.
|
|
123
|
+
* @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.
|
|
124
|
+
*/
|
|
125
|
+
render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {
|
|
126
|
+
// set clear color / clear alpha / color space from the current renderer
|
|
127
|
+
this._clearColor = renderer.getClearColor(new three_1.Color());
|
|
128
|
+
this._clearAlpha = renderer.getClearAlpha();
|
|
129
|
+
this._sampleRenderTarget.texture.colorSpace = renderer.outputColorSpace;
|
|
130
|
+
const jitterOffsets = _JitterVectors[Math.max(0, Math.min(this._sampleLevel, 5))];
|
|
131
|
+
// save the original auto clear and set to false
|
|
132
|
+
const autoClear = renderer.autoClear;
|
|
133
|
+
renderer.autoClear = false;
|
|
134
|
+
// save the original clear color and alpha
|
|
135
|
+
renderer.getClearColor(this._oldClearColor);
|
|
136
|
+
const oldClearAlpha = renderer.getClearAlpha();
|
|
137
|
+
const baseSampleWeight = 1.0 / jitterOffsets.length;
|
|
138
|
+
const roundingRange = 1 / 32;
|
|
139
|
+
this._copyUniforms["tDiffuse"].value = this._sampleRenderTarget.texture;
|
|
140
|
+
const viewOffset = {
|
|
141
|
+
fullWidth: inputBuffer.width,
|
|
142
|
+
fullHeight: inputBuffer.height,
|
|
143
|
+
offsetX: 0,
|
|
144
|
+
offsetY: 0,
|
|
145
|
+
width: inputBuffer.width,
|
|
146
|
+
height: inputBuffer.height,
|
|
147
|
+
};
|
|
148
|
+
const originalViewOffset = Object.assign({}, this.camera.view);
|
|
149
|
+
if (originalViewOffset.enabled)
|
|
150
|
+
Object.assign(viewOffset, originalViewOffset);
|
|
151
|
+
// render the scene multiple times, each slightly jitter offset from the last and accumulate the results.
|
|
152
|
+
for (let i = 0; i < jitterOffsets.length; i++) {
|
|
153
|
+
const jitterOffset = jitterOffsets[i];
|
|
154
|
+
if (this.camera
|
|
155
|
+
.setViewOffset) {
|
|
156
|
+
(this.camera).setViewOffset(viewOffset.fullWidth, viewOffset.fullHeight, viewOffset.offsetX + jitterOffset[0] * 0.0625, viewOffset.offsetY + jitterOffset[1] * 0.0625, // 0.0625 = 1 / 16
|
|
157
|
+
viewOffset.width, viewOffset.height);
|
|
158
|
+
}
|
|
159
|
+
let sampleWeight = baseSampleWeight;
|
|
160
|
+
if (this._unbiased) {
|
|
161
|
+
// the theory is that equal weights for each sample lead to an accumulation of rounding errors.
|
|
162
|
+
// The following equation varies the sampleWeight per sample so that it is uniformly distributed
|
|
163
|
+
// across a range of values whose rounding errors cancel each other out.
|
|
164
|
+
const uniformCenteredDistribution = -0.5 + (i + 0.5) / jitterOffsets.length;
|
|
165
|
+
sampleWeight += roundingRange * uniformCenteredDistribution;
|
|
166
|
+
}
|
|
167
|
+
renderer.setClearColor(this._clearColor, this._clearAlpha);
|
|
168
|
+
renderer.setRenderTarget(this._sampleRenderTarget);
|
|
169
|
+
renderer.clear();
|
|
170
|
+
renderer.render(this.scene, this.camera);
|
|
171
|
+
renderer.setRenderTarget(this.renderToScreen ? null : outputBuffer);
|
|
172
|
+
if (i === 0) {
|
|
173
|
+
renderer.setClearColor(0x000000, 0.0);
|
|
174
|
+
renderer.clear();
|
|
175
|
+
}
|
|
176
|
+
// set the weight of the current samples in the ssaaCopyMaterial
|
|
177
|
+
this._copyUniforms["opacity"].value = sampleWeight;
|
|
178
|
+
// render the sampleRenderTarget to fullscreen
|
|
179
|
+
this._fsQuad.render(renderer);
|
|
180
|
+
}
|
|
181
|
+
// clear color and depth
|
|
182
|
+
this._clearPass.render(renderer, inputBuffer, inputBuffer);
|
|
183
|
+
// render to the final result to fullscreen
|
|
184
|
+
this._copyMaterial.uniforms.inputBuffer.value = outputBuffer.texture;
|
|
185
|
+
this._copyMaterial.uniforms.opacity.value = 1;
|
|
186
|
+
renderer.setRenderTarget(this.renderToScreen ? null : inputBuffer);
|
|
187
|
+
this.scene.add(this._fullScreen);
|
|
188
|
+
renderer.render(this.scene, this.camera);
|
|
189
|
+
this.scene.remove(this._fullScreen);
|
|
190
|
+
if (this.camera
|
|
191
|
+
.setViewOffset &&
|
|
192
|
+
originalViewOffset.enabled) {
|
|
193
|
+
this.camera.setViewOffset(originalViewOffset.fullWidth, originalViewOffset.fullHeight, originalViewOffset.offsetX, originalViewOffset.offsetY, originalViewOffset.width, originalViewOffset.height);
|
|
194
|
+
}
|
|
195
|
+
else if (this.camera
|
|
196
|
+
.clearViewOffset) {
|
|
197
|
+
(this.camera).clearViewOffset();
|
|
198
|
+
}
|
|
199
|
+
renderer.autoClear = autoClear;
|
|
200
|
+
renderer.setClearColor(this._oldClearColor, oldClearAlpha);
|
|
201
|
+
}
|
|
202
|
+
setSize(width, height) {
|
|
203
|
+
this._sampleRenderTarget.setSize(width, height);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
exports.SSAARenderPass = SSAARenderPass;
|
|
207
|
+
const _JitterVectors = [
|
|
208
|
+
[[0, 0]],
|
|
209
|
+
[
|
|
210
|
+
[4, 4],
|
|
211
|
+
[-4, -4],
|
|
212
|
+
],
|
|
213
|
+
[
|
|
214
|
+
[-2, -6],
|
|
215
|
+
[6, -2],
|
|
216
|
+
[-6, 2],
|
|
217
|
+
[2, 6],
|
|
218
|
+
],
|
|
219
|
+
[
|
|
220
|
+
[1, -3],
|
|
221
|
+
[-1, 3],
|
|
222
|
+
[5, 1],
|
|
223
|
+
[-3, -5],
|
|
224
|
+
[-5, 5],
|
|
225
|
+
[-7, -1],
|
|
226
|
+
[3, 7],
|
|
227
|
+
[7, -7],
|
|
228
|
+
],
|
|
229
|
+
[
|
|
230
|
+
[1, 1],
|
|
231
|
+
[-1, -3],
|
|
232
|
+
[-3, 2],
|
|
233
|
+
[4, -1],
|
|
234
|
+
[-5, -2],
|
|
235
|
+
[2, 5],
|
|
236
|
+
[5, 3],
|
|
237
|
+
[3, -5],
|
|
238
|
+
[-2, 6],
|
|
239
|
+
[0, -7],
|
|
240
|
+
[-4, -6],
|
|
241
|
+
[-6, 4],
|
|
242
|
+
[-8, 0],
|
|
243
|
+
[7, -4],
|
|
244
|
+
[6, 7],
|
|
245
|
+
[-7, -8],
|
|
246
|
+
],
|
|
247
|
+
[
|
|
248
|
+
[-4, -7],
|
|
249
|
+
[-7, -5],
|
|
250
|
+
[-3, -5],
|
|
251
|
+
[-5, -4],
|
|
252
|
+
[-1, -4],
|
|
253
|
+
[-2, -2],
|
|
254
|
+
[-6, -1],
|
|
255
|
+
[-4, 0],
|
|
256
|
+
[-7, 1],
|
|
257
|
+
[-1, 2],
|
|
258
|
+
[-6, 3],
|
|
259
|
+
[-3, 3],
|
|
260
|
+
[-7, 6],
|
|
261
|
+
[-3, 6],
|
|
262
|
+
[-5, 7],
|
|
263
|
+
[-1, 7],
|
|
264
|
+
[5, -7],
|
|
265
|
+
[1, -6],
|
|
266
|
+
[6, -5],
|
|
267
|
+
[4, -4],
|
|
268
|
+
[2, -3],
|
|
269
|
+
[7, -2],
|
|
270
|
+
[1, -1],
|
|
271
|
+
[4, -1],
|
|
272
|
+
[2, 1],
|
|
273
|
+
[6, 2],
|
|
274
|
+
[0, 4],
|
|
275
|
+
[4, 4],
|
|
276
|
+
[2, 5],
|
|
277
|
+
[7, 5],
|
|
278
|
+
[5, 6],
|
|
279
|
+
[3, 7],
|
|
280
|
+
],
|
|
281
|
+
];
|
|
282
282
|
//# sourceMappingURL=SSAARenderPass.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SSAARenderPass.js","sourceRoot":"","sources":["../../../src/managers/postprocessing/SSAARenderPass.ts"],"names":[],"mappings":";;;AAAA,mDAA+C;AAC/C,iCAmBe;AACf,uDAAkD;AAClD,mDAA8C;AAC9C,2DAAsD;AAEtD,IAAI,QAAQ,GAA0B,IAAI,CAAC;AAE3C;;;;;;;GAOG;AAEH,MAAM,qBAAqB,GAAG,GAAG,EAAE;IAClC,IAAI,QAAQ,KAAK,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"SSAARenderPass.js","sourceRoot":"","sources":["../../../src/managers/postprocessing/SSAARenderPass.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { ITreeNode } from "@shapediver/viewer.shared.node-tree";
|
|
2
|
-
import { SelectiveBloomEffect } from "postprocessing";
|
|
3
|
-
import { RenderingEngine } from "../../RenderingEngine";
|
|
4
|
-
export declare class SelectiveBloomManager {
|
|
5
|
-
private readonly _renderingEngine;
|
|
6
|
-
private _selectiveBloomEffect;
|
|
7
|
-
private _selectiveBloomNodes;
|
|
8
|
-
constructor(_renderingEngine: RenderingEngine);
|
|
9
|
-
addSelection(node: ITreeNode): void;
|
|
10
|
-
clearSelection(): void;
|
|
11
|
-
removeSelection(node: ITreeNode): boolean;
|
|
12
|
-
setEffect(selectiveBloomEffect: SelectiveBloomEffect): void;
|
|
13
|
-
updateSelectiveBloomEffectObjects(): void;
|
|
14
|
-
}
|
|
1
|
+
import { ITreeNode } from "@shapediver/viewer.shared.node-tree";
|
|
2
|
+
import { SelectiveBloomEffect } from "postprocessing";
|
|
3
|
+
import { RenderingEngine } from "../../RenderingEngine";
|
|
4
|
+
export declare class SelectiveBloomManager {
|
|
5
|
+
private readonly _renderingEngine;
|
|
6
|
+
private _selectiveBloomEffect;
|
|
7
|
+
private _selectiveBloomNodes;
|
|
8
|
+
constructor(_renderingEngine: RenderingEngine);
|
|
9
|
+
addSelection(node: ITreeNode): void;
|
|
10
|
+
clearSelection(): void;
|
|
11
|
+
removeSelection(node: ITreeNode): boolean;
|
|
12
|
+
setEffect(selectiveBloomEffect: SelectiveBloomEffect): void;
|
|
13
|
+
updateSelectiveBloomEffectObjects(): void;
|
|
14
|
+
}
|
|
15
15
|
//# sourceMappingURL=SelectiveBloomManager.d.ts.map
|