@xviewer.js/postprocessing 1.0.4-alpha.0 → 1.0.4-alpha.10

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.
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
- class PostProcessingManager extends core.Mount {
8
- get multisampling() {
9
- return this._composer.multisampling;
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
- removeEffect(effect) {
45
- effect.dispose();
46
- this._effects.splice(this._effects.indexOf(effect), 1);
47
- this._effectDirty = true;
12
+ get composer() {
13
+ return this._composer;
48
14
  }
49
- _checkOutputPass() {
50
- const count = this._composer.passes.filter((v)=>v.enabled && v.name !== "VelocityDepthNormalPass" && v !== this._outputPass).length;
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.viewer;
71
- this._renderPass = new postprocessing.RenderPass(scene, camera);
72
- this._outputPass = new postprocessing.EffectPass(camera);
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: three.HalfFloatType
22
+ frameBufferType,
23
+ multisampling
75
24
  }, props));
76
- this._composer.addPass(this._renderPass);
77
- this._composer.addPass(this._outputPass);
78
- this.viewer._resizing = (width, height)=>this._composer.setSize(width, height);
79
- this.viewer._rendering = (dt)=>this.enabled && this._composer.render(dt);
80
- };
81
- this.onDestroy = ()=>{
82
- this._composer.dispose();
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
- class PostProcessing extends core.Mount {
88
- get postprocessing() {
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
- class DepthOfField extends PostProcessing {
116
- get focusDistance() {
117
- return this.effect.cocMaterial.focusDistance;
118
- }
119
- set focusDistance(v) {
120
- this.effect.cocMaterial.focusDistance = v;
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
- class FXAA extends PostProcessing {
206
- constructor(){
207
- super();
208
- this.onEnable = ()=>{
209
- this.effect = new postprocessing.FXAAEffect();
210
- this.postprocessing.addEffect(this.effect);
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
- class MSAA extends PostProcessing {
262
- constructor(){
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
- core.PropertyManager._getClassProperties(MSAA.name).property("enabled");
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 { Mount, PropertyManager } from '@xviewer.js/core';
2
- import { EffectPass, RenderPass, EffectComposer, ToneMappingMode, ToneMappingEffect, DepthOfFieldEffect, BloomEffect, BlendFunction, FXAAEffect, SMAAPreset, EdgeDetectionMode, PredicationMode, SMAAEffect } from 'postprocessing';
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
- class PostProcessingManager extends Mount {
6
- get multisampling() {
7
- return this._composer.multisampling;
5
+ const { _getClassProperties } = PropertyManager;
6
+ class PostProcessing extends Component {
7
+ get effects() {
8
+ return this._effects;
8
9
  }
9
- set multisampling(v) {
10
- this._composer.multisampling = v;
10
+ get composer() {
11
+ return this._composer;
11
12
  }
12
- update(dt) {
13
- if (this._effectDirty) {
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.viewer;
69
- this._renderPass = new RenderPass(scene, camera);
70
- this._outputPass = new EffectPass(camera);
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: HalfFloatType
20
+ frameBufferType,
21
+ multisampling
73
22
  }, props));
74
- this._composer.addPass(this._renderPass);
75
- this._composer.addPass(this._outputPass);
76
- this.viewer._resizing = (width, height)=>this._composer.setSize(width, height);
77
- this.viewer._rendering = (dt)=>this.enabled && this._composer.render(dt);
78
- };
79
- this.onDestroy = ()=>{
80
- this._composer.dispose();
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
- class PostProcessing extends Mount {
86
- get postprocessing() {
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
- class DepthOfField extends PostProcessing {
114
- get focusDistance() {
115
- return this.effect.cocMaterial.focusDistance;
116
- }
117
- set focusDistance(v) {
118
- this.effect.cocMaterial.focusDistance = v;
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
- class FXAA extends PostProcessing {
204
- constructor(){
205
- super();
206
- this.onEnable = ()=>{
207
- this.effect = new FXAAEffect();
208
- this.postprocessing.addEffect(this.effect);
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
- class MSAA extends PostProcessing {
260
- constructor(){
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
- PropertyManager._getClassProperties(MSAA.name).property("enabled");
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 { Bloom, DepthOfField, FXAA, MSAA, PostProcessing, PostProcessingManager, SMAA, ToneMapping };
115
+ export { PostProcessing };
275
116
  //# sourceMappingURL=module.js.map
@@ -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.0",
3
+ "version": "1.0.4-alpha.10",
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.0"
16
+ "@xviewer.js/core": "1.0.4-alpha.10"
17
17
  },
18
18
  "peerDependencies": {
19
- "postprocessing": ">= 6.35.4"
19
+ "postprocessing": ">= 6.37.7"
20
20
  },
21
21
  "scripts": {
22
22
  "b:types": "tsc"
@@ -0,0 +1,2 @@
1
+ export declare class Effect {
2
+ }
@@ -1,5 +1,22 @@
1
- import { Mount } from "@xviewer.js/core";
2
- import { PostProcessingManager } from "./PostProcessingManager";
3
- export declare class PostProcessing extends Mount {
4
- get postprocessing(): PostProcessingManager;
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";