@needle-tools/engine 4.6.1 → 4.6.2-next.fb486b2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/generateMeshBVH.worker-BaNp_Xtp.js +25 -0
- package/dist/{gltf-progressive-Bm9eEfgu.min.js → gltf-progressive-Bl4okF1b.min.js} +1 -1
- package/dist/{gltf-progressive-GjIqwSG3.js → gltf-progressive-DSpdn0QT.js} +2 -2
- package/dist/{gltf-progressive-Dn6o99rH.umd.cjs → gltf-progressive-P8b8a0qY.umd.cjs} +1 -1
- package/dist/needle-engine.bundle-CJ4jhuta.min.js +1575 -0
- package/dist/{needle-engine.bundle-BVg46UWZ.js → needle-engine.bundle-CQzZighj.js} +9722 -9554
- package/dist/needle-engine.bundle-CdAK5p8o.umd.cjs +1575 -0
- package/dist/needle-engine.js +352 -351
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/dist/{postprocessing-CRQa6Qxn.umd.cjs → postprocessing-CjW23fio.umd.cjs} +18 -18
- package/dist/{postprocessing-D6W1EyZ-.js → postprocessing-DYLNOL3W.js} +4 -3
- package/dist/{postprocessing-DF8AlRgW.min.js → postprocessing-xYQWCHFu.min.js} +26 -26
- package/dist/{three-DMrv-4ar.umd.cjs → three-B_hneGZr.umd.cjs} +4 -4
- package/dist/{three-Bz6X1mrw.js → three-DrqIzZTH.js} +4198 -4198
- package/dist/{three-Boa-jOq-.min.js → three-DuDKwKB8.min.js} +33 -33
- package/dist/{three-examples-GggCDHv0.js → three-examples-B50TT3Iu.js} +5 -5
- package/dist/{three-examples-DuVhxqft.min.js → three-examples-DaDLBuy6.min.js} +14 -14
- package/dist/{three-examples-C7ryg8vN.umd.cjs → three-examples-X3OadjXB.umd.cjs} +3 -3
- package/dist/{three-mesh-ui-CY6Izc7C.min.js → three-mesh-ui-B3p3gyUz.min.js} +1 -1
- package/dist/{three-mesh-ui-CwlN0FUC.umd.cjs → three-mesh-ui-CQiIQIlA.umd.cjs} +1 -1
- package/dist/{three-mesh-ui-CLNOfsWn.js → three-mesh-ui-CxuWt7m-.js} +1 -1
- package/dist/{vendor-zxXa3Dmr.min.js → vendor-BlSxe9JJ.min.js} +3 -3
- package/dist/{vendor-BSD1RQIh.js → vendor-BmYIgaS1.js} +3 -3
- package/dist/{vendor-DHr4aqIZ.umd.cjs → vendor-Cavtu3CP.umd.cjs} +3 -3
- package/lib/engine/engine_context.d.ts +4 -1
- package/lib/engine/engine_context.js +9 -2
- package/lib/engine/engine_context.js.map +1 -1
- package/lib/engine/engine_three_utils.d.ts +17 -14
- package/lib/engine/engine_three_utils.js +106 -53
- package/lib/engine/engine_three_utils.js.map +1 -1
- package/lib/engine/engine_tonemapping.d.ts +4 -0
- package/lib/engine/engine_tonemapping.js +21 -18
- package/lib/engine/engine_tonemapping.js.map +1 -1
- package/lib/engine/engine_utils.js.map +1 -1
- package/lib/engine/engine_utils_screenshot.d.ts +1 -1
- package/lib/engine/engine_utils_screenshot.js +11 -2
- package/lib/engine/engine_utils_screenshot.js.map +1 -1
- package/lib/engine/webcomponents/needle-engine.d.ts +4 -1
- package/lib/engine/webcomponents/needle-engine.extras.js +3 -3
- package/lib/engine/webcomponents/needle-engine.extras.js.map +1 -1
- package/lib/engine/webcomponents/needle-engine.js +11 -21
- package/lib/engine/webcomponents/needle-engine.js.map +1 -1
- package/lib/engine-components/CameraUtils.js.map +1 -1
- package/lib/engine-components/postprocessing/Effects/Antialiasing.js +3 -1
- package/lib/engine-components/postprocessing/Effects/Antialiasing.js.map +1 -1
- package/lib/engine-components/postprocessing/Effects/BloomEffect.d.ts +2 -2
- package/lib/engine-components/postprocessing/Effects/BloomEffect.js +2 -2
- package/lib/engine-components/postprocessing/Effects/ColorAdjustments.d.ts +8 -0
- package/lib/engine-components/postprocessing/Effects/ColorAdjustments.js +27 -8
- package/lib/engine-components/postprocessing/Effects/ColorAdjustments.js.map +1 -1
- package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.js +1 -0
- package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.js.map +1 -1
- package/lib/engine-components/postprocessing/Effects/Sharpening.d.ts +1 -0
- package/lib/engine-components/postprocessing/Effects/Sharpening.js +4 -0
- package/lib/engine-components/postprocessing/Effects/Sharpening.js.map +1 -1
- package/lib/engine-components/postprocessing/Effects/Tonemapping.d.ts +2 -9
- package/lib/engine-components/postprocessing/Effects/Tonemapping.js +23 -71
- package/lib/engine-components/postprocessing/Effects/Tonemapping.js.map +1 -1
- package/lib/engine-components/postprocessing/Effects/Tonemapping.utils.d.ts +13 -0
- package/lib/engine-components/postprocessing/Effects/Tonemapping.utils.js +52 -0
- package/lib/engine-components/postprocessing/Effects/Tonemapping.utils.js.map +1 -0
- package/lib/engine-components/postprocessing/PostProcessingEffect.d.ts +18 -0
- package/lib/engine-components/postprocessing/PostProcessingEffect.js +22 -3
- package/lib/engine-components/postprocessing/PostProcessingEffect.js.map +1 -1
- package/lib/engine-components/postprocessing/PostProcessingHandler.d.ts +20 -4
- package/lib/engine-components/postprocessing/PostProcessingHandler.js +231 -116
- package/lib/engine-components/postprocessing/PostProcessingHandler.js.map +1 -1
- package/lib/engine-components/postprocessing/Volume.d.ts +2 -1
- package/lib/engine-components/postprocessing/Volume.js +51 -33
- package/lib/engine-components/postprocessing/Volume.js.map +1 -1
- package/lib/engine-components/postprocessing/index.d.ts +1 -0
- package/lib/engine-components/postprocessing/index.js +1 -0
- package/lib/engine-components/postprocessing/index.js.map +1 -1
- package/lib/engine-components/postprocessing/utils.d.ts +44 -0
- package/lib/engine-components/postprocessing/utils.js +82 -0
- package/lib/engine-components/postprocessing/utils.js.map +1 -1
- package/package.json +2 -2
- package/src/engine/engine_context.ts +13 -4
- package/src/engine/engine_three_utils.ts +134 -58
- package/src/engine/engine_tonemapping.ts +23 -24
- package/src/engine/engine_utils.ts +2 -2
- package/src/engine/engine_utils_screenshot.ts +13 -3
- package/src/engine/webcomponents/needle-engine.extras.ts +3 -3
- package/src/engine/webcomponents/needle-engine.ts +14 -25
- package/src/engine-components/CameraUtils.ts +3 -3
- package/src/engine-components/postprocessing/Effects/Antialiasing.ts +3 -1
- package/src/engine-components/postprocessing/Effects/BloomEffect.ts +4 -4
- package/src/engine-components/postprocessing/Effects/ColorAdjustments.ts +24 -13
- package/src/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.ts +1 -0
- package/src/engine-components/postprocessing/Effects/Sharpening.ts +5 -0
- package/src/engine-components/postprocessing/Effects/Tonemapping.ts +26 -80
- package/src/engine-components/postprocessing/Effects/Tonemapping.utils.ts +60 -0
- package/src/engine-components/postprocessing/PostProcessingEffect.ts +23 -3
- package/src/engine-components/postprocessing/PostProcessingHandler.ts +267 -122
- package/src/engine-components/postprocessing/Volume.ts +54 -38
- package/src/engine-components/postprocessing/index.ts +2 -1
- package/src/engine-components/postprocessing/utils.ts +103 -2
- package/dist/generateMeshBVH.worker-Cdfpaq5W.js +0 -25
- package/dist/needle-engine.bundle-AOXFIsYk.umd.cjs +0 -1563
- package/dist/needle-engine.bundle-Dt52m2jf.min.js +0 -1563
|
@@ -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,21 @@ export class PostProcessingHandler {
|
|
|
118
135
|
if (!res)
|
|
119
136
|
continue;
|
|
120
137
|
if (Array.isArray(res)) {
|
|
121
|
-
|
|
138
|
+
for (const effect of res) {
|
|
139
|
+
this._effects.push({
|
|
140
|
+
effect,
|
|
141
|
+
typeName: component.typeName,
|
|
142
|
+
priority: component.order
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
this._effects.push({
|
|
148
|
+
effect: res,
|
|
149
|
+
typeName: component.typeName,
|
|
150
|
+
priority: component.order
|
|
151
|
+
});
|
|
122
152
|
}
|
|
123
|
-
else
|
|
124
|
-
this._effects.push(res);
|
|
125
153
|
}
|
|
126
154
|
}
|
|
127
155
|
else {
|
|
@@ -129,20 +157,32 @@ export class PostProcessingHandler {
|
|
|
129
157
|
showBalloonWarning("Volume component is not a VolumeComponent: " + component["__type"]);
|
|
130
158
|
}
|
|
131
159
|
}
|
|
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
160
|
this.applyEffects(context);
|
|
140
161
|
}
|
|
162
|
+
_anyPassHasDepth = false;
|
|
163
|
+
_anyPassHasNormal = false;
|
|
164
|
+
_hasSmaaEffect = false;
|
|
165
|
+
get anyPassHasDepth() { return this._anyPassHasDepth; }
|
|
166
|
+
get anyPassHasNormal() { return this._anyPassHasNormal; }
|
|
167
|
+
get hasSmaaEffect() { return this._hasSmaaEffect; }
|
|
168
|
+
_customInputBuffer = null;
|
|
169
|
+
_customInputBufferId = 0;
|
|
170
|
+
_multisampling = 0;
|
|
171
|
+
set multisampling(value) {
|
|
172
|
+
this._multisampling = value;
|
|
173
|
+
}
|
|
174
|
+
get multisampling() {
|
|
175
|
+
return this._multisampling;
|
|
176
|
+
}
|
|
141
177
|
/** Build composer passes */
|
|
142
178
|
applyEffects(context) {
|
|
143
|
-
|
|
144
|
-
|
|
179
|
+
// Reset state
|
|
180
|
+
this._anyPassHasDepth = false;
|
|
181
|
+
this._anyPassHasNormal = false;
|
|
182
|
+
this._hasSmaaEffect = false;
|
|
183
|
+
if (this._effects.length <= 0) {
|
|
145
184
|
return;
|
|
185
|
+
}
|
|
146
186
|
const camera = context.mainCameraComponent;
|
|
147
187
|
const renderer = context.renderer;
|
|
148
188
|
const scene = context.scene;
|
|
@@ -150,7 +190,28 @@ export class PostProcessingHandler {
|
|
|
150
190
|
// Store the auto clear setting because the postprocessing composer just disables it
|
|
151
191
|
// and when we disable postprocessing we want to restore the original setting
|
|
152
192
|
// https://github.com/pmndrs/postprocessing/blob/271944b74b543a5b743a62803a167b60cc6bb4ee/src/core/EffectComposer.js#L230C12-L230C12
|
|
193
|
+
// First we need to get the previously set autoClear setting, if it exists
|
|
194
|
+
if (typeof renderer[autoclearSetting] === "boolean") {
|
|
195
|
+
renderer.autoClear = renderer[autoclearSetting];
|
|
196
|
+
}
|
|
153
197
|
renderer[autoclearSetting] = renderer.autoClear;
|
|
198
|
+
if (typeof renderer[previousToneMapping] === "number") {
|
|
199
|
+
renderer.toneMapping = renderer[previousToneMapping];
|
|
200
|
+
}
|
|
201
|
+
renderer[previousToneMapping] = renderer.toneMapping;
|
|
202
|
+
// Ensure that we have a tonemapping effect if the renderer is set to use a tone mapping
|
|
203
|
+
if (renderer.toneMapping != NoToneMapping) {
|
|
204
|
+
if (!this._effects.find(e => e instanceof MODULES.POSTPROCESSING.MODULE.ToneMappingEffect)) {
|
|
205
|
+
const tonemapping = new MODULES.POSTPROCESSING.MODULE.ToneMappingEffect();
|
|
206
|
+
tonemapping.name = `ToneMapping (${renderer.toneMapping})`;
|
|
207
|
+
tonemapping.mode = threeToneMappingToEffectMode(renderer.toneMapping);
|
|
208
|
+
this._effects.push({
|
|
209
|
+
typeName: "ToneMapping",
|
|
210
|
+
effect: tonemapping,
|
|
211
|
+
priority: PostProcessingEffectOrder.ToneMapping
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
}
|
|
154
215
|
// create composer and set active on context
|
|
155
216
|
if (!this._composer) {
|
|
156
217
|
// const hdrRenderTarget = new WebGLRenderTarget(window.innerWidth, window.innerHeight, { type: HalfFloatType });
|
|
@@ -168,79 +229,171 @@ export class PostProcessingHandler {
|
|
|
168
229
|
composer.setRenderer(renderer);
|
|
169
230
|
composer.setMainScene(scene);
|
|
170
231
|
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)
|
|
232
|
+
composer.multisampling = 0; // Disable multisampling by default
|
|
171
233
|
for (const prev of composer.passes)
|
|
172
234
|
prev.dispose();
|
|
173
235
|
composer.removeAllPasses();
|
|
174
236
|
// Render to screen pass
|
|
175
237
|
const screenpass = new MODULES.POSTPROCESSING.MODULE.RenderPass(scene, cam);
|
|
176
|
-
screenpass.name = "
|
|
238
|
+
screenpass.name = "RenderPass";
|
|
177
239
|
screenpass.mainScene = scene;
|
|
178
240
|
composer.addPass(screenpass);
|
|
179
|
-
const
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
241
|
+
const screenPassRender = screenpass.render;
|
|
242
|
+
this._customInputBuffer?.dispose();
|
|
243
|
+
this._customInputBuffer = null;
|
|
244
|
+
screenpass.render = (renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) => {
|
|
245
|
+
if (!inputBuffer)
|
|
246
|
+
return;
|
|
247
|
+
// screenPassRender.call(screenpass, renderer, inputBuffer, outputBuffer, deltaTime, stencilTest);
|
|
248
|
+
// return;
|
|
249
|
+
// 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
|
|
250
|
+
inputBuffer.samples = 0;
|
|
251
|
+
if (outputBuffer) {
|
|
252
|
+
outputBuffer.samples = 0;
|
|
253
|
+
}
|
|
254
|
+
// Make sure the input buffer is a WebGLRenderTarget with the correct settings
|
|
255
|
+
if (!this._customInputBuffer
|
|
256
|
+
|| this._customInputBuffer.width !== inputBuffer.width
|
|
257
|
+
|| this._customInputBuffer.height !== inputBuffer.height
|
|
258
|
+
|| this._customInputBuffer.samples !== this._multisampling
|
|
259
|
+
|| this._customInputBuffer.texture.format !== inputBuffer.texture.format
|
|
260
|
+
|| this._customInputBuffer.texture.type !== HalfFloatType) {
|
|
261
|
+
this._customInputBuffer?.dispose();
|
|
262
|
+
this._customInputBuffer = new WebGLRenderTarget(inputBuffer.width, inputBuffer.height, {
|
|
263
|
+
format: inputBuffer.texture.format,
|
|
264
|
+
type: HalfFloatType,
|
|
265
|
+
depthBuffer: inputBuffer.depthBuffer,
|
|
266
|
+
depthTexture: inputBuffer.depthTexture
|
|
267
|
+
? new DepthTexture(inputBuffer.width, inputBuffer.height)
|
|
268
|
+
: undefined,
|
|
269
|
+
stencilBuffer: inputBuffer.stencilBuffer,
|
|
270
|
+
samples: Math.max(0, this._multisampling),
|
|
271
|
+
minFilter: inputBuffer.texture.minFilter ?? LinearFilter,
|
|
272
|
+
magFilter: inputBuffer.texture.magFilter ?? LinearFilter,
|
|
273
|
+
generateMipmaps: inputBuffer.texture.generateMipmaps,
|
|
274
|
+
});
|
|
275
|
+
this._customInputBufferId++;
|
|
276
|
+
this._customInputBuffer.texture.name = `CustomInputBuffer-${this._customInputBufferId}`;
|
|
277
|
+
if (this._customInputBuffer.depthTexture && inputBuffer.depthTexture) {
|
|
278
|
+
this._customInputBuffer.depthTexture.format = inputBuffer.depthTexture.format;
|
|
279
|
+
this._customInputBuffer.depthTexture.type = inputBuffer.depthTexture.type;
|
|
206
280
|
}
|
|
281
|
+
// https://github.com/pmndrs/postprocessing/blob/ad338df710ef41fee4e5d10ad2c2c299030d46ef/src/core/EffectComposer.js#L366
|
|
282
|
+
if (this._customInputBuffer.samples > 0)
|
|
283
|
+
this._customInputBuffer.ignoreDepthForMultisampleCopy = false;
|
|
284
|
+
if (debug)
|
|
285
|
+
console.warn(`[PostProcessing] Input buffer created with size ${this._customInputBuffer.width}x${this._customInputBuffer.height} and samples ${this._customInputBuffer.samples}`);
|
|
207
286
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
287
|
+
// Calling the original render function with the input buffer
|
|
288
|
+
screenPassRender.call(screenpass, renderer, this._customInputBuffer, outputBuffer, deltaTime, stencilTest);
|
|
289
|
+
// Blit the resulting buffer to the input buffer passed in by the composer so it's used for subsequent effects
|
|
290
|
+
Graphics.blit(this._customInputBuffer.texture, inputBuffer, {
|
|
291
|
+
renderer,
|
|
292
|
+
depthTexture: this._customInputBuffer.depthTexture,
|
|
293
|
+
depthWrite: true,
|
|
294
|
+
depthTest: true,
|
|
295
|
+
});
|
|
296
|
+
};
|
|
297
|
+
try {
|
|
298
|
+
orderEffects(this._effects);
|
|
299
|
+
let foundTonemappingEffect = false;
|
|
300
|
+
let activeTonemappingEffect = null;
|
|
301
|
+
for (let i = this._effects.length - 1; i >= 0; i--) {
|
|
302
|
+
const ef = this._effects[i].effect;
|
|
303
|
+
if (ef instanceof MODULES.POSTPROCESSING.MODULE.ToneMappingEffect) {
|
|
304
|
+
// If we already have a tonemapping effect, we can skip this one
|
|
305
|
+
if (foundTonemappingEffect) {
|
|
306
|
+
if (debug)
|
|
307
|
+
console.warn(`[PostProcessing] Found multiple tonemapping effects in the scene: ${ef.name} and ${activeTonemappingEffect?.name}. Only the last one added will be used.`);
|
|
308
|
+
this._effects.splice(i, 1);
|
|
309
|
+
continue;
|
|
310
|
+
}
|
|
311
|
+
activeTonemappingEffect = ef;
|
|
312
|
+
foundTonemappingEffect = true;
|
|
313
|
+
}
|
|
211
314
|
}
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
315
|
+
const effectsToMerge = [];
|
|
316
|
+
let hasConvolutionEffectInArray = false;
|
|
317
|
+
for (let i = 0; i < this._effects.length; i++) {
|
|
318
|
+
const entry = this._effects[i];
|
|
319
|
+
const ef = entry.effect;
|
|
320
|
+
if (ef instanceof MODULES.POSTPROCESSING.MODULE.SMAAEffect) {
|
|
321
|
+
this._hasSmaaEffect = true;
|
|
322
|
+
}
|
|
323
|
+
else if (ef instanceof MODULES.POSTPROCESSING.MODULE.NormalPass) {
|
|
324
|
+
this._anyPassHasNormal = true;
|
|
325
|
+
}
|
|
326
|
+
// There can be only one tonemapping effect in the scene, so we skip all others
|
|
327
|
+
if (ef instanceof MODULES.POSTPROCESSING.MODULE.ToneMappingEffect && activeTonemappingEffect !== ef) {
|
|
328
|
+
// If we already have a tonemapping effect, we can skip this one
|
|
329
|
+
continue;
|
|
330
|
+
}
|
|
331
|
+
// We can also not merge multiple effects of the same type in one pass
|
|
332
|
+
// So we first need to create a new pass with whatever effects we have so far
|
|
333
|
+
// 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
|
|
334
|
+
// const constructor = ef.constructor;
|
|
335
|
+
// if (effectsToMerge.find(e => e.constructor === constructor)) {
|
|
336
|
+
// this.createPassForMergeableEffects(effectsToMerge, composer, cam, scene);
|
|
337
|
+
// }
|
|
218
338
|
if (ef instanceof MODULES.POSTPROCESSING.MODULE.Effect) {
|
|
219
|
-
const
|
|
220
|
-
|
|
221
|
-
|
|
339
|
+
const attributes = ef.getAttributes();
|
|
340
|
+
const convolution = MODULES.POSTPROCESSING.MODULE.EffectAttribute.CONVOLUTION;
|
|
341
|
+
if (attributes & convolution) {
|
|
342
|
+
if (debug)
|
|
343
|
+
console.log("[PostProcessing] Convolution effect: " + ef.name);
|
|
344
|
+
if (hasConvolutionEffectInArray) {
|
|
345
|
+
if (debug)
|
|
346
|
+
console.log("[PostProcessing] Merging effects with convolution", effectsToMerge.map(e => e.name).join(", "));
|
|
347
|
+
this.createPassForMergeableEffects(effectsToMerge, composer, cam, scene);
|
|
348
|
+
}
|
|
349
|
+
hasConvolutionEffectInArray = true;
|
|
350
|
+
}
|
|
351
|
+
// Otherwise we can merge it
|
|
352
|
+
effectsToMerge.push(ef);
|
|
222
353
|
}
|
|
223
354
|
else if (ef instanceof MODULES.POSTPROCESSING.MODULE.Pass) {
|
|
355
|
+
hasConvolutionEffectInArray = false;
|
|
356
|
+
this.createPassForMergeableEffects(effectsToMerge, composer, cam, scene);
|
|
224
357
|
ef.renderToScreen = false;
|
|
225
358
|
composer.addPass(ef);
|
|
226
359
|
}
|
|
227
|
-
else
|
|
360
|
+
else {
|
|
228
361
|
// seems some effects are not correctly typed, but three can deal with them,
|
|
229
|
-
// so we just pass them through
|
|
362
|
+
// so we might need to just pass them through
|
|
363
|
+
hasConvolutionEffectInArray = false;
|
|
364
|
+
this.createPassForMergeableEffects(effectsToMerge, composer, cam, scene);
|
|
230
365
|
composer.addPass(ef);
|
|
366
|
+
}
|
|
231
367
|
}
|
|
368
|
+
this.createPassForMergeableEffects(effectsToMerge, composer, cam, scene);
|
|
369
|
+
}
|
|
370
|
+
catch (e) {
|
|
371
|
+
console.error("Error while applying postprocessing effects", e);
|
|
372
|
+
composer.passes.forEach(p => p.dispose());
|
|
373
|
+
composer.removeAllPasses();
|
|
232
374
|
}
|
|
233
375
|
// 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)
|
|
234
|
-
|
|
376
|
+
let foundEnabled = false;
|
|
377
|
+
for (let i = composer.passes.length - 1; i >= 0; i--) {
|
|
235
378
|
const pass = composer.passes[i];
|
|
236
|
-
|
|
379
|
+
let gammaCorrect = false;
|
|
380
|
+
let renderToScreen = false;
|
|
381
|
+
if (pass.enabled) {
|
|
382
|
+
if (!foundEnabled) {
|
|
383
|
+
gammaCorrect = true;
|
|
384
|
+
renderToScreen = true;
|
|
385
|
+
}
|
|
386
|
+
foundEnabled = true;
|
|
387
|
+
}
|
|
388
|
+
pass.renderToScreen = renderToScreen;
|
|
237
389
|
if (pass?.configuration !== undefined) {
|
|
238
|
-
pass.configuration.gammaCorrection =
|
|
390
|
+
pass.configuration.gammaCorrection = gammaCorrect;
|
|
239
391
|
}
|
|
240
392
|
else if ("autosetGamma" in pass) {
|
|
241
393
|
// Some effects have a autosetGamma property that we can use to set the gamma correction
|
|
242
|
-
pass.autosetGamma =
|
|
394
|
+
pass.autosetGamma = gammaCorrect;
|
|
243
395
|
}
|
|
396
|
+
this._anyPassHasDepth ||= pass.needsDepthTexture;
|
|
244
397
|
}
|
|
245
398
|
// DEBUG LAND BELOW
|
|
246
399
|
if (debug)
|
|
@@ -248,54 +401,17 @@ export class PostProcessingHandler {
|
|
|
248
401
|
if (debug)
|
|
249
402
|
this._onCreateEffectsDebug(this._composer, cam);
|
|
250
403
|
}
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
MODULES.POSTPROCESSING_AO.MODULE.N8AOPostPass,
|
|
263
|
-
MODULES.POSTPROCESSING.MODULE.TiltShiftEffect,
|
|
264
|
-
MODULES.POSTPROCESSING.MODULE.DepthOfFieldEffect,
|
|
265
|
-
MODULES.POSTPROCESSING.MODULE.ChromaticAberrationEffect,
|
|
266
|
-
MODULES.POSTPROCESSING.MODULE.BloomEffect,
|
|
267
|
-
MODULES.POSTPROCESSING.MODULE.SelectiveBloomEffect,
|
|
268
|
-
MODULES.POSTPROCESSING.MODULE.VignetteEffect,
|
|
269
|
-
MODULES.POSTPROCESSING.MODULE.PixelationEffect,
|
|
270
|
-
MODULES.POSTPROCESSING.MODULE.ToneMappingEffect,
|
|
271
|
-
MODULES.POSTPROCESSING.MODULE.HueSaturationEffect,
|
|
272
|
-
MODULES.POSTPROCESSING.MODULE.BrightnessContrastEffect,
|
|
273
|
-
// __SHARPENING_MODULE._SharpeningEffect,
|
|
274
|
-
];
|
|
275
|
-
// TODO: enforce correct order of effects (e.g. DOF before Bloom)
|
|
276
|
-
const effects = this._effects;
|
|
277
|
-
effects.sort((a, b) => {
|
|
278
|
-
// we use find index here because sometimes constructor names are prefixed with `_`
|
|
279
|
-
// 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)
|
|
280
|
-
const aidx = effectsOrder.findIndex(e => a.constructor.name.endsWith(e.name));
|
|
281
|
-
const bidx = effectsOrder.findIndex(e => b.constructor.name.endsWith(e.name));
|
|
282
|
-
// Unknown effects should be rendered first
|
|
283
|
-
if (aidx < 0) {
|
|
284
|
-
if (debug)
|
|
285
|
-
console.warn("Unknown effect found: ", a.constructor.name);
|
|
286
|
-
return -1;
|
|
287
|
-
}
|
|
288
|
-
else if (bidx < 0) {
|
|
289
|
-
if (debug)
|
|
290
|
-
console.warn("Unknown effect found: ", b.constructor.name);
|
|
291
|
-
return 1;
|
|
292
|
-
}
|
|
293
|
-
// if (aidx < 0) return 1;
|
|
294
|
-
// if (bidx < 0) return -1;
|
|
295
|
-
return aidx - bidx;
|
|
296
|
-
});
|
|
297
|
-
if (debug === "verbose")
|
|
298
|
-
console.debug("After ordering effects", [...this._effects]);
|
|
404
|
+
/** Should be called before `composer.addPass()` to create an effect pass with all previously collected effects that can be merged up to that point */
|
|
405
|
+
createPassForMergeableEffects(effects, composer, camera, scene) {
|
|
406
|
+
if (effects.length > 0) {
|
|
407
|
+
const pass = new MODULES.POSTPROCESSING.MODULE.EffectPass(camera, ...effects);
|
|
408
|
+
pass.name = effects.map(e => e.name).join(", ");
|
|
409
|
+
pass.mainScene = scene;
|
|
410
|
+
pass.enabled = true;
|
|
411
|
+
pass.renderToScreen = false;
|
|
412
|
+
composer.addPass(pass);
|
|
413
|
+
effects.length = 0; // Clear effects after adding them to the pass
|
|
414
|
+
}
|
|
299
415
|
}
|
|
300
416
|
_menuEntry = null;
|
|
301
417
|
_passIndices = null;
|
|
@@ -362,5 +478,4 @@ export class PostProcessingHandler {
|
|
|
362
478
|
}
|
|
363
479
|
}
|
|
364
480
|
}
|
|
365
|
-
let effectsOrder = null;
|
|
366
481
|
//# 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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"}
|
|
@@ -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;
|