three-stdlib 2.24.1 → 2.25.0

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.
@@ -60,6 +60,10 @@ class OrbitControls extends THREE.EventDispatcher {
60
60
  // 30 seconds per orbit when fps is 60
61
61
  __publicField(this, "reverseOrbit", false);
62
62
  // true if you want to reverse the orbit to mouse drag from left to right = orbits left
63
+ __publicField(this, "reverseHorizontalOrbit", false);
64
+ // true if you want to reverse the horizontal orbit direction
65
+ __publicField(this, "reverseVerticalOrbit", false);
66
+ // true if you want to reverse the vertical orbit direction
63
67
  // The four arrow keys
64
68
  __publicField(this, "keys", { LEFT: "ArrowLeft", UP: "ArrowUp", RIGHT: "ArrowRight", BOTTOM: "ArrowDown" });
65
69
  // Mouse buttons
@@ -291,14 +295,14 @@ class OrbitControls extends THREE.EventDispatcher {
291
295
  return Math.pow(0.95, scope.zoomSpeed);
292
296
  }
293
297
  function rotateLeft(angle) {
294
- if (scope.reverseOrbit) {
298
+ if (scope.reverseOrbit || scope.reverseHorizontalOrbit) {
295
299
  sphericalDelta.theta += angle;
296
300
  } else {
297
301
  sphericalDelta.theta -= angle;
298
302
  }
299
303
  }
300
304
  function rotateUp(angle) {
301
- if (scope.reverseOrbit) {
305
+ if (scope.reverseOrbit || scope.reverseVerticalOrbit) {
302
306
  sphericalDelta.phi += angle;
303
307
  } else {
304
308
  sphericalDelta.phi -= angle;
@@ -25,6 +25,8 @@ declare class OrbitControls extends EventDispatcher {
25
25
  autoRotate: boolean;
26
26
  autoRotateSpeed: number;
27
27
  reverseOrbit: boolean;
28
+ reverseHorizontalOrbit: boolean;
29
+ reverseVerticalOrbit: boolean;
28
30
  keys: {
29
31
  LEFT: string;
30
32
  UP: string;
@@ -58,6 +58,10 @@ class OrbitControls extends EventDispatcher {
58
58
  // 30 seconds per orbit when fps is 60
59
59
  __publicField(this, "reverseOrbit", false);
60
60
  // true if you want to reverse the orbit to mouse drag from left to right = orbits left
61
+ __publicField(this, "reverseHorizontalOrbit", false);
62
+ // true if you want to reverse the horizontal orbit direction
63
+ __publicField(this, "reverseVerticalOrbit", false);
64
+ // true if you want to reverse the vertical orbit direction
61
65
  // The four arrow keys
62
66
  __publicField(this, "keys", { LEFT: "ArrowLeft", UP: "ArrowUp", RIGHT: "ArrowRight", BOTTOM: "ArrowDown" });
63
67
  // Mouse buttons
@@ -289,14 +293,14 @@ class OrbitControls extends EventDispatcher {
289
293
  return Math.pow(0.95, scope.zoomSpeed);
290
294
  }
291
295
  function rotateLeft(angle) {
292
- if (scope.reverseOrbit) {
296
+ if (scope.reverseOrbit || scope.reverseHorizontalOrbit) {
293
297
  sphericalDelta.theta += angle;
294
298
  } else {
295
299
  sphericalDelta.theta -= angle;
296
300
  }
297
301
  }
298
302
  function rotateUp(angle) {
299
- if (scope.reverseOrbit) {
303
+ if (scope.reverseOrbit || scope.reverseVerticalOrbit) {
300
304
  sphericalDelta.phi += angle;
301
305
  } else {
302
306
  sphericalDelta.phi -= angle;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "three-stdlib",
3
- "version": "2.24.1",
3
+ "version": "2.25.0",
4
4
  "description": "stand-alone library of threejs examples",
5
5
  "keywords": [
6
6
  "three",
@@ -59,6 +59,7 @@ class EffectComposer {
59
59
  console.error("THREE.EffectComposer relies on ShaderPass");
60
60
  }
61
61
  this.copyPass = new ShaderPass.ShaderPass(CopyShader.CopyShader);
62
+ this.copyPass.material.blending = THREE.NoBlending;
62
63
  this.clock = new THREE.Clock();
63
64
  }
64
65
  swapBuffers() {
@@ -4,7 +4,7 @@ var __publicField = (obj, key, value) => {
4
4
  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
5
  return value;
6
6
  };
7
- import { LinearFilter, RGBAFormat, Vector2, WebGLRenderTarget, Clock } from "three";
7
+ import { LinearFilter, RGBAFormat, Vector2, WebGLRenderTarget, NoBlending, Clock } from "three";
8
8
  import { CopyShader } from "../shaders/CopyShader.js";
9
9
  import { ShaderPass } from "./ShaderPass.js";
10
10
  import { MaskPass, ClearMaskPass } from "./MaskPass.js";
@@ -57,6 +57,7 @@ class EffectComposer {
57
57
  console.error("THREE.EffectComposer relies on ShaderPass");
58
58
  }
59
59
  this.copyPass = new ShaderPass(CopyShader);
60
+ this.copyPass.material.blending = NoBlending;
60
61
  this.clock = new Clock();
61
62
  }
62
63
  swapBuffers() {
@@ -22,13 +22,8 @@ class SSAARenderPass extends Pass.Pass {
22
22
  transparent: true,
23
23
  depthTest: false,
24
24
  depthWrite: false,
25
- // do not use AdditiveBlending because it mixes the alpha channel instead of adding
26
- blending: THREE.CustomBlending,
27
- blendEquation: THREE.AddEquation,
28
- blendDst: THREE.OneFactor,
29
- blendDstAlpha: THREE.OneFactor,
30
- blendSrc: THREE.SrcAlphaFactor,
31
- blendSrcAlpha: THREE.OneFactor
25
+ premultipliedAlpha: true,
26
+ blending: THREE.AdditiveBlending
32
27
  });
33
28
  this.fsQuad = new Pass.FullScreenQuad(this.copyMaterial);
34
29
  }
@@ -1,4 +1,4 @@
1
- import { Color, UniformsUtils, ShaderMaterial, CustomBlending, AddEquation, OneFactor, SrcAlphaFactor, WebGLRenderTarget, HalfFloatType } from "three";
1
+ import { Color, UniformsUtils, ShaderMaterial, AdditiveBlending, WebGLRenderTarget, HalfFloatType } from "three";
2
2
  import { Pass, FullScreenQuad } from "./Pass.js";
3
3
  import { CopyShader } from "../shaders/CopyShader.js";
4
4
  class SSAARenderPass extends Pass {
@@ -20,13 +20,8 @@ class SSAARenderPass extends Pass {
20
20
  transparent: true,
21
21
  depthTest: false,
22
22
  depthWrite: false,
23
- // do not use AdditiveBlending because it mixes the alpha channel instead of adding
24
- blending: CustomBlending,
25
- blendEquation: AddEquation,
26
- blendDst: OneFactor,
27
- blendDstAlpha: OneFactor,
28
- blendSrc: SrcAlphaFactor,
29
- blendSrcAlpha: OneFactor
23
+ premultipliedAlpha: true,
24
+ blending: AdditiveBlending
30
25
  });
31
26
  this.fsQuad = new FullScreenQuad(this.copyMaterial);
32
27
  }
@@ -14,7 +14,8 @@ class SavePass extends Pass.Pass {
14
14
  this.material = new THREE.ShaderMaterial({
15
15
  uniforms: this.uniforms,
16
16
  vertexShader: shader.vertexShader,
17
- fragmentShader: shader.fragmentShader
17
+ fragmentShader: shader.fragmentShader,
18
+ blending: THREE.NoBlending
18
19
  });
19
20
  this.renderTarget = renderTarget;
20
21
  if (this.renderTarget === void 0) {
@@ -1,4 +1,4 @@
1
- import { UniformsUtils, ShaderMaterial, WebGLRenderTarget } from "three";
1
+ import { UniformsUtils, ShaderMaterial, NoBlending, WebGLRenderTarget } from "three";
2
2
  import { Pass, FullScreenQuad } from "./Pass.js";
3
3
  import { CopyShader } from "../shaders/CopyShader.js";
4
4
  class SavePass extends Pass {
@@ -12,7 +12,8 @@ class SavePass extends Pass {
12
12
  this.material = new ShaderMaterial({
13
13
  uniforms: this.uniforms,
14
14
  vertexShader: shader.vertexShader,
15
- fragmentShader: shader.fragmentShader
15
+ fragmentShader: shader.fragmentShader,
16
+ blending: NoBlending
16
17
  });
17
18
  this.renderTarget = renderTarget;
18
19
  if (this.renderTarget === void 0) {
@@ -7,6 +7,7 @@ class TAARenderPass extends SSAARenderPass.SSAARenderPass {
7
7
  super(scene, camera, clearColor, clearAlpha);
8
8
  this.sampleLevel = 0;
9
9
  this.accumulate = false;
10
+ this.accumulateIndex = -1;
10
11
  }
11
12
  render(renderer, writeBuffer, readBuffer, deltaTime) {
12
13
  if (this.accumulate === false) {
@@ -29,6 +30,8 @@ class TAARenderPass extends SSAARenderPass.SSAARenderPass {
29
30
  }
30
31
  const autoClear = renderer.autoClear;
31
32
  renderer.autoClear = false;
33
+ renderer.getClearColor(this._oldClearColor);
34
+ const oldClearAlpha = renderer.getClearAlpha();
32
35
  const sampleWeight = 1 / jitterOffsets.length;
33
36
  if (this.accumulateIndex >= 0 && this.accumulateIndex < jitterOffsets.length) {
34
37
  this.copyUniforms["opacity"].value = sampleWeight;
@@ -49,11 +52,14 @@ class TAARenderPass extends SSAARenderPass.SSAARenderPass {
49
52
  );
50
53
  }
51
54
  renderer.setRenderTarget(writeBuffer);
55
+ renderer.setClearColor(this.clearColor, this.clearAlpha);
52
56
  renderer.clear();
53
57
  renderer.render(this.scene, this.camera);
54
58
  renderer.setRenderTarget(this.sampleRenderTarget);
55
- if (this.accumulateIndex === 0)
59
+ if (this.accumulateIndex === 0) {
60
+ renderer.setClearColor(0, 0);
56
61
  renderer.clear();
62
+ }
57
63
  this.fsQuad.render(renderer);
58
64
  this.accumulateIndex++;
59
65
  if (this.accumulateIndex >= jitterOffsets.length)
@@ -62,6 +68,7 @@ class TAARenderPass extends SSAARenderPass.SSAARenderPass {
62
68
  if (this.camera.clearViewOffset)
63
69
  this.camera.clearViewOffset();
64
70
  }
71
+ renderer.setClearColor(this.clearColor, this.clearAlpha);
65
72
  const accumulationWeight = this.accumulateIndex * sampleWeight;
66
73
  if (accumulationWeight > 0) {
67
74
  this.copyUniforms["opacity"].value = 1;
@@ -74,11 +81,10 @@ class TAARenderPass extends SSAARenderPass.SSAARenderPass {
74
81
  this.copyUniforms["opacity"].value = 1 - accumulationWeight;
75
82
  this.copyUniforms["tDiffuse"].value = this.holdRenderTarget.texture;
76
83
  renderer.setRenderTarget(writeBuffer);
77
- if (accumulationWeight === 0)
78
- renderer.clear();
79
84
  this.fsQuad.render(renderer);
80
85
  }
81
86
  renderer.autoClear = autoClear;
87
+ renderer.setClearColor(this._oldClearColor, oldClearAlpha);
82
88
  }
83
89
  dispose() {
84
90
  super.dispose();
@@ -5,6 +5,7 @@ class TAARenderPass extends SSAARenderPass {
5
5
  super(scene, camera, clearColor, clearAlpha);
6
6
  this.sampleLevel = 0;
7
7
  this.accumulate = false;
8
+ this.accumulateIndex = -1;
8
9
  }
9
10
  render(renderer, writeBuffer, readBuffer, deltaTime) {
10
11
  if (this.accumulate === false) {
@@ -27,6 +28,8 @@ class TAARenderPass extends SSAARenderPass {
27
28
  }
28
29
  const autoClear = renderer.autoClear;
29
30
  renderer.autoClear = false;
31
+ renderer.getClearColor(this._oldClearColor);
32
+ const oldClearAlpha = renderer.getClearAlpha();
30
33
  const sampleWeight = 1 / jitterOffsets.length;
31
34
  if (this.accumulateIndex >= 0 && this.accumulateIndex < jitterOffsets.length) {
32
35
  this.copyUniforms["opacity"].value = sampleWeight;
@@ -47,11 +50,14 @@ class TAARenderPass extends SSAARenderPass {
47
50
  );
48
51
  }
49
52
  renderer.setRenderTarget(writeBuffer);
53
+ renderer.setClearColor(this.clearColor, this.clearAlpha);
50
54
  renderer.clear();
51
55
  renderer.render(this.scene, this.camera);
52
56
  renderer.setRenderTarget(this.sampleRenderTarget);
53
- if (this.accumulateIndex === 0)
57
+ if (this.accumulateIndex === 0) {
58
+ renderer.setClearColor(0, 0);
54
59
  renderer.clear();
60
+ }
55
61
  this.fsQuad.render(renderer);
56
62
  this.accumulateIndex++;
57
63
  if (this.accumulateIndex >= jitterOffsets.length)
@@ -60,6 +66,7 @@ class TAARenderPass extends SSAARenderPass {
60
66
  if (this.camera.clearViewOffset)
61
67
  this.camera.clearViewOffset();
62
68
  }
69
+ renderer.setClearColor(this.clearColor, this.clearAlpha);
63
70
  const accumulationWeight = this.accumulateIndex * sampleWeight;
64
71
  if (accumulationWeight > 0) {
65
72
  this.copyUniforms["opacity"].value = 1;
@@ -72,11 +79,10 @@ class TAARenderPass extends SSAARenderPass {
72
79
  this.copyUniforms["opacity"].value = 1 - accumulationWeight;
73
80
  this.copyUniforms["tDiffuse"].value = this.holdRenderTarget.texture;
74
81
  renderer.setRenderTarget(writeBuffer);
75
- if (accumulationWeight === 0)
76
- renderer.clear();
77
82
  this.fsQuad.render(renderer);
78
83
  }
79
84
  renderer.autoClear = autoClear;
85
+ renderer.setClearColor(this._oldClearColor, oldClearAlpha);
80
86
  }
81
87
  dispose() {
82
88
  super.dispose();
@@ -15,7 +15,8 @@ class TexturePass extends Pass.Pass {
15
15
  vertexShader: shader.vertexShader,
16
16
  fragmentShader: shader.fragmentShader,
17
17
  depthTest: false,
18
- depthWrite: false
18
+ depthWrite: false,
19
+ premultipliedAlpha: true
19
20
  });
20
21
  this.needsSwap = false;
21
22
  this.fsQuad = new Pass.FullScreenQuad(null);
@@ -13,7 +13,8 @@ class TexturePass extends Pass {
13
13
  vertexShader: shader.vertexShader,
14
14
  fragmentShader: shader.fragmentShader,
15
15
  depthTest: false,
16
- depthWrite: false
16
+ depthWrite: false,
17
+ premultipliedAlpha: true
17
18
  });
18
19
  this.needsSwap = false;
19
20
  this.fsQuad = new FullScreenQuad(null);