@damienmortini/three 0.1.193 → 0.1.195
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/copyExamples.js +6 -6
- package/ecs/THREEView.js +7 -7
- package/examples/loaders/BasisTextureLoader.js +659 -788
- package/examples/loaders/DRACOLoader.js +451 -565
- package/examples/loaders/GLTFLoader.js +3361 -4288
- package/examples/loaders/KTX2Loader.js +675 -790
- package/examples/objects/Lensflare.js +353 -376
- package/examples/utils/BufferGeometryUtils.js +1086 -1345
- package/examples/utils/WorkerPool.js +73 -101
- package/gpgpu/THREEGPGPUSystem.js +55 -55
- package/index.js +1 -1
- package/loader/THREELoader.js +72 -67
- package/loader/meshoptimizerdecoder/THREE.EXT_meshopt_compression.js +23 -22
- package/loader/meshoptimizerdecoder/meshopt_decoder.js +53 -50
- package/material/THREEBaseMaterial.js +3 -3
- package/material/THREEPBRMaterial.js +15 -10
- package/material/THREEShaderMaterial.js +33 -32
- package/object/THREELine.js +36 -36
- package/object/THREEMotionVectorObject.js +74 -71
- package/object/THREERibbon.js +16 -17
- package/object/THREESky.js +59 -58
- package/object/THREESprite.js +42 -43
- package/object/THREESpriteAnimation.js +42 -42
- package/object/THREEText.js +106 -104
- package/package.json +4 -4
- package/renderer/THREERenderer.js +64 -60
- package/renderer/THREEStereoRenderer.js +35 -32
- package/renderer/WebGLRenderTarget2D.js +15 -15
- package/shader/THREEBaseShader.js +1 -1
- package/types/index.d.ts +1 -1
- package/types/renderer/WebGLRenderTarget2D.d.ts +22 -22
|
@@ -1,123 +1,127 @@
|
|
|
1
1
|
import {
|
|
2
|
-
WebGLRenderer,
|
|
3
|
-
WebGLRenderTarget,
|
|
4
2
|
DepthTexture,
|
|
5
|
-
RGBAFormat,
|
|
6
3
|
LinearFilter,
|
|
7
|
-
UnsignedShortType,
|
|
8
|
-
Scene,
|
|
9
|
-
OrthographicCamera,
|
|
10
4
|
Mesh,
|
|
5
|
+
OrthographicCamera,
|
|
11
6
|
PlaneGeometry,
|
|
12
|
-
|
|
7
|
+
RGBAFormat,
|
|
8
|
+
Scene,
|
|
9
|
+
UnsignedShortType,
|
|
10
|
+
WebGLRenderer,
|
|
11
|
+
WebGLRenderTarget,
|
|
12
|
+
} from '../../../three/src/Three.js';
|
|
13
13
|
|
|
14
14
|
export default class THREERenderer extends WebGLRenderer {
|
|
15
15
|
constructor(options) {
|
|
16
|
-
super(Object.assign({ antialias: true }, options))
|
|
16
|
+
super(Object.assign({ antialias: true }, options));
|
|
17
17
|
|
|
18
|
-
this.filters = []
|
|
19
|
-
this._renderTargets = new Map()
|
|
18
|
+
this.filters = [];
|
|
19
|
+
this._renderTargets = new Map();
|
|
20
20
|
|
|
21
21
|
const renderTargetIn = new WebGLRenderTarget(this.domElement.width, this.domElement.height, {
|
|
22
22
|
format: RGBAFormat,
|
|
23
23
|
minFilter: LinearFilter,
|
|
24
24
|
magFilter: LinearFilter,
|
|
25
25
|
stencilBuffer: false,
|
|
26
|
-
})
|
|
27
|
-
renderTargetIn.texture.generateMipmaps = false
|
|
26
|
+
});
|
|
27
|
+
renderTargetIn.texture.generateMipmaps = false;
|
|
28
28
|
|
|
29
|
-
const renderTargetOut = renderTargetIn.clone()
|
|
30
|
-
renderTargetOut.texture.generateMipmaps = false
|
|
29
|
+
const renderTargetOut = renderTargetIn.clone();
|
|
30
|
+
renderTargetOut.texture.generateMipmaps = false;
|
|
31
31
|
|
|
32
32
|
if (this.context.getExtension('WEBGL_depth_texture')) {
|
|
33
|
-
renderTargetIn.depthTexture = new DepthTexture()
|
|
34
|
-
renderTargetIn.depthTexture.type = UnsignedShortType
|
|
35
|
-
renderTargetOut.depthTexture = new DepthTexture()
|
|
36
|
-
renderTargetOut.depthTexture.type = UnsignedShortType
|
|
33
|
+
renderTargetIn.depthTexture = new DepthTexture();
|
|
34
|
+
renderTargetIn.depthTexture.type = UnsignedShortType;
|
|
35
|
+
renderTargetOut.depthTexture = new DepthTexture();
|
|
36
|
+
renderTargetOut.depthTexture.type = UnsignedShortType;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
this._renderTargets.set(this, {
|
|
40
40
|
in: renderTargetIn,
|
|
41
41
|
out: renderTargetOut,
|
|
42
|
-
})
|
|
42
|
+
});
|
|
43
43
|
|
|
44
|
-
this.scene = new Scene()
|
|
45
|
-
this.scene.camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1)
|
|
46
|
-
this._quad = new Mesh(new PlaneGeometry(2, 2))
|
|
47
|
-
this._quad.frustumCulled = false
|
|
48
|
-
this.scene.add(this._quad)
|
|
44
|
+
this.scene = new Scene();
|
|
45
|
+
this.scene.camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1);
|
|
46
|
+
this._quad = new Mesh(new PlaneGeometry(2, 2));
|
|
47
|
+
this._quad.frustumCulled = false;
|
|
48
|
+
this.scene.add(this._quad);
|
|
49
49
|
|
|
50
50
|
// Fix to make WebGLRenderer.render extendable
|
|
51
|
-
this._render = this.render
|
|
52
|
-
delete this.render
|
|
51
|
+
this._render = this.render;
|
|
52
|
+
delete this.render;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
applyFilter(filter, renderTargetIn, renderTargetOut) {
|
|
56
|
-
this._quad.material = filter
|
|
56
|
+
this._quad.material = filter;
|
|
57
57
|
if (filter.renderTargetTexture) {
|
|
58
|
-
filter.renderTargetTexture = renderTargetIn.texture
|
|
58
|
+
filter.renderTargetTexture = renderTargetIn.texture;
|
|
59
59
|
}
|
|
60
60
|
if (filter.renderTargetDepthTexture && renderTargetIn.depthTexture) {
|
|
61
|
-
filter.renderTargetDepthTexture = renderTargetIn.depthTexture
|
|
61
|
+
filter.renderTargetDepthTexture = renderTargetIn.depthTexture;
|
|
62
62
|
}
|
|
63
|
-
this._render(this.scene, this.scene.camera, renderTargetOut)
|
|
63
|
+
this._render(this.scene, this.scene.camera, renderTargetOut);
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
resize(width, height) {
|
|
67
|
-
this.setSize(width, height, false)
|
|
68
|
-
const renderTargets = this._renderTargets.get(this)
|
|
69
|
-
renderTargets.in.setSize(width, height)
|
|
70
|
-
renderTargets.out.setSize(width, height)
|
|
67
|
+
this.setSize(width, height, false);
|
|
68
|
+
const renderTargets = this._renderTargets.get(this);
|
|
69
|
+
renderTargets.in.setSize(width, height);
|
|
70
|
+
renderTargets.out.setSize(width, height);
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
render({ scene, camera = undefined, filters = this.filters, renderTarget = undefined, viewport = undefined, scissor = viewport } = {}) {
|
|
74
74
|
if (arguments.length > 1) {
|
|
75
|
-
this._render(...arguments)
|
|
76
|
-
return
|
|
75
|
+
this._render(...arguments);
|
|
76
|
+
return;
|
|
77
77
|
}
|
|
78
|
-
let renderTargets = this._renderTargets.get(renderTarget || this)
|
|
78
|
+
let renderTargets = this._renderTargets.get(renderTarget || this);
|
|
79
79
|
if (!renderTargets) {
|
|
80
80
|
renderTargets = {
|
|
81
81
|
in: renderTarget.clone(),
|
|
82
82
|
out: renderTarget.clone(),
|
|
83
|
-
}
|
|
84
|
-
renderTargets.in.texture.generateMipmaps = false
|
|
85
|
-
renderTargets.out.texture.generateMipmaps = false
|
|
86
|
-
this._renderTargets.set(renderTarget, renderTargets)
|
|
83
|
+
};
|
|
84
|
+
renderTargets.in.texture.generateMipmaps = false;
|
|
85
|
+
renderTargets.out.texture.generateMipmaps = false;
|
|
86
|
+
this._renderTargets.set(renderTarget, renderTargets);
|
|
87
87
|
}
|
|
88
88
|
if (viewport || scissor) {
|
|
89
89
|
if (viewport) {
|
|
90
90
|
if (renderTarget) {
|
|
91
|
-
renderTarget.viewport.set(viewport[0], viewport[1], viewport[2], viewport[3])
|
|
92
|
-
}
|
|
93
|
-
|
|
91
|
+
renderTarget.viewport.set(viewport[0], viewport[1], viewport[2], viewport[3]);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
this.setViewport(viewport[0], viewport[1], viewport[2], viewport[3]);
|
|
94
95
|
}
|
|
95
96
|
}
|
|
96
97
|
if (renderTarget) {
|
|
97
|
-
renderTarget.scissor.set(scissor[0], scissor[1], scissor[2], scissor[3])
|
|
98
|
-
renderTarget.scissorTest = true
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
this.
|
|
98
|
+
renderTarget.scissor.set(scissor[0], scissor[1], scissor[2], scissor[3]);
|
|
99
|
+
renderTarget.scissorTest = true;
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
this.setScissor(scissor[0], scissor[1], scissor[2], scissor[3]);
|
|
103
|
+
this.setScissorTest(true);
|
|
102
104
|
}
|
|
103
|
-
}
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
104
107
|
if (renderTarget) {
|
|
105
|
-
renderTarget.viewport.set(0, 0, renderTarget.width, renderTarget.height)
|
|
106
|
-
renderTarget.scissor.set(0, 0, renderTarget.width, renderTarget.height)
|
|
107
|
-
renderTarget.scissorTest = false
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
this.
|
|
111
|
-
this.
|
|
108
|
+
renderTarget.viewport.set(0, 0, renderTarget.width, renderTarget.height);
|
|
109
|
+
renderTarget.scissor.set(0, 0, renderTarget.width, renderTarget.height);
|
|
110
|
+
renderTarget.scissorTest = false;
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
this.setViewport(0, 0, this.domElement.width, this.domElement.height);
|
|
114
|
+
this.setScissor(0, 0, this.domElement.width, this.domElement.height);
|
|
115
|
+
this.setScissorTest(false);
|
|
112
116
|
}
|
|
113
117
|
}
|
|
114
118
|
if (scene) {
|
|
115
|
-
camera = camera || scene.camera
|
|
116
|
-
this._render(scene, camera, filters.length ? renderTargets.in : renderTarget)
|
|
119
|
+
camera = camera || scene.camera;
|
|
120
|
+
this._render(scene, camera, filters.length ? renderTargets.in : renderTarget);
|
|
117
121
|
}
|
|
118
122
|
for (const [i, filter] of filters.entries()) {
|
|
119
123
|
this.applyFilter(filter, renderTargets.in, i < filters.length - 1 ? renderTargets.out : renderTarget);
|
|
120
|
-
[renderTargets.in, renderTargets.out] = [renderTargets.out, renderTargets.in]
|
|
124
|
+
[renderTargets.in, renderTargets.out] = [renderTargets.out, renderTargets.in];
|
|
121
125
|
}
|
|
122
126
|
}
|
|
123
127
|
}
|
|
@@ -1,60 +1,63 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { StereoCamera, WebGLRenderer } from '../../../three/src/Three.js';
|
|
2
2
|
|
|
3
3
|
export default class THREEStereoRenderer {
|
|
4
4
|
constructor(renderer = new WebGLRenderer()) {
|
|
5
|
-
this.renderer = renderer
|
|
5
|
+
this.renderer = renderer;
|
|
6
6
|
|
|
7
|
-
this._stereoCamera = new StereoCamera()
|
|
8
|
-
this._stereoCamera.aspect = 0.5
|
|
7
|
+
this._stereoCamera = new StereoCamera();
|
|
8
|
+
this._stereoCamera.aspect = 0.5;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
set eyeOffset(value) {
|
|
12
|
-
this._stereoCamera.eyeSep = value
|
|
12
|
+
this._stereoCamera.eyeSep = value;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
setSize(width, height) {
|
|
16
|
-
this.renderer.setSize(width, height)
|
|
16
|
+
this.renderer.setSize(width, height);
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
render(scene, camera, renderTarget) {
|
|
20
|
-
scene.updateMatrixWorld()
|
|
20
|
+
scene.updateMatrixWorld();
|
|
21
21
|
|
|
22
|
-
if (camera.parent === null) camera.updateMatrixWorld()
|
|
22
|
+
if (camera.parent === null) camera.updateMatrixWorld();
|
|
23
23
|
|
|
24
|
-
this._stereoCamera.update(camera)
|
|
24
|
+
this._stereoCamera.update(camera);
|
|
25
25
|
|
|
26
|
-
const size = this.renderer.getSize()
|
|
26
|
+
const size = this.renderer.getSize();
|
|
27
27
|
|
|
28
|
-
this.renderer.clear()
|
|
28
|
+
this.renderer.clear();
|
|
29
29
|
|
|
30
30
|
if (renderTarget) {
|
|
31
|
-
renderTarget.scissorTest = true
|
|
32
|
-
renderTarget.scissor.set(0, 0, size.width * .5, size.height)
|
|
33
|
-
renderTarget.viewport.set(0, 0, size.width * .5, size.height)
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
this.renderer.
|
|
37
|
-
this.renderer.
|
|
31
|
+
renderTarget.scissorTest = true;
|
|
32
|
+
renderTarget.scissor.set(0, 0, size.width * 0.5, size.height);
|
|
33
|
+
renderTarget.viewport.set(0, 0, size.width * 0.5, size.height);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
this.renderer.setScissorTest(true);
|
|
37
|
+
this.renderer.setScissor(0, 0, size.width * 0.5, size.height);
|
|
38
|
+
this.renderer.setViewport(0, 0, size.width * 0.5, size.height);
|
|
38
39
|
}
|
|
39
|
-
this.renderer.render(scene, this._stereoCamera.cameraL, renderTarget)
|
|
40
|
+
this.renderer.render(scene, this._stereoCamera.cameraL, renderTarget);
|
|
40
41
|
|
|
41
42
|
if (renderTarget) {
|
|
42
|
-
renderTarget.scissor.set(size.width * .5, 0, size.width * .5, size.height)
|
|
43
|
-
renderTarget.viewport.set(size.width * .5, 0, size.width * .5, size.height)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
this.renderer.
|
|
43
|
+
renderTarget.scissor.set(size.width * 0.5, 0, size.width * 0.5, size.height);
|
|
44
|
+
renderTarget.viewport.set(size.width * 0.5, 0, size.width * 0.5, size.height);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
this.renderer.setScissor(size.width * 0.5, 0, size.width * 0.5, size.height);
|
|
48
|
+
this.renderer.setViewport(size.width * 0.5, 0, size.width * 0.5, size.height);
|
|
47
49
|
}
|
|
48
|
-
this.renderer.render(scene, this._stereoCamera.cameraR, renderTarget)
|
|
50
|
+
this.renderer.render(scene, this._stereoCamera.cameraR, renderTarget);
|
|
49
51
|
|
|
50
52
|
if (renderTarget) {
|
|
51
|
-
renderTarget.scissorTest = false
|
|
52
|
-
renderTarget.scissor.set(0, 0, size.width, size.height)
|
|
53
|
-
renderTarget.viewport.set(0, 0, size.width, size.height)
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
this.renderer.
|
|
57
|
-
this.renderer.
|
|
53
|
+
renderTarget.scissorTest = false;
|
|
54
|
+
renderTarget.scissor.set(0, 0, size.width, size.height);
|
|
55
|
+
renderTarget.viewport.set(0, 0, size.width, size.height);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
this.renderer.setScissorTest(false);
|
|
59
|
+
this.renderer.setScissor(0, 0, size.width, size.height);
|
|
60
|
+
this.renderer.setViewport(0, 0, size.width, size.height);
|
|
58
61
|
}
|
|
59
62
|
}
|
|
60
63
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Mesh, OrthographicCamera, PlaneGeometry, Scene, WebGLRenderTarget } from 'three';
|
|
2
2
|
|
|
3
3
|
export class WebGLRenderTarget2D extends WebGLRenderTarget {
|
|
4
|
-
#scene
|
|
5
|
-
#camera
|
|
6
|
-
#quad
|
|
4
|
+
#scene;
|
|
5
|
+
#camera;
|
|
6
|
+
#quad;
|
|
7
7
|
|
|
8
8
|
constructor({
|
|
9
9
|
renderer,
|
|
@@ -36,28 +36,28 @@ export class WebGLRenderTarget2D extends WebGLRenderTarget {
|
|
|
36
36
|
depthBuffer,
|
|
37
37
|
stencilBuffer,
|
|
38
38
|
depthTexture,
|
|
39
|
-
})
|
|
39
|
+
});
|
|
40
40
|
|
|
41
|
-
this.renderer = renderer
|
|
41
|
+
this.renderer = renderer;
|
|
42
42
|
|
|
43
|
-
this.#scene = new Scene()
|
|
44
|
-
this.#camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1)
|
|
43
|
+
this.#scene = new Scene();
|
|
44
|
+
this.#camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1);
|
|
45
45
|
|
|
46
|
-
this.#quad = new Mesh(new PlaneGeometry(2, 2), material)
|
|
47
|
-
this.#scene.add(this.#quad)
|
|
46
|
+
this.#quad = new Mesh(new PlaneGeometry(2, 2), material);
|
|
47
|
+
this.#scene.add(this.#quad);
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
get material() {
|
|
51
|
-
return this.#quad.material
|
|
51
|
+
return this.#quad.material;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
set material(value) {
|
|
55
|
-
this.#quad.material = value
|
|
55
|
+
this.#quad.material = value;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
render({ debug = false } = {}) {
|
|
59
|
-
if (!debug) this.renderer.setRenderTarget(this)
|
|
60
|
-
this.renderer.render(this.#scene, this.#camera)
|
|
61
|
-
this.renderer.setRenderTarget(null)
|
|
59
|
+
if (!debug) this.renderer.setRenderTarget(this);
|
|
60
|
+
this.renderer.render(this.#scene, this.#camera);
|
|
61
|
+
this.renderer.setRenderTarget(null);
|
|
62
62
|
}
|
|
63
63
|
}
|
package/types/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { WebGLRenderTarget2D } from
|
|
1
|
+
export { WebGLRenderTarget2D } from './renderer/WebGLRenderTarget2D.js';
|
|
@@ -17,26 +17,26 @@ export class WebGLRenderTarget2D {
|
|
|
17
17
|
stencilBuffer,
|
|
18
18
|
depthTexture,
|
|
19
19
|
}: {
|
|
20
|
-
renderer: any
|
|
21
|
-
material?: any
|
|
22
|
-
width?: number
|
|
23
|
-
height?: number
|
|
24
|
-
wrapS?: any
|
|
25
|
-
wrapT?: any
|
|
26
|
-
magFilter?: any
|
|
27
|
-
minFilter?: any
|
|
28
|
-
format?: any
|
|
29
|
-
type?: any
|
|
30
|
-
anisotropy?: any
|
|
31
|
-
encoding?: any
|
|
32
|
-
generateMipmaps?: any
|
|
33
|
-
depthBuffer?: any
|
|
34
|
-
stencilBuffer?: any
|
|
35
|
-
depthTexture?: any
|
|
36
|
-
})
|
|
37
|
-
renderer: any
|
|
38
|
-
set material(arg: any)
|
|
39
|
-
get material(): any
|
|
40
|
-
render({ debug }?: { debug?: boolean }): void
|
|
41
|
-
#private
|
|
20
|
+
renderer: any;
|
|
21
|
+
material?: any;
|
|
22
|
+
width?: number;
|
|
23
|
+
height?: number;
|
|
24
|
+
wrapS?: any;
|
|
25
|
+
wrapT?: any;
|
|
26
|
+
magFilter?: any;
|
|
27
|
+
minFilter?: any;
|
|
28
|
+
format?: any;
|
|
29
|
+
type?: any;
|
|
30
|
+
anisotropy?: any;
|
|
31
|
+
encoding?: any;
|
|
32
|
+
generateMipmaps?: any;
|
|
33
|
+
depthBuffer?: any;
|
|
34
|
+
stencilBuffer?: any;
|
|
35
|
+
depthTexture?: any;
|
|
36
|
+
});
|
|
37
|
+
renderer: any;
|
|
38
|
+
set material(arg: any);
|
|
39
|
+
get material(): any;
|
|
40
|
+
render({ debug }?: { debug?: boolean }): void;
|
|
41
|
+
#private;
|
|
42
42
|
}
|