@damienmortini/three 0.1.183 → 0.1.185

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.
@@ -1,123 +1,123 @@
1
- import {
2
- WebGLRenderer,
3
- WebGLRenderTarget,
4
- DepthTexture,
5
- RGBAFormat,
6
- LinearFilter,
7
- UnsignedShortType,
8
- Scene,
9
- OrthographicCamera,
10
- Mesh,
11
- PlaneGeometry,
12
- } from '../../../three/src/Three.js'
13
-
14
- export default class THREERenderer extends WebGLRenderer {
15
- constructor(options) {
16
- super(Object.assign({ antialias: true }, options))
17
-
18
- this.filters = []
19
- this._renderTargets = new Map()
20
-
21
- const renderTargetIn = new WebGLRenderTarget(this.domElement.width, this.domElement.height, {
22
- format: RGBAFormat,
23
- minFilter: LinearFilter,
24
- magFilter: LinearFilter,
25
- stencilBuffer: false,
26
- })
27
- renderTargetIn.texture.generateMipmaps = false
28
-
29
- const renderTargetOut = renderTargetIn.clone()
30
- renderTargetOut.texture.generateMipmaps = false
31
-
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
37
- }
38
-
39
- this._renderTargets.set(this, {
40
- in: renderTargetIn,
41
- out: renderTargetOut,
42
- })
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)
49
-
50
- // Fix to make WebGLRenderer.render extendable
51
- this._render = this.render
52
- delete this.render
53
- }
54
-
55
- applyFilter(filter, renderTargetIn, renderTargetOut) {
56
- this._quad.material = filter
57
- if (filter.renderTargetTexture) {
58
- filter.renderTargetTexture = renderTargetIn.texture
59
- }
60
- if (filter.renderTargetDepthTexture && renderTargetIn.depthTexture) {
61
- filter.renderTargetDepthTexture = renderTargetIn.depthTexture
62
- }
63
- this._render(this.scene, this.scene.camera, renderTargetOut)
64
- }
65
-
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)
71
- }
72
-
73
- render({ scene, camera = undefined, filters = this.filters, renderTarget = undefined, viewport = undefined, scissor = viewport } = {}) {
74
- if (arguments.length > 1) {
75
- this._render(...arguments)
76
- return
77
- }
78
- let renderTargets = this._renderTargets.get(renderTarget || this)
79
- if (!renderTargets) {
80
- renderTargets = {
81
- in: renderTarget.clone(),
82
- out: renderTarget.clone(),
83
- }
84
- renderTargets.in.texture.generateMipmaps = false
85
- renderTargets.out.texture.generateMipmaps = false
86
- this._renderTargets.set(renderTarget, renderTargets)
87
- }
88
- if (viewport || scissor) {
89
- if (viewport) {
90
- if (renderTarget) {
91
- renderTarget.viewport.set(viewport[0], viewport[1], viewport[2], viewport[3])
92
- } else {
93
- this.setViewport(viewport[0], viewport[1], viewport[2], viewport[3])
94
- }
95
- }
96
- if (renderTarget) {
97
- renderTarget.scissor.set(scissor[0], scissor[1], scissor[2], scissor[3])
98
- renderTarget.scissorTest = true
99
- } else {
100
- this.setScissor(scissor[0], scissor[1], scissor[2], scissor[3])
101
- this.setScissorTest(true)
102
- }
103
- } else {
104
- 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
- } else {
109
- this.setViewport(0, 0, this.domElement.width, this.domElement.height)
110
- this.setScissor(0, 0, this.domElement.width, this.domElement.height)
111
- this.setScissorTest(false)
112
- }
113
- }
114
- if (scene) {
115
- camera = camera || scene.camera
116
- this._render(scene, camera, filters.length ? renderTargets.in : renderTarget)
117
- }
118
- for (const [i, filter] of filters.entries()) {
119
- this.applyFilter(filter, renderTargets.in, i < filters.length - 1 ? renderTargets.out : renderTarget);
120
- [renderTargets.in, renderTargets.out] = [renderTargets.out, renderTargets.in]
121
- }
122
- }
123
- }
1
+ import {
2
+ WebGLRenderer,
3
+ WebGLRenderTarget,
4
+ DepthTexture,
5
+ RGBAFormat,
6
+ LinearFilter,
7
+ UnsignedShortType,
8
+ Scene,
9
+ OrthographicCamera,
10
+ Mesh,
11
+ PlaneGeometry,
12
+ } from '../../../three/src/Three.js'
13
+
14
+ export default class THREERenderer extends WebGLRenderer {
15
+ constructor(options) {
16
+ super(Object.assign({ antialias: true }, options))
17
+
18
+ this.filters = []
19
+ this._renderTargets = new Map()
20
+
21
+ const renderTargetIn = new WebGLRenderTarget(this.domElement.width, this.domElement.height, {
22
+ format: RGBAFormat,
23
+ minFilter: LinearFilter,
24
+ magFilter: LinearFilter,
25
+ stencilBuffer: false,
26
+ })
27
+ renderTargetIn.texture.generateMipmaps = false
28
+
29
+ const renderTargetOut = renderTargetIn.clone()
30
+ renderTargetOut.texture.generateMipmaps = false
31
+
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
37
+ }
38
+
39
+ this._renderTargets.set(this, {
40
+ in: renderTargetIn,
41
+ out: renderTargetOut,
42
+ })
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)
49
+
50
+ // Fix to make WebGLRenderer.render extendable
51
+ this._render = this.render
52
+ delete this.render
53
+ }
54
+
55
+ applyFilter(filter, renderTargetIn, renderTargetOut) {
56
+ this._quad.material = filter
57
+ if (filter.renderTargetTexture) {
58
+ filter.renderTargetTexture = renderTargetIn.texture
59
+ }
60
+ if (filter.renderTargetDepthTexture && renderTargetIn.depthTexture) {
61
+ filter.renderTargetDepthTexture = renderTargetIn.depthTexture
62
+ }
63
+ this._render(this.scene, this.scene.camera, renderTargetOut)
64
+ }
65
+
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)
71
+ }
72
+
73
+ render({ scene, camera = undefined, filters = this.filters, renderTarget = undefined, viewport = undefined, scissor = viewport } = {}) {
74
+ if (arguments.length > 1) {
75
+ this._render(...arguments)
76
+ return
77
+ }
78
+ let renderTargets = this._renderTargets.get(renderTarget || this)
79
+ if (!renderTargets) {
80
+ renderTargets = {
81
+ in: renderTarget.clone(),
82
+ out: renderTarget.clone(),
83
+ }
84
+ renderTargets.in.texture.generateMipmaps = false
85
+ renderTargets.out.texture.generateMipmaps = false
86
+ this._renderTargets.set(renderTarget, renderTargets)
87
+ }
88
+ if (viewport || scissor) {
89
+ if (viewport) {
90
+ if (renderTarget) {
91
+ renderTarget.viewport.set(viewport[0], viewport[1], viewport[2], viewport[3])
92
+ } else {
93
+ this.setViewport(viewport[0], viewport[1], viewport[2], viewport[3])
94
+ }
95
+ }
96
+ if (renderTarget) {
97
+ renderTarget.scissor.set(scissor[0], scissor[1], scissor[2], scissor[3])
98
+ renderTarget.scissorTest = true
99
+ } else {
100
+ this.setScissor(scissor[0], scissor[1], scissor[2], scissor[3])
101
+ this.setScissorTest(true)
102
+ }
103
+ } else {
104
+ 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
+ } else {
109
+ this.setViewport(0, 0, this.domElement.width, this.domElement.height)
110
+ this.setScissor(0, 0, this.domElement.width, this.domElement.height)
111
+ this.setScissorTest(false)
112
+ }
113
+ }
114
+ if (scene) {
115
+ camera = camera || scene.camera
116
+ this._render(scene, camera, filters.length ? renderTargets.in : renderTarget)
117
+ }
118
+ for (const [i, filter] of filters.entries()) {
119
+ this.applyFilter(filter, renderTargets.in, i < filters.length - 1 ? renderTargets.out : renderTarget);
120
+ [renderTargets.in, renderTargets.out] = [renderTargets.out, renderTargets.in]
121
+ }
122
+ }
123
+ }
@@ -1,60 +1,60 @@
1
- import { WebGLRenderer, StereoCamera } from '../../../three/src/Three.js'
2
-
3
- export default class THREEStereoRenderer {
4
- constructor(renderer = new WebGLRenderer()) {
5
- this.renderer = renderer
6
-
7
- this._stereoCamera = new StereoCamera()
8
- this._stereoCamera.aspect = 0.5
9
- }
10
-
11
- set eyeOffset(value) {
12
- this._stereoCamera.eyeSep = value
13
- }
14
-
15
- setSize(width, height) {
16
- this.renderer.setSize(width, height)
17
- }
18
-
19
- render(scene, camera, renderTarget) {
20
- scene.updateMatrixWorld()
21
-
22
- if (camera.parent === null) camera.updateMatrixWorld()
23
-
24
- this._stereoCamera.update(camera)
25
-
26
- const size = this.renderer.getSize()
27
-
28
- this.renderer.clear()
29
-
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
- } else {
35
- this.renderer.setScissorTest(true)
36
- this.renderer.setScissor(0, 0, size.width * .5, size.height)
37
- this.renderer.setViewport(0, 0, size.width * .5, size.height)
38
- }
39
- this.renderer.render(scene, this._stereoCamera.cameraL, renderTarget)
40
-
41
- 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
- } else {
45
- this.renderer.setScissor(size.width * .5, 0, size.width * .5, size.height)
46
- this.renderer.setViewport(size.width * .5, 0, size.width * .5, size.height)
47
- }
48
- this.renderer.render(scene, this._stereoCamera.cameraR, renderTarget)
49
-
50
- 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
- } else {
55
- this.renderer.setScissorTest(false)
56
- this.renderer.setScissor(0, 0, size.width, size.height)
57
- this.renderer.setViewport(0, 0, size.width, size.height)
58
- }
59
- }
60
- }
1
+ import { WebGLRenderer, StereoCamera } from '../../../three/src/Three.js'
2
+
3
+ export default class THREEStereoRenderer {
4
+ constructor(renderer = new WebGLRenderer()) {
5
+ this.renderer = renderer
6
+
7
+ this._stereoCamera = new StereoCamera()
8
+ this._stereoCamera.aspect = 0.5
9
+ }
10
+
11
+ set eyeOffset(value) {
12
+ this._stereoCamera.eyeSep = value
13
+ }
14
+
15
+ setSize(width, height) {
16
+ this.renderer.setSize(width, height)
17
+ }
18
+
19
+ render(scene, camera, renderTarget) {
20
+ scene.updateMatrixWorld()
21
+
22
+ if (camera.parent === null) camera.updateMatrixWorld()
23
+
24
+ this._stereoCamera.update(camera)
25
+
26
+ const size = this.renderer.getSize()
27
+
28
+ this.renderer.clear()
29
+
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
+ } else {
35
+ this.renderer.setScissorTest(true)
36
+ this.renderer.setScissor(0, 0, size.width * .5, size.height)
37
+ this.renderer.setViewport(0, 0, size.width * .5, size.height)
38
+ }
39
+ this.renderer.render(scene, this._stereoCamera.cameraL, renderTarget)
40
+
41
+ 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
+ } else {
45
+ this.renderer.setScissor(size.width * .5, 0, size.width * .5, size.height)
46
+ this.renderer.setViewport(size.width * .5, 0, size.width * .5, size.height)
47
+ }
48
+ this.renderer.render(scene, this._stereoCamera.cameraR, renderTarget)
49
+
50
+ 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
+ } else {
55
+ this.renderer.setScissorTest(false)
56
+ this.renderer.setScissor(0, 0, size.width, size.height)
57
+ this.renderer.setViewport(0, 0, size.width, size.height)
58
+ }
59
+ }
60
+ }
@@ -1,63 +1,63 @@
1
- import { Scene, Mesh, PlaneGeometry, WebGLRenderTarget, OrthographicCamera } from 'three'
2
-
3
- export class WebGLRenderTarget2D extends WebGLRenderTarget {
4
- #scene
5
- #camera
6
- #quad
7
-
8
- constructor({
9
- renderer,
10
- material = undefined,
11
- width = 1024,
12
- height = 1024,
13
- wrapS = undefined,
14
- wrapT = undefined,
15
- magFilter = undefined,
16
- minFilter = undefined,
17
- format = undefined,
18
- type = undefined,
19
- anisotropy = undefined,
20
- encoding = undefined,
21
- generateMipmaps = undefined,
22
- depthBuffer = undefined,
23
- stencilBuffer = undefined,
24
- depthTexture = undefined,
25
- }) {
26
- super(width, height, {
27
- wrapS,
28
- wrapT,
29
- magFilter,
30
- minFilter,
31
- format,
32
- type,
33
- anisotropy,
34
- encoding,
35
- generateMipmaps,
36
- depthBuffer,
37
- stencilBuffer,
38
- depthTexture,
39
- })
40
-
41
- this.renderer = renderer
42
-
43
- this.#scene = new Scene()
44
- this.#camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1)
45
-
46
- this.#quad = new Mesh(new PlaneGeometry(2, 2), material)
47
- this.#scene.add(this.#quad)
48
- }
49
-
50
- get material() {
51
- return this.#quad.material
52
- }
53
-
54
- set material(value) {
55
- this.#quad.material = value
56
- }
57
-
58
- render({ debug = false } = {}) {
59
- if (!debug) this.renderer.setRenderTarget(this)
60
- this.renderer.render(this.#scene, this.#camera)
61
- this.renderer.setRenderTarget(null)
62
- }
63
- }
1
+ import { Scene, Mesh, PlaneGeometry, WebGLRenderTarget, OrthographicCamera } from 'three'
2
+
3
+ export class WebGLRenderTarget2D extends WebGLRenderTarget {
4
+ #scene
5
+ #camera
6
+ #quad
7
+
8
+ constructor({
9
+ renderer,
10
+ material = undefined,
11
+ width = 1024,
12
+ height = 1024,
13
+ wrapS = undefined,
14
+ wrapT = undefined,
15
+ magFilter = undefined,
16
+ minFilter = undefined,
17
+ format = undefined,
18
+ type = undefined,
19
+ anisotropy = undefined,
20
+ encoding = undefined,
21
+ generateMipmaps = undefined,
22
+ depthBuffer = undefined,
23
+ stencilBuffer = undefined,
24
+ depthTexture = undefined,
25
+ }) {
26
+ super(width, height, {
27
+ wrapS,
28
+ wrapT,
29
+ magFilter,
30
+ minFilter,
31
+ format,
32
+ type,
33
+ anisotropy,
34
+ encoding,
35
+ generateMipmaps,
36
+ depthBuffer,
37
+ stencilBuffer,
38
+ depthTexture,
39
+ })
40
+
41
+ this.renderer = renderer
42
+
43
+ this.#scene = new Scene()
44
+ this.#camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1)
45
+
46
+ this.#quad = new Mesh(new PlaneGeometry(2, 2), material)
47
+ this.#scene.add(this.#quad)
48
+ }
49
+
50
+ get material() {
51
+ return this.#quad.material
52
+ }
53
+
54
+ set material(value) {
55
+ this.#quad.material = value
56
+ }
57
+
58
+ render({ debug = false } = {}) {
59
+ if (!debug) this.renderer.setRenderTarget(this)
60
+ this.renderer.render(this.#scene, this.#camera)
61
+ this.renderer.setRenderTarget(null)
62
+ }
63
+ }
@@ -1,33 +1,33 @@
1
- export default {
2
- vertexChunks: [
3
- ['start', `
4
- out vec3 vPosition;
5
- out vec3 vNormal;
6
- out vec2 vUV;
7
- out vec3 vWorldPosition;
8
- out vec3 vViewDirection;
9
- out float vFresnel;
10
- `],
11
- ['end', `
12
- vec3 worldPosition = (modelMatrix * vec4(position, 1.)).xyz;
13
- gl_Position = projectionMatrix * viewMatrix * vec4(worldPosition, 1.);
14
-
15
- vWorldPosition = worldPosition;
16
- vViewDirection = normalize(worldPosition - cameraPosition);
17
- vPosition = position;
18
- vNormal = normalize(mat3(modelMatrix) * normal);
19
- vUV = uv;
20
- vFresnel = max(0., 1. - dot(-vViewDirection, vNormal));
21
- `],
22
- ],
23
- fragmentChunks: [
24
- ['start', `
25
- in vec3 vPosition;
26
- in vec3 vNormal;
27
- in vec2 vUV;
28
- in vec3 vWorldPosition;
29
- in vec3 vViewDirection;
30
- in float vFresnel;
31
- `],
32
- ],
33
- }
1
+ export default {
2
+ vertexChunks: [
3
+ ['start', `
4
+ out vec3 vPosition;
5
+ out vec3 vNormal;
6
+ out vec2 vUV;
7
+ out vec3 vWorldPosition;
8
+ out vec3 vViewDirection;
9
+ out float vFresnel;
10
+ `],
11
+ ['end', `
12
+ vec3 worldPosition = (modelMatrix * vec4(position, 1.)).xyz;
13
+ gl_Position = projectionMatrix * viewMatrix * vec4(worldPosition, 1.);
14
+
15
+ vWorldPosition = worldPosition;
16
+ vViewDirection = normalize(worldPosition - cameraPosition);
17
+ vPosition = position;
18
+ vNormal = normalize(mat3(modelMatrix) * normal);
19
+ vUV = uv;
20
+ vFresnel = max(0., 1. - dot(-vViewDirection, vNormal));
21
+ `],
22
+ ],
23
+ fragmentChunks: [
24
+ ['start', `
25
+ in vec3 vPosition;
26
+ in vec3 vNormal;
27
+ in vec2 vUV;
28
+ in vec3 vWorldPosition;
29
+ in vec3 vViewDirection;
30
+ in float vFresnel;
31
+ `],
32
+ ],
33
+ }
package/types/index.d.ts CHANGED
@@ -1 +1 @@
1
- export { WebGLRenderTarget2D } from "./renderer/WebGLRenderTarget2D.js";
1
+ export { WebGLRenderTarget2D } from "./renderer/WebGLRenderTarget2D.js";
@@ -1,42 +1,42 @@
1
- export class WebGLRenderTarget2D {
2
- constructor({
3
- renderer,
4
- material,
5
- width,
6
- height,
7
- wrapS,
8
- wrapT,
9
- magFilter,
10
- minFilter,
11
- format,
12
- type,
13
- anisotropy,
14
- encoding,
15
- generateMipmaps,
16
- depthBuffer,
17
- stencilBuffer,
18
- depthTexture,
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
42
- }
1
+ export class WebGLRenderTarget2D {
2
+ constructor({
3
+ renderer,
4
+ material,
5
+ width,
6
+ height,
7
+ wrapS,
8
+ wrapT,
9
+ magFilter,
10
+ minFilter,
11
+ format,
12
+ type,
13
+ anisotropy,
14
+ encoding,
15
+ generateMipmaps,
16
+ depthBuffer,
17
+ stencilBuffer,
18
+ depthTexture,
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
42
+ }