@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.
Files changed (138) hide show
  1. package/CHANGELOG.md +464 -163
  2. package/README.md +156 -141
  3. package/dist/esm/audio/AudioAnalyser.d.ts +0 -1
  4. package/dist/esm/audio/AudioAnalyser.js +0 -2
  5. package/dist/esm/audio/AudioAnalyser.js.map +1 -1
  6. package/dist/esm/core/Application.d.ts +4 -4
  7. package/dist/esm/core/Application.js +19 -19
  8. package/dist/esm/core/Application.js.map +1 -1
  9. package/dist/esm/core/Scene.d.ts +59 -24
  10. package/dist/esm/core/Scene.js +60 -18
  11. package/dist/esm/core/Scene.js.map +1 -1
  12. package/dist/esm/core/SceneManager.js +15 -9
  13. package/dist/esm/core/SceneManager.js.map +1 -1
  14. package/dist/esm/core/SceneNode.d.ts +45 -5
  15. package/dist/esm/core/SceneNode.js +136 -7
  16. package/dist/esm/core/SceneNode.js.map +1 -1
  17. package/dist/esm/index.js +3 -4
  18. package/dist/esm/index.js.map +1 -1
  19. package/dist/esm/math/index.d.ts +0 -1
  20. package/dist/esm/rendering/CallbackRenderPass.d.ts +3 -3
  21. package/dist/esm/rendering/CallbackRenderPass.js +2 -2
  22. package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
  23. package/dist/esm/rendering/Container.d.ts +10 -11
  24. package/dist/esm/rendering/Container.js +5 -5
  25. package/dist/esm/rendering/Container.js.map +1 -1
  26. package/dist/esm/rendering/Drawable.d.ts +2 -2
  27. package/dist/esm/rendering/Drawable.js +5 -5
  28. package/dist/esm/rendering/Drawable.js.map +1 -1
  29. package/dist/esm/rendering/{SceneRenderRuntime.d.ts → RenderBackend.d.ts} +21 -3
  30. package/dist/esm/rendering/RenderNode.d.ts +41 -5
  31. package/dist/esm/rendering/RenderNode.js +89 -24
  32. package/dist/esm/rendering/RenderNode.js.map +1 -1
  33. package/dist/esm/rendering/RenderPass.d.ts +2 -2
  34. package/dist/esm/rendering/RenderTargetPass.d.ts +3 -3
  35. package/dist/esm/rendering/RenderTargetPass.js +9 -9
  36. package/dist/esm/rendering/RenderTargetPass.js.map +1 -1
  37. package/dist/esm/rendering/Renderer.d.ts +3 -3
  38. package/dist/esm/rendering/RendererRegistry.d.ts +13 -7
  39. package/dist/esm/rendering/RendererRegistry.js +18 -10
  40. package/dist/esm/rendering/RendererRegistry.js.map +1 -1
  41. package/dist/esm/rendering/filters/BlurFilter.d.ts +2 -2
  42. package/dist/esm/rendering/filters/BlurFilter.js +5 -5
  43. package/dist/esm/rendering/filters/BlurFilter.js.map +1 -1
  44. package/dist/esm/rendering/filters/ColorFilter.d.ts +2 -2
  45. package/dist/esm/rendering/filters/ColorFilter.js +3 -3
  46. package/dist/esm/rendering/filters/ColorFilter.js.map +1 -1
  47. package/dist/esm/rendering/filters/Filter.d.ts +2 -2
  48. package/dist/esm/rendering/index.d.ts +6 -6
  49. package/dist/esm/rendering/primitives/Graphics.d.ts +3 -3
  50. package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
  51. package/dist/esm/rendering/shader/Shader.d.ts +3 -3
  52. package/dist/esm/rendering/shader/Shader.js +10 -10
  53. package/dist/esm/rendering/text/Text.d.ts +2 -2
  54. package/dist/esm/rendering/text/Text.js +2 -2
  55. package/dist/esm/rendering/text/Text.js.map +1 -1
  56. package/dist/esm/rendering/texture/Sampler.d.ts +0 -3
  57. package/dist/esm/rendering/texture/Sampler.js +5 -7
  58. package/dist/esm/rendering/texture/Sampler.js.map +1 -1
  59. package/dist/esm/rendering/types.d.ts +4 -0
  60. package/dist/esm/rendering/types.js +4 -0
  61. package/dist/esm/rendering/types.js.map +1 -1
  62. package/dist/esm/rendering/video/Video.d.ts +2 -2
  63. package/dist/esm/rendering/video/Video.js +2 -2
  64. package/dist/esm/rendering/video/Video.js.map +1 -1
  65. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts +2 -2
  66. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +35 -11
  67. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
  68. package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.d.ts +13 -13
  69. package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.js +20 -20
  70. package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.js.map +1 -1
  71. package/dist/esm/rendering/webgl2/{WebGl2RenderManager.d.ts → WebGl2Backend.d.ts} +15 -12
  72. package/dist/esm/rendering/webgl2/{WebGl2RenderManager.js → WebGl2Backend.js} +60 -38
  73. package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -0
  74. package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.d.ts +31 -0
  75. package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js +186 -0
  76. package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js.map +1 -0
  77. package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.d.ts +38 -7
  78. package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js +281 -90
  79. package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js.map +1 -1
  80. package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.d.ts +2 -2
  81. package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.js +15 -10
  82. package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.js.map +1 -1
  83. package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js +12 -0
  84. package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js.map +1 -1
  85. package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.d.ts +2 -0
  86. package/dist/esm/rendering/webgl2/{WebGl2ShaderRuntime.js → WebGl2ShaderProgram.js} +58 -18
  87. package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js.map +1 -0
  88. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts +26 -7
  89. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +260 -62
  90. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -1
  91. package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.d.ts +24 -1
  92. package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.js +6 -2
  93. package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.js.map +1 -1
  94. package/dist/esm/rendering/webgl2/glsl/mask-compose.frag.js +4 -0
  95. package/dist/esm/rendering/webgl2/glsl/mask-compose.frag.js.map +1 -0
  96. package/dist/esm/rendering/webgl2/glsl/mask-compose.vert.js +4 -0
  97. package/dist/esm/rendering/webgl2/glsl/mask-compose.vert.js.map +1 -0
  98. package/dist/esm/rendering/webgl2/glsl/particle.vert.js +1 -1
  99. package/dist/esm/rendering/webgl2/glsl/sprite.frag.js +1 -1
  100. package/dist/esm/rendering/webgl2/glsl/sprite.vert.js +1 -1
  101. package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.d.ts +9 -9
  102. package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.js +18 -18
  103. package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.js.map +1 -1
  104. package/dist/esm/rendering/webgpu/{WebGpuRenderManager.d.ts → WebGpuBackend.d.ts} +17 -14
  105. package/dist/esm/rendering/webgpu/{WebGpuRenderManager.js → WebGpuBackend.js} +74 -40
  106. package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -0
  107. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.d.ts +37 -0
  108. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +279 -0
  109. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -0
  110. package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.d.ts +2 -3
  111. package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js +65 -82
  112. package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js.map +1 -1
  113. package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.d.ts +2 -3
  114. package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.js +24 -25
  115. package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.js.map +1 -1
  116. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +28 -13
  117. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +410 -382
  118. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
  119. package/dist/esm/resources/Loader.js +5 -3
  120. package/dist/esm/resources/Loader.js.map +1 -1
  121. package/dist/exo.esm.js +2500 -1399
  122. package/dist/exo.esm.js.map +1 -1
  123. package/package.json +20 -11
  124. package/dist/esm/math/Transformable.d.ts +0 -47
  125. package/dist/esm/math/Transformable.js +0 -140
  126. package/dist/esm/math/Transformable.js.map +0 -1
  127. package/dist/esm/rendering/webgl2/WebGl2RenderManager.js.map +0 -1
  128. package/dist/esm/rendering/webgl2/WebGl2RendererRuntime.d.ts +0 -15
  129. package/dist/esm/rendering/webgl2/WebGl2ShaderRuntime.d.ts +0 -2
  130. package/dist/esm/rendering/webgl2/WebGl2ShaderRuntime.js.map +0 -1
  131. package/dist/esm/rendering/webgpu/WebGpuRenderManager.js.map +0 -1
  132. package/dist/esm/rendering/webgpu/WebGpuRendererRuntime.d.ts +0 -8
  133. package/dist/exo.esm.min.js +0 -2
  134. package/dist/exo.esm.min.js.map +0 -1
  135. package/dist/exo.global.js +0 -17328
  136. package/dist/exo.global.js.map +0 -1
  137. package/dist/exo.global.min.js +0 -2
  138. 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 { createWebGl2ShaderRuntime } from './WebGl2ShaderRuntime.js';
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 runtime = this.getRuntimeOrNull();
36
+ const backend = this.getBackendOrNull();
37
37
  const vertexBuffer = this.vertexBuffer;
38
38
  const vao = this.vao;
39
- if (this.batchIndex === 0 || runtime === null || vertexBuffer === null || vao === null) {
39
+ if (this.batchIndex === 0 || backend === null || vertexBuffer === null || vao === null) {
40
40
  return;
41
41
  }
42
- const view = runtime.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
- runtime.bindVertexArrayObject(vao);
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
- runtime.stats.batches++;
53
- runtime.stats.drawCalls++;
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(runtime) {
65
- const gl = runtime.context;
66
- this.shader.connect(createWebGl2ShaderRuntime(gl));
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
- gl.vertexAttribPointer(attribute.location, attribute.size, attribute.type, attribute.normalized, attribute.stride, attribute.start);
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":"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"}
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 { WebGl2RendererRuntime } from './WebGl2RendererRuntime';
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
- * `getRuntime()` accessor that throws if the renderer is not connected.
9
+ * `getBackend()` accessor that throws if the renderer is not connected.
10
10
  *
11
11
  * Subclasses must implement:
12
- * - onConnect(runtime): set up GL resources
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<WebGl2RendererRuntime, Target> {
17
+ export declare abstract class AbstractWebGl2Renderer<Target extends Drawable> implements Renderer<WebGl2Backend, Target> {
18
18
  readonly backendType = RenderBackendType.WebGl2;
19
- private _runtime;
20
- connect(runtime: WebGl2RendererRuntime): void;
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 runtime.
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(runtime: WebGl2RendererRuntime): void;
28
+ protected abstract onConnect(backend: WebGl2Backend): void;
29
29
  /**
30
- * Called when the renderer is disconnected from its runtime.
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 runtime.
35
+ * Safe accessor for the connected backend.
36
36
  * @throws Error if the renderer is not connected.
37
37
  */
38
- protected getRuntime(): WebGl2RendererRuntime;
38
+ protected getBackend(): WebGl2Backend;
39
39
  /**
40
- * Returns the connected runtime, or null if not 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 getRuntimeOrNull(): WebGl2RendererRuntime | null;
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
- * `getRuntime()` accessor that throws if the renderer is not connected.
7
+ * `getBackend()` accessor that throws if the renderer is not connected.
8
8
  *
9
9
  * Subclasses must implement:
10
- * - onConnect(runtime): set up GL resources
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
- _runtime = null;
18
- connect(runtime) {
19
- if (this._runtime !== null) {
17
+ _backend = null;
18
+ connect(backend) {
19
+ if (this._backend !== null) {
20
20
  return;
21
21
  }
22
- if (runtime.backendType !== RenderBackendType.WebGl2) {
23
- throw new Error(`${this.constructor.name} requires a WebGL2 runtime, `
24
- + `but received backendType ${String(runtime.backendType)}.`);
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._runtime = runtime;
27
- this.onConnect(runtime);
26
+ this._backend = backend;
27
+ this.onConnect(backend);
28
28
  }
29
29
  disconnect() {
30
- if (this._runtime === null) {
30
+ if (this._backend === null) {
31
31
  return;
32
32
  }
33
33
  this.flush();
34
34
  this.onDisconnect();
35
- this._runtime = null;
35
+ this._backend = null;
36
36
  }
37
37
  /**
38
- * Safe accessor for the connected runtime.
38
+ * Safe accessor for the connected backend.
39
39
  * @throws Error if the renderer is not connected.
40
40
  */
41
- getRuntime() {
42
- if (this._runtime === null) {
43
- throw new Error(`${this.constructor.name} is not connected to a runtime.`);
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._runtime;
45
+ return this._backend;
46
46
  }
47
47
  /**
48
- * Returns the connected runtime, or null if not 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
- getRuntimeOrNull() {
52
- return this._runtime;
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,GAAiC,IAAI;AAE9C,IAAA,OAAO,CAAC,OAA8B,EAAA;AACzC,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;;;;"}
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 { WebGl2RendererRuntime } from './WebGl2RendererRuntime';
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 WebGl2RenderManager implements WebGl2RendererRuntime {
17
+ export declare class WebGl2Backend implements RenderBackend {
18
18
  readonly backendType = RenderBackendType.WebGl2;
19
- readonly rendererRegistry: RendererRegistry<WebGl2RendererRuntime>;
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 _maskStack;
30
- private readonly _maskPixelStack;
31
- private readonly _maskPointA;
32
- private readonly _maskPointB;
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
- pushMask(maskBounds: Rectangle): this;
59
- popMask(): this;
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 _toMaskPixels;
97
- private _intersectMasks;
98
- private _applyMaskState;
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 WebGl2RenderManager {
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
- _maskStack = [];
49
- _maskPixelStack = [];
50
- _maskPointA = new Vector();
51
- _maskPointB = new Vector();
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
- pushMask(maskBounds) {
145
+ pushScissorRect(bounds) {
143
146
  this._flushActiveRenderer();
144
- this._maskStack.push(maskBounds.clone());
145
- const nextMask = this._toMaskPixels(maskBounds);
146
- const previousMask = this._maskPixelStack.length > 0
147
- ? this._maskPixelStack[this._maskPixelStack.length - 1]
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 resolvedMask = previousMask ? this._intersectMasks(previousMask, nextMask) : nextMask;
150
- this._maskPixelStack.push(resolvedMask);
151
- this._applyMaskState();
152
+ const resolvedClip = previousClip ? this._intersectClips(previousClip, nextClip) : nextClip;
153
+ this._clipPixelStack.push(resolvedClip);
154
+ this._applyClipState();
152
155
  return this;
153
156
  }
154
- popMask() {
155
- if (this._maskStack.length === 0) {
157
+ popScissorRect() {
158
+ if (this._clipBoundsStack.length === 0) {
156
159
  return this;
157
160
  }
158
161
  this._flushActiveRenderer();
159
- const removedMask = this._maskStack.pop();
160
- if (removedMask) {
161
- removedMask.destroy();
162
+ const removedClip = this._clipBoundsStack.pop();
163
+ if (removedClip) {
164
+ removedClip.destroy();
162
165
  }
163
- this._maskPixelStack.pop();
164
- this._applyMaskState();
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 mask of this._maskStack) {
312
- mask.destroy();
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._maskPixelStack.length > 0) {
486
- this._applyMaskState();
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
- _toMaskPixels(maskBounds) {
553
- const topLeft = this._renderTarget.mapCoordsToPixel(this._maskPointA.set(maskBounds.left, maskBounds.top));
554
- const bottomRight = this._renderTarget.mapCoordsToPixel(this._maskPointB.set(maskBounds.right, maskBounds.bottom));
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
- _intersectMasks(first, second) {
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
- _applyMaskState() {
609
+ _applyClipState() {
588
610
  const gl = this._context;
589
- if (this._maskPixelStack.length === 0) {
611
+ if (this._clipPixelStack.length === 0) {
590
612
  gl.disable(gl.SCISSOR_TEST);
591
613
  return;
592
614
  }
593
- const mask = this._maskPixelStack[this._maskPixelStack.length - 1];
615
+ const clip = this._clipPixelStack[this._clipPixelStack.length - 1];
594
616
  gl.enable(gl.SCISSOR_TEST);
595
- gl.scissor(mask.x, mask.y, mask.width, mask.height);
617
+ gl.scissor(clip.x, clip.y, clip.width, clip.height);
596
618
  }
597
619
  }
598
620
 
599
- export { WebGl2RenderManager };
600
- //# sourceMappingURL=WebGl2RenderManager.js.map
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
+ }