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.
- package/controls/OrbitControls.cjs +6 -2
- package/controls/OrbitControls.d.ts +2 -0
- package/controls/OrbitControls.js +6 -2
- package/package.json +1 -1
- package/postprocessing/EffectComposer.cjs +1 -0
- package/postprocessing/EffectComposer.js +2 -1
- package/postprocessing/SSAARenderPass.cjs +2 -7
- package/postprocessing/SSAARenderPass.js +3 -8
- package/postprocessing/SavePass.cjs +2 -1
- package/postprocessing/SavePass.js +3 -2
- package/postprocessing/TAARenderPass.cjs +9 -3
- package/postprocessing/TAARenderPass.js +9 -3
- package/postprocessing/TexturePass.cjs +2 -1
- package/postprocessing/TexturePass.js +2 -1
@@ -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;
|
@@ -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
@@ -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
|
-
|
26
|
-
blending: THREE.
|
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,
|
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
|
-
|
24
|
-
blending:
|
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);
|