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.
- 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);
|