@needle-tools/engine 2.67.3-pre → 2.67.4-pre

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.
@@ -4,7 +4,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { BloomEffect, SelectiveBloomEffect } from "postprocessing";
7
+ import { BlendFunction, BloomEffect, SelectiveBloomEffect } from "postprocessing";
8
8
  import { serializable } from "../../../engine/engine_serialization";
9
9
  import { PostProcessingEffect } from "../PostProcessingEffect";
10
10
  import { VolumeParameter } from "../VolumeParameter";
@@ -22,14 +22,14 @@ export class Bloom extends PostProcessingEffect {
22
22
  this.intensity.defaultValue = 0;
23
23
  this.scatter.defaultValue = .2;
24
24
  if (this.selectiveBloom) {
25
- this.threshold.valueProcessor = (v) => v * .5; // / (Math.PI * 2);
26
- this.intensity.valueProcessor = (v) => v * Math.PI * 2;
27
- this.scatter.valueProcessor = (v) => .2 + Math.pow((1 - v), 2);
25
+ this.threshold.valueProcessor = (v) => v;
26
+ this.intensity.valueProcessor = (v) => v;
27
+ this.scatter.valueProcessor = (v) => 1 * Math.PI * (1 - v);
28
28
  }
29
29
  else {
30
- this.threshold.valueProcessor = (v) => v / (Math.PI * 2);
30
+ this.threshold.valueProcessor = (v) => v;
31
31
  this.intensity.valueProcessor = (v) => v; // * 2.2;
32
- this.scatter.valueProcessor = (v) => (1 - v);
32
+ this.scatter.valueProcessor = (v) => 100 * (1 - v);
33
33
  }
34
34
  }
35
35
  onCreateEffect() {
@@ -37,20 +37,21 @@ export class Bloom extends PostProcessingEffect {
37
37
  if (this.selectiveBloom) {
38
38
  // https://github.com/pmndrs/postprocessing/blob/64d2829f014cfec97a46bf3c109f3abc55af0715/demo/src/demos/BloomDemo.js#L265
39
39
  const selectiveBloom = bloom = new SelectiveBloomEffect(this.context.scene, this.context.mainCamera, {
40
+ blendFunction: BlendFunction.ADD,
41
+ mipmapBlur: true,
40
42
  luminanceThreshold: this.threshold.value,
41
43
  luminanceSmoothing: this.scatter.value,
42
44
  intensity: this.intensity.value,
43
- mipmapBlur: false,
44
45
  });
45
46
  selectiveBloom.inverted = true;
46
47
  }
47
48
  else {
48
49
  bloom = new BloomEffect();
49
50
  }
50
- const blur = bloom["mipmapBlurPass"];
51
- if (typeof blur === "object") {
52
- blur.radius = this.scatter.value;
53
- }
51
+ // const blur = bloom["mipmapBlurPass"];
52
+ // if (typeof blur === "object") {
53
+ // blur.radius = this.scatter.value;
54
+ // }
54
55
  this.intensity.onValueChanged = newValue => {
55
56
  bloom.intensity = newValue;
56
57
  };
@@ -58,6 +59,7 @@ export class Bloom extends PostProcessingEffect {
58
59
  bloom.luminanceMaterial.threshold = newValue;
59
60
  };
60
61
  this.scatter.onValueChanged = newValue => {
62
+ bloom.luminancePass.enabled = true;
61
63
  bloom.luminanceMaterial.smoothing = newValue;
62
64
  };
63
65
  return bloom;
@@ -1 +1 @@
1
- {"version":3,"file":"Bloom.js","sourceRoot":"","sources":["../../../../../src/engine-components/postprocessing/Effects/Bloom.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Bloom.js","sourceRoot":"","sources":["../../../../../src/engine-components/postprocessing/Effects/Bloom.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ import { serializable } from "../../../engine/engine_serialization";
9
9
  import { PostProcessingEffect } from "../PostProcessingEffect";
10
10
  import { VolumeParameter } from "../VolumeParameter";
11
11
  import { registerCustomEffectType } from "../VolumeProfile";
12
- import { NoToneMapping } from "three";
12
+ import { LinearToneMapping, NoToneMapping } from "three";
13
13
  export class ColorAdjustments extends PostProcessingEffect {
14
14
  get typeName() {
15
15
  return "ColorAdjustments";
@@ -20,20 +20,17 @@ export class ColorAdjustments extends PostProcessingEffect {
20
20
  saturation;
21
21
  init() {
22
22
  this.postExposure.valueProcessor = v => {
23
- // when using tone mapping, the exposure will just be set to the renderer
24
- if (this.context.renderer.toneMapping !== NoToneMapping && v > 0) {
25
- return Math.pow(2, v);
26
- }
27
- // Custom effects need modification
28
- else {
29
- return v / (2 * Math.PI);
30
- }
23
+ v = Math.pow(2, v);
24
+ return v;
31
25
  };
32
26
  this.postExposure.defaultValue = 0;
33
27
  this.contrast.valueProcessor = (v) => {
34
- let divisor = 100;
28
+ let divisor = 1;
35
29
  if (v > 0)
36
- divisor *= Math.PI * 2;
30
+ divisor = 200;
31
+ else if (v < 0)
32
+ divisor = 100;
33
+ // if (v > 0) divisor *= Math.PI;
37
34
  const val = v / divisor;
38
35
  return val;
39
36
  };
@@ -41,7 +38,9 @@ export class ColorAdjustments extends PostProcessingEffect {
41
38
  this.hueShift.valueProcessor = (v) => Math.PI * v / 180;
42
39
  this.hueShift.defaultValue = 0;
43
40
  this.saturation.valueProcessor = (v) => {
44
- return (v / 180);
41
+ if (v < 0)
42
+ return (v / 100);
43
+ return (v / (100 * Math.PI));
45
44
  };
46
45
  this.saturation.defaultValue = 0;
47
46
  }
@@ -49,35 +48,21 @@ export class ColorAdjustments extends PostProcessingEffect {
49
48
  this.context.renderer.toneMappingExposure = 1;
50
49
  }
51
50
  onCreateEffect() {
51
+ if (this.context.renderer.toneMapping === NoToneMapping && this.postExposure.overrideState)
52
+ this.context.renderer.toneMapping = LinearToneMapping;
52
53
  const brightnesscontrast = new BrightnessContrastEffect();
53
- // TODO: darkening etc doesnt really work well in all cases right now
54
54
  this.postExposure.onValueChanged = v => {
55
- // We can use the builtin exposure when tonemapping is set
56
- if (this.context.renderer.toneMapping !== NoToneMapping) {
57
- if (v === 0) {
58
- this.context.renderer.toneMappingExposure = 1;
59
- brightnesscontrast.brightness = 0;
60
- }
61
- else if (v > 0) {
62
- this.context.renderer.toneMappingExposure = v;
63
- brightnesscontrast.brightness = 0;
64
- }
65
- else {
66
- this.context.renderer.toneMappingExposure = v;
67
- brightnesscontrast.brightness = 0;
68
- }
69
- }
70
- // Otherwise use the effect (they look sligthly different/behave different unfortunately)
71
- else {
72
- this.context.renderer.toneMappingExposure = 0;
73
- brightnesscontrast.brightness = v;
74
- }
55
+ if (this.context.renderer.toneMapping === NoToneMapping)
56
+ this.context.renderer.toneMapping = LinearToneMapping;
57
+ this.context.renderer.toneMappingExposure = v;
58
+ };
59
+ this.contrast.onValueChanged = v => {
60
+ brightnesscontrast.contrast = v;
75
61
  };
76
- this.contrast.onValueChanged = v => brightnesscontrast.contrast = v;
77
62
  const hueSaturationEffect = new HueSaturationEffect();
78
63
  this.hueShift.onValueChanged = v => hueSaturationEffect.hue = v;
79
64
  this.saturation.onValueChanged = v => hueSaturationEffect.saturation = v;
80
- return [brightnesscontrast, hueSaturationEffect];
65
+ return [hueSaturationEffect, brightnesscontrast];
81
66
  }
82
67
  }
83
68
  __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"ColorAdjustments.js","sourceRoot":"","sources":["../../../../../src/engine-components/postprocessing/Effects/ColorAdjustments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ColorAdjustments.js","sourceRoot":"","sources":["../../../../../src/engine-components/postprocessing/Effects/ColorAdjustments.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,4 @@ export declare class DepthOfField extends PostProcessingEffect {
16
16
  init(): void;
17
17
  onCreateEffect(): DepthOfFieldEffect[] | undefined;
18
18
  unapply(): void;
19
- calculateFocusDistance(target: any): number;
20
- viewZToOrthographicDepth(viewZ: any, near: any, far: any): number;
21
19
  }
@@ -5,7 +5,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { DepthOfFieldEffect } from "postprocessing";
8
- import { getWorldPosition } from "../../../engine/engine_three_utils";
9
8
  import { serializable } from "../../../engine/engine_serialization";
10
9
  import { Mathf } from "../../../engine/engine_math";
11
10
  import { PostProcessingEffect } from "../PostProcessingEffect";
@@ -51,22 +50,15 @@ export class DepthOfField extends PostProcessingEffect {
51
50
  focalLength: 1,
52
51
  bokehScale: 20,
53
52
  });
54
- this.focusDistance.onValueChanged = v => dof.circleOfConfusionMaterial.worldFocusDistance = v;
53
+ this.focusDistance.onValueChanged = v => {
54
+ dof.circleOfConfusionMaterial.worldFocusDistance = v;
55
+ };
55
56
  this.focalLength.onValueChanged = v => dof.circleOfConfusionMaterial.worldFocusRange = v;
56
57
  this.aperture.onValueChanged = v => dof.bokehScale = v;
57
58
  return [dof];
58
59
  }
59
60
  unapply() {
60
61
  }
61
- calculateFocusDistance(target) {
62
- const camera = this.context.mainCamera;
63
- const distance = getWorldPosition(camera).distanceTo(target);
64
- // console.log(distance, camera.near, camera.far);
65
- return this.viewZToOrthographicDepth(-distance, camera.near, camera.far);
66
- }
67
- viewZToOrthographicDepth(viewZ, near, far) {
68
- return (viewZ + near) / (near - far);
69
- }
70
62
  }
71
63
  __decorate([
72
64
  serializable()
@@ -1 +1 @@
1
- {"version":3,"file":"DepthOfField.js","sourceRoot":"","sources":["../../../../../src/engine-components/postprocessing/Effects/DepthOfField.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DepthOfField.js","sourceRoot":"","sources":["../../../../../src/engine-components/postprocessing/Effects/DepthOfField.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,CAAN,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IACxB,qDAAO,CAAA;IACP,+DAAY,CAAA;IACZ,yDAAS,CAAA;AACb,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B;AAED,MAAM,OAAO,YAAa,SAAQ,oBAAoB;IAElD,IAAI,QAAQ;QACR,OAAO,cAAc,CAAC;IAC1B,CAAC;IAGD,IAAI,CAAqB;IAGzB,aAAa,CAAmB;IAGhC,WAAW,CAAmB;IAG9B,QAAQ,CAAmB;IAG3B,iBAAiB,CAAmB;IAEpC,IAAI;QACA,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,CAAC,EAAE;YAClC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YAClB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAA,wDAAwD;YACtE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC;QAEF,MAAM,aAAa,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,cAAc,GAAG,CAAC,CAAC,EAAE;YAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC;IACN,CAAC;IAED,cAAc;QACV,IAAG,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,GAAG;YAAE,OAAO,SAAS,CAAC;QACxD,2EAA2E;QAC3E,kCAAkC;QAClC,sBAAsB;QACtB,2CAA2C;QAC3C,MAAM;QACN,MAAM,GAAG,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAW,EAAE;YACzD,eAAe,EAAE,EAAE;YACnB,WAAW,EAAE,CAAC;YACd,UAAU,EAAE,EAAE;SACjB,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,CAAC,CAAC,EAAE;YACpC,GAAG,CAAC,yBAAyB,CAAC,kBAAkB,GAAG,CAAC,CAAC;QACzD,CAAC,CAAA;QACD,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAAC,eAAe,GAAG,CAAC,CAAC;QACzF,IAAI,CAAC,QAAQ,CAAC,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;QAGvD,OAAO,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,OAAO;IACP,CAAC;CAEJ;AAtDG;IADC,YAAY,EAAE;0CACU;AAGzB;IADC,YAAY,CAAC,eAAe,CAAC;mDACE;AAGhC;IADC,YAAY,CAAC,eAAe,CAAC;iDACA;AAG9B;IADC,YAAY,CAAC,eAAe,CAAC;8CACH;AAG3B;IADC,YAAY,CAAC,eAAe,CAAC;uDACM;AA2CxC,wBAAwB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC"}
@@ -106,6 +106,7 @@ export class PostProcessingHandler {
106
106
  composer.addPass(new RenderPass(context.scene, cam));
107
107
  if (debug)
108
108
  console.log("Set effects or passes", camera, effectsOrPasses, composer);
109
+ // TODO: enforce correct order of effects (e.g. DOF before Bloom)
109
110
  const effects = [];
110
111
  for (const ef of effectsOrPasses) {
111
112
  if (ef instanceof Effect)
@@ -1 +1 @@
1
- {"version":3,"file":"PostProcessingHandler.js","sourceRoot":"","sources":["../../../../src/engine-components/postprocessing/PostProcessingHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAmC,MAAM,OAAO,CAAC;AAEvE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAI9D,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;AAEpC,MAAM,SAAS,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAEnD,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;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,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO;QACH,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;YACnC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAChC,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;IAC7B,CAAC;IAGO,OAAO,CAAC,OAAgB,EAAE,UAAkC;QAEhE,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;QAE1B,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,UAAU,CAAC,CAAC;QAEhE,IAAI,CAAC,qBAAqB,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;QAE7C,8DAA8D;QAC9D,4CAA4C;QAC5C,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAEzB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAChC,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,EAAE,CAAC;oBAC9B,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,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAE/B,CAAC;IAGD,4BAA4B;IACpB,YAAY,CAAC,OAAgB;QAEjC,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;QACtC,MAAM,MAAM,GAAG,OAAO,CAAC,mBAA6B,CAAC;QACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAElC,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO;QAExC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QAEvB,4CAA4C;QAC5C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,iHAAiH;YACjH,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE;gBAC1C,eAAe,EAAE,aAAa;gBAC9B,oBAAoB;aACvB,CAAC,CAAC;SACN;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,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,MAAM;YAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC3B,QAAQ,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QAGrD,IAAI,KAAK;YACL,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;QAG5E,MAAM,OAAO,GAAkB,EAAE,CAAC;QAElC,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE;YAC9B,IAAI,EAAE,YAAY,MAAM;gBACpB,OAAO,CAAC,IAAI,CAAC,EAAY,CAAC,CAAC;iBAC1B,IAAI,EAAE,YAAY,IAAI,EAAE;gBACzB,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC;gBAC7C,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvB,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;gBACnB,QAAQ,CAAC,OAAO,CAAC,EAAU,CAAC,CAAC;aAChC;SACJ;QAED,6BAA6B;QAC7B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACpB,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC;YAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC1B;IACL,CAAC;CACJ"}
1
+ {"version":3,"file":"PostProcessingHandler.js","sourceRoot":"","sources":["../../../../src/engine-components/postprocessing/PostProcessingHandler.ts"],"names":[],"mappings":"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"}
@@ -13,9 +13,10 @@ export declare class Volume extends Behaviour implements IEditorModificationRece
13
13
  private _rapidApplyCount;
14
14
  private apply;
15
15
  private unapply;
16
- private tryApplyCache;
16
+ private _applyPostQueue;
17
17
  /** called from needle editor sync package if its active */
18
18
  onEditorModification(modification: EditorModification): void | boolean | undefined;
19
+ private _modificationQueue?;
19
20
  private _recreateId;
20
21
  private scheduleRecreate;
21
22
  }
@@ -11,7 +11,6 @@ import { VolumeProfile } from "./VolumeProfile";
11
11
  import { PostProcessingHandler } from "./PostProcessingHandler";
12
12
  import { PostProcessingEffect } from "./PostProcessingEffect";
13
13
  import { VolumeParameter } from "./VolumeParameter";
14
- import { getEditorModificationCache } from "../../engine/engine_editor-sync";
15
14
  import { isDevEnvironment } from "../../engine/debug";
16
15
  const debug = getParam("debugpost");
17
16
  export class Volume extends Behaviour {
@@ -84,20 +83,27 @@ export class Volume extends Behaviour {
84
83
  this._postprocessing = new PostProcessingHandler(this.context);
85
84
  this._postprocessing.apply(this._effects);
86
85
  }
86
+ this._applyPostQueue();
87
87
  }
88
88
  unapply() {
89
89
  this._postprocessing?.unapply();
90
90
  }
91
- tryApplyCache() {
92
- const cache = getEditorModificationCache();
93
- if (cache) {
94
- for (const entry of cache.values())
91
+ _applyPostQueue() {
92
+ if (this._modificationQueue) {
93
+ for (const entry of this._modificationQueue.values())
95
94
  this.onEditorModification(entry);
95
+ this._modificationQueue.clear();
96
96
  }
97
97
  }
98
98
  /** called from needle editor sync package if its active */
99
99
  onEditorModification(modification) {
100
100
  if (modification.propertyName.startsWith("postprocessing.")) {
101
+ if (!this._postprocessing) {
102
+ if (!this._modificationQueue)
103
+ this._modificationQueue = new Map();
104
+ this._modificationQueue.set(modification.propertyName, modification);
105
+ return true;
106
+ }
101
107
  if (!this._effects?.length)
102
108
  return;
103
109
  const path = modification.propertyName.split(".");
@@ -152,6 +158,7 @@ export class Volume extends Behaviour {
152
158
  }
153
159
  return false;
154
160
  }
161
+ _modificationQueue;
155
162
  _recreateId = -1;
156
163
  scheduleRecreate() {
157
164
  // When the editor modifications come in with changed active effects we want/need to re-create the effects
@@ -1 +1 @@
1
- {"version":3,"file":"Volume.js","sourceRoot":"","sources":["../../../../src/engine-components/postprocessing/Volume.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Volume.js","sourceRoot":"","sources":["../../../../src/engine-components/postprocessing/Volume.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@needle-tools/engine",
3
- "version": "2.67.3-pre",
3
+ "version": "2.67.4-pre",
4
4
  "description": "Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development, and can be deployed anywhere. It is flexible, extensible, and collaboration and XR come naturally.",
5
5
  "main": "dist/needle-engine.umd.cjs",
6
6
  "module": "lib/needle-engine.js",
@@ -1,4 +1,4 @@
1
- import { BloomEffect, SelectiveBloomEffect } from "postprocessing";
1
+ import { BlendFunction, BloomEffect, SelectiveBloomEffect } from "postprocessing";
2
2
  import { serializable } from "../../../engine/engine_serialization";
3
3
  import { PostProcessingEffect } from "../PostProcessingEffect";
4
4
  import { VolumeParameter } from "../VolumeParameter";
@@ -25,14 +25,14 @@ export class Bloom extends PostProcessingEffect {
25
25
  this.scatter.defaultValue = .2;
26
26
 
27
27
  if (this.selectiveBloom) {
28
- this.threshold.valueProcessor = (v: number) => v * .5;// / (Math.PI * 2);
29
- this.intensity.valueProcessor = (v: number) => v * Math.PI * 2;
30
- this.scatter.valueProcessor = (v: number) => .2 + Math.pow((1 - v), 2);
28
+ this.threshold.valueProcessor = (v: number) => v;
29
+ this.intensity.valueProcessor = (v: number) => v;
30
+ this.scatter.valueProcessor = (v: number) => 1 * Math.PI * (1 - v);
31
31
  }
32
32
  else {
33
- this.threshold.valueProcessor = (v: number) => v / (Math.PI * 2);
33
+ this.threshold.valueProcessor = (v: number) => v;
34
34
  this.intensity.valueProcessor = (v: number) => v;// * 2.2;
35
- this.scatter.valueProcessor = (v: number) => (1 - v);
35
+ this.scatter.valueProcessor = (v: number) => 100 * (1 - v);
36
36
  }
37
37
  }
38
38
 
@@ -41,10 +41,11 @@ export class Bloom extends PostProcessingEffect {
41
41
  if (this.selectiveBloom) {
42
42
  // https://github.com/pmndrs/postprocessing/blob/64d2829f014cfec97a46bf3c109f3abc55af0715/demo/src/demos/BloomDemo.js#L265
43
43
  const selectiveBloom = bloom = new SelectiveBloomEffect(this.context.scene, this.context.mainCamera!, {
44
+ blendFunction: BlendFunction.ADD,
45
+ mipmapBlur: true,
44
46
  luminanceThreshold: this.threshold.value,
45
47
  luminanceSmoothing: this.scatter.value,
46
48
  intensity: this.intensity.value,
47
- mipmapBlur: false,
48
49
  });
49
50
  selectiveBloom.inverted = true;
50
51
  }
@@ -53,10 +54,10 @@ export class Bloom extends PostProcessingEffect {
53
54
  }
54
55
 
55
56
 
56
- const blur = bloom["mipmapBlurPass"];
57
- if (typeof blur === "object") {
58
- blur.radius = this.scatter.value;
59
- }
57
+ // const blur = bloom["mipmapBlurPass"];
58
+ // if (typeof blur === "object") {
59
+ // blur.radius = this.scatter.value;
60
+ // }
60
61
 
61
62
  this.intensity.onValueChanged = newValue => {
62
63
  bloom!.intensity = newValue;
@@ -65,6 +66,7 @@ export class Bloom extends PostProcessingEffect {
65
66
  bloom!.luminanceMaterial.threshold = newValue;
66
67
  };
67
68
  this.scatter.onValueChanged = newValue => {
69
+ bloom!.luminancePass.enabled = true;
68
70
  bloom!.luminanceMaterial.smoothing = newValue;
69
71
  };
70
72
 
@@ -3,7 +3,7 @@ import { serializable } from "../../../engine/engine_serialization";
3
3
  import { EffectProviderResult, PostProcessingEffect } from "../PostProcessingEffect";
4
4
  import { VolumeParameter } from "../VolumeParameter";
5
5
  import { registerCustomEffectType } from "../VolumeProfile";
6
- import { NoToneMapping } from "three";
6
+ import { CustomToneMapping, LinearToneMapping, NoToneMapping } from "three";
7
7
 
8
8
 
9
9
  export class ColorAdjustments extends PostProcessingEffect {
@@ -26,20 +26,16 @@ export class ColorAdjustments extends PostProcessingEffect {
26
26
 
27
27
  init() {
28
28
  this.postExposure!.valueProcessor = v => {
29
- // when using tone mapping, the exposure will just be set to the renderer
30
- if (this.context.renderer.toneMapping !== NoToneMapping && v > 0) {
31
- return Math.pow(2, v);
32
- }
33
- // Custom effects need modification
34
- else {
35
- return v / (2 * Math.PI);
36
- }
29
+ v = Math.pow(2, v);
30
+ return v;
37
31
  }
38
32
  this.postExposure.defaultValue = 0;
39
33
 
40
34
  this.contrast.valueProcessor = (v: number) => {
41
- let divisor = 100;
42
- if (v > 0) divisor *= Math.PI * 2;
35
+ let divisor = 1;
36
+ if (v > 0) divisor = 200;
37
+ else if (v < 0) divisor = 100;
38
+ // if (v > 0) divisor *= Math.PI;
43
39
  const val = v / divisor;
44
40
  return val;
45
41
  };
@@ -49,7 +45,8 @@ export class ColorAdjustments extends PostProcessingEffect {
49
45
  this.hueShift.defaultValue = 0;
50
46
 
51
47
  this.saturation.valueProcessor = (v: number) => {
52
- return (v / 180);
48
+ if (v < 0) return (v / 100);
49
+ return (v / (100 * Math.PI));
53
50
  }
54
51
  this.saturation.defaultValue = 0;
55
52
  }
@@ -60,39 +57,24 @@ export class ColorAdjustments extends PostProcessingEffect {
60
57
 
61
58
 
62
59
  onCreateEffect(): EffectProviderResult {
63
-
60
+ if (this.context.renderer.toneMapping === NoToneMapping && this.postExposure.overrideState)
61
+ this.context.renderer.toneMapping = LinearToneMapping;
64
62
  const brightnesscontrast = new BrightnessContrastEffect();
65
- // TODO: darkening etc doesnt really work well in all cases right now
66
63
  this.postExposure!.onValueChanged = v => {
67
- // We can use the builtin exposure when tonemapping is set
68
- if (this.context.renderer.toneMapping !== NoToneMapping) {
69
- if (v === 0) {
70
- this.context.renderer.toneMappingExposure = 1;
71
- brightnesscontrast.brightness = 0;
72
- }
73
- else if (v > 0) {
74
- this.context.renderer.toneMappingExposure = v;
75
- brightnesscontrast.brightness = 0;
76
- }
77
- else {
78
- this.context.renderer.toneMappingExposure = v;
79
- brightnesscontrast.brightness = 0;
80
- }
81
- }
82
- // Otherwise use the effect (they look sligthly different/behave different unfortunately)
83
- else {
84
- this.context.renderer.toneMappingExposure = 0;
85
- brightnesscontrast.brightness = v;
86
- }
64
+ if (this.context.renderer.toneMapping === NoToneMapping)
65
+ this.context.renderer.toneMapping = LinearToneMapping;
66
+ this.context.renderer.toneMappingExposure = v;
67
+ }
68
+ this.contrast!.onValueChanged = v => {
69
+ brightnesscontrast.contrast = v;
87
70
  }
88
- this.contrast!.onValueChanged = v => brightnesscontrast.contrast = v;
89
71
 
90
72
 
91
73
  const hueSaturationEffect = new HueSaturationEffect();
92
74
  this.hueShift!.onValueChanged = v => hueSaturationEffect.hue = v;
93
75
  this.saturation!.onValueChanged = v => hueSaturationEffect.saturation = v;
94
76
 
95
- return [brightnesscontrast, hueSaturationEffect];
77
+ return [hueSaturationEffect, brightnesscontrast];
96
78
  }
97
79
 
98
80
  // apply() {
@@ -61,7 +61,9 @@ export class DepthOfField extends PostProcessingEffect {
61
61
  bokehScale: 20,
62
62
  });
63
63
 
64
- this.focusDistance.onValueChanged = v => dof.circleOfConfusionMaterial.worldFocusDistance = v;
64
+ this.focusDistance.onValueChanged = v => {
65
+ dof.circleOfConfusionMaterial.worldFocusDistance = v;
66
+ }
65
67
  this.focalLength.onValueChanged = v => dof.circleOfConfusionMaterial.worldFocusRange = v;
66
68
  this.aperture.onValueChanged = v => dof.bokehScale = v;
67
69
 
@@ -69,22 +71,8 @@ export class DepthOfField extends PostProcessingEffect {
69
71
  return [dof];
70
72
  }
71
73
 
72
-
73
74
  unapply() {
74
75
  }
75
76
 
76
-
77
- calculateFocusDistance(target) {
78
-
79
- const camera = this.context.mainCamera! as PerspectiveCamera;
80
- const distance = getWorldPosition(camera).distanceTo(target);
81
- // console.log(distance, camera.near, camera.far);
82
- return this.viewZToOrthographicDepth(-distance, camera.near, camera.far);
83
-
84
- }
85
-
86
- viewZToOrthographicDepth(viewZ, near, far) {
87
- return (viewZ + near) / (near - far);
88
- }
89
77
  }
90
78
  registerCustomEffectType("DepthOfField", DepthOfField);
@@ -134,6 +134,7 @@ export class PostProcessingHandler {
134
134
  if (debug)
135
135
  console.log("Set effects or passes", camera, effectsOrPasses, composer);
136
136
 
137
+ // TODO: enforce correct order of effects (e.g. DOF before Bloom)
137
138
 
138
139
  const effects: Array<Effect> = [];
139
140
 
@@ -95,25 +95,33 @@ export class Volume extends Behaviour implements IEditorModificationReceiver {
95
95
  this._postprocessing = new PostProcessingHandler(this.context);
96
96
  this._postprocessing.apply(this._effects);
97
97
  }
98
+
99
+ this._applyPostQueue();
98
100
  }
99
101
 
100
102
  private unapply() {
101
103
  this._postprocessing?.unapply();
102
104
  }
103
105
 
104
-
105
- private tryApplyCache() {
106
- const cache = getEditorModificationCache();
107
- if (cache) {
108
- for (const entry of cache.values()) this.onEditorModification(entry);
106
+
107
+ private _applyPostQueue() {
108
+ if (this._modificationQueue) {
109
+ for (const entry of this._modificationQueue.values()) this.onEditorModification(entry);
110
+ this._modificationQueue.clear();
109
111
  }
110
112
  }
111
113
 
112
-
113
114
  /** called from needle editor sync package if its active */
114
115
  onEditorModification(modification: EditorModification): void | boolean | undefined {
115
116
 
116
117
  if (modification.propertyName.startsWith("postprocessing.")) {
118
+
119
+ if (!this._postprocessing) {
120
+ if (!this._modificationQueue) this._modificationQueue = new Map<string, EditorModification>();
121
+ this._modificationQueue.set(modification.propertyName, modification);
122
+ return true;
123
+ }
124
+
117
125
  if (!this._effects?.length) return;
118
126
  const path = modification.propertyName.split(".");
119
127
  if (path.length === 3 || path.length === 4) {
@@ -173,6 +181,8 @@ export class Volume extends Behaviour implements IEditorModificationReceiver {
173
181
  return false;
174
182
  }
175
183
 
184
+ private _modificationQueue?: Map<string, EditorModification>;
185
+
176
186
  private _recreateId: number = -1;
177
187
  private scheduleRecreate() {
178
188
  // When the editor modifications come in with changed active effects we want/need to re-create the effects