three-stdlib 2.24.1 → 2.25.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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);