@xviewer.js/postprocessing 1.0.4-alpha.0 → 1.0.4-alpha.2
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/assets/index-B_SY1GJM.css +0 -0
- package/dist/main.cjs +95 -261
- package/dist/main.cjs.map +1 -1
- package/dist/module.js +97 -256
- package/dist/module.js.map +1 -1
- package/package.json +3 -3
- package/types/Effect.d.ts +2 -0
- package/types/PostProcessing.d.ts +21 -4
- package/types/PostProcessing2.d.ts +15 -0
- package/types/PostProcessingManager.d.ts +3 -0
- package/types/index.d.ts +0 -7
|
File without changes
|
package/dist/main.cjs
CHANGED
|
@@ -1,284 +1,118 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var core = require('@xviewer.js/core');
|
|
4
3
|
var postprocessing = require('postprocessing');
|
|
4
|
+
var core = require('@xviewer.js/core');
|
|
5
5
|
var three = require('three');
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
set multisampling(v) {
|
|
12
|
-
this._composer.multisampling = v;
|
|
13
|
-
}
|
|
14
|
-
update(dt) {
|
|
15
|
-
if (this._effectDirty) {
|
|
16
|
-
this._effectDirty = false;
|
|
17
|
-
this._effectPass && this.removePass(this._effectPass);
|
|
18
|
-
this._effectPass = this.addPass(new postprocessing.EffectPass(this.viewer.camera, ...this._effects));
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
getPass(constructor) {
|
|
22
|
-
return this._composer.passes.find((v)=>v.constructor === constructor);
|
|
23
|
-
}
|
|
24
|
-
addPass(pass) {
|
|
25
|
-
this._composer.addPass(pass, this._composer.passes.length - 1);
|
|
26
|
-
this._checkOutputPass();
|
|
27
|
-
return pass;
|
|
28
|
-
}
|
|
29
|
-
removePass(pass) {
|
|
30
|
-
pass.dispose();
|
|
31
|
-
this._composer.removePass(pass);
|
|
32
|
-
this._checkOutputPass();
|
|
33
|
-
}
|
|
34
|
-
activePass(pass, v) {
|
|
35
|
-
pass.enabled = v;
|
|
36
|
-
this._checkOutputPass();
|
|
37
|
-
return pass;
|
|
38
|
-
}
|
|
39
|
-
addEffect(effect) {
|
|
40
|
-
this._effects.push(effect);
|
|
41
|
-
this._effectDirty = true;
|
|
42
|
-
return effect;
|
|
7
|
+
const { _getClassProperties } = core.PropertyManager;
|
|
8
|
+
class PostProcessing extends core.Component {
|
|
9
|
+
get effects() {
|
|
10
|
+
return this._effects;
|
|
43
11
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
this._effects.splice(this._effects.indexOf(effect), 1);
|
|
47
|
-
this._effectDirty = true;
|
|
12
|
+
get composer() {
|
|
13
|
+
return this._composer;
|
|
48
14
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
this._outputPass.enabled = this._composer.multisampling > 0 && count === 1;
|
|
52
|
-
this._setRenderToScreen();
|
|
53
|
-
}
|
|
54
|
-
_setRenderToScreen() {
|
|
55
|
-
const passes = this._composer.passes;
|
|
56
|
-
for(let k = 0, i = passes.length; i--;){
|
|
57
|
-
let pass = passes[i];
|
|
58
|
-
if (pass.enabled && pass.name !== "VelocityDepthNormalPass" && k === 0) {
|
|
59
|
-
k = i;
|
|
60
|
-
}
|
|
61
|
-
pass.renderToScreen = k === i;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
constructor(props){
|
|
65
|
-
super();
|
|
66
|
-
this._effects = [];
|
|
67
|
-
this._effectPass = null;
|
|
68
|
-
this._effectDirty = true;
|
|
15
|
+
constructor({ pass = [], msaa = false, frameBufferType = three.HalfFloatType, ...props } = {}){
|
|
16
|
+
super(), this.order = -1, this._effects = [];
|
|
69
17
|
this.onLoad = ()=>{
|
|
70
|
-
const { renderer, scene, camera } = this.
|
|
71
|
-
|
|
72
|
-
this.
|
|
18
|
+
const { renderer, scene, camera } = this.context;
|
|
19
|
+
const multisampling = msaa ? typeof msaa === "number" ? msaa : Math.min(4, renderer.capabilities.maxSamples) : 0;
|
|
20
|
+
this._renderer = this.viewer.getComponent(core.Renderer);
|
|
73
21
|
this._composer = new postprocessing.EffectComposer(renderer, Object.assign({
|
|
74
|
-
frameBufferType
|
|
22
|
+
frameBufferType,
|
|
23
|
+
multisampling
|
|
75
24
|
}, props));
|
|
76
|
-
this._composer.addPass(
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
25
|
+
this._composer.addPass(new postprocessing.RenderPass(scene, camera));
|
|
26
|
+
const passes = Array.isArray(pass) ? pass : [
|
|
27
|
+
pass
|
|
28
|
+
];
|
|
29
|
+
passes.forEach((pass)=>{
|
|
30
|
+
if (pass instanceof postprocessing.Pass) {
|
|
31
|
+
this._composer.addPass(pass);
|
|
32
|
+
} else {
|
|
33
|
+
const { effect = [], encodeOutput = true } = pass;
|
|
34
|
+
const effects = Array.isArray(effect) ? effect : [
|
|
35
|
+
effect
|
|
36
|
+
];
|
|
37
|
+
this._effects = this._effects.concat(effects);
|
|
38
|
+
const effectPass = new postprocessing.EffectPass(camera, ...effects);
|
|
39
|
+
effectPass.encodeOutput = encodeOutput;
|
|
40
|
+
this._composer.addPass(effectPass);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
this._effects.forEach((target)=>{
|
|
44
|
+
Object.defineProperty(target, "blendOpacity", {
|
|
45
|
+
get: ()=>target.blendMode.getOpacity(),
|
|
46
|
+
set: (v)=>target.blendMode.setOpacity(v)
|
|
47
|
+
});
|
|
48
|
+
Object.defineProperty(target, "blendFunction", {
|
|
49
|
+
get: ()=>target.blendMode.blendFunction,
|
|
50
|
+
set: (v)=>target.blendMode.blendFunction = v
|
|
51
|
+
});
|
|
52
|
+
});
|
|
83
53
|
};
|
|
54
|
+
this.onDestroy = ()=>this._composer.dispose();
|
|
55
|
+
this.render = (dt)=>this._composer.render(dt);
|
|
56
|
+
this.resize = (width, height)=>this._composer.setSize(width, height);
|
|
57
|
+
this.onEnable = ()=>this._renderer.enabled = false;
|
|
58
|
+
this.onDisable = ()=>this._renderer.enabled = true;
|
|
84
59
|
}
|
|
85
60
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
return this.viewer.mount(PostProcessingManager, true);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
class ToneMapping extends PostProcessing {
|
|
94
|
-
get mode() {
|
|
95
|
-
return this.effect.mode;
|
|
61
|
+
_getClassProperties(PostProcessing.name, {
|
|
62
|
+
effects: {
|
|
63
|
+
flat: true
|
|
96
64
|
}
|
|
97
|
-
set mode(v) {
|
|
98
|
-
this.effect.mode = v;
|
|
99
|
-
}
|
|
100
|
-
constructor(props){
|
|
101
|
-
super();
|
|
102
|
-
this.onEnable = ()=>{
|
|
103
|
-
this.effect = new postprocessing.ToneMappingEffect(props);
|
|
104
|
-
this.postprocessing.addEffect(this.effect);
|
|
105
|
-
};
|
|
106
|
-
this.onDisable = ()=>{
|
|
107
|
-
this.postprocessing.removeEffect(this.effect);
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
core.PropertyManager._getClassProperties(ToneMapping.name).property("enabled").property("mode", {
|
|
112
|
-
value: postprocessing.ToneMappingMode
|
|
113
65
|
});
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
}
|
|
122
|
-
get focalLength() {
|
|
123
|
-
return this.effect.cocMaterial.focalLength;
|
|
124
|
-
}
|
|
125
|
-
set focalLength(v) {
|
|
126
|
-
this.effect.cocMaterial.focalLength = v;
|
|
127
|
-
}
|
|
128
|
-
get bokehScale() {
|
|
129
|
-
return this.effect.bokehScale;
|
|
130
|
-
}
|
|
131
|
-
set bokehScale(v) {
|
|
132
|
-
this.effect.bokehScale = v;
|
|
133
|
-
}
|
|
134
|
-
constructor(props){
|
|
135
|
-
super();
|
|
136
|
-
this.onEnable = ()=>{
|
|
137
|
-
this.effect = new postprocessing.DepthOfFieldEffect(this.viewer.camera, props);
|
|
138
|
-
this.effect.target = props && props.target || null;
|
|
139
|
-
this.postprocessing.addEffect(this.effect);
|
|
140
|
-
};
|
|
141
|
-
this.onDisable = ()=>{
|
|
142
|
-
this.postprocessing.removeEffect(this.effect);
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
core.PropertyManager._getClassProperties(DepthOfField.name).property("enabled").property("focusDistance").property("focalLength").property("bokehScale");
|
|
147
|
-
|
|
148
|
-
class Bloom extends PostProcessing {
|
|
149
|
-
get intensity() {
|
|
150
|
-
return this.effect.intensity;
|
|
66
|
+
_getClassProperties(postprocessing.Effect.name, {
|
|
67
|
+
blendOpacity: {
|
|
68
|
+
min: 0,
|
|
69
|
+
max: 1
|
|
70
|
+
},
|
|
71
|
+
blendFunction: {
|
|
72
|
+
value: postprocessing.BlendFunction
|
|
151
73
|
}
|
|
152
|
-
set intensity(v) {
|
|
153
|
-
this.effect.intensity = v;
|
|
154
|
-
}
|
|
155
|
-
get luminanceThreshold() {
|
|
156
|
-
return this.effect.luminanceMaterial.threshold;
|
|
157
|
-
}
|
|
158
|
-
set luminanceThreshold(v) {
|
|
159
|
-
this.effect.luminanceMaterial.threshold = v;
|
|
160
|
-
}
|
|
161
|
-
get luminanceSmoothing() {
|
|
162
|
-
return this.effect.luminanceMaterial.smoothing;
|
|
163
|
-
}
|
|
164
|
-
set luminanceSmoothing(v) {
|
|
165
|
-
this.effect.luminanceMaterial.smoothing = v;
|
|
166
|
-
}
|
|
167
|
-
get blurRadius() {
|
|
168
|
-
return this.effect["mipmapBlurPass"].radius;
|
|
169
|
-
}
|
|
170
|
-
set blurRadius(v) {
|
|
171
|
-
this.effect["mipmapBlurPass"].radius = v;
|
|
172
|
-
}
|
|
173
|
-
constructor(props){
|
|
174
|
-
super();
|
|
175
|
-
this.onEnable = ()=>{
|
|
176
|
-
this.effect = new postprocessing.BloomEffect({
|
|
177
|
-
blendFunction: postprocessing.BlendFunction.ADD,
|
|
178
|
-
...props
|
|
179
|
-
});
|
|
180
|
-
this.postprocessing.addEffect(this.effect);
|
|
181
|
-
};
|
|
182
|
-
this.onDisable = ()=>{
|
|
183
|
-
this.postprocessing.removeEffect(this.effect);
|
|
184
|
-
};
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
core.PropertyManager._getClassProperties(Bloom.name).property("enabled").property("intensity", {
|
|
188
|
-
min: 0,
|
|
189
|
-
max: 2,
|
|
190
|
-
step: 0.01
|
|
191
|
-
}).property("luminanceThreshold", {
|
|
192
|
-
min: 0,
|
|
193
|
-
max: 10,
|
|
194
|
-
step: 0.01
|
|
195
|
-
}).property("luminanceSmoothing", {
|
|
196
|
-
min: 0,
|
|
197
|
-
max: 10,
|
|
198
|
-
step: 0.01
|
|
199
|
-
}).property("blurRadius", {
|
|
200
|
-
min: 0,
|
|
201
|
-
max: 1,
|
|
202
|
-
step: 0.01
|
|
203
74
|
});
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
this.onDisable = ()=>{
|
|
213
|
-
this.postprocessing.removeEffect(this.effect);
|
|
214
|
-
};
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
core.PropertyManager._getClassProperties(FXAA.name).property("enabled");
|
|
218
|
-
|
|
219
|
-
class SMAA extends PostProcessing {
|
|
220
|
-
get preset() {
|
|
221
|
-
return this._preset;
|
|
75
|
+
_getClassProperties(postprocessing.BloomEffect.name, {
|
|
76
|
+
intensity: {
|
|
77
|
+
min: 0,
|
|
78
|
+
max: 10
|
|
79
|
+
},
|
|
80
|
+
dithering: {},
|
|
81
|
+
kernelSize: {
|
|
82
|
+
value: postprocessing.KernelSize
|
|
222
83
|
}
|
|
223
|
-
set preset(v) {
|
|
224
|
-
if (this._preset !== v) {
|
|
225
|
-
this._preset = v;
|
|
226
|
-
this.effect.applyPreset(v);
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
get edgeDetectionMode() {
|
|
230
|
-
return this.effect.edgeDetectionMaterial.edgeDetectionMode;
|
|
231
|
-
}
|
|
232
|
-
set edgeDetectionMode(v) {
|
|
233
|
-
this.effect.edgeDetectionMaterial.edgeDetectionMode = v;
|
|
234
|
-
}
|
|
235
|
-
get predicationMode() {
|
|
236
|
-
return this.effect.edgeDetectionMaterial.predicationMode;
|
|
237
|
-
}
|
|
238
|
-
set predicationMode(v) {
|
|
239
|
-
this.effect.edgeDetectionMaterial.predicationMode = v;
|
|
240
|
-
}
|
|
241
|
-
constructor(props = {}){
|
|
242
|
-
super();
|
|
243
|
-
this._preset = postprocessing.SMAAPreset.MEDIUM;
|
|
244
|
-
this.onEnable = ()=>{
|
|
245
|
-
this.effect = new postprocessing.SMAAEffect(props);
|
|
246
|
-
this.postprocessing.addEffect(this.effect);
|
|
247
|
-
};
|
|
248
|
-
this.onDisable = ()=>{
|
|
249
|
-
this.postprocessing.removeEffect(this.effect);
|
|
250
|
-
};
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
core.PropertyManager._getClassProperties(SMAA.name).property("enabled").property("preset", {
|
|
254
|
-
value: postprocessing.SMAAPreset
|
|
255
|
-
}).property("edgeDetectionMode", {
|
|
256
|
-
value: postprocessing.EdgeDetectionMode
|
|
257
|
-
}).property("predicationMode", {
|
|
258
|
-
value: postprocessing.PredicationMode
|
|
259
84
|
});
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
super();
|
|
264
|
-
this.onEnable = ()=>{
|
|
265
|
-
const { renderer } = this.viewer;
|
|
266
|
-
const maxSamples = Math.min(4, renderer.capabilities.maxSamples);
|
|
267
|
-
this.postprocessing.multisampling = maxSamples;
|
|
268
|
-
};
|
|
269
|
-
this.onDisable = ()=>{
|
|
270
|
-
this.postprocessing.multisampling = 0;
|
|
271
|
-
};
|
|
85
|
+
_getClassProperties(postprocessing.ToneMappingEffect.name, {
|
|
86
|
+
mode: {
|
|
87
|
+
value: postprocessing.ToneMappingMode
|
|
272
88
|
}
|
|
273
|
-
}
|
|
274
|
-
|
|
89
|
+
});
|
|
90
|
+
_getClassProperties(postprocessing.FXAAEffect.name, {
|
|
91
|
+
minEdgeThreshold: {
|
|
92
|
+
min: 0,
|
|
93
|
+
max: 1
|
|
94
|
+
},
|
|
95
|
+
maxEdgeThreshold: {
|
|
96
|
+
min: 0,
|
|
97
|
+
max: 1
|
|
98
|
+
},
|
|
99
|
+
subpixelQuality: {
|
|
100
|
+
min: 0,
|
|
101
|
+
max: 1
|
|
102
|
+
},
|
|
103
|
+
samples: {}
|
|
104
|
+
});
|
|
105
|
+
_getClassProperties(postprocessing.SMAAEffect.name, {
|
|
106
|
+
edgesTexture: {},
|
|
107
|
+
weightsTexture: {}
|
|
108
|
+
});
|
|
109
|
+
_getClassProperties(postprocessing.DepthOfFieldEffect.name, {
|
|
110
|
+
bokehScale: {},
|
|
111
|
+
maskFunction: {
|
|
112
|
+
value: postprocessing.MaskFunction
|
|
113
|
+
},
|
|
114
|
+
target: {}
|
|
115
|
+
});
|
|
275
116
|
|
|
276
|
-
exports.Bloom = Bloom;
|
|
277
|
-
exports.DepthOfField = DepthOfField;
|
|
278
|
-
exports.FXAA = FXAA;
|
|
279
|
-
exports.MSAA = MSAA;
|
|
280
117
|
exports.PostProcessing = PostProcessing;
|
|
281
|
-
exports.PostProcessingManager = PostProcessingManager;
|
|
282
|
-
exports.SMAA = SMAA;
|
|
283
|
-
exports.ToneMapping = ToneMapping;
|
|
284
118
|
//# sourceMappingURL=main.cjs.map
|
package/dist/main.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.cjs","sources":["../src/PostProcessingManager.ts","../src/PostProcessing.ts","../src/ToneMapping.ts","../src/DepthOfField.ts","../src/Bloom.ts","../src/FXAA.ts","../src/SMAA.ts","../src/MSAA.ts"],"sourcesContent":["import { Mount, PropertyManager } from \"@xviewer.js/core\";\nimport { Effect, EffectComposer, EffectPass, Pass, RenderPass } from \"postprocessing\";\nimport { HalfFloatType } from \"three\";\n\nexport class PostProcessingManager extends Mount {\n private _renderPass: RenderPass;\n private _outputPass: EffectPass;\n private _composer: EffectComposer;\n\n private _effects: Effect[] = [];\n private _effectPass: EffectPass = null;\n private _effectDirty: boolean = true;\n\n get multisampling() {\n return this._composer.multisampling;\n }\n set multisampling(v: number) {\n this._composer.multisampling = v;\n }\n\n constructor(props: ConstructorParameters<typeof EffectComposer>[1]) {\n super();\n this.onLoad = () => {\n const { renderer, scene, camera } = this.viewer;\n\n this._renderPass = new RenderPass(scene, camera);\n this._outputPass = new EffectPass(camera);\n\n this._composer = new EffectComposer(renderer, Object.assign({ frameBufferType: HalfFloatType }, props));\n this._composer.addPass(this._renderPass);\n this._composer.addPass(this._outputPass);\n\n this.viewer._resizing = (width: number, height: number) => this._composer.setSize(width, height);\n this.viewer._rendering = (dt: number) => this.enabled && this._composer.render(dt);\n }\n this.onDestroy = () => {\n this._composer.dispose();\n }\n }\n\n update(dt: number): void {\n if (this._effectDirty) {\n this._effectDirty = false;\n this._effectPass && this.removePass(this._effectPass);\n this._effectPass = this.addPass(new EffectPass(this.viewer.camera, ...this._effects));\n }\n }\n\n getPass<T extends Pass>(constructor: (new (...args) => T) | Function) {\n return this._composer.passes.find(v => v.constructor === constructor) as T;\n }\n\n addPass<T extends Pass>(pass: T) {\n this._composer.addPass(pass, this._composer.passes.length - 1);\n this._checkOutputPass();\n return pass;\n }\n\n removePass(pass: Pass) {\n pass.dispose();\n this._composer.removePass(pass);\n this._checkOutputPass();\n }\n\n activePass(pass: Pass, v: boolean) {\n pass.enabled = v;\n this._checkOutputPass();\n return pass;\n }\n\n addEffect(effect: Effect) {\n this._effects.push(effect);\n this._effectDirty = true;\n return effect;\n }\n\n removeEffect(effect: Effect) {\n effect.dispose();\n this._effects.splice(this._effects.indexOf(effect), 1);\n this._effectDirty = true;\n }\n\n private _checkOutputPass() {\n const count = this._composer.passes.filter(v => v.enabled && v.name !== \"VelocityDepthNormalPass\" && v !== this._outputPass).length;\n this._outputPass.enabled = this._composer.multisampling > 0 && count === 1;\n this._setRenderToScreen();\n }\n\n private _setRenderToScreen() {\n const passes = this._composer.passes;\n for (let k = 0, i = passes.length; i--;) {\n let pass = passes[i];\n if (pass.enabled && pass.name !== \"VelocityDepthNormalPass\" && k === 0) {\n k = i;\n }\n pass.renderToScreen = k === i;\n }\n }\n}","import { Mount } from \"@xviewer.js/core\";\nimport { PostProcessingManager } from \"./PostProcessingManager\";\n\nexport class PostProcessing extends Mount {\n\n get postprocessing() {\n return this.viewer.mount(PostProcessingManager, true);\n }\n}","import { PropertyManager } from \"@xviewer.js/core\";\nimport { ToneMappingEffect, ToneMappingMode } from \"postprocessing\";\nimport { PostProcessing } from \"./PostProcessing\";\n\nexport class ToneMapping extends PostProcessing {\n effect: ToneMappingEffect;\n\n constructor(props: ConstructorParameters<typeof ToneMappingEffect>[0]) {\n super();\n this.onEnable = () => {\n this.effect = new ToneMappingEffect(props);\n this.postprocessing.addEffect(this.effect);\n }\n this.onDisable = () => {\n this.postprocessing.removeEffect(this.effect);\n }\n }\n\n get mode() {\n return this.effect.mode;\n }\n set mode(v: ToneMappingMode) {\n this.effect.mode = v;\n }\n}\n\nPropertyManager._getClassProperties(ToneMapping.name)\n .property(\"enabled\")\n .property(\"mode\", { value: ToneMappingMode })","\nimport { PropertyManager } from \"@xviewer.js/core\";\nimport { DepthOfFieldEffect } from \"postprocessing\";\nimport { Vector3 } from \"three\";\nimport { PostProcessing } from \"./PostProcessing\";\n\nexport class DepthOfField extends PostProcessing {\n effect: DepthOfFieldEffect;\n\n constructor(props?: ConstructorParameters<typeof DepthOfFieldEffect>[1] & { target?: Vector3 }) {\n super();\n this.onEnable = () => {\n this.effect = new DepthOfFieldEffect(this.viewer.camera, props);\n this.effect.target = props && props.target || null;\n this.postprocessing.addEffect(this.effect);\n }\n this.onDisable = () => {\n this.postprocessing.removeEffect(this.effect);\n }\n }\n\n get focusDistance() {\n return this.effect.cocMaterial.focusDistance;\n }\n set focusDistance(v: number) {\n this.effect.cocMaterial.focusDistance = v;\n }\n\n get focalLength() {\n return this.effect.cocMaterial.focalLength;\n }\n\n set focalLength(v: number) {\n this.effect.cocMaterial.focalLength = v;\n }\n\n get bokehScale() {\n return this.effect.bokehScale;\n }\n\n set bokehScale(v: number) {\n this.effect.bokehScale = v;\n }\n}\n\nPropertyManager._getClassProperties(DepthOfField.name)\n .property(\"enabled\")\n .property(\"focusDistance\")\n .property(\"focalLength\")\n .property(\"bokehScale\")","import { BlendFunction, BloomEffect } from \"postprocessing\";\nimport { PropertyManager } from \"@xviewer.js/core\";\nimport { PostProcessing } from \"./PostProcessing\";\n\nexport class Bloom extends PostProcessing {\n effect: BloomEffect;\n\n constructor(props?: ConstructorParameters<typeof BloomEffect>[0]) {\n super();\n this.onEnable = () => {\n this.effect = new BloomEffect({ blendFunction: BlendFunction.ADD, ...props });\n this.postprocessing.addEffect(this.effect);\n }\n this.onDisable = () => {\n this.postprocessing.removeEffect(this.effect);\n }\n }\n\n get intensity() {\n return this.effect.intensity;\n }\n set intensity(v: number) {\n this.effect.intensity = v;\n }\n\n get luminanceThreshold() {\n return this.effect.luminanceMaterial.threshold;\n }\n set luminanceThreshold(v: number) {\n this.effect.luminanceMaterial.threshold = v;\n }\n\n get luminanceSmoothing() {\n return this.effect.luminanceMaterial.smoothing;\n }\n set luminanceSmoothing(v: number) {\n this.effect.luminanceMaterial.smoothing = v;\n }\n\n get blurRadius() {\n return this.effect[\"mipmapBlurPass\"].radius;\n }\n set blurRadius(v: number) {\n this.effect[\"mipmapBlurPass\"].radius = v;\n }\n}\n\nPropertyManager._getClassProperties(Bloom.name)\n .property(\"enabled\")\n .property(\"intensity\", { min: 0, max: 2, step: 0.01 })\n .property(\"luminanceThreshold\", { min: 0, max: 10, step: 0.01 })\n .property(\"luminanceSmoothing\", { min: 0, max: 10, step: 0.01 })\n .property(\"blurRadius\", { min: 0, max: 1, step: 0.01 })","import { PropertyManager } from \"@xviewer.js/core\";\nimport { FXAAEffect } from \"postprocessing\";\nimport { PostProcessing } from \"./PostProcessing\";\n\nexport class FXAA extends PostProcessing {\n effect: FXAAEffect;\n\n constructor() {\n super();\n this.onEnable = () => {\n this.effect = new FXAAEffect();\n this.postprocessing.addEffect(this.effect);\n }\n this.onDisable = () => {\n this.postprocessing.removeEffect(this.effect);\n }\n }\n}\n\nPropertyManager._getClassProperties(FXAA.name)\n .property(\"enabled\")","import { EdgeDetectionMode, PredicationMode, SMAAEffect, SMAAPreset } from \"postprocessing\";\nimport { PropertyManager } from \"@xviewer.js/core\";\nimport { PostProcessing } from \"./PostProcessing\";\n\nexport class SMAA extends PostProcessing {\n effect: SMAAEffect;\n\n constructor(props: ConstructorParameters<typeof SMAAEffect>[0] = {}) {\n super();\n this.onEnable = () => {\n this.effect = new SMAAEffect(props);\n this.postprocessing.addEffect(this.effect);\n }\n this.onDisable = () => {\n this.postprocessing.removeEffect(this.effect);\n }\n }\n private _preset: SMAAPreset = SMAAPreset.MEDIUM;\n\n get preset() {\n return this._preset;\n }\n set preset(v: SMAAPreset) {\n if (this._preset !== v) {\n this._preset = v;\n this.effect.applyPreset(v);\n }\n }\n\n get edgeDetectionMode() {\n return this.effect.edgeDetectionMaterial.edgeDetectionMode;\n }\n set edgeDetectionMode(v: EdgeDetectionMode) {\n this.effect.edgeDetectionMaterial.edgeDetectionMode = v;\n }\n\n get predicationMode() {\n return this.effect.edgeDetectionMaterial.predicationMode;\n }\n set predicationMode(v: PredicationMode) {\n this.effect.edgeDetectionMaterial.predicationMode = v;\n }\n}\n\nPropertyManager._getClassProperties(SMAA.name)\n .property(\"enabled\")\n .property(\"preset\", { value: SMAAPreset })\n .property(\"edgeDetectionMode\", { value: EdgeDetectionMode })\n .property(\"predicationMode\", { value: PredicationMode })\n","import { PropertyManager } from \"@xviewer.js/core\";\nimport { PostProcessing } from \"./PostProcessing\";\n\nexport class MSAA extends PostProcessing {\n\n constructor() {\n super();\n this.onEnable = () => {\n const { renderer } = this.viewer;\n const maxSamples = Math.min(4, renderer.capabilities.maxSamples);\n this.postprocessing.multisampling = maxSamples;\n }\n this.onDisable = () => {\n this.postprocessing.multisampling = 0;\n }\n }\n}\n\nPropertyManager._getClassProperties(MSAA.name)\n .property(\"enabled\")"],"names":["PostProcessingManager","Mount","multisampling","_composer","v","update","dt","_effectDirty","_effectPass","removePass","addPass","EffectPass","viewer","camera","_effects","getPass","constructor","passes","find","pass","length","_checkOutputPass","dispose","activePass","enabled","addEffect","effect","push","removeEffect","splice","indexOf","count","filter","name","_outputPass","_setRenderToScreen","k","i","renderToScreen","props","onLoad","renderer","scene","_renderPass","RenderPass","EffectComposer","Object","assign","frameBufferType","HalfFloatType","_resizing","width","height","setSize","_rendering","render","onDestroy","PostProcessing","postprocessing","mount","ToneMapping","mode","onEnable","ToneMappingEffect","onDisable","PropertyManager","_getClassProperties","property","value","ToneMappingMode","DepthOfField","focusDistance","cocMaterial","focalLength","bokehScale","DepthOfFieldEffect","target","Bloom","intensity","luminanceThreshold","luminanceMaterial","threshold","luminanceSmoothing","smoothing","blurRadius","radius","BloomEffect","blendFunction","BlendFunction","ADD","min","max","step","FXAA","FXAAEffect","SMAA","preset","_preset","applyPreset","edgeDetectionMode","edgeDetectionMaterial","predicationMode","SMAAPreset","MEDIUM","SMAAEffect","EdgeDetectionMode","PredicationMode","MSAA","maxSamples","Math","capabilities"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.cjs","sources":["../src/PostProcessing.ts"],"sourcesContent":["import {\n BlendFunction,\n BloomEffect,\n DepthOfFieldEffect,\n Effect,\n EffectComposer,\n EffectPass,\n FXAAEffect,\n KernelSize,\n MaskFunction,\n Pass,\n RenderPass,\n SMAAEffect,\n ToneMappingEffect,\n ToneMappingMode\n} from \"postprocessing\";\n\nimport { Component, PropertyManager, Renderer } from \"@xviewer.js/core\";\nimport { HalfFloatType, UnsignedByteType, FloatType } from \"three\";\n\nconst { _getClassProperties } = PropertyManager;\n\ntype PassOptions = { effect?: Effect | Effect[], encodeOutput?: boolean }\ntype PostProcessingProps = ConstructorParameters<typeof EffectComposer>[1] & {\n pass?: PassOptions | PassOptions[] | Pass | Pass[];\n msaa?: boolean | number;\n frameBufferType?: typeof UnsignedByteType | typeof HalfFloatType | typeof FloatType;\n}\n\nexport class PostProcessing extends Component {\n order: number = -1;\n\n private _effects: Effect[] = [];\n private _renderer: Renderer;\n private _composer: EffectComposer;\n\n get effects() {\n return this._effects;\n }\n get composer() {\n return this._composer;\n }\n\n constructor({\n pass = [],\n msaa = false,\n frameBufferType = HalfFloatType,\n ...props\n }: PostProcessingProps = {}) {\n super();\n this.onLoad = () => {\n const { renderer, scene, camera } = this.context;\n const multisampling = msaa ? typeof msaa === \"number\" ? msaa : Math.min(4, renderer.capabilities.maxSamples) : 0;\n\n this._renderer = this.viewer.getComponent(Renderer);\n this._composer = new EffectComposer(renderer, Object.assign({ frameBufferType, multisampling }, props));\n this._composer.addPass(new RenderPass(scene, camera));\n \n const passes = Array.isArray(pass) ? pass : [pass];\n passes.forEach(pass => {\n if (pass instanceof Pass) {\n this._composer.addPass(pass);\n }\n else {\n const { effect = [], encodeOutput = true } = pass\n const effects = Array.isArray(effect) ? effect : [effect];\n this._effects = this._effects.concat(effects);\n const effectPass = new EffectPass(camera, ...effects);\n effectPass.encodeOutput = encodeOutput;\n this._composer.addPass(effectPass);\n }\n });\n this._effects.forEach(target => {\n Object.defineProperty(target, \"blendOpacity\", {\n get: () => target.blendMode.getOpacity(),\n set: (v) => target.blendMode.setOpacity(v)\n })\n Object.defineProperty(target, \"blendFunction\", {\n get: () => target.blendMode.blendFunction,\n set: (v) => target.blendMode.blendFunction = v,\n })\n })\n }\n\n this.onDestroy = () => this._composer.dispose();\n\n this.render = (dt) => this._composer.render(dt);\n this.resize = (width, height) => this._composer.setSize(width, height);\n\n this.onEnable = () => this._renderer.enabled = false;\n this.onDisable = () => this._renderer.enabled = true;\n }\n}\n\n_getClassProperties(PostProcessing.name, {\n effects: { flat: true }\n})\n\n_getClassProperties(Effect.name, {\n blendOpacity: { min: 0, max: 1 },\n blendFunction: { value: BlendFunction }\n})\n\n_getClassProperties(BloomEffect.name, {\n intensity: { min: 0, max: 10 },\n dithering: {},\n kernelSize: { value: KernelSize }\n})\n\n_getClassProperties(ToneMappingEffect.name, {\n mode: { value: ToneMappingMode }\n})\n\n_getClassProperties(FXAAEffect.name, {\n minEdgeThreshold: { min: 0, max: 1 },\n maxEdgeThreshold: { min: 0, max: 1 },\n subpixelQuality: { min: 0, max: 1 },\n samples: {}\n})\n\n_getClassProperties(SMAAEffect.name, {\n edgesTexture: {},\n weightsTexture: {},\n})\n\n_getClassProperties(DepthOfFieldEffect.name, {\n bokehScale: {},\n maskFunction: { value: MaskFunction },\n target: {},\n})"],"names":["_getClassProperties","PropertyManager","PostProcessing","Component","effects","_effects","composer","_composer","pass","msaa","frameBufferType","HalfFloatType","props","order","onLoad","renderer","scene","camera","context","multisampling","Math","min","capabilities","maxSamples","_renderer","viewer","getComponent","Renderer","EffectComposer","Object","assign","addPass","RenderPass","passes","Array","isArray","forEach","Pass","effect","encodeOutput","concat","effectPass","EffectPass","target","defineProperty","get","blendMode","getOpacity","set","v","setOpacity","blendFunction","onDestroy","dispose","render","dt","resize","width","height","setSize","onEnable","enabled","onDisable","name","flat","Effect","blendOpacity","max","value","BlendFunction","BloomEffect","intensity","dithering","kernelSize","KernelSize","ToneMappingEffect","mode","ToneMappingMode","FXAAEffect","minEdgeThreshold","maxEdgeThreshold","subpixelQuality","samples","SMAAEffect","edgesTexture","weightsTexture","DepthOfFieldEffect","bokehScale","maskFunction","MaskFunction"],"mappings":"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"}
|
package/dist/module.js
CHANGED
|
@@ -1,275 +1,116 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { Effect, BlendFunction, BloomEffect, KernelSize, ToneMappingEffect, ToneMappingMode, FXAAEffect, SMAAEffect, DepthOfFieldEffect, MaskFunction, EffectComposer, RenderPass, Pass, EffectPass } from 'postprocessing';
|
|
2
|
+
import { PropertyManager, Component, Renderer } from '@xviewer.js/core';
|
|
3
3
|
import { HalfFloatType } from 'three';
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
const { _getClassProperties } = PropertyManager;
|
|
6
|
+
class PostProcessing extends Component {
|
|
7
|
+
get effects() {
|
|
8
|
+
return this._effects;
|
|
8
9
|
}
|
|
9
|
-
|
|
10
|
-
this._composer
|
|
10
|
+
get composer() {
|
|
11
|
+
return this._composer;
|
|
11
12
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
this._effectDirty = false;
|
|
15
|
-
this._effectPass && this.removePass(this._effectPass);
|
|
16
|
-
this._effectPass = this.addPass(new EffectPass(this.viewer.camera, ...this._effects));
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
getPass(constructor) {
|
|
20
|
-
return this._composer.passes.find((v)=>v.constructor === constructor);
|
|
21
|
-
}
|
|
22
|
-
addPass(pass) {
|
|
23
|
-
this._composer.addPass(pass, this._composer.passes.length - 1);
|
|
24
|
-
this._checkOutputPass();
|
|
25
|
-
return pass;
|
|
26
|
-
}
|
|
27
|
-
removePass(pass) {
|
|
28
|
-
pass.dispose();
|
|
29
|
-
this._composer.removePass(pass);
|
|
30
|
-
this._checkOutputPass();
|
|
31
|
-
}
|
|
32
|
-
activePass(pass, v) {
|
|
33
|
-
pass.enabled = v;
|
|
34
|
-
this._checkOutputPass();
|
|
35
|
-
return pass;
|
|
36
|
-
}
|
|
37
|
-
addEffect(effect) {
|
|
38
|
-
this._effects.push(effect);
|
|
39
|
-
this._effectDirty = true;
|
|
40
|
-
return effect;
|
|
41
|
-
}
|
|
42
|
-
removeEffect(effect) {
|
|
43
|
-
effect.dispose();
|
|
44
|
-
this._effects.splice(this._effects.indexOf(effect), 1);
|
|
45
|
-
this._effectDirty = true;
|
|
46
|
-
}
|
|
47
|
-
_checkOutputPass() {
|
|
48
|
-
const count = this._composer.passes.filter((v)=>v.enabled && v.name !== "VelocityDepthNormalPass" && v !== this._outputPass).length;
|
|
49
|
-
this._outputPass.enabled = this._composer.multisampling > 0 && count === 1;
|
|
50
|
-
this._setRenderToScreen();
|
|
51
|
-
}
|
|
52
|
-
_setRenderToScreen() {
|
|
53
|
-
const passes = this._composer.passes;
|
|
54
|
-
for(let k = 0, i = passes.length; i--;){
|
|
55
|
-
let pass = passes[i];
|
|
56
|
-
if (pass.enabled && pass.name !== "VelocityDepthNormalPass" && k === 0) {
|
|
57
|
-
k = i;
|
|
58
|
-
}
|
|
59
|
-
pass.renderToScreen = k === i;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
constructor(props){
|
|
63
|
-
super();
|
|
64
|
-
this._effects = [];
|
|
65
|
-
this._effectPass = null;
|
|
66
|
-
this._effectDirty = true;
|
|
13
|
+
constructor({ pass = [], msaa = false, frameBufferType = HalfFloatType, ...props } = {}){
|
|
14
|
+
super(), this.order = -1, this._effects = [];
|
|
67
15
|
this.onLoad = ()=>{
|
|
68
|
-
const { renderer, scene, camera } = this.
|
|
69
|
-
|
|
70
|
-
this.
|
|
16
|
+
const { renderer, scene, camera } = this.context;
|
|
17
|
+
const multisampling = msaa ? typeof msaa === "number" ? msaa : Math.min(4, renderer.capabilities.maxSamples) : 0;
|
|
18
|
+
this._renderer = this.viewer.getComponent(Renderer);
|
|
71
19
|
this._composer = new EffectComposer(renderer, Object.assign({
|
|
72
|
-
frameBufferType
|
|
20
|
+
frameBufferType,
|
|
21
|
+
multisampling
|
|
73
22
|
}, props));
|
|
74
|
-
this._composer.addPass(
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
23
|
+
this._composer.addPass(new RenderPass(scene, camera));
|
|
24
|
+
const passes = Array.isArray(pass) ? pass : [
|
|
25
|
+
pass
|
|
26
|
+
];
|
|
27
|
+
passes.forEach((pass)=>{
|
|
28
|
+
if (pass instanceof Pass) {
|
|
29
|
+
this._composer.addPass(pass);
|
|
30
|
+
} else {
|
|
31
|
+
const { effect = [], encodeOutput = true } = pass;
|
|
32
|
+
const effects = Array.isArray(effect) ? effect : [
|
|
33
|
+
effect
|
|
34
|
+
];
|
|
35
|
+
this._effects = this._effects.concat(effects);
|
|
36
|
+
const effectPass = new EffectPass(camera, ...effects);
|
|
37
|
+
effectPass.encodeOutput = encodeOutput;
|
|
38
|
+
this._composer.addPass(effectPass);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
this._effects.forEach((target)=>{
|
|
42
|
+
Object.defineProperty(target, "blendOpacity", {
|
|
43
|
+
get: ()=>target.blendMode.getOpacity(),
|
|
44
|
+
set: (v)=>target.blendMode.setOpacity(v)
|
|
45
|
+
});
|
|
46
|
+
Object.defineProperty(target, "blendFunction", {
|
|
47
|
+
get: ()=>target.blendMode.blendFunction,
|
|
48
|
+
set: (v)=>target.blendMode.blendFunction = v
|
|
49
|
+
});
|
|
50
|
+
});
|
|
81
51
|
};
|
|
52
|
+
this.onDestroy = ()=>this._composer.dispose();
|
|
53
|
+
this.render = (dt)=>this._composer.render(dt);
|
|
54
|
+
this.resize = (width, height)=>this._composer.setSize(width, height);
|
|
55
|
+
this.onEnable = ()=>this._renderer.enabled = false;
|
|
56
|
+
this.onDisable = ()=>this._renderer.enabled = true;
|
|
82
57
|
}
|
|
83
58
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
return this.viewer.mount(PostProcessingManager, true);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
class ToneMapping extends PostProcessing {
|
|
92
|
-
get mode() {
|
|
93
|
-
return this.effect.mode;
|
|
94
|
-
}
|
|
95
|
-
set mode(v) {
|
|
96
|
-
this.effect.mode = v;
|
|
59
|
+
_getClassProperties(PostProcessing.name, {
|
|
60
|
+
effects: {
|
|
61
|
+
flat: true
|
|
97
62
|
}
|
|
98
|
-
constructor(props){
|
|
99
|
-
super();
|
|
100
|
-
this.onEnable = ()=>{
|
|
101
|
-
this.effect = new ToneMappingEffect(props);
|
|
102
|
-
this.postprocessing.addEffect(this.effect);
|
|
103
|
-
};
|
|
104
|
-
this.onDisable = ()=>{
|
|
105
|
-
this.postprocessing.removeEffect(this.effect);
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
PropertyManager._getClassProperties(ToneMapping.name).property("enabled").property("mode", {
|
|
110
|
-
value: ToneMappingMode
|
|
111
63
|
});
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
get focalLength() {
|
|
121
|
-
return this.effect.cocMaterial.focalLength;
|
|
122
|
-
}
|
|
123
|
-
set focalLength(v) {
|
|
124
|
-
this.effect.cocMaterial.focalLength = v;
|
|
125
|
-
}
|
|
126
|
-
get bokehScale() {
|
|
127
|
-
return this.effect.bokehScale;
|
|
128
|
-
}
|
|
129
|
-
set bokehScale(v) {
|
|
130
|
-
this.effect.bokehScale = v;
|
|
131
|
-
}
|
|
132
|
-
constructor(props){
|
|
133
|
-
super();
|
|
134
|
-
this.onEnable = ()=>{
|
|
135
|
-
this.effect = new DepthOfFieldEffect(this.viewer.camera, props);
|
|
136
|
-
this.effect.target = props && props.target || null;
|
|
137
|
-
this.postprocessing.addEffect(this.effect);
|
|
138
|
-
};
|
|
139
|
-
this.onDisable = ()=>{
|
|
140
|
-
this.postprocessing.removeEffect(this.effect);
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
PropertyManager._getClassProperties(DepthOfField.name).property("enabled").property("focusDistance").property("focalLength").property("bokehScale");
|
|
145
|
-
|
|
146
|
-
class Bloom extends PostProcessing {
|
|
147
|
-
get intensity() {
|
|
148
|
-
return this.effect.intensity;
|
|
149
|
-
}
|
|
150
|
-
set intensity(v) {
|
|
151
|
-
this.effect.intensity = v;
|
|
64
|
+
_getClassProperties(Effect.name, {
|
|
65
|
+
blendOpacity: {
|
|
66
|
+
min: 0,
|
|
67
|
+
max: 1
|
|
68
|
+
},
|
|
69
|
+
blendFunction: {
|
|
70
|
+
value: BlendFunction
|
|
152
71
|
}
|
|
153
|
-
get luminanceThreshold() {
|
|
154
|
-
return this.effect.luminanceMaterial.threshold;
|
|
155
|
-
}
|
|
156
|
-
set luminanceThreshold(v) {
|
|
157
|
-
this.effect.luminanceMaterial.threshold = v;
|
|
158
|
-
}
|
|
159
|
-
get luminanceSmoothing() {
|
|
160
|
-
return this.effect.luminanceMaterial.smoothing;
|
|
161
|
-
}
|
|
162
|
-
set luminanceSmoothing(v) {
|
|
163
|
-
this.effect.luminanceMaterial.smoothing = v;
|
|
164
|
-
}
|
|
165
|
-
get blurRadius() {
|
|
166
|
-
return this.effect["mipmapBlurPass"].radius;
|
|
167
|
-
}
|
|
168
|
-
set blurRadius(v) {
|
|
169
|
-
this.effect["mipmapBlurPass"].radius = v;
|
|
170
|
-
}
|
|
171
|
-
constructor(props){
|
|
172
|
-
super();
|
|
173
|
-
this.onEnable = ()=>{
|
|
174
|
-
this.effect = new BloomEffect({
|
|
175
|
-
blendFunction: BlendFunction.ADD,
|
|
176
|
-
...props
|
|
177
|
-
});
|
|
178
|
-
this.postprocessing.addEffect(this.effect);
|
|
179
|
-
};
|
|
180
|
-
this.onDisable = ()=>{
|
|
181
|
-
this.postprocessing.removeEffect(this.effect);
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
PropertyManager._getClassProperties(Bloom.name).property("enabled").property("intensity", {
|
|
186
|
-
min: 0,
|
|
187
|
-
max: 2,
|
|
188
|
-
step: 0.01
|
|
189
|
-
}).property("luminanceThreshold", {
|
|
190
|
-
min: 0,
|
|
191
|
-
max: 10,
|
|
192
|
-
step: 0.01
|
|
193
|
-
}).property("luminanceSmoothing", {
|
|
194
|
-
min: 0,
|
|
195
|
-
max: 10,
|
|
196
|
-
step: 0.01
|
|
197
|
-
}).property("blurRadius", {
|
|
198
|
-
min: 0,
|
|
199
|
-
max: 1,
|
|
200
|
-
step: 0.01
|
|
201
72
|
});
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
this.onDisable = ()=>{
|
|
211
|
-
this.postprocessing.removeEffect(this.effect);
|
|
212
|
-
};
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
PropertyManager._getClassProperties(FXAA.name).property("enabled");
|
|
216
|
-
|
|
217
|
-
class SMAA extends PostProcessing {
|
|
218
|
-
get preset() {
|
|
219
|
-
return this._preset;
|
|
73
|
+
_getClassProperties(BloomEffect.name, {
|
|
74
|
+
intensity: {
|
|
75
|
+
min: 0,
|
|
76
|
+
max: 10
|
|
77
|
+
},
|
|
78
|
+
dithering: {},
|
|
79
|
+
kernelSize: {
|
|
80
|
+
value: KernelSize
|
|
220
81
|
}
|
|
221
|
-
set preset(v) {
|
|
222
|
-
if (this._preset !== v) {
|
|
223
|
-
this._preset = v;
|
|
224
|
-
this.effect.applyPreset(v);
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
get edgeDetectionMode() {
|
|
228
|
-
return this.effect.edgeDetectionMaterial.edgeDetectionMode;
|
|
229
|
-
}
|
|
230
|
-
set edgeDetectionMode(v) {
|
|
231
|
-
this.effect.edgeDetectionMaterial.edgeDetectionMode = v;
|
|
232
|
-
}
|
|
233
|
-
get predicationMode() {
|
|
234
|
-
return this.effect.edgeDetectionMaterial.predicationMode;
|
|
235
|
-
}
|
|
236
|
-
set predicationMode(v) {
|
|
237
|
-
this.effect.edgeDetectionMaterial.predicationMode = v;
|
|
238
|
-
}
|
|
239
|
-
constructor(props = {}){
|
|
240
|
-
super();
|
|
241
|
-
this._preset = SMAAPreset.MEDIUM;
|
|
242
|
-
this.onEnable = ()=>{
|
|
243
|
-
this.effect = new SMAAEffect(props);
|
|
244
|
-
this.postprocessing.addEffect(this.effect);
|
|
245
|
-
};
|
|
246
|
-
this.onDisable = ()=>{
|
|
247
|
-
this.postprocessing.removeEffect(this.effect);
|
|
248
|
-
};
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
PropertyManager._getClassProperties(SMAA.name).property("enabled").property("preset", {
|
|
252
|
-
value: SMAAPreset
|
|
253
|
-
}).property("edgeDetectionMode", {
|
|
254
|
-
value: EdgeDetectionMode
|
|
255
|
-
}).property("predicationMode", {
|
|
256
|
-
value: PredicationMode
|
|
257
82
|
});
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
super();
|
|
262
|
-
this.onEnable = ()=>{
|
|
263
|
-
const { renderer } = this.viewer;
|
|
264
|
-
const maxSamples = Math.min(4, renderer.capabilities.maxSamples);
|
|
265
|
-
this.postprocessing.multisampling = maxSamples;
|
|
266
|
-
};
|
|
267
|
-
this.onDisable = ()=>{
|
|
268
|
-
this.postprocessing.multisampling = 0;
|
|
269
|
-
};
|
|
83
|
+
_getClassProperties(ToneMappingEffect.name, {
|
|
84
|
+
mode: {
|
|
85
|
+
value: ToneMappingMode
|
|
270
86
|
}
|
|
271
|
-
}
|
|
272
|
-
|
|
87
|
+
});
|
|
88
|
+
_getClassProperties(FXAAEffect.name, {
|
|
89
|
+
minEdgeThreshold: {
|
|
90
|
+
min: 0,
|
|
91
|
+
max: 1
|
|
92
|
+
},
|
|
93
|
+
maxEdgeThreshold: {
|
|
94
|
+
min: 0,
|
|
95
|
+
max: 1
|
|
96
|
+
},
|
|
97
|
+
subpixelQuality: {
|
|
98
|
+
min: 0,
|
|
99
|
+
max: 1
|
|
100
|
+
},
|
|
101
|
+
samples: {}
|
|
102
|
+
});
|
|
103
|
+
_getClassProperties(SMAAEffect.name, {
|
|
104
|
+
edgesTexture: {},
|
|
105
|
+
weightsTexture: {}
|
|
106
|
+
});
|
|
107
|
+
_getClassProperties(DepthOfFieldEffect.name, {
|
|
108
|
+
bokehScale: {},
|
|
109
|
+
maskFunction: {
|
|
110
|
+
value: MaskFunction
|
|
111
|
+
},
|
|
112
|
+
target: {}
|
|
113
|
+
});
|
|
273
114
|
|
|
274
|
-
export {
|
|
115
|
+
export { PostProcessing };
|
|
275
116
|
//# sourceMappingURL=module.js.map
|
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sources":["../src/PostProcessingManager.ts","../src/PostProcessing.ts","../src/ToneMapping.ts","../src/DepthOfField.ts","../src/Bloom.ts","../src/FXAA.ts","../src/SMAA.ts","../src/MSAA.ts"],"sourcesContent":["import { Mount, PropertyManager } from \"@xviewer.js/core\";\nimport { Effect, EffectComposer, EffectPass, Pass, RenderPass } from \"postprocessing\";\nimport { HalfFloatType } from \"three\";\n\nexport class PostProcessingManager extends Mount {\n private _renderPass: RenderPass;\n private _outputPass: EffectPass;\n private _composer: EffectComposer;\n\n private _effects: Effect[] = [];\n private _effectPass: EffectPass = null;\n private _effectDirty: boolean = true;\n\n get multisampling() {\n return this._composer.multisampling;\n }\n set multisampling(v: number) {\n this._composer.multisampling = v;\n }\n\n constructor(props: ConstructorParameters<typeof EffectComposer>[1]) {\n super();\n this.onLoad = () => {\n const { renderer, scene, camera } = this.viewer;\n\n this._renderPass = new RenderPass(scene, camera);\n this._outputPass = new EffectPass(camera);\n\n this._composer = new EffectComposer(renderer, Object.assign({ frameBufferType: HalfFloatType }, props));\n this._composer.addPass(this._renderPass);\n this._composer.addPass(this._outputPass);\n\n this.viewer._resizing = (width: number, height: number) => this._composer.setSize(width, height);\n this.viewer._rendering = (dt: number) => this.enabled && this._composer.render(dt);\n }\n this.onDestroy = () => {\n this._composer.dispose();\n }\n }\n\n update(dt: number): void {\n if (this._effectDirty) {\n this._effectDirty = false;\n this._effectPass && this.removePass(this._effectPass);\n this._effectPass = this.addPass(new EffectPass(this.viewer.camera, ...this._effects));\n }\n }\n\n getPass<T extends Pass>(constructor: (new (...args) => T) | Function) {\n return this._composer.passes.find(v => v.constructor === constructor) as T;\n }\n\n addPass<T extends Pass>(pass: T) {\n this._composer.addPass(pass, this._composer.passes.length - 1);\n this._checkOutputPass();\n return pass;\n }\n\n removePass(pass: Pass) {\n pass.dispose();\n this._composer.removePass(pass);\n this._checkOutputPass();\n }\n\n activePass(pass: Pass, v: boolean) {\n pass.enabled = v;\n this._checkOutputPass();\n return pass;\n }\n\n addEffect(effect: Effect) {\n this._effects.push(effect);\n this._effectDirty = true;\n return effect;\n }\n\n removeEffect(effect: Effect) {\n effect.dispose();\n this._effects.splice(this._effects.indexOf(effect), 1);\n this._effectDirty = true;\n }\n\n private _checkOutputPass() {\n const count = this._composer.passes.filter(v => v.enabled && v.name !== \"VelocityDepthNormalPass\" && v !== this._outputPass).length;\n this._outputPass.enabled = this._composer.multisampling > 0 && count === 1;\n this._setRenderToScreen();\n }\n\n private _setRenderToScreen() {\n const passes = this._composer.passes;\n for (let k = 0, i = passes.length; i--;) {\n let pass = passes[i];\n if (pass.enabled && pass.name !== \"VelocityDepthNormalPass\" && k === 0) {\n k = i;\n }\n pass.renderToScreen = k === i;\n }\n }\n}","import { Mount } from \"@xviewer.js/core\";\nimport { PostProcessingManager } from \"./PostProcessingManager\";\n\nexport class PostProcessing extends Mount {\n\n get postprocessing() {\n return this.viewer.mount(PostProcessingManager, true);\n }\n}","import { PropertyManager } from \"@xviewer.js/core\";\nimport { ToneMappingEffect, ToneMappingMode } from \"postprocessing\";\nimport { PostProcessing } from \"./PostProcessing\";\n\nexport class ToneMapping extends PostProcessing {\n effect: ToneMappingEffect;\n\n constructor(props: ConstructorParameters<typeof ToneMappingEffect>[0]) {\n super();\n this.onEnable = () => {\n this.effect = new ToneMappingEffect(props);\n this.postprocessing.addEffect(this.effect);\n }\n this.onDisable = () => {\n this.postprocessing.removeEffect(this.effect);\n }\n }\n\n get mode() {\n return this.effect.mode;\n }\n set mode(v: ToneMappingMode) {\n this.effect.mode = v;\n }\n}\n\nPropertyManager._getClassProperties(ToneMapping.name)\n .property(\"enabled\")\n .property(\"mode\", { value: ToneMappingMode })","\nimport { PropertyManager } from \"@xviewer.js/core\";\nimport { DepthOfFieldEffect } from \"postprocessing\";\nimport { Vector3 } from \"three\";\nimport { PostProcessing } from \"./PostProcessing\";\n\nexport class DepthOfField extends PostProcessing {\n effect: DepthOfFieldEffect;\n\n constructor(props?: ConstructorParameters<typeof DepthOfFieldEffect>[1] & { target?: Vector3 }) {\n super();\n this.onEnable = () => {\n this.effect = new DepthOfFieldEffect(this.viewer.camera, props);\n this.effect.target = props && props.target || null;\n this.postprocessing.addEffect(this.effect);\n }\n this.onDisable = () => {\n this.postprocessing.removeEffect(this.effect);\n }\n }\n\n get focusDistance() {\n return this.effect.cocMaterial.focusDistance;\n }\n set focusDistance(v: number) {\n this.effect.cocMaterial.focusDistance = v;\n }\n\n get focalLength() {\n return this.effect.cocMaterial.focalLength;\n }\n\n set focalLength(v: number) {\n this.effect.cocMaterial.focalLength = v;\n }\n\n get bokehScale() {\n return this.effect.bokehScale;\n }\n\n set bokehScale(v: number) {\n this.effect.bokehScale = v;\n }\n}\n\nPropertyManager._getClassProperties(DepthOfField.name)\n .property(\"enabled\")\n .property(\"focusDistance\")\n .property(\"focalLength\")\n .property(\"bokehScale\")","import { BlendFunction, BloomEffect } from \"postprocessing\";\nimport { PropertyManager } from \"@xviewer.js/core\";\nimport { PostProcessing } from \"./PostProcessing\";\n\nexport class Bloom extends PostProcessing {\n effect: BloomEffect;\n\n constructor(props?: ConstructorParameters<typeof BloomEffect>[0]) {\n super();\n this.onEnable = () => {\n this.effect = new BloomEffect({ blendFunction: BlendFunction.ADD, ...props });\n this.postprocessing.addEffect(this.effect);\n }\n this.onDisable = () => {\n this.postprocessing.removeEffect(this.effect);\n }\n }\n\n get intensity() {\n return this.effect.intensity;\n }\n set intensity(v: number) {\n this.effect.intensity = v;\n }\n\n get luminanceThreshold() {\n return this.effect.luminanceMaterial.threshold;\n }\n set luminanceThreshold(v: number) {\n this.effect.luminanceMaterial.threshold = v;\n }\n\n get luminanceSmoothing() {\n return this.effect.luminanceMaterial.smoothing;\n }\n set luminanceSmoothing(v: number) {\n this.effect.luminanceMaterial.smoothing = v;\n }\n\n get blurRadius() {\n return this.effect[\"mipmapBlurPass\"].radius;\n }\n set blurRadius(v: number) {\n this.effect[\"mipmapBlurPass\"].radius = v;\n }\n}\n\nPropertyManager._getClassProperties(Bloom.name)\n .property(\"enabled\")\n .property(\"intensity\", { min: 0, max: 2, step: 0.01 })\n .property(\"luminanceThreshold\", { min: 0, max: 10, step: 0.01 })\n .property(\"luminanceSmoothing\", { min: 0, max: 10, step: 0.01 })\n .property(\"blurRadius\", { min: 0, max: 1, step: 0.01 })","import { PropertyManager } from \"@xviewer.js/core\";\nimport { FXAAEffect } from \"postprocessing\";\nimport { PostProcessing } from \"./PostProcessing\";\n\nexport class FXAA extends PostProcessing {\n effect: FXAAEffect;\n\n constructor() {\n super();\n this.onEnable = () => {\n this.effect = new FXAAEffect();\n this.postprocessing.addEffect(this.effect);\n }\n this.onDisable = () => {\n this.postprocessing.removeEffect(this.effect);\n }\n }\n}\n\nPropertyManager._getClassProperties(FXAA.name)\n .property(\"enabled\")","import { EdgeDetectionMode, PredicationMode, SMAAEffect, SMAAPreset } from \"postprocessing\";\nimport { PropertyManager } from \"@xviewer.js/core\";\nimport { PostProcessing } from \"./PostProcessing\";\n\nexport class SMAA extends PostProcessing {\n effect: SMAAEffect;\n\n constructor(props: ConstructorParameters<typeof SMAAEffect>[0] = {}) {\n super();\n this.onEnable = () => {\n this.effect = new SMAAEffect(props);\n this.postprocessing.addEffect(this.effect);\n }\n this.onDisable = () => {\n this.postprocessing.removeEffect(this.effect);\n }\n }\n private _preset: SMAAPreset = SMAAPreset.MEDIUM;\n\n get preset() {\n return this._preset;\n }\n set preset(v: SMAAPreset) {\n if (this._preset !== v) {\n this._preset = v;\n this.effect.applyPreset(v);\n }\n }\n\n get edgeDetectionMode() {\n return this.effect.edgeDetectionMaterial.edgeDetectionMode;\n }\n set edgeDetectionMode(v: EdgeDetectionMode) {\n this.effect.edgeDetectionMaterial.edgeDetectionMode = v;\n }\n\n get predicationMode() {\n return this.effect.edgeDetectionMaterial.predicationMode;\n }\n set predicationMode(v: PredicationMode) {\n this.effect.edgeDetectionMaterial.predicationMode = v;\n }\n}\n\nPropertyManager._getClassProperties(SMAA.name)\n .property(\"enabled\")\n .property(\"preset\", { value: SMAAPreset })\n .property(\"edgeDetectionMode\", { value: EdgeDetectionMode })\n .property(\"predicationMode\", { value: PredicationMode })\n","import { PropertyManager } from \"@xviewer.js/core\";\nimport { PostProcessing } from \"./PostProcessing\";\n\nexport class MSAA extends PostProcessing {\n\n constructor() {\n super();\n this.onEnable = () => {\n const { renderer } = this.viewer;\n const maxSamples = Math.min(4, renderer.capabilities.maxSamples);\n this.postprocessing.multisampling = maxSamples;\n }\n this.onDisable = () => {\n this.postprocessing.multisampling = 0;\n }\n }\n}\n\nPropertyManager._getClassProperties(MSAA.name)\n .property(\"enabled\")"],"names":["PostProcessingManager","Mount","multisampling","_composer","v","update","dt","_effectDirty","_effectPass","removePass","addPass","EffectPass","viewer","camera","_effects","getPass","constructor","passes","find","pass","length","_checkOutputPass","dispose","activePass","enabled","addEffect","effect","push","removeEffect","splice","indexOf","count","filter","name","_outputPass","_setRenderToScreen","k","i","renderToScreen","props","onLoad","renderer","scene","_renderPass","RenderPass","EffectComposer","Object","assign","frameBufferType","HalfFloatType","_resizing","width","height","setSize","_rendering","render","onDestroy","PostProcessing","postprocessing","mount","ToneMapping","mode","onEnable","ToneMappingEffect","onDisable","PropertyManager","_getClassProperties","property","value","ToneMappingMode","DepthOfField","focusDistance","cocMaterial","focalLength","bokehScale","DepthOfFieldEffect","target","Bloom","intensity","luminanceThreshold","luminanceMaterial","threshold","luminanceSmoothing","smoothing","blurRadius","radius","BloomEffect","blendFunction","BlendFunction","ADD","min","max","step","FXAA","FXAAEffect","SMAA","preset","_preset","applyPreset","edgeDetectionMode","edgeDetectionMaterial","predicationMode","SMAAPreset","MEDIUM","SMAAEffect","EdgeDetectionMode","PredicationMode","MSAA","maxSamples","Math","capabilities"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"module.js","sources":["../src/PostProcessing.ts"],"sourcesContent":["import {\n BlendFunction,\n BloomEffect,\n DepthOfFieldEffect,\n Effect,\n EffectComposer,\n EffectPass,\n FXAAEffect,\n KernelSize,\n MaskFunction,\n Pass,\n RenderPass,\n SMAAEffect,\n ToneMappingEffect,\n ToneMappingMode\n} from \"postprocessing\";\n\nimport { Component, PropertyManager, Renderer } from \"@xviewer.js/core\";\nimport { HalfFloatType, UnsignedByteType, FloatType } from \"three\";\n\nconst { _getClassProperties } = PropertyManager;\n\ntype PassOptions = { effect?: Effect | Effect[], encodeOutput?: boolean }\ntype PostProcessingProps = ConstructorParameters<typeof EffectComposer>[1] & {\n pass?: PassOptions | PassOptions[] | Pass | Pass[];\n msaa?: boolean | number;\n frameBufferType?: typeof UnsignedByteType | typeof HalfFloatType | typeof FloatType;\n}\n\nexport class PostProcessing extends Component {\n order: number = -1;\n\n private _effects: Effect[] = [];\n private _renderer: Renderer;\n private _composer: EffectComposer;\n\n get effects() {\n return this._effects;\n }\n get composer() {\n return this._composer;\n }\n\n constructor({\n pass = [],\n msaa = false,\n frameBufferType = HalfFloatType,\n ...props\n }: PostProcessingProps = {}) {\n super();\n this.onLoad = () => {\n const { renderer, scene, camera } = this.context;\n const multisampling = msaa ? typeof msaa === \"number\" ? msaa : Math.min(4, renderer.capabilities.maxSamples) : 0;\n\n this._renderer = this.viewer.getComponent(Renderer);\n this._composer = new EffectComposer(renderer, Object.assign({ frameBufferType, multisampling }, props));\n this._composer.addPass(new RenderPass(scene, camera));\n \n const passes = Array.isArray(pass) ? pass : [pass];\n passes.forEach(pass => {\n if (pass instanceof Pass) {\n this._composer.addPass(pass);\n }\n else {\n const { effect = [], encodeOutput = true } = pass\n const effects = Array.isArray(effect) ? effect : [effect];\n this._effects = this._effects.concat(effects);\n const effectPass = new EffectPass(camera, ...effects);\n effectPass.encodeOutput = encodeOutput;\n this._composer.addPass(effectPass);\n }\n });\n this._effects.forEach(target => {\n Object.defineProperty(target, \"blendOpacity\", {\n get: () => target.blendMode.getOpacity(),\n set: (v) => target.blendMode.setOpacity(v)\n })\n Object.defineProperty(target, \"blendFunction\", {\n get: () => target.blendMode.blendFunction,\n set: (v) => target.blendMode.blendFunction = v,\n })\n })\n }\n\n this.onDestroy = () => this._composer.dispose();\n\n this.render = (dt) => this._composer.render(dt);\n this.resize = (width, height) => this._composer.setSize(width, height);\n\n this.onEnable = () => this._renderer.enabled = false;\n this.onDisable = () => this._renderer.enabled = true;\n }\n}\n\n_getClassProperties(PostProcessing.name, {\n effects: { flat: true }\n})\n\n_getClassProperties(Effect.name, {\n blendOpacity: { min: 0, max: 1 },\n blendFunction: { value: BlendFunction }\n})\n\n_getClassProperties(BloomEffect.name, {\n intensity: { min: 0, max: 10 },\n dithering: {},\n kernelSize: { value: KernelSize }\n})\n\n_getClassProperties(ToneMappingEffect.name, {\n mode: { value: ToneMappingMode }\n})\n\n_getClassProperties(FXAAEffect.name, {\n minEdgeThreshold: { min: 0, max: 1 },\n maxEdgeThreshold: { min: 0, max: 1 },\n subpixelQuality: { min: 0, max: 1 },\n samples: {}\n})\n\n_getClassProperties(SMAAEffect.name, {\n edgesTexture: {},\n weightsTexture: {},\n})\n\n_getClassProperties(DepthOfFieldEffect.name, {\n bokehScale: {},\n maskFunction: { value: MaskFunction },\n target: {},\n})"],"names":["_getClassProperties","PropertyManager","PostProcessing","Component","effects","_effects","composer","_composer","pass","msaa","frameBufferType","HalfFloatType","props","order","onLoad","renderer","scene","camera","context","multisampling","Math","min","capabilities","maxSamples","_renderer","viewer","getComponent","Renderer","EffectComposer","Object","assign","addPass","RenderPass","passes","Array","isArray","forEach","Pass","effect","encodeOutput","concat","effectPass","EffectPass","target","defineProperty","get","blendMode","getOpacity","set","v","setOpacity","blendFunction","onDestroy","dispose","render","dt","resize","width","height","setSize","onEnable","enabled","onDisable","name","flat","Effect","blendOpacity","max","value","BlendFunction","BloomEffect","intensity","dithering","kernelSize","KernelSize","ToneMappingEffect","mode","ToneMappingMode","FXAAEffect","minEdgeThreshold","maxEdgeThreshold","subpixelQuality","samples","SMAAEffect","edgesTexture","weightsTexture","DepthOfFieldEffect","bokehScale","maskFunction","MaskFunction"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xviewer.js/postprocessing",
|
|
3
|
-
"version": "1.0.4-alpha.
|
|
3
|
+
"version": "1.0.4-alpha.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
"types/**/*"
|
|
14
14
|
],
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@xviewer.js/core": "1.0.4-alpha.
|
|
16
|
+
"@xviewer.js/core": "1.0.4-alpha.2"
|
|
17
17
|
},
|
|
18
18
|
"peerDependencies": {
|
|
19
|
-
"postprocessing": ">= 6.
|
|
19
|
+
"postprocessing": ">= 6.37.7"
|
|
20
20
|
},
|
|
21
21
|
"scripts": {
|
|
22
22
|
"b:types": "tsc"
|
|
@@ -1,5 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { Effect, EffectComposer, Pass } from "postprocessing";
|
|
2
|
+
import { Component } from "@xviewer.js/core";
|
|
3
|
+
import { HalfFloatType, UnsignedByteType, FloatType } from "three";
|
|
4
|
+
type PassOptions = {
|
|
5
|
+
effect?: Effect | Effect[];
|
|
6
|
+
encodeOutput?: boolean;
|
|
7
|
+
};
|
|
8
|
+
type PostProcessingProps = ConstructorParameters<typeof EffectComposer>[1] & {
|
|
9
|
+
pass?: PassOptions | PassOptions[] | Pass | Pass[];
|
|
10
|
+
msaa?: boolean | number;
|
|
11
|
+
frameBufferType?: typeof UnsignedByteType | typeof HalfFloatType | typeof FloatType;
|
|
12
|
+
};
|
|
13
|
+
export declare class PostProcessing extends Component {
|
|
14
|
+
order: number;
|
|
15
|
+
private _effects;
|
|
16
|
+
private _renderer;
|
|
17
|
+
private _composer;
|
|
18
|
+
get effects(): Effect[];
|
|
19
|
+
get composer(): EffectComposer;
|
|
20
|
+
constructor({ pass, msaa, frameBufferType, ...props }?: PostProcessingProps);
|
|
5
21
|
}
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Mount } from "@xviewer.js/core";
|
|
2
|
+
import { Effect, EffectComposer } from "postprocessing";
|
|
3
|
+
type PostProcessingProps = ConstructorParameters<typeof EffectComposer>[1] & {
|
|
4
|
+
effect?: Effect | Effect[];
|
|
5
|
+
};
|
|
6
|
+
export declare class PostProcessing2 extends Mount {
|
|
7
|
+
private _renderer;
|
|
8
|
+
private _renderPass;
|
|
9
|
+
private _outputPass;
|
|
10
|
+
private _composer;
|
|
11
|
+
private _effects;
|
|
12
|
+
constructor({ effect, ...props }?: PostProcessingProps);
|
|
13
|
+
get effects(): Effect[];
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
@@ -4,12 +4,15 @@ export declare class PostProcessingManager extends Mount {
|
|
|
4
4
|
private _renderPass;
|
|
5
5
|
private _outputPass;
|
|
6
6
|
private _composer;
|
|
7
|
+
private _renderer;
|
|
7
8
|
private _effects;
|
|
8
9
|
private _effectPass;
|
|
9
10
|
private _effectDirty;
|
|
10
11
|
get multisampling(): number;
|
|
11
12
|
set multisampling(v: number);
|
|
12
13
|
constructor(props: ConstructorParameters<typeof EffectComposer>[1]);
|
|
14
|
+
render(dt: number): void;
|
|
15
|
+
resize(width: number, height: number): void;
|
|
13
16
|
update(dt: number): void;
|
|
14
17
|
getPass<T extends Pass>(constructor: (new (...args: any[]) => T) | Function): T;
|
|
15
18
|
addPass<T extends Pass>(pass: T): T;
|
package/types/index.d.ts
CHANGED
|
@@ -1,8 +1 @@
|
|
|
1
|
-
export { PostProcessingManager } from "./PostProcessingManager";
|
|
2
1
|
export { PostProcessing } from "./PostProcessing";
|
|
3
|
-
export { ToneMapping } from "./ToneMapping";
|
|
4
|
-
export { DepthOfField } from "./DepthOfField";
|
|
5
|
-
export { Bloom } from "./Bloom";
|
|
6
|
-
export { FXAA } from "./FXAA";
|
|
7
|
-
export { SMAA } from "./SMAA";
|
|
8
|
-
export { MSAA } from "./MSAA";
|