@needle-tools/engine 4.6.0 → 4.6.1-next.20d54cd

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 (114) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/generateMeshBVH.worker-BaNp_Xtp.js +25 -0
  3. package/dist/{gltf-progressive-Bm9eEfgu.min.js → gltf-progressive-Bl4okF1b.min.js} +1 -1
  4. package/dist/{gltf-progressive-GjIqwSG3.js → gltf-progressive-DSpdn0QT.js} +2 -2
  5. package/dist/{gltf-progressive-Dn6o99rH.umd.cjs → gltf-progressive-P8b8a0qY.umd.cjs} +1 -1
  6. package/dist/needle-engine.bundle-BVrLqIyi.umd.cjs +1575 -0
  7. package/dist/{needle-engine.bundle-DsrPZ9gj.js → needle-engine.bundle-BonYthMO.js} +8850 -8678
  8. package/dist/needle-engine.bundle-CokaG-YG.min.js +1575 -0
  9. package/dist/needle-engine.js +352 -351
  10. package/dist/needle-engine.min.js +1 -1
  11. package/dist/needle-engine.umd.cjs +1 -1
  12. package/dist/{postprocessing-CRQa6Qxn.umd.cjs → postprocessing-CjW23fio.umd.cjs} +18 -18
  13. package/dist/{postprocessing-D6W1EyZ-.js → postprocessing-DYLNOL3W.js} +4 -3
  14. package/dist/{postprocessing-DF8AlRgW.min.js → postprocessing-xYQWCHFu.min.js} +26 -26
  15. package/dist/{three-DMrv-4ar.umd.cjs → three-B_hneGZr.umd.cjs} +4 -4
  16. package/dist/{three-Bz6X1mrw.js → three-DrqIzZTH.js} +4198 -4198
  17. package/dist/{three-Boa-jOq-.min.js → three-DuDKwKB8.min.js} +33 -33
  18. package/dist/{three-examples-GggCDHv0.js → three-examples-B50TT3Iu.js} +5 -5
  19. package/dist/{three-examples-DuVhxqft.min.js → three-examples-DaDLBuy6.min.js} +14 -14
  20. package/dist/{three-examples-C7ryg8vN.umd.cjs → three-examples-X3OadjXB.umd.cjs} +3 -3
  21. package/dist/{three-mesh-ui-CY6Izc7C.min.js → three-mesh-ui-B3p3gyUz.min.js} +1 -1
  22. package/dist/{three-mesh-ui-CwlN0FUC.umd.cjs → three-mesh-ui-CQiIQIlA.umd.cjs} +1 -1
  23. package/dist/{three-mesh-ui-CLNOfsWn.js → three-mesh-ui-CxuWt7m-.js} +1 -1
  24. package/dist/{vendor-zxXa3Dmr.min.js → vendor-BlSxe9JJ.min.js} +3 -3
  25. package/dist/{vendor-BSD1RQIh.js → vendor-BmYIgaS1.js} +3 -3
  26. package/dist/{vendor-DHr4aqIZ.umd.cjs → vendor-Cavtu3CP.umd.cjs} +3 -3
  27. package/lib/engine/engine_assetdatabase.js +3 -1
  28. package/lib/engine/engine_assetdatabase.js.map +1 -1
  29. package/lib/engine/engine_context.d.ts +6 -3
  30. package/lib/engine/engine_context.js +20 -12
  31. package/lib/engine/engine_context.js.map +1 -1
  32. package/lib/engine/engine_three_utils.d.ts +17 -14
  33. package/lib/engine/engine_three_utils.js +106 -53
  34. package/lib/engine/engine_three_utils.js.map +1 -1
  35. package/lib/engine/engine_tonemapping.d.ts +4 -0
  36. package/lib/engine/engine_tonemapping.js +21 -18
  37. package/lib/engine/engine_tonemapping.js.map +1 -1
  38. package/lib/engine/engine_utils.js.map +1 -1
  39. package/lib/engine/engine_utils_screenshot.d.ts +1 -1
  40. package/lib/engine/engine_utils_screenshot.js +11 -2
  41. package/lib/engine/engine_utils_screenshot.js.map +1 -1
  42. package/lib/engine/webcomponents/needle-engine.d.ts +4 -1
  43. package/lib/engine/webcomponents/needle-engine.extras.js +3 -3
  44. package/lib/engine/webcomponents/needle-engine.extras.js.map +1 -1
  45. package/lib/engine/webcomponents/needle-engine.js +11 -21
  46. package/lib/engine/webcomponents/needle-engine.js.map +1 -1
  47. package/lib/engine-components/CameraUtils.js.map +1 -1
  48. package/lib/engine-components/ReflectionProbe.d.ts +2 -1
  49. package/lib/engine-components/ReflectionProbe.js +4 -1
  50. package/lib/engine-components/ReflectionProbe.js.map +1 -1
  51. package/lib/engine-components/Renderer.js +9 -5
  52. package/lib/engine-components/Renderer.js.map +1 -1
  53. package/lib/engine-components/postprocessing/Effects/Antialiasing.js +3 -1
  54. package/lib/engine-components/postprocessing/Effects/Antialiasing.js.map +1 -1
  55. package/lib/engine-components/postprocessing/Effects/BloomEffect.d.ts +2 -2
  56. package/lib/engine-components/postprocessing/Effects/BloomEffect.js +5 -2
  57. package/lib/engine-components/postprocessing/Effects/BloomEffect.js.map +1 -1
  58. package/lib/engine-components/postprocessing/Effects/ColorAdjustments.d.ts +8 -0
  59. package/lib/engine-components/postprocessing/Effects/ColorAdjustments.js +27 -8
  60. package/lib/engine-components/postprocessing/Effects/ColorAdjustments.js.map +1 -1
  61. package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.js +1 -0
  62. package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.js.map +1 -1
  63. package/lib/engine-components/postprocessing/Effects/Sharpening.d.ts +1 -0
  64. package/lib/engine-components/postprocessing/Effects/Sharpening.js +4 -0
  65. package/lib/engine-components/postprocessing/Effects/Sharpening.js.map +1 -1
  66. package/lib/engine-components/postprocessing/Effects/Tonemapping.d.ts +2 -9
  67. package/lib/engine-components/postprocessing/Effects/Tonemapping.js +29 -73
  68. package/lib/engine-components/postprocessing/Effects/Tonemapping.js.map +1 -1
  69. package/lib/engine-components/postprocessing/Effects/Tonemapping.utils.d.ts +13 -0
  70. package/lib/engine-components/postprocessing/Effects/Tonemapping.utils.js +52 -0
  71. package/lib/engine-components/postprocessing/Effects/Tonemapping.utils.js.map +1 -0
  72. package/lib/engine-components/postprocessing/PostProcessingEffect.d.ts +18 -0
  73. package/lib/engine-components/postprocessing/PostProcessingEffect.js +22 -3
  74. package/lib/engine-components/postprocessing/PostProcessingEffect.js.map +1 -1
  75. package/lib/engine-components/postprocessing/PostProcessingHandler.d.ts +21 -4
  76. package/lib/engine-components/postprocessing/PostProcessingHandler.js +237 -125
  77. package/lib/engine-components/postprocessing/PostProcessingHandler.js.map +1 -1
  78. package/lib/engine-components/postprocessing/Volume.d.ts +2 -1
  79. package/lib/engine-components/postprocessing/Volume.js +51 -33
  80. package/lib/engine-components/postprocessing/Volume.js.map +1 -1
  81. package/lib/engine-components/postprocessing/index.d.ts +1 -0
  82. package/lib/engine-components/postprocessing/index.js +1 -0
  83. package/lib/engine-components/postprocessing/index.js.map +1 -1
  84. package/lib/engine-components/postprocessing/utils.d.ts +43 -0
  85. package/lib/engine-components/postprocessing/utils.js +82 -0
  86. package/lib/engine-components/postprocessing/utils.js.map +1 -1
  87. package/package.json +2 -2
  88. package/plugins/vite/dependency-watcher.js +8 -2
  89. package/src/engine/engine_assetdatabase.ts +3 -1
  90. package/src/engine/engine_context.ts +27 -15
  91. package/src/engine/engine_three_utils.ts +134 -58
  92. package/src/engine/engine_tonemapping.ts +23 -24
  93. package/src/engine/engine_utils.ts +2 -2
  94. package/src/engine/engine_utils_screenshot.ts +13 -3
  95. package/src/engine/webcomponents/needle-engine.extras.ts +3 -3
  96. package/src/engine/webcomponents/needle-engine.ts +14 -25
  97. package/src/engine-components/CameraUtils.ts +3 -3
  98. package/src/engine-components/ReflectionProbe.ts +5 -1
  99. package/src/engine-components/Renderer.ts +10 -7
  100. package/src/engine-components/postprocessing/Effects/Antialiasing.ts +3 -1
  101. package/src/engine-components/postprocessing/Effects/BloomEffect.ts +6 -4
  102. package/src/engine-components/postprocessing/Effects/ColorAdjustments.ts +24 -13
  103. package/src/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.ts +1 -0
  104. package/src/engine-components/postprocessing/Effects/Sharpening.ts +5 -0
  105. package/src/engine-components/postprocessing/Effects/Tonemapping.ts +29 -81
  106. package/src/engine-components/postprocessing/Effects/Tonemapping.utils.ts +60 -0
  107. package/src/engine-components/postprocessing/PostProcessingEffect.ts +23 -3
  108. package/src/engine-components/postprocessing/PostProcessingHandler.ts +268 -132
  109. package/src/engine-components/postprocessing/Volume.ts +54 -38
  110. package/src/engine-components/postprocessing/index.ts +2 -1
  111. package/src/engine-components/postprocessing/utils.ts +102 -2
  112. package/dist/generateMeshBVH.worker-Cdfpaq5W.js +0 -25
  113. package/dist/needle-engine.bundle-BDO_N7gN.min.js +0 -1559
  114. package/dist/needle-engine.bundle-CoJqbtmp.umd.cjs +0 -1559
@@ -1,4 +1,4 @@
1
- import type { EffectComposer } from "postprocessing";
1
+ import type { Effect, EffectComposer } from "postprocessing";
2
2
  import { Context } from "../../engine/engine_setup.js";
3
3
  import { PostProcessingEffect } from "./PostProcessingEffect.js";
4
4
  /**
@@ -7,19 +7,36 @@ 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
+ /**
12
+ * Returns true if a specific effect is currently active in the post processing stack.
13
+ */
14
+ getEffectIsActive(effect: Effect): boolean;
11
15
  get isActive(): boolean;
12
16
  get composer(): EffectComposer | null;
13
17
  private _isActive;
14
18
  private readonly context;
15
19
  constructor(context: Context);
16
20
  apply(components: PostProcessingEffect[]): Promise<void>;
17
- unapply(): void;
21
+ unapply(dispose?: boolean): void;
18
22
  dispose(): void;
19
23
  private onApply;
24
+ private _anyPassHasDepth;
25
+ private _anyPassHasNormal;
26
+ private _hasSmaaEffect;
27
+ get anyPassHasDepth(): boolean;
28
+ get anyPassHasNormal(): boolean;
29
+ get hasSmaaEffect(): boolean;
30
+ private _customInputBuffer;
31
+ private _customInputBufferId;
32
+ private _multisampling;
33
+ set multisampling(value: number);
34
+ get multisampling(): number;
20
35
  /** Build composer passes */
21
36
  private applyEffects;
37
+ /** Should be called before `composer.addPass()` to create an effect pass with all previously collected effects that can be merged up to that point */
38
+ private createPassForMergeableEffects;
22
39
  private _menuEntry;
23
40
  private _passIndices;
24
- private orderEffects;
41
+ private _onCreateEffectsDebug;
25
42
  }
@@ -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
  */
@@ -15,6 +18,14 @@ export class PostProcessingHandler {
15
18
  _composer = null;
16
19
  _lastVolumeComponents;
17
20
  _effects = [];
21
+ /**
22
+ * Returns true if a specific effect is currently active in the post processing stack.
23
+ */
24
+ getEffectIsActive(effect) {
25
+ if (!effect)
26
+ return false;
27
+ return this._isActive && this._effects.some(e => e.effect === effect);
28
+ }
18
29
  get isActive() {
19
30
  return this._isActive;
20
31
  }
@@ -44,7 +55,7 @@ export class PostProcessingHandler {
44
55
  this._isActive = true;
45
56
  return this.onApply(this.context, components);
46
57
  }
47
- unapply() {
58
+ unapply(dispose = true) {
48
59
  if (debug)
49
60
  console.log("Unapplying postprocessing effects");
50
61
  this._isActive = false;
@@ -58,19 +69,25 @@ export class PostProcessingHandler {
58
69
  const active = context[activeKey];
59
70
  if (active === this) {
60
71
  delete context[activeKey];
72
+ // Restore the auto clear setting
73
+ if (typeof context.renderer[autoclearSetting] === "boolean") {
74
+ context.renderer.autoClear = context.renderer[autoclearSetting];
75
+ }
76
+ if (typeof context.renderer[previousToneMapping] === "number") {
77
+ context.renderer.toneMapping = context.renderer[previousToneMapping];
78
+ }
61
79
  }
80
+ this._composer?.removeAllPasses();
81
+ if (dispose)
82
+ this._composer?.dispose();
62
83
  if (context.composer === this._composer) {
63
- context.composer?.dispose();
64
84
  context.composer = null;
65
85
  }
66
- if (typeof context.renderer[autoclearSetting] === "boolean") {
67
- context.renderer.autoClear = context.renderer[autoclearSetting];
68
- }
69
86
  }
70
87
  dispose() {
71
- this.unapply();
88
+ this.unapply(true);
72
89
  for (const effect of this._effects) {
73
- effect.dispose();
90
+ effect.effect.dispose();
74
91
  }
75
92
  this._effects.length = 0;
76
93
  this._composer = null;
@@ -118,10 +135,19 @@ export class PostProcessingHandler {
118
135
  if (!res)
119
136
  continue;
120
137
  if (Array.isArray(res)) {
121
- this._effects.push(...res);
138
+ for (const effect of res) {
139
+ this._effects.push({
140
+ effect,
141
+ priority: component.order
142
+ });
143
+ }
144
+ }
145
+ else {
146
+ this._effects.push({
147
+ effect: res,
148
+ priority: component.order
149
+ });
122
150
  }
123
- else
124
- this._effects.push(res);
125
151
  }
126
152
  }
127
153
  else {
@@ -129,20 +155,32 @@ export class PostProcessingHandler {
129
155
  showBalloonWarning("Volume component is not a VolumeComponent: " + component["__type"]);
130
156
  }
131
157
  }
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
158
  this.applyEffects(context);
140
159
  }
160
+ _anyPassHasDepth = false;
161
+ _anyPassHasNormal = false;
162
+ _hasSmaaEffect = false;
163
+ get anyPassHasDepth() { return this._anyPassHasDepth; }
164
+ get anyPassHasNormal() { return this._anyPassHasNormal; }
165
+ get hasSmaaEffect() { return this._hasSmaaEffect; }
166
+ _customInputBuffer = null;
167
+ _customInputBufferId = 0;
168
+ _multisampling = 0;
169
+ set multisampling(value) {
170
+ this._multisampling = value;
171
+ }
172
+ get multisampling() {
173
+ return this._multisampling;
174
+ }
141
175
  /** Build composer passes */
142
176
  applyEffects(context) {
143
- const effectsOrPasses = this._effects;
144
- if (effectsOrPasses.length <= 0)
177
+ // Reset state
178
+ this._anyPassHasDepth = false;
179
+ this._anyPassHasNormal = false;
180
+ this._hasSmaaEffect = false;
181
+ if (this._effects.length <= 0) {
145
182
  return;
183
+ }
146
184
  const camera = context.mainCameraComponent;
147
185
  const renderer = context.renderer;
148
186
  const scene = context.scene;
@@ -150,7 +188,24 @@ export class PostProcessingHandler {
150
188
  // Store the auto clear setting because the postprocessing composer just disables it
151
189
  // and when we disable postprocessing we want to restore the original setting
152
190
  // https://github.com/pmndrs/postprocessing/blob/271944b74b543a5b743a62803a167b60cc6bb4ee/src/core/EffectComposer.js#L230C12-L230C12
191
+ // First we need to get the previously set autoClear setting, if it exists
192
+ if (typeof renderer[autoclearSetting] === "boolean") {
193
+ renderer.autoClear = renderer[autoclearSetting];
194
+ }
153
195
  renderer[autoclearSetting] = renderer.autoClear;
196
+ if (typeof renderer[previousToneMapping] === "number") {
197
+ renderer.toneMapping = renderer[previousToneMapping];
198
+ }
199
+ renderer[previousToneMapping] = renderer.toneMapping;
200
+ // Ensure that we have a tonemapping effect if the renderer is set to use a tone mapping
201
+ if (renderer.toneMapping != NoToneMapping) {
202
+ if (!this._effects.find(e => e instanceof MODULES.POSTPROCESSING.MODULE.ToneMappingEffect)) {
203
+ const tonemapping = new MODULES.POSTPROCESSING.MODULE.ToneMappingEffect();
204
+ tonemapping.name = `ToneMapping (${renderer.toneMapping})`;
205
+ tonemapping.mode = threeToneMappingToEffectMode(renderer.toneMapping);
206
+ this._effects.push({ effect: tonemapping, priority: PostProcessingEffectOrder.ToneMapping });
207
+ }
208
+ }
154
209
  // create composer and set active on context
155
210
  if (!this._composer) {
156
211
  // const hdrRenderTarget = new WebGLRenderTarget(window.innerWidth, window.innerHeight, { type: HalfFloatType });
@@ -167,65 +222,183 @@ export class PostProcessingHandler {
167
222
  composer.setMainCamera(cam);
168
223
  composer.setRenderer(renderer);
169
224
  composer.setMainScene(scene);
225
+ 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)
226
+ composer.multisampling = 0; // Disable multisampling by default
170
227
  for (const prev of composer.passes)
171
228
  prev.dispose();
172
229
  composer.removeAllPasses();
173
230
  // Render to screen pass
174
231
  const screenpass = new MODULES.POSTPROCESSING.MODULE.RenderPass(scene, cam);
175
- screenpass.name = "Render To Screen";
232
+ screenpass.name = "RenderPass";
176
233
  screenpass.mainScene = scene;
177
234
  composer.addPass(screenpass);
178
- const automaticEffectsOrdering = true;
179
- if (automaticEffectsOrdering && !dontMergePasses) {
180
- try {
181
- this.orderEffects();
182
- const effects = [];
183
- for (const ef of effectsOrPasses) {
184
- if (ef instanceof MODULES.POSTPROCESSING.MODULE.Effect)
185
- effects.push(ef);
186
- else if (ef instanceof MODULES.POSTPROCESSING.MODULE.Pass) {
187
- composer.addPass(ef);
188
- }
189
- else {
190
- // seems some effects are not correctly typed, but three can deal with them,
191
- // so we might need to just pass them through
192
- composer.addPass(ef);
193
- }
194
- }
195
- // create and apply uber pass
196
- if (effects.length > 0) {
197
- const pass = new MODULES.POSTPROCESSING.MODULE.EffectPass(cam, ...effects);
198
- pass.name = effects.map(e => e.name).join(" ");
199
- pass.mainScene = scene;
200
- pass.enabled = true;
201
- composer.addPass(pass);
235
+ const screenPassRender = screenpass.render;
236
+ this._customInputBuffer?.dispose();
237
+ this._customInputBuffer = null;
238
+ screenpass.render = (renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) => {
239
+ if (!inputBuffer)
240
+ return;
241
+ // screenPassRender.call(screenpass, renderer, inputBuffer, outputBuffer, deltaTime, stencilTest);
242
+ // return;
243
+ // 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
244
+ inputBuffer.samples = 0;
245
+ if (outputBuffer) {
246
+ outputBuffer.samples = 0;
247
+ }
248
+ // Make sure the input buffer is a WebGLRenderTarget with the correct settings
249
+ if (!this._customInputBuffer
250
+ || this._customInputBuffer.width !== inputBuffer.width
251
+ || this._customInputBuffer.height !== inputBuffer.height
252
+ || this._customInputBuffer.samples !== this._multisampling
253
+ || this._customInputBuffer.texture.format !== inputBuffer.texture.format
254
+ || this._customInputBuffer.texture.type !== HalfFloatType) {
255
+ this._customInputBuffer?.dispose();
256
+ this._customInputBuffer = new WebGLRenderTarget(inputBuffer.width, inputBuffer.height, {
257
+ format: inputBuffer.texture.format,
258
+ type: HalfFloatType,
259
+ depthBuffer: inputBuffer.depthBuffer,
260
+ depthTexture: inputBuffer.depthTexture
261
+ ? new DepthTexture(inputBuffer.width, inputBuffer.height)
262
+ : undefined,
263
+ stencilBuffer: inputBuffer.stencilBuffer,
264
+ samples: Math.max(0, this._multisampling),
265
+ minFilter: inputBuffer.texture.minFilter ?? LinearFilter,
266
+ magFilter: inputBuffer.texture.magFilter ?? LinearFilter,
267
+ generateMipmaps: inputBuffer.texture.generateMipmaps,
268
+ });
269
+ this._customInputBufferId++;
270
+ this._customInputBuffer.texture.name = `CustomInputBuffer-${this._customInputBufferId}`;
271
+ if (this._customInputBuffer.depthTexture && inputBuffer.depthTexture) {
272
+ this._customInputBuffer.depthTexture.format = inputBuffer.depthTexture.format;
273
+ this._customInputBuffer.depthTexture.type = inputBuffer.depthTexture.type;
202
274
  }
275
+ // https://github.com/pmndrs/postprocessing/blob/ad338df710ef41fee4e5d10ad2c2c299030d46ef/src/core/EffectComposer.js#L366
276
+ if (this._customInputBuffer.samples > 0)
277
+ this._customInputBuffer.ignoreDepthForMultisampleCopy = false;
278
+ if (debug)
279
+ console.warn(`[PostProcessing] Input buffer created with size ${this._customInputBuffer.width}x${this._customInputBuffer.height} and samples ${this._customInputBuffer.samples}`);
203
280
  }
204
- catch (e) {
205
- console.error("Error while applying postprocessing effects", e);
206
- composer.removeAllPasses();
281
+ // Calling the original render function with the input buffer
282
+ screenPassRender.call(screenpass, renderer, this._customInputBuffer, outputBuffer, deltaTime, stencilTest);
283
+ // Blit the resulting buffer to the input buffer passed in by the composer so it's used for subsequent effects
284
+ Graphics.blit(this._customInputBuffer.texture, inputBuffer, {
285
+ renderer,
286
+ depthTexture: this._customInputBuffer.depthTexture,
287
+ depthWrite: true,
288
+ depthTest: true,
289
+ });
290
+ };
291
+ try {
292
+ orderEffects(this._effects);
293
+ let foundTonemappingEffect = false;
294
+ let activeTonemappingEffect = null;
295
+ for (let i = this._effects.length - 1; i >= 0; i--) {
296
+ const ef = this._effects[i].effect;
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
+ if (debug)
301
+ console.warn(`[PostProcessing] Found multiple tonemapping effects in the scene: ${ef.name} and ${activeTonemappingEffect?.name}. Only the last one added will be used.`);
302
+ this._effects.splice(i, 1);
303
+ continue;
304
+ }
305
+ activeTonemappingEffect = ef;
306
+ foundTonemappingEffect = true;
307
+ }
207
308
  }
208
- }
209
- else {
210
- // we still want to sort passes, but we do not want to merge them for debugging
211
- if (automaticEffectsOrdering)
212
- this.orderEffects();
213
- for (const ef of effectsOrPasses) {
309
+ const effectsToMerge = [];
310
+ let hasConvolutionEffectInArray = false;
311
+ for (const entry of this._effects) {
312
+ const ef = entry.effect;
313
+ if (ef instanceof MODULES.POSTPROCESSING.MODULE.SMAAEffect) {
314
+ this._hasSmaaEffect = true;
315
+ }
316
+ else if (ef instanceof MODULES.POSTPROCESSING.MODULE.NormalPass) {
317
+ this._anyPassHasNormal = true;
318
+ }
319
+ // There can be only one tonemapping effect in the scene, so we can skip all others
320
+ if (ef instanceof MODULES.POSTPROCESSING.MODULE.ToneMappingEffect && activeTonemappingEffect !== ef) {
321
+ // If we already have a tonemapping effect, we can skip this one
322
+ continue;
323
+ }
324
+ // We can also not merge multiple effects of the same type in one pass
325
+ // So we first need to create a new pass with whatever effects we have so far
326
+ // 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
327
+ // const constructor = ef.constructor as Constructor<Effect | Pass>;
328
+ // if(effectsToMerge.find(e => e.constructor === constructor)) {
329
+ // // this.createPassForMergeableEffects(effectsToMerge, composer, cam, scene);
330
+ // }
214
331
  if (ef instanceof MODULES.POSTPROCESSING.MODULE.Effect) {
215
- const pass = new MODULES.POSTPROCESSING.MODULE.EffectPass(cam, ef);
216
- pass.name = ef.name;
217
- composer.addPass(pass);
332
+ const attributes = ef.getAttributes();
333
+ const convolution = MODULES.POSTPROCESSING.MODULE.EffectAttribute.CONVOLUTION;
334
+ if (attributes & convolution) {
335
+ if (debug)
336
+ console.log("[PostProcessing] Convolution effect: " + ef.name);
337
+ if (hasConvolutionEffectInArray) {
338
+ if (debug)
339
+ console.log("[PostProcessing] Merging effects with convolution", effectsToMerge.map(e => e.name).join(", "));
340
+ this.createPassForMergeableEffects(effectsToMerge, composer, cam, scene);
341
+ }
342
+ hasConvolutionEffectInArray = true;
343
+ }
344
+ // Otherwise we can merge it
345
+ effectsToMerge.push(ef);
218
346
  }
219
- else if (ef instanceof MODULES.POSTPROCESSING.MODULE.Pass)
347
+ else if (ef instanceof MODULES.POSTPROCESSING.MODULE.Pass) {
348
+ hasConvolutionEffectInArray = false;
349
+ this.createPassForMergeableEffects(effectsToMerge, composer, cam, scene);
350
+ ef.renderToScreen = false;
220
351
  composer.addPass(ef);
221
- else
352
+ }
353
+ else {
222
354
  // seems some effects are not correctly typed, but three can deal with them,
223
- // so we just pass them through
355
+ // so we might need to just pass them through
356
+ hasConvolutionEffectInArray = false;
357
+ this.createPassForMergeableEffects(effectsToMerge, composer, cam, scene);
224
358
  composer.addPass(ef);
359
+ }
360
+ }
361
+ this.createPassForMergeableEffects(effectsToMerge, composer, cam, scene);
362
+ }
363
+ catch (e) {
364
+ console.error("Error while applying postprocessing effects", e);
365
+ composer.removeAllPasses();
366
+ }
367
+ // 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)
368
+ for (let i = 0; i < composer.passes.length; i++) {
369
+ const pass = composer.passes[i];
370
+ const isLast = i === composer.passes.length - 1;
371
+ if (pass?.configuration !== undefined) {
372
+ pass.configuration.gammaCorrection = isLast;
373
+ }
374
+ else if ("autosetGamma" in pass) {
375
+ // Some effects have a autosetGamma property that we can use to set the gamma correction
376
+ pass.autosetGamma = isLast;
225
377
  }
378
+ this._anyPassHasDepth ||= pass.needsDepthTexture;
379
+ }
380
+ // DEBUG LAND BELOW
381
+ if (debug)
382
+ console.log("[PostProcessing] Passes →", [...composer.passes], "\n---------------------------------\n• " + composer.passes.map(i => i.name).join("\n• ") + "\n");
383
+ if (debug)
384
+ this._onCreateEffectsDebug(this._composer, cam);
385
+ }
386
+ /** Should be called before `composer.addPass()` to create an effect pass with all previously collected effects that can be merged up to that point */
387
+ createPassForMergeableEffects(effects, composer, camera, scene) {
388
+ if (effects.length > 0) {
389
+ const pass = new MODULES.POSTPROCESSING.MODULE.EffectPass(camera, ...effects);
390
+ pass.name = effects.map(e => e.name).join(", ");
391
+ pass.mainScene = scene;
392
+ pass.enabled = true;
393
+ pass.renderToScreen = false;
394
+ composer.addPass(pass);
395
+ effects.length = 0; // Clear effects after adding them to the pass
226
396
  }
227
- if (debug) {
228
- console.log("[PostProcessing] Passes →", composer.passes);
397
+ }
398
+ _menuEntry = null;
399
+ _passIndices = null;
400
+ _onCreateEffectsDebug(composer, cam) {
401
+ if (debug === "passes") {
229
402
  // DepthEffect for debugging purposes, disabled by default, can be selected in the debug pass select
230
403
  const depthEffect = new MODULES.POSTPROCESSING.MODULE.DepthEffect({
231
404
  blendFunction: MODULES.POSTPROCESSING.MODULE.BlendFunction.NORMAL,
@@ -281,71 +454,10 @@ export class PostProcessingHandler {
281
454
  else {
282
455
  this._passIndices = indices;
283
456
  }
284
- this.applyEffects(context);
457
+ this.applyEffects(this.context);
285
458
  });
286
459
  }
287
460
  }
288
461
  }
289
- _menuEntry = null;
290
- _passIndices = null;
291
- orderEffects() {
292
- if (debug)
293
- console.log("Before ordering effects", [...this._effects]);
294
- // Order of effects for correct results.
295
- // Aligned with https://github.com/pmndrs/postprocessing/wiki/Effect-Merging#effect-execution-order
296
- // We can not put this into global scope because then the module might not yet be initialized
297
- effectsOrder ??= [
298
- MODULES.POSTPROCESSING.MODULE.NormalPass,
299
- MODULES.POSTPROCESSING.MODULE.DepthDownsamplingPass,
300
- MODULES.POSTPROCESSING.MODULE.SMAAEffect,
301
- MODULES.POSTPROCESSING.MODULE.SSAOEffect,
302
- MODULES.POSTPROCESSING_AO.MODULE.N8AOPostPass,
303
- MODULES.POSTPROCESSING.MODULE.TiltShiftEffect,
304
- MODULES.POSTPROCESSING.MODULE.DepthOfFieldEffect,
305
- MODULES.POSTPROCESSING.MODULE.ChromaticAberrationEffect,
306
- MODULES.POSTPROCESSING.MODULE.BloomEffect,
307
- MODULES.POSTPROCESSING.MODULE.SelectiveBloomEffect,
308
- MODULES.POSTPROCESSING.MODULE.VignetteEffect,
309
- MODULES.POSTPROCESSING.MODULE.PixelationEffect,
310
- MODULES.POSTPROCESSING.MODULE.ToneMappingEffect,
311
- MODULES.POSTPROCESSING.MODULE.HueSaturationEffect,
312
- MODULES.POSTPROCESSING.MODULE.BrightnessContrastEffect,
313
- // __SHARPENING_MODULE._SharpeningEffect,
314
- ];
315
- // TODO: enforce correct order of effects (e.g. DOF before Bloom)
316
- const effects = this._effects;
317
- effects.sort((a, b) => {
318
- // we use find index here because sometimes constructor names are prefixed with `_`
319
- // 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)
320
- const aidx = effectsOrder.findIndex(e => a.constructor.name.endsWith(e.name));
321
- const bidx = effectsOrder.findIndex(e => b.constructor.name.endsWith(e.name));
322
- // Unknown effects should be rendered first
323
- if (aidx < 0) {
324
- if (debug)
325
- console.warn("Unknown effect found: ", a.constructor.name);
326
- return -1;
327
- }
328
- else if (bidx < 0) {
329
- if (debug)
330
- console.warn("Unknown effect found: ", b.constructor.name);
331
- return 1;
332
- }
333
- if (aidx < 0)
334
- return 1;
335
- if (bidx < 0)
336
- return -1;
337
- return aidx - bidx;
338
- });
339
- if (debug)
340
- console.log("After ordering effects", [...this._effects]);
341
- for (let i = 0; i < effects.length; i++) {
342
- const effect = effects[i];
343
- if (effect?.configuration?.gammaCorrection !== undefined) {
344
- const isLast = i === effects.length - 1;
345
- effect.configuration.gammaCorrection = isLast;
346
- }
347
- }
348
- }
349
462
  }
350
- let effectsOrder = null;
351
463
  //# sourceMappingURL=PostProcessingHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PostProcessingHandler.js","sourceRoot":"","sources":["../../../src/engine-components/postprocessing/PostProcessingHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,gFAAgF;AAChF,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAGzD,OAAO,EAAmB,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAKzE,UAAU,CAAC,2BAA2B,CAAC,GAAG,UAAU,CAAC,2BAA2B,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAGjJ,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;AACpC,MAAM,eAAe,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAEpD,MAAM,SAAS,GAAG,MAAM,CAAC,+BAA+B,CAAC,CAAC;AAC1D,MAAM,gBAAgB,GAAG,MAAM,CAAC,iCAAiC,CAAC,CAAC;AAEnE;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAEtB,SAAS,GAA0B,IAAI,CAAC;IACxC,qBAAqB,CAA0B;IAC/C,QAAQ,GAAyB,EAAE,CAAC;IAE5C,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAEO,SAAS,GAAY,KAAK,CAAC;IAClB,OAAO,CAAU;IAElC,YAAY,OAAgB;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,UAAkC;QACpC,IAAI,KAAK,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,8BAA8B,KAAK,OAAO,EAAE;YACpF,IAAI,KAAK;gBAAE,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;;gBACtE,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACtE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC5B;QACD,IAAI,CAAC,yBAAyB,EAAE;YAC5B,IAAI,KAAK;gBAAE,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;;gBAChF,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;YACjE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC5B;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;IAED,OAAO;QACH,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QAC5D,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC5B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,qBAAqB,EAAE;gBAChD,SAAS,CAAC,OAAO,EAAE,CAAC;aACvB;YACD,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;SACzC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAiC,CAAC;QAClE,IAAI,MAAM,KAAK,IAAI,EAAE;YACjB,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;SAC7B;QACD,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;YACrC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;YAC5B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;SAC3B;QACD,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,SAAS,EAAE;YACzD,OAAO,CAAC,QAAQ,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;SACnE;IACL,CAAC;IAED,OAAO;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;YAChC,MAAM,CAAC,OAAO,EAAE,CAAC;SACpB;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,OAAgB,EAAE,UAAkC;QAEtE,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,YAAY;QACZ,0FAA0F;QAC1F,MAAM,OAAO,CAAC,GAAG,CAAC;YACd,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE;YAC7B,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE;YAChC,wCAAwC;SAC3C,CAAC,CAAC;QAEH,QAAQ;QACR,sDAAsD;QACtD,IAAI;QACJ,gBAAgB;QAChB,0BAA0B;QAC1B,IAAI;QAEJ,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;QAE1B,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,UAAU,CAAC,CAAC;QAEnE,IAAI,CAAC,qBAAqB,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;QAE7C,8DAA8D;QAC9D,4CAA4C;QAC5C,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAGzB,2FAA2F;QAC3F,MAAM,GAAG,GAAgC;YACrC,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI,CAAC,qBAAqB;SACzC,CAAA;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxD,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAChD,YAAY;YACZ,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;YAC5B,IAAI,SAAS,CAAC,KAAK,EAAE;gBACjB,IAAI,SAAS,CAAC,MAAM,EAAE;oBAClB,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;wBAC9B,OAAO,CAAC,KAAK,CAAC,mFAAmF,CAAC,CAAC;wBACnG,OAAO;qBACV;oBACD,2BAA2B;oBAC3B,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACjC,IAAI,CAAC,GAAG;wBAAE,SAAS;oBACnB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;wBACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;qBAC9B;;wBACI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBAChC;aACJ;iBACI;gBACD,IAAI,SAAS,CAAC,MAAM;oBAChB,kBAAkB,CAAC,6CAA6C,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;aAC/F;SACJ;QAED,wFAAwF;QACxF,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,IAAI,aAAa,EAAE;YACpD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE;gBACxF,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAC1E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aACnC;SACJ;QAED,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAGD,4BAA4B;IACpB,YAAY,CAAC,OAAgB;QAEjC,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEtC,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO;QAExC,MAAM,MAAM,GAAG,OAAO,CAAC,mBAA6B,CAAC;QACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC;QAE/B,oFAAoF;QACpF,6EAA6E;QAC7E,oIAAoI;QACpI,QAAQ,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC;QAEhD,4CAA4C;QAC5C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,iHAAiH;YACjH,IAAI,CAAC,SAAS,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE;gBACxE,eAAe,EAAE,aAAa;gBAC9B,aAAa,EAAE,IAAI;aACtB,CAAC,CAAC;SACN;QAED,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;YACzD,OAAO,CAAC,IAAI,CAAC,mMAAmM,CAAC,CAAC;SACrN;QACD,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5B,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC/B,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAE7B,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,MAAM;YAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,QAAQ,CAAC,eAAe,EAAE,CAAC;QAE3B,wBAAwB;QACxB,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC5E,UAAU,CAAC,IAAI,GAAG,kBAAkB,CAAC;QACrC,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC;QAC7B,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE7B,MAAM,wBAAwB,GAAG,IAAI,CAAC;QACtC,IAAI,wBAAwB,IAAI,CAAC,eAAe,EAAE;YAC9C,IAAI;gBACA,IAAI,CAAC,YAAY,EAAE,CAAC;gBAEpB,MAAM,OAAO,GAAkB,EAAE,CAAC;gBAElC,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE;oBAC9B,IAAI,EAAE,YAAY,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM;wBAClD,OAAO,CAAC,IAAI,CAAC,EAAY,CAAC,CAAC;yBAC1B,IAAI,EAAE,YAAY,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE;wBACvD,QAAQ,CAAC,OAAO,CAAC,EAAU,CAAC,CAAC;qBAChC;yBACI;wBACD,4EAA4E;wBAC5E,6CAA6C;wBAC7C,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;qBACxB;iBACJ;gBAED,6BAA6B;gBAC7B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;oBACpB,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC;oBAC3E,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC/C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;oBACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC1B;aACJ;YACD,OAAO,CAAC,EAAE;gBACN,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,CAAC,CAAC,CAAC;gBAChE,QAAQ,CAAC,eAAe,EAAE,CAAC;aAC9B;SACJ;aACI;YACD,+EAA+E;YAC/E,IAAI,wBAAwB;gBACxB,IAAI,CAAC,YAAY,EAAE,CAAC;YAExB,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE;gBAC9B,IAAI,EAAE,YAAY,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE;oBACpD,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,EAAY,CAAC,CAAC;oBAC7E,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;oBACpB,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC1B;qBACI,IAAI,EAAE,YAAY,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI;oBACrD,QAAQ,CAAC,OAAO,CAAC,EAAU,CAAC,CAAC;;oBAE7B,4EAA4E;oBAC5E,+BAA+B;oBAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;aAC5B;SACJ;QAED,IAAI,KAAK,EAAE;YAEP,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YAE1D,oGAAoG;YACpG,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC9D,aAAa,EAAE,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM;gBACjE,QAAQ,EAAE,IAAI;aACjB,CAAC,CAAC;YACH,WAAW,CAAC,IAAI,GAAG,cAAc,CAAC;YAClC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YACjF,SAAS,CAAC,IAAI,GAAG,mBAAmB,CAAC;YACrC,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;YAC1B,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEhC,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;gBAC5B,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC9B,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY;yBAC9B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;yBACpB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;yBACpC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CACxB,CAAC;iBACL;gBACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;oBACtB,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,SAAS,CAAC,CAAC;iBAClE;gBACD,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC3B,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;oBAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,CAAC,6CAA6C;oBAC1E,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC1B;aACJ;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAC/B,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;gBACpC,IAAI,IAAI,CAAC,UAAU;oBACf,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;gBAE7B,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAChD,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACvB,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACpD,UAAU,CAAC,SAAS,GAAG,cAAc,CAAC;gBACtC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;gBACxB,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBAC/B,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE;oBAC/B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAC7C,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC;oBACzB,GAAG,CAAC,KAAK,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC9C,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC;oBACrB,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;iBAC3B;gBACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACzB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;gBACzB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;oBACnC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;oBACzF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;wBAC3C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;qBAC5B;yBACI;wBACD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;qBAC/B;oBAED,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAC/B,CAAC,CAAC,CAAC;aACN;SACJ;IACL,CAAC;IAEO,UAAU,GAA6B,IAAI,CAAC;IAC5C,YAAY,GAAoB,IAAI,CAAC;IAErC,YAAY;QAChB,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAItE,wCAAwC;QACxC,mGAAmG;QACnG,6FAA6F;QAC7F,YAAY,KAAK;YACb,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU;YACxC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,qBAAqB;YACnD,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU;YACxC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU;YACxC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY;YAC7C,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,eAAe;YAC7C,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,kBAAkB;YAChD,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,yBAAyB;YACvD,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW;YACzC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,oBAAoB;YAClD,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc;YAC5C,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,gBAAgB;YAC9C,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,iBAAiB;YAC/C,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,mBAAmB;YACjD,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,wBAAwB;YACtD,yCAAyC;SAC5C,CAAC;QAGF,iEAAiE;QACjE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAClB,mFAAmF;YACnF,8IAA8I;YAC9I,MAAM,IAAI,GAAG,YAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/E,MAAM,IAAI,GAAG,YAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/E,2CAA2C;YAC3C,IAAI,IAAI,GAAG,CAAC,EAAE;gBACV,IAAI,KAAK;oBAAE,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACtE,OAAO,CAAC,CAAC,CAAC;aACb;iBACI,IAAI,IAAI,GAAG,CAAC,EAAE;gBACf,IAAI,KAAK;oBAAE,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACtE,OAAO,CAAC,CAAC;aACZ;YACD,IAAI,IAAI,GAAG,CAAC;gBAAE,OAAO,CAAC,CAAC;YACvB,IAAI,IAAI,GAAG,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC;YACxB,OAAO,IAAI,GAAG,IAAI,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAQ,CAAC;YACjC,IAAI,MAAM,EAAE,aAAa,EAAE,eAAe,KAAK,SAAS,EAAE;gBACtD,MAAM,MAAM,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;gBACxC,MAAM,CAAC,aAAa,CAAC,eAAe,GAAG,MAAM,CAAC;aACjD;SACJ;IACL,CAAC;CACJ;AAED,IAAI,YAAY,GAA6C,IAAI,CAAC"}
1
+ {"version":3,"file":"PostProcessingHandler.js","sourceRoot":"","sources":["../../../src/engine-components/postprocessing/PostProcessingHandler.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,8 @@ export declare class Volume extends Behaviour implements IEditorModificationRece
37
37
  get isPostProcessingManager(): boolean;
38
38
  /** Currently active postprocessing effects */
39
39
  get effects(): PostProcessingEffect[];
40
+ get dirty(): boolean;
41
+ set dirty(value: boolean);
40
42
  sharedProfile?: VolumeProfile;
41
43
  /**
42
44
  * Set multisampling to "auto" to automatically adjust the multisampling level based on performance.
@@ -78,7 +80,6 @@ export declare class Volume extends Behaviour implements IEditorModificationRece
78
80
  private _rapidApplyCount;
79
81
  private _isDirty;
80
82
  private apply;
81
- private unapply;
82
83
  private _applyPostQueue;
83
84
  /** called from needle editor sync package if its active */
84
85
  onEditorModification(modification: EditorModification): void | boolean | undefined;