@codexo/exojs 0.4.0 → 0.6.1
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/CHANGELOG.md +464 -163
- package/README.md +156 -141
- package/dist/esm/audio/AudioAnalyser.d.ts +0 -1
- package/dist/esm/audio/AudioAnalyser.js +0 -2
- package/dist/esm/audio/AudioAnalyser.js.map +1 -1
- package/dist/esm/core/Application.d.ts +4 -4
- package/dist/esm/core/Application.js +19 -19
- package/dist/esm/core/Application.js.map +1 -1
- package/dist/esm/core/Scene.d.ts +59 -24
- package/dist/esm/core/Scene.js +60 -18
- package/dist/esm/core/Scene.js.map +1 -1
- package/dist/esm/core/SceneManager.js +15 -9
- package/dist/esm/core/SceneManager.js.map +1 -1
- package/dist/esm/core/SceneNode.d.ts +45 -5
- package/dist/esm/core/SceneNode.js +136 -7
- package/dist/esm/core/SceneNode.js.map +1 -1
- package/dist/esm/index.js +3 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/math/index.d.ts +0 -1
- package/dist/esm/rendering/CallbackRenderPass.d.ts +3 -3
- package/dist/esm/rendering/CallbackRenderPass.js +2 -2
- package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
- package/dist/esm/rendering/Container.d.ts +10 -11
- package/dist/esm/rendering/Container.js +5 -5
- package/dist/esm/rendering/Container.js.map +1 -1
- package/dist/esm/rendering/Drawable.d.ts +2 -2
- package/dist/esm/rendering/Drawable.js +5 -5
- package/dist/esm/rendering/Drawable.js.map +1 -1
- package/dist/esm/rendering/{SceneRenderRuntime.d.ts → RenderBackend.d.ts} +21 -3
- package/dist/esm/rendering/RenderNode.d.ts +41 -5
- package/dist/esm/rendering/RenderNode.js +89 -24
- package/dist/esm/rendering/RenderNode.js.map +1 -1
- package/dist/esm/rendering/RenderPass.d.ts +2 -2
- package/dist/esm/rendering/RenderTargetPass.d.ts +3 -3
- package/dist/esm/rendering/RenderTargetPass.js +9 -9
- package/dist/esm/rendering/RenderTargetPass.js.map +1 -1
- package/dist/esm/rendering/Renderer.d.ts +3 -3
- package/dist/esm/rendering/RendererRegistry.d.ts +13 -7
- package/dist/esm/rendering/RendererRegistry.js +18 -10
- package/dist/esm/rendering/RendererRegistry.js.map +1 -1
- package/dist/esm/rendering/filters/BlurFilter.d.ts +2 -2
- package/dist/esm/rendering/filters/BlurFilter.js +5 -5
- package/dist/esm/rendering/filters/BlurFilter.js.map +1 -1
- package/dist/esm/rendering/filters/ColorFilter.d.ts +2 -2
- package/dist/esm/rendering/filters/ColorFilter.js +3 -3
- package/dist/esm/rendering/filters/ColorFilter.js.map +1 -1
- package/dist/esm/rendering/filters/Filter.d.ts +2 -2
- package/dist/esm/rendering/index.d.ts +6 -6
- package/dist/esm/rendering/primitives/Graphics.d.ts +3 -3
- package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
- package/dist/esm/rendering/shader/Shader.d.ts +3 -3
- package/dist/esm/rendering/shader/Shader.js +10 -10
- package/dist/esm/rendering/text/Text.d.ts +2 -2
- package/dist/esm/rendering/text/Text.js +2 -2
- package/dist/esm/rendering/text/Text.js.map +1 -1
- package/dist/esm/rendering/texture/Sampler.d.ts +0 -3
- package/dist/esm/rendering/texture/Sampler.js +5 -7
- package/dist/esm/rendering/texture/Sampler.js.map +1 -1
- package/dist/esm/rendering/types.d.ts +4 -0
- package/dist/esm/rendering/types.js +4 -0
- package/dist/esm/rendering/types.js.map +1 -1
- package/dist/esm/rendering/video/Video.d.ts +2 -2
- package/dist/esm/rendering/video/Video.js +2 -2
- package/dist/esm/rendering/video/Video.js.map +1 -1
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts +2 -2
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +35 -11
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.d.ts +13 -13
- package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.js +20 -20
- package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/{WebGl2RenderManager.d.ts → WebGl2Backend.d.ts} +15 -12
- package/dist/esm/rendering/webgl2/{WebGl2RenderManager.js → WebGl2Backend.js} +60 -38
- package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.d.ts +31 -0
- package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js +186 -0
- package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.d.ts +38 -7
- package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js +281 -90
- package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.d.ts +2 -2
- package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.js +15 -10
- package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js +12 -0
- package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.d.ts +2 -0
- package/dist/esm/rendering/webgl2/{WebGl2ShaderRuntime.js → WebGl2ShaderProgram.js} +58 -18
- package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts +26 -7
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +260 -62
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.d.ts +24 -1
- package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.js +6 -2
- package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.js.map +1 -1
- package/dist/esm/rendering/webgl2/glsl/mask-compose.frag.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/mask-compose.frag.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/mask-compose.vert.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/mask-compose.vert.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/particle.vert.js +1 -1
- package/dist/esm/rendering/webgl2/glsl/sprite.frag.js +1 -1
- package/dist/esm/rendering/webgl2/glsl/sprite.vert.js +1 -1
- package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.d.ts +9 -9
- package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.js +18 -18
- package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/{WebGpuRenderManager.d.ts → WebGpuBackend.d.ts} +17 -14
- package/dist/esm/rendering/webgpu/{WebGpuRenderManager.js → WebGpuBackend.js} +74 -40
- package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.d.ts +37 -0
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +279 -0
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.d.ts +2 -3
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js +65 -82
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.d.ts +2 -3
- package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.js +24 -25
- package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +28 -13
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +410 -382
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
- package/dist/esm/resources/Loader.js +5 -3
- package/dist/esm/resources/Loader.js.map +1 -1
- package/dist/exo.esm.js +2500 -1399
- package/dist/exo.esm.js.map +1 -1
- package/package.json +20 -11
- package/dist/esm/math/Transformable.d.ts +0 -47
- package/dist/esm/math/Transformable.js +0 -140
- package/dist/esm/math/Transformable.js.map +0 -1
- package/dist/esm/rendering/webgl2/WebGl2RenderManager.js.map +0 -1
- package/dist/esm/rendering/webgl2/WebGl2RendererRuntime.d.ts +0 -15
- package/dist/esm/rendering/webgl2/WebGl2ShaderRuntime.d.ts +0 -2
- package/dist/esm/rendering/webgl2/WebGl2ShaderRuntime.js.map +0 -1
- package/dist/esm/rendering/webgpu/WebGpuRenderManager.js.map +0 -1
- package/dist/esm/rendering/webgpu/WebGpuRendererRuntime.d.ts +0 -8
- package/dist/exo.esm.min.js +0 -2
- package/dist/exo.esm.min.js.map +0 -1
- package/dist/exo.global.js +0 -17328
- package/dist/exo.global.js.map +0 -1
- package/dist/exo.global.min.js +0 -2
- package/dist/exo.global.min.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AbstractWebGl2Renderer } from './AbstractWebGl2Renderer.js';
|
|
2
2
|
import { Shader } from '../shader/Shader.js';
|
|
3
|
-
import {
|
|
3
|
+
import { createWebGl2ShaderProgram } from './WebGl2ShaderProgram.js';
|
|
4
4
|
import { WebGl2RenderBuffer } from './WebGl2RenderBuffer.js';
|
|
5
5
|
import { createQuadIndices } from '../utils.js';
|
|
6
6
|
import { BufferTypes, BufferUsage } from '../types.js';
|
|
@@ -33,24 +33,24 @@ class AbstractWebGl2BatchedRenderer extends AbstractWebGl2Renderer {
|
|
|
33
33
|
this.shader = new Shader(vertexSource, fragmentSource);
|
|
34
34
|
}
|
|
35
35
|
flush() {
|
|
36
|
-
const
|
|
36
|
+
const backend = this.getBackendOrNull();
|
|
37
37
|
const vertexBuffer = this.vertexBuffer;
|
|
38
38
|
const vao = this.vao;
|
|
39
|
-
if (this.batchIndex === 0 ||
|
|
39
|
+
if (this.batchIndex === 0 || backend === null || vertexBuffer === null || vao === null) {
|
|
40
40
|
return;
|
|
41
41
|
}
|
|
42
|
-
const view =
|
|
42
|
+
const view = backend.view;
|
|
43
43
|
if (this.currentView !== view || this.currentViewId !== view.updateId) {
|
|
44
44
|
this.currentView = view;
|
|
45
45
|
this.currentViewId = view.updateId;
|
|
46
46
|
this.updateView(view);
|
|
47
47
|
}
|
|
48
48
|
this.shader.sync();
|
|
49
|
-
|
|
49
|
+
backend.bindVertexArrayObject(vao);
|
|
50
50
|
vertexBuffer.upload(this.float32View.subarray(0, this.batchIndex * this.attributeCount));
|
|
51
51
|
vao.draw(this.batchIndex * 6, 0);
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
backend.stats.batches++;
|
|
53
|
+
backend.stats.drawCalls++;
|
|
54
54
|
this.batchIndex = 0;
|
|
55
55
|
}
|
|
56
56
|
destroy() {
|
|
@@ -61,14 +61,23 @@ class AbstractWebGl2BatchedRenderer extends AbstractWebGl2Renderer {
|
|
|
61
61
|
this.currentView = null;
|
|
62
62
|
this.connection = null;
|
|
63
63
|
}
|
|
64
|
-
onConnect(
|
|
65
|
-
const gl =
|
|
66
|
-
|
|
64
|
+
onConnect(backend) {
|
|
65
|
+
const gl = backend.context;
|
|
66
|
+
// Order matters here: shader.connect() issues compile/link to the
|
|
67
|
+
// GL driver but defers the COMPILE_STATUS / LINK_STATUS query (and
|
|
68
|
+
// attribute / uniform extraction) until shader.sync(). With
|
|
69
|
+
// KHR_parallel_shader_compile the driver may service compile on
|
|
70
|
+
// a worker thread in parallel with the buffer setup that follows.
|
|
71
|
+
// Once we need attribute locations (createVao), we sync — at which
|
|
72
|
+
// point compile is hopefully already finished and the eventual
|
|
73
|
+
// blocking status query becomes a no-op.
|
|
74
|
+
this.shader.connect(createWebGl2ShaderProgram(gl));
|
|
67
75
|
this.connection = this.createConnection(gl);
|
|
68
76
|
this.indexBuffer = new WebGl2RenderBuffer(BufferTypes.ElementArrayBuffer, this.indexData, BufferUsage.StaticDraw)
|
|
69
77
|
.connect(this.createBufferRuntime(this.connection));
|
|
70
78
|
this.vertexBuffer = new WebGl2RenderBuffer(BufferTypes.ArrayBuffer, this.vertexData, BufferUsage.DynamicDraw)
|
|
71
79
|
.connect(this.createBufferRuntime(this.connection));
|
|
80
|
+
this.shader.sync();
|
|
72
81
|
this.vao = this.createVao(gl, this.indexBuffer, this.vertexBuffer)
|
|
73
82
|
.connect(this.createVaoRuntime(this.connection));
|
|
74
83
|
}
|
|
@@ -142,8 +151,14 @@ class AbstractWebGl2BatchedRenderer extends AbstractWebGl2Renderer {
|
|
|
142
151
|
attribute.buffer.bind();
|
|
143
152
|
lastBuffer = attribute.buffer;
|
|
144
153
|
}
|
|
145
|
-
|
|
154
|
+
if (attribute.integer) {
|
|
155
|
+
gl.vertexAttribIPointer(attribute.location, attribute.size, attribute.type, attribute.stride, attribute.start);
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
gl.vertexAttribPointer(attribute.location, attribute.size, attribute.type, attribute.normalized, attribute.stride, attribute.start);
|
|
159
|
+
}
|
|
146
160
|
gl.enableVertexAttribArray(attribute.location);
|
|
161
|
+
gl.vertexAttribDivisor(attribute.location, attribute.divisor);
|
|
147
162
|
}
|
|
148
163
|
if (vao.indexBuffer) {
|
|
149
164
|
vao.indexBuffer.bind();
|
|
@@ -163,6 +178,15 @@ class AbstractWebGl2BatchedRenderer extends AbstractWebGl2Renderer {
|
|
|
163
178
|
gl.drawArrays(type, start, size);
|
|
164
179
|
}
|
|
165
180
|
},
|
|
181
|
+
drawInstanced: (vao, count, start, instanceCount, type) => {
|
|
182
|
+
const gl = connection.gl;
|
|
183
|
+
if (vao.indexBuffer) {
|
|
184
|
+
gl.drawElementsInstanced(type, count, gl.UNSIGNED_SHORT, start, instanceCount);
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
gl.drawArraysInstanced(type, start, count, instanceCount);
|
|
188
|
+
}
|
|
189
|
+
},
|
|
166
190
|
destroy: (vao) => {
|
|
167
191
|
connection.gl.deleteVertexArray(connection.vaoHandle);
|
|
168
192
|
vao.disconnect();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractWebGl2BatchedRenderer.js","sources":["../../../../../src/rendering/webgl2/AbstractWebGl2BatchedRenderer.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAyBM,MAAgB,6BAA8B,SAAQ,sBAAgC,CAAA;AACrE,IAAA,cAAc;AACd,IAAA,SAAS;AACT,IAAA,SAAS;AACT,IAAA,UAAU;AACV,IAAA,WAAW;AACX,IAAA,UAAU;AACV,IAAA,MAAM;IACf,UAAU,GAAG,CAAC;IACd,cAAc,GAAmC,IAAI;IACrD,gBAAgB,GAAsB,IAAI;IAC1C,WAAW,GAAgB,IAAI;IAC/B,aAAa,GAAG,EAAE;IAClB,GAAG,GAAmC,IAAI;IAC1C,WAAW,GAA8B,IAAI;IAC7C,YAAY,GAA8B,IAAI;IAC9C,UAAU,GAA8B,IAAI;AAEtD,IAAA,WAAA,CAAsB,SAAiB,EAAE,cAAsB,EAAE,YAAoB,EAAE,cAAsB,EAAA;AACzG,QAAA,KAAK,EAAE;AAEP,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,WAAW,CAAC,SAAS,GAAG,cAAc,GAAG,CAAC,CAAC;QACjE,IAAI,CAAC,WAAW,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;QACpD,IAAI,CAAC,UAAU,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;AAClD,QAAA,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC;IAC1D;IAEO,KAAK,GAAA;AACR,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACvC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY;AACtC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;AAEpB,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,OAAO,KAAK,IAAI,IAAI,YAAY,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;YACpF;QACJ;AAEA,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI;AAEzB,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,QAAQ,EAAE;AACnE,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ;AAClC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QACzB;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AAClB,QAAA,OAAO,CAAC,qBAAqB,CAAC,GAAG,CAAC;QAClC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;QACxF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC;AAChC,QAAA,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE;AACvB,QAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC;IACvB;IAEO,OAAO,GAAA;QACV,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACrB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;IAC1B;AAEU,IAAA,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"AbstractWebGl2BatchedRenderer.js","sources":["../../../../../src/rendering/webgl2/AbstractWebGl2BatchedRenderer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,44 +1,44 @@
|
|
|
1
1
|
import { RenderBackendType } from '../RenderBackendType';
|
|
2
2
|
import type { Drawable } from '../Drawable';
|
|
3
3
|
import type { Renderer } from '../Renderer';
|
|
4
|
-
import type {
|
|
4
|
+
import type { WebGl2Backend } from './WebGl2Backend';
|
|
5
5
|
/**
|
|
6
6
|
* Base class for WebGL2 renderers.
|
|
7
7
|
*
|
|
8
8
|
* Manages the connect/disconnect lifecycle and provides a safe
|
|
9
|
-
* `
|
|
9
|
+
* `getBackend()` accessor that throws if the renderer is not connected.
|
|
10
10
|
*
|
|
11
11
|
* Subclasses must implement:
|
|
12
|
-
* - onConnect(
|
|
12
|
+
* - onConnect(backend): set up GL resources
|
|
13
13
|
* - onDisconnect(): tear down GL resources
|
|
14
14
|
* - render(drawable): batch or immediately draw the given drawable
|
|
15
15
|
* - flush(): submit any batched draw calls to the GPU
|
|
16
16
|
*/
|
|
17
|
-
export declare abstract class AbstractWebGl2Renderer<Target extends Drawable> implements Renderer<
|
|
17
|
+
export declare abstract class AbstractWebGl2Renderer<Target extends Drawable> implements Renderer<WebGl2Backend, Target> {
|
|
18
18
|
readonly backendType = RenderBackendType.WebGl2;
|
|
19
|
-
private
|
|
20
|
-
connect(
|
|
19
|
+
private _backend;
|
|
20
|
+
connect(backend: WebGl2Backend): void;
|
|
21
21
|
disconnect(): void;
|
|
22
22
|
abstract render(drawable: Target): void;
|
|
23
23
|
abstract flush(): void;
|
|
24
24
|
/**
|
|
25
|
-
* Called once when the renderer is first connected to a
|
|
25
|
+
* Called once when the renderer is first connected to a backend.
|
|
26
26
|
* Subclasses create GL resources here.
|
|
27
27
|
*/
|
|
28
|
-
protected abstract onConnect(
|
|
28
|
+
protected abstract onConnect(backend: WebGl2Backend): void;
|
|
29
29
|
/**
|
|
30
|
-
* Called when the renderer is disconnected from its
|
|
30
|
+
* Called when the renderer is disconnected from its backend.
|
|
31
31
|
* Subclasses tear down GL resources here.
|
|
32
32
|
*/
|
|
33
33
|
protected abstract onDisconnect(): void;
|
|
34
34
|
/**
|
|
35
|
-
* Safe accessor for the connected
|
|
35
|
+
* Safe accessor for the connected backend.
|
|
36
36
|
* @throws Error if the renderer is not connected.
|
|
37
37
|
*/
|
|
38
|
-
protected
|
|
38
|
+
protected getBackend(): WebGl2Backend;
|
|
39
39
|
/**
|
|
40
|
-
* Returns the connected
|
|
40
|
+
* Returns the connected backend, or null if not connected.
|
|
41
41
|
* Use this for conditional checks where disconnected state is expected.
|
|
42
42
|
*/
|
|
43
|
-
protected
|
|
43
|
+
protected getBackendOrNull(): WebGl2Backend | null;
|
|
44
44
|
}
|
|
@@ -4,52 +4,52 @@ import { RenderBackendType } from '../RenderBackendType.js';
|
|
|
4
4
|
* Base class for WebGL2 renderers.
|
|
5
5
|
*
|
|
6
6
|
* Manages the connect/disconnect lifecycle and provides a safe
|
|
7
|
-
* `
|
|
7
|
+
* `getBackend()` accessor that throws if the renderer is not connected.
|
|
8
8
|
*
|
|
9
9
|
* Subclasses must implement:
|
|
10
|
-
* - onConnect(
|
|
10
|
+
* - onConnect(backend): set up GL resources
|
|
11
11
|
* - onDisconnect(): tear down GL resources
|
|
12
12
|
* - render(drawable): batch or immediately draw the given drawable
|
|
13
13
|
* - flush(): submit any batched draw calls to the GPU
|
|
14
14
|
*/
|
|
15
15
|
class AbstractWebGl2Renderer {
|
|
16
16
|
backendType = RenderBackendType.WebGl2;
|
|
17
|
-
|
|
18
|
-
connect(
|
|
19
|
-
if (this.
|
|
17
|
+
_backend = null;
|
|
18
|
+
connect(backend) {
|
|
19
|
+
if (this._backend !== null) {
|
|
20
20
|
return;
|
|
21
21
|
}
|
|
22
|
-
if (
|
|
23
|
-
throw new Error(`${this.constructor.name} requires a WebGL2
|
|
24
|
-
+ `but received backendType ${String(
|
|
22
|
+
if (backend.backendType !== RenderBackendType.WebGl2) {
|
|
23
|
+
throw new Error(`${this.constructor.name} requires a WebGL2 backend, `
|
|
24
|
+
+ `but received backendType ${String(backend.backendType)}.`);
|
|
25
25
|
}
|
|
26
|
-
this.
|
|
27
|
-
this.onConnect(
|
|
26
|
+
this._backend = backend;
|
|
27
|
+
this.onConnect(backend);
|
|
28
28
|
}
|
|
29
29
|
disconnect() {
|
|
30
|
-
if (this.
|
|
30
|
+
if (this._backend === null) {
|
|
31
31
|
return;
|
|
32
32
|
}
|
|
33
33
|
this.flush();
|
|
34
34
|
this.onDisconnect();
|
|
35
|
-
this.
|
|
35
|
+
this._backend = null;
|
|
36
36
|
}
|
|
37
37
|
/**
|
|
38
|
-
* Safe accessor for the connected
|
|
38
|
+
* Safe accessor for the connected backend.
|
|
39
39
|
* @throws Error if the renderer is not connected.
|
|
40
40
|
*/
|
|
41
|
-
|
|
42
|
-
if (this.
|
|
43
|
-
throw new Error(`${this.constructor.name} is not connected to a
|
|
41
|
+
getBackend() {
|
|
42
|
+
if (this._backend === null) {
|
|
43
|
+
throw new Error(`${this.constructor.name} is not connected to a backend.`);
|
|
44
44
|
}
|
|
45
|
-
return this.
|
|
45
|
+
return this._backend;
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
48
|
-
* Returns the connected
|
|
48
|
+
* Returns the connected backend, or null if not connected.
|
|
49
49
|
* Use this for conditional checks where disconnected state is expected.
|
|
50
50
|
*/
|
|
51
|
-
|
|
52
|
-
return this.
|
|
51
|
+
getBackendOrNull() {
|
|
52
|
+
return this._backend;
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractWebGl2Renderer.js","sources":["../../../../../src/rendering/webgl2/AbstractWebGl2Renderer.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAKA;;;;;;;;;;;AAWG;MACmB,sBAAsB,CAAA;AAExB,IAAA,WAAW,GAAG,iBAAiB,CAAC,MAAM;IAE9C,QAAQ,
|
|
1
|
+
{"version":3,"file":"AbstractWebGl2Renderer.js","sources":["../../../../../src/rendering/webgl2/AbstractWebGl2Renderer.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAKA;;;;;;;;;;;AAWG;MACmB,sBAAsB,CAAA;AAExB,IAAA,WAAW,GAAG,iBAAiB,CAAC,MAAM;IAE9C,QAAQ,GAAyB,IAAI;AAEtC,IAAA,OAAO,CAAC,OAAsB,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;YACxB;QACJ;QAEA,IAAI,OAAO,CAAC,WAAW,KAAK,iBAAiB,CAAC,MAAM,EAAE;YAClD,MAAM,IAAI,KAAK,CACX,CAAA,EAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA,4BAAA;kBACtB,CAAA,yBAAA,EAA4B,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA,CAAA,CAAG,CAC/D;QACL;AAEA,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;IAC3B;IAEO,UAAU,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;YACxB;QACJ;QAEA,IAAI,CAAC,KAAK,EAAE;QACZ,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;IACxB;AAiBA;;;AAGG;IACO,UAAU,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,CAAA,EAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA,+BAAA,CAAiC,CAAC;QAC9E;QAEA,OAAO,IAAI,CAAC,QAAQ;IACxB;AAEA;;;AAGG;IACO,gBAAgB,GAAA;QACtB,OAAO,IAAI,CAAC,QAAQ;IACxB;AACH;;;;"}
|
|
@@ -8,15 +8,15 @@ import { RendererRegistry } from '../RendererRegistry';
|
|
|
8
8
|
import type { Rectangle } from '@/math/Rectangle';
|
|
9
9
|
import type { RenderPass } from '../RenderPass';
|
|
10
10
|
import type { Drawable } from '../Drawable';
|
|
11
|
-
import type {
|
|
11
|
+
import type { RenderBackend } from '../RenderBackend';
|
|
12
12
|
import type { Shader } from '../shader/Shader';
|
|
13
13
|
import type { WebGl2VertexArrayObject } from './WebGl2VertexArrayObject';
|
|
14
14
|
import type { View } from '../View';
|
|
15
15
|
import type { Application } from '@/core/Application';
|
|
16
16
|
import type { RenderStats } from '../RenderStats';
|
|
17
|
-
export declare class
|
|
17
|
+
export declare class WebGl2Backend implements RenderBackend {
|
|
18
18
|
readonly backendType = RenderBackendType.WebGl2;
|
|
19
|
-
readonly rendererRegistry: RendererRegistry<
|
|
19
|
+
readonly rendererRegistry: RendererRegistry<WebGl2Backend>;
|
|
20
20
|
private readonly _context;
|
|
21
21
|
private readonly _rootRenderTarget;
|
|
22
22
|
private readonly _onContextLostHandler;
|
|
@@ -26,10 +26,12 @@ export declare class WebGl2RenderManager implements WebGl2RendererRuntime {
|
|
|
26
26
|
private readonly _textureDestroyHandlers;
|
|
27
27
|
private readonly _renderTargetDestroyHandlers;
|
|
28
28
|
private readonly _temporaryRenderTextures;
|
|
29
|
-
private readonly
|
|
30
|
-
private readonly
|
|
31
|
-
private readonly
|
|
32
|
-
private readonly
|
|
29
|
+
private readonly _clipBoundsStack;
|
|
30
|
+
private readonly _clipPixelStack;
|
|
31
|
+
private readonly _clipPointA;
|
|
32
|
+
private readonly _clipPointB;
|
|
33
|
+
private readonly _maskCompositor;
|
|
34
|
+
private _maskCompositorConnected;
|
|
33
35
|
private _canvas;
|
|
34
36
|
private _contextLost;
|
|
35
37
|
private _renderTarget;
|
|
@@ -55,8 +57,9 @@ export declare class WebGl2RenderManager implements WebGl2RendererRuntime {
|
|
|
55
57
|
draw(drawable: Drawable): this;
|
|
56
58
|
execute(pass: RenderPass): this;
|
|
57
59
|
setRenderTarget(target: RenderTarget | null): this;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
+
pushScissorRect(bounds: Rectangle): this;
|
|
61
|
+
popScissorRect(): this;
|
|
62
|
+
composeWithAlphaMask(content: Texture | RenderTexture, mask: Texture | RenderTexture, x: number, y: number, width: number, height: number, blendMode: BlendModes): this;
|
|
60
63
|
acquireRenderTexture(width: number, height: number): RenderTexture;
|
|
61
64
|
releaseRenderTexture(texture: RenderTexture): this;
|
|
62
65
|
setView(view: View | null): this;
|
|
@@ -93,7 +96,7 @@ export declare class WebGl2RenderManager implements WebGl2RendererRuntime {
|
|
|
93
96
|
private _flushActiveRenderer;
|
|
94
97
|
private _prepareRenderTarget;
|
|
95
98
|
private _syncTexture;
|
|
96
|
-
private
|
|
97
|
-
private
|
|
98
|
-
private
|
|
99
|
+
private _toClipPixels;
|
|
100
|
+
private _intersectClips;
|
|
101
|
+
private _applyClipState;
|
|
99
102
|
}
|
|
@@ -4,6 +4,7 @@ import { RenderTarget } from '../RenderTarget.js';
|
|
|
4
4
|
import { WebGl2SpriteRenderer } from './WebGl2SpriteRenderer.js';
|
|
5
5
|
import { WebGl2ParticleRenderer } from './WebGl2ParticleRenderer.js';
|
|
6
6
|
import { WebGl2PrimitiveRenderer } from './WebGl2PrimitiveRenderer.js';
|
|
7
|
+
import { WebGl2MaskCompositor } from './WebGl2MaskCompositor.js';
|
|
7
8
|
import { Sprite } from '../sprite/Sprite.js';
|
|
8
9
|
import { DrawableShape } from '../primitives/DrawableShape.js';
|
|
9
10
|
import { ParticleSystem } from '../../particles/ParticleSystem.js';
|
|
@@ -33,7 +34,7 @@ const logAndValidate = (functionName, args) => {
|
|
|
33
34
|
logGlCall(functionName, args);
|
|
34
35
|
validateNoneOfTheArgsAreUndefined(functionName, args);
|
|
35
36
|
};
|
|
36
|
-
class
|
|
37
|
+
class WebGl2Backend {
|
|
37
38
|
backendType = RenderBackendType.WebGl2;
|
|
38
39
|
rendererRegistry = new RendererRegistry();
|
|
39
40
|
_context;
|
|
@@ -45,10 +46,12 @@ class WebGl2RenderManager {
|
|
|
45
46
|
_textureDestroyHandlers = new Map();
|
|
46
47
|
_renderTargetDestroyHandlers = new Map();
|
|
47
48
|
_temporaryRenderTextures = [];
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
_clipBoundsStack = [];
|
|
50
|
+
_clipPixelStack = [];
|
|
51
|
+
_clipPointA = new Vector();
|
|
52
|
+
_clipPointB = new Vector();
|
|
53
|
+
_maskCompositor = new WebGl2MaskCompositor();
|
|
54
|
+
_maskCompositorConnected = false;
|
|
52
55
|
_canvas;
|
|
53
56
|
_contextLost;
|
|
54
57
|
_renderTarget;
|
|
@@ -139,29 +142,44 @@ class WebGl2RenderManager {
|
|
|
139
142
|
this._bindRenderTarget(renderTarget);
|
|
140
143
|
return this;
|
|
141
144
|
}
|
|
142
|
-
|
|
145
|
+
pushScissorRect(bounds) {
|
|
143
146
|
this._flushActiveRenderer();
|
|
144
|
-
this.
|
|
145
|
-
const
|
|
146
|
-
const
|
|
147
|
-
? this.
|
|
147
|
+
this._clipBoundsStack.push(bounds.clone());
|
|
148
|
+
const nextClip = this._toClipPixels(bounds);
|
|
149
|
+
const previousClip = this._clipPixelStack.length > 0
|
|
150
|
+
? this._clipPixelStack[this._clipPixelStack.length - 1]
|
|
148
151
|
: null;
|
|
149
|
-
const
|
|
150
|
-
this.
|
|
151
|
-
this.
|
|
152
|
+
const resolvedClip = previousClip ? this._intersectClips(previousClip, nextClip) : nextClip;
|
|
153
|
+
this._clipPixelStack.push(resolvedClip);
|
|
154
|
+
this._applyClipState();
|
|
152
155
|
return this;
|
|
153
156
|
}
|
|
154
|
-
|
|
155
|
-
if (this.
|
|
157
|
+
popScissorRect() {
|
|
158
|
+
if (this._clipBoundsStack.length === 0) {
|
|
156
159
|
return this;
|
|
157
160
|
}
|
|
158
161
|
this._flushActiveRenderer();
|
|
159
|
-
const
|
|
160
|
-
if (
|
|
161
|
-
|
|
162
|
+
const removedClip = this._clipBoundsStack.pop();
|
|
163
|
+
if (removedClip) {
|
|
164
|
+
removedClip.destroy();
|
|
162
165
|
}
|
|
163
|
-
this.
|
|
164
|
-
this.
|
|
166
|
+
this._clipPixelStack.pop();
|
|
167
|
+
this._applyClipState();
|
|
168
|
+
return this;
|
|
169
|
+
}
|
|
170
|
+
composeWithAlphaMask(content, mask, x, y, width, height, blendMode) {
|
|
171
|
+
if (width <= 0 || height <= 0) {
|
|
172
|
+
return this;
|
|
173
|
+
}
|
|
174
|
+
// Flush any in-progress drawable batch so the compositor draws on
|
|
175
|
+
// top of fully-committed render state, not in the middle of a batch.
|
|
176
|
+
this._flushActiveRenderer();
|
|
177
|
+
this._setActiveRenderer(null);
|
|
178
|
+
if (!this._maskCompositorConnected) {
|
|
179
|
+
this._maskCompositor.connect(this);
|
|
180
|
+
this._maskCompositorConnected = true;
|
|
181
|
+
}
|
|
182
|
+
this._maskCompositor.compose(this, content, mask, x, y, width, height, blendMode);
|
|
165
183
|
return this;
|
|
166
184
|
}
|
|
167
185
|
acquireRenderTexture(width, height) {
|
|
@@ -308,13 +326,17 @@ class WebGl2RenderManager {
|
|
|
308
326
|
this._clearColor.destroy();
|
|
309
327
|
this._destroyManagedResources();
|
|
310
328
|
this._destroyTemporaryRenderTextures();
|
|
311
|
-
for (const
|
|
312
|
-
|
|
329
|
+
for (const clipBounds of this._clipBoundsStack) {
|
|
330
|
+
clipBounds.destroy();
|
|
331
|
+
}
|
|
332
|
+
this._clipBoundsStack.length = 0;
|
|
333
|
+
this._clipPixelStack.length = 0;
|
|
334
|
+
this._clipPointA.destroy();
|
|
335
|
+
this._clipPointB.destroy();
|
|
336
|
+
if (this._maskCompositorConnected) {
|
|
337
|
+
this._maskCompositor.disconnect();
|
|
338
|
+
this._maskCompositorConnected = false;
|
|
313
339
|
}
|
|
314
|
-
this._maskStack.length = 0;
|
|
315
|
-
this._maskPixelStack.length = 0;
|
|
316
|
-
this._maskPointA.destroy();
|
|
317
|
-
this._maskPointB.destroy();
|
|
318
340
|
this._rootRenderTarget.destroy();
|
|
319
341
|
this._vao = null;
|
|
320
342
|
this._renderer = null;
|
|
@@ -482,8 +504,8 @@ class WebGl2RenderManager {
|
|
|
482
504
|
this._boundFramebuffer = state.framebuffer;
|
|
483
505
|
state.version = target.version;
|
|
484
506
|
}
|
|
485
|
-
if (this.
|
|
486
|
-
this.
|
|
507
|
+
if (this._clipPixelStack.length > 0) {
|
|
508
|
+
this._applyClipState();
|
|
487
509
|
}
|
|
488
510
|
}
|
|
489
511
|
_setActiveRenderer(renderer) {
|
|
@@ -549,9 +571,9 @@ class WebGl2RenderManager {
|
|
|
549
571
|
}
|
|
550
572
|
return state;
|
|
551
573
|
}
|
|
552
|
-
|
|
553
|
-
const topLeft = this._renderTarget.mapCoordsToPixel(this.
|
|
554
|
-
const bottomRight = this._renderTarget.mapCoordsToPixel(this.
|
|
574
|
+
_toClipPixels(bounds) {
|
|
575
|
+
const topLeft = this._renderTarget.mapCoordsToPixel(this._clipPointA.set(bounds.left, bounds.top));
|
|
576
|
+
const bottomRight = this._renderTarget.mapCoordsToPixel(this._clipPointB.set(bounds.right, bounds.bottom));
|
|
555
577
|
const minX = Math.min(topLeft.x, bottomRight.x);
|
|
556
578
|
const maxX = Math.max(topLeft.x, bottomRight.x);
|
|
557
579
|
const minY = Math.min(topLeft.y, bottomRight.y);
|
|
@@ -572,7 +594,7 @@ class WebGl2RenderManager {
|
|
|
572
594
|
height,
|
|
573
595
|
};
|
|
574
596
|
}
|
|
575
|
-
|
|
597
|
+
_intersectClips(first, second) {
|
|
576
598
|
const left = Math.max(first.x, second.x);
|
|
577
599
|
const bottom = Math.max(first.y, second.y);
|
|
578
600
|
const right = Math.min(first.x + first.width, second.x + second.width);
|
|
@@ -584,17 +606,17 @@ class WebGl2RenderManager {
|
|
|
584
606
|
height: Math.max(0, top - bottom),
|
|
585
607
|
};
|
|
586
608
|
}
|
|
587
|
-
|
|
609
|
+
_applyClipState() {
|
|
588
610
|
const gl = this._context;
|
|
589
|
-
if (this.
|
|
611
|
+
if (this._clipPixelStack.length === 0) {
|
|
590
612
|
gl.disable(gl.SCISSOR_TEST);
|
|
591
613
|
return;
|
|
592
614
|
}
|
|
593
|
-
const
|
|
615
|
+
const clip = this._clipPixelStack[this._clipPixelStack.length - 1];
|
|
594
616
|
gl.enable(gl.SCISSOR_TEST);
|
|
595
|
-
gl.scissor(
|
|
617
|
+
gl.scissor(clip.x, clip.y, clip.width, clip.height);
|
|
596
618
|
}
|
|
597
619
|
}
|
|
598
620
|
|
|
599
|
-
export {
|
|
600
|
-
//# sourceMappingURL=
|
|
621
|
+
export { WebGl2Backend };
|
|
622
|
+
//# sourceMappingURL=WebGl2Backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebGl2Backend.js","sources":["../../../../../src/rendering/webgl2/WebGl2Backend.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { BlendModes } from '@/rendering/types';
|
|
2
|
+
import type { WebGl2Backend } from './WebGl2Backend';
|
|
3
|
+
import type { Texture } from '../texture/Texture';
|
|
4
|
+
import type { RenderTexture } from '../texture/RenderTexture';
|
|
5
|
+
/**
|
|
6
|
+
* Single-quad two-texture compositor used by `WebGl2Backend.composeWithAlphaMask`.
|
|
7
|
+
*
|
|
8
|
+
* Renders the content texture onto the active render target with each
|
|
9
|
+
* output texel's alpha multiplied by the mask texture's alpha at the
|
|
10
|
+
* same UV. Both textures are sampled with stretched-fit UVs over the
|
|
11
|
+
* destination rectangle.
|
|
12
|
+
*
|
|
13
|
+
* Intentionally not a {@link AbstractWebGl2Renderer} subclass: this
|
|
14
|
+
* compositor is invoked directly by the manager for non-Drawable
|
|
15
|
+
* compositing operations and never participates in the renderer
|
|
16
|
+
* registry dispatch path.
|
|
17
|
+
*/
|
|
18
|
+
export declare class WebGl2MaskCompositor {
|
|
19
|
+
private readonly _shader;
|
|
20
|
+
private readonly _vertexData;
|
|
21
|
+
private readonly _float32View;
|
|
22
|
+
private readonly _contentSamplerSlot;
|
|
23
|
+
private readonly _maskSamplerSlot;
|
|
24
|
+
private _connection;
|
|
25
|
+
connect(backend: WebGl2Backend): void;
|
|
26
|
+
disconnect(): void;
|
|
27
|
+
compose(backend: WebGl2Backend, content: Texture | RenderTexture, mask: Texture | RenderTexture, x: number, y: number, width: number, height: number, blendMode: BlendModes): void;
|
|
28
|
+
private _writeQuadVertices;
|
|
29
|
+
private _createBufferRuntime;
|
|
30
|
+
private _createVaoRuntime;
|
|
31
|
+
}
|