@needle-tools/engine 4.6.1-next.26cf56c → 4.6.1-next.2b1af6a

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.
Files changed (79) hide show
  1. package/dist/{needle-engine.bundle-gJVfKnbJ.js → needle-engine.bundle-BBxAzv6J.js} +9228 -9100
  2. package/dist/{needle-engine.bundle-B23LP9xh.min.js → needle-engine.bundle-BwVJc8bG.min.js} +213 -201
  3. package/dist/{needle-engine.bundle-B0Kku0-E.umd.cjs → needle-engine.bundle-cvRBTPLl.umd.cjs} +190 -178
  4. package/dist/needle-engine.js +351 -350
  5. package/dist/needle-engine.min.js +1 -1
  6. package/dist/needle-engine.umd.cjs +1 -1
  7. package/dist/{postprocessing-BPhSPjAn.umd.cjs → postprocessing-CjW23fio.umd.cjs} +17 -17
  8. package/dist/{postprocessing-XKNCD6By.js → postprocessing-DYLNOL3W.js} +1 -0
  9. package/dist/{postprocessing-DoBd3XIR.min.js → postprocessing-xYQWCHFu.min.js} +26 -26
  10. package/lib/engine/engine_context.d.ts +4 -1
  11. package/lib/engine/engine_context.js +9 -2
  12. package/lib/engine/engine_context.js.map +1 -1
  13. package/lib/engine/engine_three_utils.d.ts +17 -14
  14. package/lib/engine/engine_three_utils.js +106 -53
  15. package/lib/engine/engine_three_utils.js.map +1 -1
  16. package/lib/engine/engine_tonemapping.d.ts +4 -0
  17. package/lib/engine/engine_tonemapping.js +21 -18
  18. package/lib/engine/engine_tonemapping.js.map +1 -1
  19. package/lib/engine/engine_utils.js.map +1 -1
  20. package/lib/engine/webcomponents/needle-engine.d.ts +4 -1
  21. package/lib/engine/webcomponents/needle-engine.extras.js +3 -3
  22. package/lib/engine/webcomponents/needle-engine.extras.js.map +1 -1
  23. package/lib/engine/webcomponents/needle-engine.js +11 -21
  24. package/lib/engine/webcomponents/needle-engine.js.map +1 -1
  25. package/lib/engine-components/CameraUtils.js.map +1 -1
  26. package/lib/engine-components/postprocessing/Effects/Antialiasing.js +2 -1
  27. package/lib/engine-components/postprocessing/Effects/Antialiasing.js.map +1 -1
  28. package/lib/engine-components/postprocessing/Effects/BloomEffect.d.ts +2 -2
  29. package/lib/engine-components/postprocessing/Effects/BloomEffect.js +5 -2
  30. package/lib/engine-components/postprocessing/Effects/BloomEffect.js.map +1 -1
  31. package/lib/engine-components/postprocessing/Effects/ColorAdjustments.d.ts +8 -0
  32. package/lib/engine-components/postprocessing/Effects/ColorAdjustments.js +27 -8
  33. package/lib/engine-components/postprocessing/Effects/ColorAdjustments.js.map +1 -1
  34. package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.js +1 -0
  35. package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.js.map +1 -1
  36. package/lib/engine-components/postprocessing/Effects/Sharpening.d.ts +1 -0
  37. package/lib/engine-components/postprocessing/Effects/Sharpening.js +4 -0
  38. package/lib/engine-components/postprocessing/Effects/Sharpening.js.map +1 -1
  39. package/lib/engine-components/postprocessing/Effects/Tonemapping.d.ts +2 -9
  40. package/lib/engine-components/postprocessing/Effects/Tonemapping.js +22 -57
  41. package/lib/engine-components/postprocessing/Effects/Tonemapping.js.map +1 -1
  42. package/lib/engine-components/postprocessing/Effects/Tonemapping.utils.d.ts +13 -0
  43. package/lib/engine-components/postprocessing/Effects/Tonemapping.utils.js +52 -0
  44. package/lib/engine-components/postprocessing/Effects/Tonemapping.utils.js.map +1 -0
  45. package/lib/engine-components/postprocessing/PostProcessingEffect.d.ts +18 -0
  46. package/lib/engine-components/postprocessing/PostProcessingEffect.js +20 -2
  47. package/lib/engine-components/postprocessing/PostProcessingEffect.js.map +1 -1
  48. package/lib/engine-components/postprocessing/PostProcessingHandler.d.ts +10 -4
  49. package/lib/engine-components/postprocessing/PostProcessingHandler.js +180 -126
  50. package/lib/engine-components/postprocessing/PostProcessingHandler.js.map +1 -1
  51. package/lib/engine-components/postprocessing/Volume.d.ts +0 -1
  52. package/lib/engine-components/postprocessing/Volume.js +49 -42
  53. package/lib/engine-components/postprocessing/Volume.js.map +1 -1
  54. package/lib/engine-components/postprocessing/index.d.ts +1 -0
  55. package/lib/engine-components/postprocessing/index.js +1 -0
  56. package/lib/engine-components/postprocessing/index.js.map +1 -1
  57. package/lib/engine-components/postprocessing/utils.d.ts +41 -0
  58. package/lib/engine-components/postprocessing/utils.js +82 -0
  59. package/lib/engine-components/postprocessing/utils.js.map +1 -1
  60. package/package.json +1 -1
  61. package/src/engine/engine_context.ts +13 -4
  62. package/src/engine/engine_three_utils.ts +134 -58
  63. package/src/engine/engine_tonemapping.ts +23 -24
  64. package/src/engine/engine_utils.ts +2 -2
  65. package/src/engine/webcomponents/needle-engine.extras.ts +3 -3
  66. package/src/engine/webcomponents/needle-engine.ts +14 -25
  67. package/src/engine-components/CameraUtils.ts +3 -3
  68. package/src/engine-components/postprocessing/Effects/Antialiasing.ts +2 -1
  69. package/src/engine-components/postprocessing/Effects/BloomEffect.ts +6 -4
  70. package/src/engine-components/postprocessing/Effects/ColorAdjustments.ts +24 -13
  71. package/src/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.ts +1 -0
  72. package/src/engine-components/postprocessing/Effects/Sharpening.ts +5 -0
  73. package/src/engine-components/postprocessing/Effects/Tonemapping.ts +24 -66
  74. package/src/engine-components/postprocessing/Effects/Tonemapping.utils.ts +60 -0
  75. package/src/engine-components/postprocessing/PostProcessingEffect.ts +21 -2
  76. package/src/engine-components/postprocessing/PostProcessingHandler.ts +201 -130
  77. package/src/engine-components/postprocessing/Volume.ts +50 -47
  78. package/src/engine-components/postprocessing/index.ts +2 -1
  79. package/src/engine-components/postprocessing/utils.ts +100 -2
@@ -1,4 +1,4 @@
1
- import type { EffectComposer } from "postprocessing";
1
+ import { EffectComposer } from "postprocessing";
2
2
  import { Context } from "../../engine/engine_setup.js";
3
3
  import { PostProcessingEffect } from "./PostProcessingEffect.js";
4
4
  /**
@@ -7,14 +7,14 @@ import { PostProcessingEffect } from "./PostProcessingEffect.js";
7
7
  export declare class PostProcessingHandler {
8
8
  private _composer;
9
9
  private _lastVolumeComponents?;
10
- private _effects;
10
+ private readonly _effects;
11
11
  get isActive(): boolean;
12
12
  get composer(): EffectComposer | null;
13
13
  private _isActive;
14
14
  private readonly context;
15
15
  constructor(context: Context);
16
16
  apply(components: PostProcessingEffect[]): Promise<void>;
17
- unapply(): void;
17
+ unapply(dispose?: boolean): void;
18
18
  dispose(): void;
19
19
  private onApply;
20
20
  private _anyPassHasDepth;
@@ -23,9 +23,15 @@ export declare class PostProcessingHandler {
23
23
  get anyPassHasDepth(): boolean;
24
24
  get anyPassHasNormal(): boolean;
25
25
  get hasSmaaEffect(): boolean;
26
+ private _customInputBuffer;
27
+ private _customInputBufferId;
28
+ private _multisampling;
29
+ set multisampling(value: number);
30
+ get multisampling(): number;
26
31
  /** Build composer passes */
27
32
  private applyEffects;
28
- private orderEffects;
33
+ /** Should be called before `composer.addPass()` to create an effect pass with all previously collected effects that can be merged up to that point */
34
+ private createPassForMergeableEffects;
29
35
  private _menuEntry;
30
36
  private _passIndices;
31
37
  private _onCreateEffectsDebug;
@@ -1,13 +1,16 @@
1
- import { HalfFloatType, NoToneMapping } from "three";
1
+ import { DepthTexture, HalfFloatType, LinearFilter, NoToneMapping, WebGLRenderTarget } from "three";
2
2
  import { showBalloonWarning } from "../../engine/debug/index.js";
3
3
  // import { internal_SetSharpeningEffectModule } from "./Effects/Sharpening.js";
4
4
  import { MODULES } from "../../engine/engine_modules.js";
5
+ import { Graphics } from "../../engine/engine_three_utils.js";
5
6
  import { getParam } from "../../engine/engine_utils.js";
7
+ import { threeToneMappingToEffectMode } from "./Effects/Tonemapping.utils.js";
8
+ import { orderEffects, PostProcessingEffectOrder } from "./utils.js";
6
9
  globalThis["NEEDLE_USE_POSTPROCESSING"] = globalThis["NEEDLE_USE_POSTPROCESSING"] !== undefined ? globalThis["NEEDLE_USE_POSTPROCESSING"] : true;
7
10
  const debug = getParam("debugpost");
8
- const dontMergePasses = getParam("debugpostpasses");
9
11
  const activeKey = Symbol("needle:postprocessing-handler");
10
12
  const autoclearSetting = Symbol("needle:previous-autoclear-state");
13
+ const previousToneMapping = Symbol("needle:previous-tone-mapping");
11
14
  /**
12
15
  * PostProcessingHandler is responsible for applying post processing effects to the scene. It is internally used by the {@link Volume} component
13
16
  */
@@ -44,7 +47,7 @@ export class PostProcessingHandler {
44
47
  this._isActive = true;
45
48
  return this.onApply(this.context, components);
46
49
  }
47
- unapply() {
50
+ unapply(dispose = true) {
48
51
  if (debug)
49
52
  console.log("Unapplying postprocessing effects");
50
53
  this._isActive = false;
@@ -58,19 +61,25 @@ export class PostProcessingHandler {
58
61
  const active = context[activeKey];
59
62
  if (active === this) {
60
63
  delete context[activeKey];
64
+ // Restore the auto clear setting
65
+ if (typeof context.renderer[autoclearSetting] === "boolean") {
66
+ context.renderer.autoClear = context.renderer[autoclearSetting];
67
+ }
68
+ if (typeof context.renderer[previousToneMapping] === "number") {
69
+ context.renderer.toneMapping = context.renderer[previousToneMapping];
70
+ }
61
71
  }
72
+ this._composer?.removeAllPasses();
73
+ if (dispose)
74
+ this._composer?.dispose();
62
75
  if (context.composer === this._composer) {
63
- context.composer?.dispose();
64
76
  context.composer = null;
65
77
  }
66
- if (typeof context.renderer[autoclearSetting] === "boolean") {
67
- context.renderer.autoClear = context.renderer[autoclearSetting];
68
- }
69
78
  }
70
79
  dispose() {
71
- this.unapply();
80
+ this.unapply(true);
72
81
  for (const effect of this._effects) {
73
- effect.dispose();
82
+ effect.effect.dispose();
74
83
  }
75
84
  this._effects.length = 0;
76
85
  this._composer = null;
@@ -118,10 +127,19 @@ export class PostProcessingHandler {
118
127
  if (!res)
119
128
  continue;
120
129
  if (Array.isArray(res)) {
121
- this._effects.push(...res);
130
+ for (const effect of res) {
131
+ this._effects.push({
132
+ effect,
133
+ priority: component.order
134
+ });
135
+ }
136
+ }
137
+ else {
138
+ this._effects.push({
139
+ effect: res,
140
+ priority: component.order
141
+ });
122
142
  }
123
- else
124
- this._effects.push(res);
125
143
  }
126
144
  }
127
145
  else {
@@ -129,13 +147,6 @@ export class PostProcessingHandler {
129
147
  showBalloonWarning("Volume component is not a VolumeComponent: " + component["__type"]);
130
148
  }
131
149
  }
132
- // Ensure that we have a tonemapping effect if the renderer is set to use a tone mapping
133
- if (this.context.renderer.toneMapping != NoToneMapping) {
134
- if (!this._effects.find(e => e instanceof MODULES.POSTPROCESSING.MODULE.ToneMappingEffect)) {
135
- const tonemapping = new MODULES.POSTPROCESSING.MODULE.ToneMappingEffect();
136
- this._effects.push(tonemapping);
137
- }
138
- }
139
150
  this.applyEffects(context);
140
151
  }
141
152
  _anyPassHasDepth = false;
@@ -144,11 +155,24 @@ export class PostProcessingHandler {
144
155
  get anyPassHasDepth() { return this._anyPassHasDepth; }
145
156
  get anyPassHasNormal() { return this._anyPassHasNormal; }
146
157
  get hasSmaaEffect() { return this._hasSmaaEffect; }
158
+ _customInputBuffer = null;
159
+ _customInputBufferId = 0;
160
+ _multisampling = 0;
161
+ set multisampling(value) {
162
+ this._multisampling = value;
163
+ }
164
+ get multisampling() {
165
+ return this._multisampling;
166
+ }
147
167
  /** Build composer passes */
148
168
  applyEffects(context) {
149
- const effectsOrPasses = this._effects;
150
- if (effectsOrPasses.length <= 0)
169
+ // Reset state
170
+ this._anyPassHasDepth = false;
171
+ this._anyPassHasNormal = false;
172
+ this._hasSmaaEffect = false;
173
+ if (this._effects.length <= 0) {
151
174
  return;
175
+ }
152
176
  const camera = context.mainCameraComponent;
153
177
  const renderer = context.renderer;
154
178
  const scene = context.scene;
@@ -156,14 +180,22 @@ export class PostProcessingHandler {
156
180
  // Store the auto clear setting because the postprocessing composer just disables it
157
181
  // and when we disable postprocessing we want to restore the original setting
158
182
  // https://github.com/pmndrs/postprocessing/blob/271944b74b543a5b743a62803a167b60cc6bb4ee/src/core/EffectComposer.js#L230C12-L230C12
183
+ // First we need to get the previously set autoClear setting, if it exists
184
+ if (typeof renderer[autoclearSetting] === "boolean") {
185
+ renderer.autoClear = renderer[autoclearSetting];
186
+ }
159
187
  renderer[autoclearSetting] = renderer.autoClear;
160
- // Reset state
161
- this._anyPassHasDepth = false;
162
- this._anyPassHasNormal = false;
163
- this._hasSmaaEffect = false;
164
- for (const ef of effectsOrPasses) {
165
- if (ef instanceof MODULES.POSTPROCESSING.MODULE.SMAAEffect) {
166
- this._hasSmaaEffect = true;
188
+ if (typeof renderer[previousToneMapping] === "number") {
189
+ renderer.toneMapping = renderer[previousToneMapping];
190
+ }
191
+ renderer[previousToneMapping] = renderer.toneMapping;
192
+ // Ensure that we have a tonemapping effect if the renderer is set to use a tone mapping
193
+ if (renderer.toneMapping != NoToneMapping) {
194
+ if (!this._effects.find(e => e instanceof MODULES.POSTPROCESSING.MODULE.ToneMappingEffect)) {
195
+ const tonemapping = new MODULES.POSTPROCESSING.MODULE.ToneMappingEffect();
196
+ tonemapping.name = `ToneMapping (${renderer.toneMapping})`;
197
+ tonemapping.mode = threeToneMappingToEffectMode(renderer.toneMapping);
198
+ this._effects.push({ effect: tonemapping, priority: PostProcessingEffectOrder.ToneMapping });
167
199
  }
168
200
  }
169
201
  // create composer and set active on context
@@ -183,67 +215,133 @@ export class PostProcessingHandler {
183
215
  composer.setRenderer(renderer);
184
216
  composer.setMainScene(scene);
185
217
  composer.autoRenderToScreen = true; // Must be enabled because it might be disabled during addPass by the composer itself (depending on the effect's settings or order)
218
+ composer.multisampling = 0; // Disable multisampling by default
186
219
  for (const prev of composer.passes)
187
220
  prev.dispose();
188
221
  composer.removeAllPasses();
189
222
  // Render to screen pass
190
223
  const screenpass = new MODULES.POSTPROCESSING.MODULE.RenderPass(scene, cam);
191
- screenpass.name = "Render To Screen";
224
+ screenpass.name = "RenderPass";
192
225
  screenpass.mainScene = scene;
193
226
  composer.addPass(screenpass);
194
- const automaticEffectsOrdering = true;
195
- if (automaticEffectsOrdering && !dontMergePasses) {
196
- try {
197
- this.orderEffects();
198
- const effects = [];
199
- for (const ef of effectsOrPasses) {
200
- if (ef instanceof MODULES.POSTPROCESSING.MODULE.Effect) {
201
- effects.push(ef);
202
- }
203
- else if (ef instanceof MODULES.POSTPROCESSING.MODULE.Pass) {
204
- ef.renderToScreen = false;
205
- composer.addPass(ef);
206
- }
207
- else {
208
- // seems some effects are not correctly typed, but three can deal with them,
209
- // so we might need to just pass them through
210
- composer.addPass(ef);
211
- }
212
- }
213
- // create and apply uber pass
214
- if (effects.length > 0) {
215
- const pass = new MODULES.POSTPROCESSING.MODULE.EffectPass(cam, ...effects);
216
- pass.name = effects.map(e => e.name).join(", ");
217
- pass.mainScene = scene;
218
- pass.enabled = true;
219
- pass.renderToScreen = false;
220
- composer.addPass(pass);
221
- }
227
+ const screenPassRender = screenpass.render;
228
+ this._customInputBuffer?.dispose();
229
+ this._customInputBuffer = null;
230
+ screenpass.render = (renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) => {
231
+ if (!inputBuffer)
232
+ return;
233
+ // screenPassRender.call(screenpass, renderer, inputBuffer, outputBuffer, deltaTime, stencilTest);
234
+ // return;
235
+ // Make sure multisampling is disabled on the composer buffers. Technically a user could still set multisampling directly on the composer so this is to override that and make sure these textures do NOT use multisampling
236
+ inputBuffer.samples = 0;
237
+ if (outputBuffer) {
238
+ outputBuffer.samples = 0;
222
239
  }
223
- catch (e) {
224
- console.error("Error while applying postprocessing effects", e);
225
- composer.removeAllPasses();
240
+ // Make sure the input buffer is a WebGLRenderTarget with the correct settings
241
+ if (!this._customInputBuffer
242
+ || this._customInputBuffer.width !== inputBuffer.width
243
+ || this._customInputBuffer.height !== inputBuffer.height
244
+ || this._customInputBuffer.samples !== this._multisampling
245
+ || this._customInputBuffer.texture.format !== inputBuffer.texture.format
246
+ || this._customInputBuffer.texture.type !== HalfFloatType) {
247
+ this._customInputBuffer?.dispose();
248
+ this._customInputBuffer = new WebGLRenderTarget(inputBuffer.width, inputBuffer.height, {
249
+ format: inputBuffer.texture.format,
250
+ type: HalfFloatType,
251
+ depthBuffer: inputBuffer.depthBuffer,
252
+ depthTexture: inputBuffer.depthTexture
253
+ ? new DepthTexture(inputBuffer.width, inputBuffer.height)
254
+ : undefined,
255
+ stencilBuffer: inputBuffer.stencilBuffer,
256
+ samples: Math.max(0, this._multisampling),
257
+ minFilter: inputBuffer.texture.minFilter ?? LinearFilter,
258
+ magFilter: inputBuffer.texture.magFilter ?? LinearFilter,
259
+ generateMipmaps: inputBuffer.texture.generateMipmaps,
260
+ });
261
+ this._customInputBufferId++;
262
+ this._customInputBuffer.texture.name = `CustomInputBuffer-${this._customInputBufferId}`;
263
+ if (this._customInputBuffer.depthTexture && inputBuffer.depthTexture) {
264
+ this._customInputBuffer.depthTexture.format = inputBuffer.depthTexture.format;
265
+ this._customInputBuffer.depthTexture.type = inputBuffer.depthTexture.type;
266
+ }
267
+ // https://github.com/pmndrs/postprocessing/blob/ad338df710ef41fee4e5d10ad2c2c299030d46ef/src/core/EffectComposer.js#L366
268
+ if (this._customInputBuffer.samples > 0)
269
+ this._customInputBuffer.ignoreDepthForMultisampleCopy = false;
270
+ if (debug)
271
+ console.warn(`[PostProcessing] Input buffer created with size ${this._customInputBuffer.width}x${this._customInputBuffer.height} and samples ${this._customInputBuffer.samples}`);
226
272
  }
227
- }
228
- else {
229
- // we still want to sort passes, but we do not want to merge them for debugging
230
- if (automaticEffectsOrdering)
231
- this.orderEffects();
232
- for (const ef of effectsOrPasses) {
273
+ // Calling the original render function with the input buffer
274
+ screenPassRender.call(screenpass, renderer, this._customInputBuffer, outputBuffer, deltaTime, stencilTest);
275
+ // Blit the resulting buffer to the input buffer passed in by the composer so it's used for subsequent effects
276
+ Graphics.blit(this._customInputBuffer.texture, inputBuffer, {
277
+ renderer,
278
+ depthTexture: this._customInputBuffer.depthTexture,
279
+ depthWrite: true,
280
+ depthTest: true,
281
+ });
282
+ };
283
+ let foundTonemappingEffect = false;
284
+ try {
285
+ orderEffects(this._effects);
286
+ const effectsToMerge = [];
287
+ let hasConvolutionEffectInArray = false;
288
+ for (const entry of this._effects) {
289
+ const ef = entry.effect;
290
+ if (ef instanceof MODULES.POSTPROCESSING.MODULE.SMAAEffect) {
291
+ this._hasSmaaEffect = true;
292
+ }
293
+ else if (ef instanceof MODULES.POSTPROCESSING.MODULE.NormalPass) {
294
+ this._anyPassHasNormal = true;
295
+ }
296
+ // There can be only one tonemapping effect in the scene, so we can skip all others
297
+ if (ef instanceof MODULES.POSTPROCESSING.MODULE.ToneMappingEffect) {
298
+ // If we already have a tonemapping effect, we can skip this one
299
+ if (foundTonemappingEffect)
300
+ continue;
301
+ foundTonemappingEffect = true;
302
+ }
303
+ // We can also not merge multiple effects of the same type in one pass
304
+ // So we first need to create a new pass with whatever effects we have so far
305
+ // TODO: this seems to work fine for some effects (like ColorAdjustments) and only caused issues with multiple Tonemapping effects so far which is handled above
306
+ // const constructor = ef.constructor as Constructor<Effect | Pass>;
307
+ // if(effectsToMerge.find(e => e.constructor === constructor)) {
308
+ // // this.createPassForMergeableEffects(effectsToMerge, composer, cam, scene);
309
+ // }
233
310
  if (ef instanceof MODULES.POSTPROCESSING.MODULE.Effect) {
234
- const pass = new MODULES.POSTPROCESSING.MODULE.EffectPass(cam, ef);
235
- pass.name = ef.name;
236
- composer.addPass(pass);
311
+ const attributes = ef.getAttributes();
312
+ const convolution = MODULES.POSTPROCESSING.MODULE.EffectAttribute.CONVOLUTION;
313
+ if (attributes & convolution) {
314
+ if (debug)
315
+ console.log("[PostProcessing] Convolution effect: " + ef.name);
316
+ if (hasConvolutionEffectInArray) {
317
+ if (debug)
318
+ console.log("[PostProcessing] Merging effects with convolution", effectsToMerge.map(e => e.name).join(", "));
319
+ this.createPassForMergeableEffects(effectsToMerge, composer, cam, scene);
320
+ }
321
+ hasConvolutionEffectInArray = true;
322
+ }
323
+ // Otherwise we can merge it
324
+ effectsToMerge.push(ef);
237
325
  }
238
326
  else if (ef instanceof MODULES.POSTPROCESSING.MODULE.Pass) {
327
+ hasConvolutionEffectInArray = false;
328
+ this.createPassForMergeableEffects(effectsToMerge, composer, cam, scene);
239
329
  ef.renderToScreen = false;
240
330
  composer.addPass(ef);
241
331
  }
242
- else
332
+ else {
243
333
  // seems some effects are not correctly typed, but three can deal with them,
244
- // so we just pass them through
334
+ // so we might need to just pass them through
335
+ hasConvolutionEffectInArray = false;
336
+ this.createPassForMergeableEffects(effectsToMerge, composer, cam, scene);
245
337
  composer.addPass(ef);
338
+ }
246
339
  }
340
+ this.createPassForMergeableEffects(effectsToMerge, composer, cam, scene);
341
+ }
342
+ catch (e) {
343
+ console.error("Error while applying postprocessing effects", e);
344
+ composer.removeAllPasses();
247
345
  }
248
346
  // The last pass is the one that renders to the screen, so we need to set the gamma correction for it (and enable it for all others)
249
347
  for (let i = 0; i < composer.passes.length; i++) {
@@ -257,12 +355,6 @@ export class PostProcessingHandler {
257
355
  pass.autosetGamma = isLast;
258
356
  }
259
357
  this._anyPassHasDepth ||= pass.needsDepthTexture;
260
- if (pass instanceof MODULES.POSTPROCESSING.MODULE.NormalPass) {
261
- this._anyPassHasNormal = true;
262
- }
263
- if (pass instanceof MODULES.POSTPROCESSING.MODULE.SMAAEffect) {
264
- this._hasSmaaEffect = true;
265
- }
266
358
  }
267
359
  // DEBUG LAND BELOW
268
360
  if (debug)
@@ -270,54 +362,17 @@ export class PostProcessingHandler {
270
362
  if (debug)
271
363
  this._onCreateEffectsDebug(this._composer, cam);
272
364
  }
273
- orderEffects() {
274
- if (debug === "verbose")
275
- console.debug("Before ordering effects", [...this._effects]);
276
- // Order of effects for correct results.
277
- // Aligned with https://github.com/pmndrs/postprocessing/wiki/Effect-Merging#effect-execution-order
278
- // We can not put this into global scope because then the module might not yet be initialized
279
- effectsOrder ??= [
280
- MODULES.POSTPROCESSING.MODULE.NormalPass,
281
- MODULES.POSTPROCESSING.MODULE.DepthDownsamplingPass,
282
- MODULES.POSTPROCESSING.MODULE.SMAAEffect,
283
- MODULES.POSTPROCESSING.MODULE.SSAOEffect,
284
- MODULES.POSTPROCESSING_AO.MODULE.N8AOPostPass,
285
- MODULES.POSTPROCESSING.MODULE.TiltShiftEffect,
286
- MODULES.POSTPROCESSING.MODULE.DepthOfFieldEffect,
287
- MODULES.POSTPROCESSING.MODULE.ChromaticAberrationEffect,
288
- MODULES.POSTPROCESSING.MODULE.BloomEffect,
289
- MODULES.POSTPROCESSING.MODULE.SelectiveBloomEffect,
290
- MODULES.POSTPROCESSING.MODULE.VignetteEffect,
291
- MODULES.POSTPROCESSING.MODULE.PixelationEffect,
292
- MODULES.POSTPROCESSING.MODULE.ToneMappingEffect,
293
- MODULES.POSTPROCESSING.MODULE.HueSaturationEffect,
294
- MODULES.POSTPROCESSING.MODULE.BrightnessContrastEffect,
295
- // __SHARPENING_MODULE._SharpeningEffect,
296
- ];
297
- // TODO: enforce correct order of effects (e.g. DOF before Bloom)
298
- const effects = this._effects;
299
- effects.sort((a, b) => {
300
- // we use find index here because sometimes constructor names are prefixed with `_`
301
- // TODO: find a more robust solution that isnt name based (not sure if that exists tho... maybe we must give effect TYPES some priority/index)
302
- const aidx = effectsOrder.findIndex(e => a.constructor.name.endsWith(e.name));
303
- const bidx = effectsOrder.findIndex(e => b.constructor.name.endsWith(e.name));
304
- // Unknown effects should be rendered first
305
- if (aidx < 0) {
306
- if (debug)
307
- console.warn("Unknown effect found: ", a.constructor.name);
308
- return -1;
309
- }
310
- else if (bidx < 0) {
311
- if (debug)
312
- console.warn("Unknown effect found: ", b.constructor.name);
313
- return 1;
314
- }
315
- // if (aidx < 0) return 1;
316
- // if (bidx < 0) return -1;
317
- return aidx - bidx;
318
- });
319
- if (debug === "verbose")
320
- console.debug("After ordering effects", [...this._effects]);
365
+ /** Should be called before `composer.addPass()` to create an effect pass with all previously collected effects that can be merged up to that point */
366
+ createPassForMergeableEffects(effects, composer, camera, scene) {
367
+ if (effects.length > 0) {
368
+ const pass = new MODULES.POSTPROCESSING.MODULE.EffectPass(camera, ...effects);
369
+ pass.name = effects.map(e => e.name).join(", ");
370
+ pass.mainScene = scene;
371
+ pass.enabled = true;
372
+ pass.renderToScreen = false;
373
+ composer.addPass(pass);
374
+ effects.length = 0; // Clear effects after adding them to the pass
375
+ }
321
376
  }
322
377
  _menuEntry = null;
323
378
  _passIndices = null;
@@ -384,5 +439,4 @@ export class PostProcessingHandler {
384
439
  }
385
440
  }
386
441
  }
387
- let effectsOrder = null;
388
442
  //# sourceMappingURL=PostProcessingHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PostProcessingHandler.js","sourceRoot":"","sources":["../../../src/engine-components/postprocessing/PostProcessingHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PostProcessingHandler.js","sourceRoot":"","sources":["../../../src/engine-components/postprocessing/PostProcessingHandler.ts"],"names":[],"mappings":"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"}
@@ -80,7 +80,6 @@ export declare class Volume extends Behaviour implements IEditorModificationRece
80
80
  private _rapidApplyCount;
81
81
  private _isDirty;
82
82
  private apply;
83
- private unapply;
84
83
  private _applyPostQueue;
85
84
  /** called from needle editor sync package if its active */
86
85
  onEditorModification(modification: EditorModification): void | boolean | undefined;