@codexo/exojs 0.4.0 → 0.6.2

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 (151) hide show
  1. package/CHANGELOG.md +499 -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 +6 -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 +9 -6
  49. package/dist/esm/rendering/mesh/Mesh.d.ts +69 -0
  50. package/dist/esm/rendering/mesh/Mesh.js +114 -0
  51. package/dist/esm/rendering/mesh/Mesh.js.map +1 -0
  52. package/dist/esm/rendering/primitives/Graphics.d.ts +3 -3
  53. package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
  54. package/dist/esm/rendering/shader/Shader.d.ts +3 -3
  55. package/dist/esm/rendering/shader/Shader.js +10 -10
  56. package/dist/esm/rendering/text/Text.d.ts +2 -2
  57. package/dist/esm/rendering/text/Text.js +2 -2
  58. package/dist/esm/rendering/text/Text.js.map +1 -1
  59. package/dist/esm/rendering/texture/Sampler.d.ts +0 -3
  60. package/dist/esm/rendering/texture/Sampler.js +5 -7
  61. package/dist/esm/rendering/texture/Sampler.js.map +1 -1
  62. package/dist/esm/rendering/types.d.ts +4 -0
  63. package/dist/esm/rendering/types.js +4 -0
  64. package/dist/esm/rendering/types.js.map +1 -1
  65. package/dist/esm/rendering/video/Video.d.ts +2 -2
  66. package/dist/esm/rendering/video/Video.js +2 -2
  67. package/dist/esm/rendering/video/Video.js.map +1 -1
  68. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts +2 -2
  69. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +35 -11
  70. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
  71. package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.d.ts +13 -13
  72. package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.js +20 -20
  73. package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.js.map +1 -1
  74. package/dist/esm/rendering/webgl2/{WebGl2RenderManager.d.ts → WebGl2Backend.d.ts} +15 -12
  75. package/dist/esm/rendering/webgl2/{WebGl2RenderManager.js → WebGl2Backend.js} +63 -38
  76. package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -0
  77. package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.d.ts +31 -0
  78. package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js +186 -0
  79. package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js.map +1 -0
  80. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts +27 -0
  81. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js +242 -0
  82. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js.map +1 -0
  83. package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.d.ts +38 -7
  84. package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js +281 -90
  85. package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js.map +1 -1
  86. package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.d.ts +2 -2
  87. package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.js +15 -10
  88. package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.js.map +1 -1
  89. package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js +12 -0
  90. package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js.map +1 -1
  91. package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.d.ts +2 -0
  92. package/dist/esm/rendering/webgl2/{WebGl2ShaderRuntime.js → WebGl2ShaderProgram.js} +58 -18
  93. package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js.map +1 -0
  94. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts +26 -7
  95. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +260 -62
  96. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -1
  97. package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.d.ts +24 -1
  98. package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.js +6 -2
  99. package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.js.map +1 -1
  100. package/dist/esm/rendering/webgl2/glsl/mask-compose.frag.js +4 -0
  101. package/dist/esm/rendering/webgl2/glsl/mask-compose.frag.js.map +1 -0
  102. package/dist/esm/rendering/webgl2/glsl/mask-compose.vert.js +4 -0
  103. package/dist/esm/rendering/webgl2/glsl/mask-compose.vert.js.map +1 -0
  104. package/dist/esm/rendering/webgl2/glsl/mesh.frag.js +4 -0
  105. package/dist/esm/rendering/webgl2/glsl/mesh.frag.js.map +1 -0
  106. package/dist/esm/rendering/webgl2/glsl/mesh.vert.js +4 -0
  107. package/dist/esm/rendering/webgl2/glsl/mesh.vert.js.map +1 -0
  108. package/dist/esm/rendering/webgl2/glsl/particle.vert.js +1 -1
  109. package/dist/esm/rendering/webgl2/glsl/sprite.frag.js +1 -1
  110. package/dist/esm/rendering/webgl2/glsl/sprite.vert.js +1 -1
  111. package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.d.ts +9 -9
  112. package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.js +18 -18
  113. package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.js.map +1 -1
  114. package/dist/esm/rendering/webgpu/{WebGpuRenderManager.d.ts → WebGpuBackend.d.ts} +17 -14
  115. package/dist/esm/rendering/webgpu/{WebGpuRenderManager.js → WebGpuBackend.js} +77 -40
  116. package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -0
  117. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.d.ts +37 -0
  118. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +279 -0
  119. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -0
  120. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +40 -0
  121. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +439 -0
  122. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -0
  123. package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.d.ts +2 -3
  124. package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js +65 -82
  125. package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js.map +1 -1
  126. package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.d.ts +2 -3
  127. package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.js +24 -25
  128. package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.js.map +1 -1
  129. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +28 -13
  130. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +410 -382
  131. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
  132. package/dist/esm/resources/Loader.js +5 -3
  133. package/dist/esm/resources/Loader.js.map +1 -1
  134. package/dist/exo.esm.js +3574 -1696
  135. package/dist/exo.esm.js.map +1 -1
  136. package/package.json +20 -11
  137. package/dist/esm/math/Transformable.d.ts +0 -47
  138. package/dist/esm/math/Transformable.js +0 -140
  139. package/dist/esm/math/Transformable.js.map +0 -1
  140. package/dist/esm/rendering/webgl2/WebGl2RenderManager.js.map +0 -1
  141. package/dist/esm/rendering/webgl2/WebGl2RendererRuntime.d.ts +0 -15
  142. package/dist/esm/rendering/webgl2/WebGl2ShaderRuntime.d.ts +0 -2
  143. package/dist/esm/rendering/webgl2/WebGl2ShaderRuntime.js.map +0 -1
  144. package/dist/esm/rendering/webgpu/WebGpuRenderManager.js.map +0 -1
  145. package/dist/esm/rendering/webgpu/WebGpuRendererRuntime.d.ts +0 -8
  146. package/dist/exo.esm.min.js +0 -2
  147. package/dist/exo.esm.min.js.map +0 -1
  148. package/dist/exo.global.js +0 -17328
  149. package/dist/exo.global.js.map +0 -1
  150. package/dist/exo.global.min.js +0 -2
  151. package/dist/exo.global.min.js.map +0 -1
@@ -1,108 +1,299 @@
1
+ import { AbstractWebGl2Renderer } from './AbstractWebGl2Renderer.js';
2
+ import { Shader } from '../shader/Shader.js';
3
+ import { createWebGl2ShaderProgram } from './WebGl2ShaderProgram.js';
4
+ import { WebGl2RenderBuffer } from './WebGl2RenderBuffer.js';
1
5
  import { WebGl2VertexArrayObject } from './WebGl2VertexArrayObject.js';
6
+ import { RenderingPrimitives, BufferTypes, BufferUsage } from '../types.js';
2
7
  import vertexSource from './glsl/particle.vert.js';
3
8
  import fragmentSource from './glsl/particle.frag.js';
4
- import { AbstractWebGl2BatchedRenderer } from './AbstractWebGl2BatchedRenderer.js';
5
9
 
6
- class WebGl2ParticleRenderer extends AbstractWebGl2BatchedRenderer {
10
+ /**
11
+ * Instanced particle renderer for WebGL2.
12
+ *
13
+ * One ParticleSystem = one batch. Each `render(system)` flushes any
14
+ * pending batch, sets the system-level uniforms (transform, local
15
+ * bounds, UV bounds, texture), and packs every active particle into
16
+ * the per-instance buffer. The next `flush()` issues a single
17
+ * `drawElementsInstanced` for that system.
18
+ *
19
+ * Per-instance layout (24 bytes per particle, 4 attributes):
20
+ * ```
21
+ * translation f32x2 (offset 0, 8 bytes) particle position (system-local)
22
+ * scale f32x2 (offset 8, 8 bytes)
23
+ * rotation f32 (offset 16, 4 bytes) degrees
24
+ * color u8x4 (offset 20, 4 bytes) RGBA tint, normalised
25
+ * ```
26
+ *
27
+ * vs the previous per-vertex layout (36 bytes per vertex × 4 verts =
28
+ * 144 bytes per particle), this is an 83% bandwidth reduction and
29
+ * roughly 80% fewer CPU writes per particle (one pack call vs four
30
+ * duplicated vertex writes plus per-corner UV coords).
31
+ *
32
+ * The system transform stays as a uniform — mixing systems in one
33
+ * batch would require either a per-instance transform matrix (more
34
+ * bandwidth) or per-particle texture-slot indexing (multi-texture
35
+ * support similar to the sprite renderer). Both are follow-ups; the
36
+ * current pattern keeps the renderer focused on the per-particle win.
37
+ */
38
+ const instanceStrideBytes = 24;
39
+ const wordsPerInstance = instanceStrideBytes / Uint32Array.BYTES_PER_ELEMENT;
40
+ const indicesPerQuad = 6;
41
+ const quadIndices = new Uint16Array([0, 1, 2, 0, 2, 3]);
42
+ class WebGl2ParticleRenderer extends AbstractWebGl2Renderer {
43
+ _shader;
44
+ _batchSize;
45
+ _instanceData;
46
+ _instanceFloat32;
47
+ _instanceUint32;
48
+ _instanceCount = 0;
49
+ _currentTexture = null;
50
+ _currentBlendMode = null;
51
+ _currentView = null;
52
+ _currentViewId = -1;
53
+ _instanceBuffer = null;
54
+ _indexBuffer = null;
55
+ _vao = null;
56
+ _connection = null;
7
57
  constructor(batchSize) {
8
- /**
9
- * 4 x 9 Attributes:
10
- * 2 = vertexPos (x, y) +
11
- * 1 = texCoord (packed uv) +
12
- * 2 = position (x, y) +
13
- * 2 = scale (x, y) +
14
- * 1 = rotation (x, y) +
15
- * 1 = color (ARGB int)
16
- */
17
- super(batchSize, 36, vertexSource, fragmentSource);
58
+ super();
59
+ this._batchSize = batchSize;
60
+ this._shader = new Shader(vertexSource, fragmentSource);
61
+ this._instanceData = new ArrayBuffer(batchSize * instanceStrideBytes);
62
+ this._instanceFloat32 = new Float32Array(this._instanceData);
63
+ this._instanceUint32 = new Uint32Array(this._instanceData);
18
64
  }
19
65
  render(system) {
20
- const { texture, vertices, texCoords, particles, blendMode } = system;
21
- const textureChanged = (texture !== this.currentTexture);
22
- const blendModeChanged = (blendMode !== this.currentBlendMode);
23
- const float32View = this.float32View;
24
- const uint32View = this.uint32View;
25
- const runtime = this.getRuntime();
26
- // System transform is a uniform, so mixing systems in one batch is invalid.
66
+ const backend = this.getBackend();
67
+ const { texture, particles, blendMode } = system;
68
+ const textureChanged = texture !== this._currentTexture;
69
+ const blendModeChanged = blendMode !== this._currentBlendMode;
70
+ // System transform / texture / UV / local-bounds are uniforms, so
71
+ // mixing systems in one batch is invalid. Flush any prior system
72
+ // before setting up this one.
27
73
  this.flush();
28
- if (textureChanged || blendModeChanged) {
29
- if (textureChanged) {
30
- this.currentTexture = texture;
31
- }
32
- if (blendModeChanged) {
33
- this.currentBlendMode = blendMode;
34
- runtime.setBlendMode(blendMode);
35
- }
36
- }
37
74
  if (textureChanged) {
38
- runtime.bindTexture(texture);
75
+ this._currentTexture = texture;
76
+ backend.bindTexture(texture);
77
+ }
78
+ if (blendModeChanged) {
79
+ this._currentBlendMode = blendMode;
80
+ backend.setBlendMode(blendMode);
39
81
  }
40
- this.shader
41
- .getUniform('u_translation')
82
+ // System-level uniforms are set before packing so the eventual
83
+ // flush() can sync them in one go.
84
+ const localBounds = system.vertices;
85
+ const uvBounds = this._unpackUvBounds(system);
86
+ this._shader
87
+ .getUniform('u_systemTransform')
42
88
  .setValue(system.getGlobalTransform().toArray(false));
43
- for (const particle of particles) {
44
- if (this.batchIndex >= this.batchSize) {
45
- this.flush();
46
- }
47
- const { position, scale, rotation, tint } = particle;
48
- const index = (this.batchIndex * this.attributeCount);
49
- float32View[index + 0] = float32View[index + 27] = vertices[0];
50
- float32View[index + 1] = float32View[index + 10] = vertices[1];
51
- float32View[index + 9] = float32View[index + 18] = vertices[2];
52
- float32View[index + 19] = float32View[index + 28] = vertices[3];
53
- uint32View[index + 2] = texCoords[0];
54
- uint32View[index + 11] = texCoords[1];
55
- uint32View[index + 20] = texCoords[2];
56
- uint32View[index + 29] = texCoords[3];
57
- float32View[index + 3]
58
- = float32View[index + 12]
59
- = float32View[index + 21]
60
- = float32View[index + 30]
61
- = position.x;
62
- float32View[index + 4]
63
- = float32View[index + 13]
64
- = float32View[index + 22]
65
- = float32View[index + 31]
66
- = position.y;
67
- float32View[index + 5]
68
- = float32View[index + 14]
69
- = float32View[index + 23]
70
- = float32View[index + 32]
71
- = scale.x;
72
- float32View[index + 6]
73
- = float32View[index + 15]
74
- = float32View[index + 24]
75
- = float32View[index + 33]
76
- = scale.y;
77
- float32View[index + 7]
78
- = float32View[index + 16]
79
- = float32View[index + 25]
80
- = float32View[index + 34]
81
- = rotation;
82
- uint32View[index + 8]
83
- = uint32View[index + 17]
84
- = uint32View[index + 26]
85
- = uint32View[index + 35]
86
- = tint.toRgba();
87
- this.batchIndex++;
89
+ this._shader
90
+ .getUniform('u_localBounds')
91
+ .setValue(localBounds);
92
+ this._shader
93
+ .getUniform('u_uvBounds')
94
+ .setValue(uvBounds);
95
+ const f32 = this._instanceFloat32;
96
+ const u32 = this._instanceUint32;
97
+ const limit = Math.min(particles.length, this._batchSize);
98
+ for (let i = 0; i < limit; i++) {
99
+ const particle = particles[i];
100
+ const offset = i * wordsPerInstance;
101
+ f32[offset + 0] = particle.position.x;
102
+ f32[offset + 1] = particle.position.y;
103
+ f32[offset + 2] = particle.scale.x;
104
+ f32[offset + 3] = particle.scale.y;
105
+ f32[offset + 4] = particle.rotation;
106
+ u32[offset + 5] = particle.tint.toRgba();
88
107
  }
108
+ this._instanceCount = limit;
89
109
  return this;
90
110
  }
91
- createVao(gl, indexBuffer, vertexBuffer) {
92
- return new WebGl2VertexArrayObject()
93
- .addIndex(indexBuffer)
94
- .addAttribute(vertexBuffer, this.shader.getAttribute('a_position'), gl.FLOAT, false, this.attributeCount, 0)
95
- .addAttribute(vertexBuffer, this.shader.getAttribute('a_texcoord'), gl.UNSIGNED_SHORT, true, this.attributeCount, 8)
96
- .addAttribute(vertexBuffer, this.shader.getAttribute('a_translation'), gl.FLOAT, false, this.attributeCount, 12)
97
- .addAttribute(vertexBuffer, this.shader.getAttribute('a_scale'), gl.FLOAT, false, this.attributeCount, 20)
98
- .addAttribute(vertexBuffer, this.shader.getAttribute('a_rotation'), gl.FLOAT, false, this.attributeCount, 28)
99
- .addAttribute(vertexBuffer, this.shader.getAttribute('a_color'), gl.UNSIGNED_BYTE, true, this.attributeCount, 32);
111
+ flush() {
112
+ const backend = this.getBackendOrNull();
113
+ const instanceBuffer = this._instanceBuffer;
114
+ const indexBuffer = this._indexBuffer;
115
+ const vao = this._vao;
116
+ if (this._instanceCount === 0 || backend === null || instanceBuffer === null || indexBuffer === null || vao === null) {
117
+ return;
118
+ }
119
+ const view = backend.view;
120
+ if (this._currentView !== view || this._currentViewId !== view.updateId) {
121
+ this._currentView = view;
122
+ this._currentViewId = view.updateId;
123
+ this._shader
124
+ .getUniform('u_projection')
125
+ .setValue(view.getTransform().toArray(false));
126
+ }
127
+ this._shader.sync();
128
+ backend.bindVertexArrayObject(vao);
129
+ instanceBuffer.upload(this._instanceFloat32.subarray(0, this._instanceCount * wordsPerInstance));
130
+ vao.drawInstanced(indicesPerQuad, 0, this._instanceCount, RenderingPrimitives.Triangles);
131
+ backend.stats.batches++;
132
+ backend.stats.drawCalls++;
133
+ this._instanceCount = 0;
100
134
  }
101
- updateView(view) {
102
- this.shader
103
- .getUniform('u_projection')
104
- .setValue(view.getTransform().toArray(false));
105
- return this;
135
+ onConnect(backend) {
136
+ const gl = backend.context;
137
+ this._shader.connect(createWebGl2ShaderProgram(gl));
138
+ this._connection = this._createConnection(gl);
139
+ this._indexBuffer = new WebGl2RenderBuffer(BufferTypes.ElementArrayBuffer, quadIndices, BufferUsage.StaticDraw)
140
+ .connect(this._createBufferRuntime(this._connection));
141
+ this._instanceBuffer = new WebGl2RenderBuffer(BufferTypes.ArrayBuffer, this._instanceData, BufferUsage.DynamicDraw)
142
+ .connect(this._createBufferRuntime(this._connection));
143
+ this._shader.sync();
144
+ this._vao = new WebGl2VertexArrayObject()
145
+ .addIndex(this._indexBuffer)
146
+ .addAttribute(this._instanceBuffer, this._shader.getAttribute('a_translation'), gl.FLOAT, false, instanceStrideBytes, 0, false, 1)
147
+ .addAttribute(this._instanceBuffer, this._shader.getAttribute('a_scale'), gl.FLOAT, false, instanceStrideBytes, 8, false, 1)
148
+ .addAttribute(this._instanceBuffer, this._shader.getAttribute('a_rotation'), gl.FLOAT, false, instanceStrideBytes, 16, false, 1)
149
+ .addAttribute(this._instanceBuffer, this._shader.getAttribute('a_color'), gl.UNSIGNED_BYTE, true, instanceStrideBytes, 20, false, 1)
150
+ .connect(this._createVaoRuntime(this._connection));
151
+ }
152
+ onDisconnect() {
153
+ this._shader.disconnect();
154
+ this._instanceBuffer?.destroy();
155
+ this._instanceBuffer = null;
156
+ this._indexBuffer?.destroy();
157
+ this._indexBuffer = null;
158
+ this._vao?.destroy();
159
+ this._vao = null;
160
+ this._connection = null;
161
+ this._currentTexture = null;
162
+ this._currentBlendMode = null;
163
+ this._currentView = null;
164
+ this._currentViewId = -1;
165
+ this._instanceCount = 0;
166
+ }
167
+ destroy() {
168
+ this.disconnect();
169
+ this._shader.destroy();
170
+ }
171
+ /**
172
+ * Convert the system's per-corner packed-u32 texCoords into the
173
+ * (uMin, vMin, uMax, vMax) bounds the new vertex shader expects.
174
+ * Already accounts for flipY (the system's `texCoords` baked it in).
175
+ *
176
+ * The four packed u32s, by corner index, are:
177
+ * [0] TL = (uMin/uMax | vMin/vMax depending on flipY)
178
+ * [1] TR
179
+ * [2] BR
180
+ * [3] BL
181
+ * We need (uMin, vMin, uMax, vMax) — the corner-extreme values.
182
+ */
183
+ _uvBoundsScratch = new Float32Array(4);
184
+ _unpackUvBounds(system) {
185
+ const texCoords = system.texCoords;
186
+ // Each packed u32: low 16 bits = U normalised to 0..65535,
187
+ // high 16 bits = V normalised.
188
+ const uTopLeft = (texCoords[0] & 0xFFFF) / 0xFFFF;
189
+ const vTopLeft = ((texCoords[0] >>> 16) & 0xFFFF) / 0xFFFF;
190
+ const uBottomRight = (texCoords[2] & 0xFFFF) / 0xFFFF;
191
+ const vBottomRight = ((texCoords[2] >>> 16) & 0xFFFF) / 0xFFFF;
192
+ // For flipY: TL.v becomes vMax (was minY → maxY). The shader picks
193
+ // (cornerY == 0 ? vMin : vMax); writing TL.v into vMin and BR.v into
194
+ // vMax matches the original per-corner ordering whether or not flipY
195
+ // was applied at texCoords pack time.
196
+ this._uvBoundsScratch[0] = uTopLeft;
197
+ this._uvBoundsScratch[1] = vTopLeft;
198
+ this._uvBoundsScratch[2] = uBottomRight;
199
+ this._uvBoundsScratch[3] = vBottomRight;
200
+ return this._uvBoundsScratch;
201
+ }
202
+ _createConnection(gl) {
203
+ const vaoHandle = gl.createVertexArray();
204
+ if (vaoHandle === null) {
205
+ throw new Error('WebGl2ParticleRenderer: could not create vertex array object.');
206
+ }
207
+ return {
208
+ gl,
209
+ buffers: new Map(),
210
+ vaoHandle,
211
+ };
212
+ }
213
+ _createBufferRuntime(connection) {
214
+ const handle = connection.gl.createBuffer();
215
+ if (handle === null) {
216
+ throw new Error('WebGl2ParticleRenderer: could not create render buffer.');
217
+ }
218
+ return {
219
+ bind: (buffer) => {
220
+ connection.gl.bindBuffer(buffer.type, handle);
221
+ },
222
+ upload: (buffer, offset) => {
223
+ const gl = connection.gl;
224
+ const data = buffer.data;
225
+ const state = connection.buffers.get(buffer);
226
+ gl.bindBuffer(buffer.type, handle);
227
+ if (state && state.dataByteLength >= data.byteLength) {
228
+ gl.bufferSubData(buffer.type, offset, data);
229
+ state.dataByteLength = data.byteLength;
230
+ }
231
+ else {
232
+ gl.bufferData(buffer.type, data, buffer.usage);
233
+ connection.buffers.set(buffer, { handle, dataByteLength: data.byteLength });
234
+ }
235
+ },
236
+ destroy: (buffer) => {
237
+ connection.gl.deleteBuffer(handle);
238
+ connection.buffers.delete(buffer);
239
+ buffer.disconnect();
240
+ },
241
+ };
242
+ }
243
+ _createVaoRuntime(connection) {
244
+ let appliedVersion = -1;
245
+ return {
246
+ bind: (vao) => {
247
+ const gl = connection.gl;
248
+ gl.bindVertexArray(connection.vaoHandle);
249
+ if (appliedVersion !== vao.version) {
250
+ let lastBuffer = null;
251
+ for (const attribute of vao.attributes) {
252
+ if (lastBuffer !== attribute.buffer) {
253
+ attribute.buffer.bind();
254
+ lastBuffer = attribute.buffer;
255
+ }
256
+ if (attribute.integer) {
257
+ gl.vertexAttribIPointer(attribute.location, attribute.size, attribute.type, attribute.stride, attribute.start);
258
+ }
259
+ else {
260
+ gl.vertexAttribPointer(attribute.location, attribute.size, attribute.type, attribute.normalized, attribute.stride, attribute.start);
261
+ }
262
+ gl.enableVertexAttribArray(attribute.location);
263
+ gl.vertexAttribDivisor(attribute.location, attribute.divisor);
264
+ }
265
+ if (vao.indexBuffer) {
266
+ vao.indexBuffer.bind();
267
+ }
268
+ appliedVersion = vao.version;
269
+ }
270
+ },
271
+ unbind: () => {
272
+ connection.gl.bindVertexArray(null);
273
+ },
274
+ draw: (vao, size, start, type) => {
275
+ const gl = connection.gl;
276
+ if (vao.indexBuffer) {
277
+ gl.drawElements(type, size, gl.UNSIGNED_SHORT, start);
278
+ }
279
+ else {
280
+ gl.drawArrays(type, start, size);
281
+ }
282
+ },
283
+ drawInstanced: (vao, count, start, instanceCount, type) => {
284
+ const gl = connection.gl;
285
+ if (vao.indexBuffer) {
286
+ gl.drawElementsInstanced(type, count, gl.UNSIGNED_SHORT, start, instanceCount);
287
+ }
288
+ else {
289
+ gl.drawArraysInstanced(type, start, count, instanceCount);
290
+ }
291
+ },
292
+ destroy: (vao) => {
293
+ connection.gl.deleteVertexArray(connection.vaoHandle);
294
+ vao.disconnect();
295
+ },
296
+ };
106
297
  }
107
298
  }
108
299
 
@@ -1 +1 @@
1
- {"version":3,"file":"WebGl2ParticleRenderer.js","sources":["../../../../../src/rendering/webgl2/WebGl2ParticleRenderer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebGl2ParticleRenderer.js","sources":["../../../../../src/rendering/webgl2/WebGl2ParticleRenderer.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;AAcA;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;AAEH,MAAM,mBAAmB,GAAG,EAAE;AAC9B,MAAM,gBAAgB,GAAG,mBAAmB,GAAG,WAAW,CAAC,iBAAiB;AAC5E,MAAM,cAAc,GAAG,CAAC;AACxB,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAQjD,MAAO,sBAAuB,SAAQ,sBAAsC,CAAA;AAE7D,IAAA,OAAO;AACP,IAAA,UAAU;AACV,IAAA,aAAa;AACb,IAAA,gBAAgB;AAChB,IAAA,eAAe;IAExB,cAAc,GAAG,CAAC;IAClB,eAAe,GAAmB,IAAI;IACtC,iBAAiB,GAAsB,IAAI;IAC3C,YAAY,GAAgB,IAAI;IAChC,cAAc,GAAG,EAAE;IAEnB,eAAe,GAA8B,IAAI;IACjD,YAAY,GAA8B,IAAI;IAC9C,IAAI,GAAmC,IAAI;IAC3C,WAAW,GAAsC,IAAI;AAE7D,IAAA,WAAA,CAAmB,SAAiB,EAAA;AAChC,QAAA,KAAK,EAAE;AAEP,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC;QACvD,IAAI,CAAC,aAAa,GAAG,IAAI,WAAW,CAAC,SAAS,GAAG,mBAAmB,CAAC;QACrE,IAAI,CAAC,gBAAgB,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;QAC5D,IAAI,CAAC,eAAe,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;IAC9D;AAEO,IAAA,MAAM,CAAC,MAAsB,EAAA;AAChC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;QACjC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,MAAM;AAChD,QAAA,MAAM,cAAc,GAAG,OAAO,KAAK,IAAI,CAAC,eAAe;AACvD,QAAA,MAAM,gBAAgB,GAAG,SAAS,KAAK,IAAI,CAAC,iBAAiB;;;;QAK7D,IAAI,CAAC,KAAK,EAAE;QAEZ,IAAI,cAAc,EAAE;AAChB,YAAA,IAAI,CAAC,eAAe,GAAG,OAAO;AAC9B,YAAA,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;QAChC;QAEA,IAAI,gBAAgB,EAAE;AAClB,YAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS;AAClC,YAAA,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC;QACnC;;;AAIA,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AAE7C,QAAA,IAAI,CAAC;aACA,UAAU,CAAC,mBAAmB;aAC9B,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC;aACA,UAAU,CAAC,eAAe;aAC1B,QAAQ,CAAC,WAAW,CAAC;AAC1B,QAAA,IAAI,CAAC;aACA,UAAU,CAAC,YAAY;aACvB,QAAQ,CAAC,QAAQ,CAAC;AAEvB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB;AACjC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe;AAChC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC;AAEzD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AAC5B,YAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC;AAC7B,YAAA,MAAM,MAAM,GAAG,CAAC,GAAG,gBAAgB;YAEnC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACrC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACrC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ;AACnC,YAAA,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE;QAC5C;AAEA,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAE3B,QAAA,OAAO,IAAI;IACf;IAEO,KAAK,GAAA;AACR,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACvC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe;AAC3C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY;AACrC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI;QAErB,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,IAAI,OAAO,KAAK,IAAI,IAAI,cAAc,KAAK,IAAI,IAAI,WAAW,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;YAClH;QACJ;AAEA,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI;AAEzB,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,QAAQ,EAAE;AACrE,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ;AACnC,YAAA,IAAI,CAAC;iBACA,UAAU,CAAC,cAAc;iBACzB,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrD;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACnB,QAAA,OAAO,CAAC,qBAAqB,CAAC,GAAG,CAAC;AAClC,QAAA,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC,CAAC;AAChG,QAAA,GAAG,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,mBAAmB,CAAC,SAAS,CAAC;AACxF,QAAA,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE;AACvB,QAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE;AAEzB,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC;IAC3B;AAEU,IAAA,SAAS,CAAC,OAAsB,EAAA;AACtC,QAAA,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO;QAE1B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;AAE7C,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,kBAAkB,CAAC,WAAW,CAAC,kBAAkB,EAAE,WAAW,EAAE,WAAW,CAAC,UAAU;aACzG,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,kBAAkB,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,WAAW;aAC7G,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAEzD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AAEnB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,uBAAuB;AAClC,aAAA,QAAQ,CAAC,IAAI,CAAC,YAAY;aAC1B,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,KAAK,EAAU,KAAK,EAAE,mBAAmB,EAAG,CAAC,EAAE,KAAK,EAAE,CAAC;aACzI,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,EAAQ,EAAE,CAAC,KAAK,EAAU,KAAK,EAAE,mBAAmB,EAAG,CAAC,EAAE,KAAK,EAAE,CAAC;aACzI,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,EAAK,EAAE,CAAC,KAAK,EAAU,KAAK,EAAE,mBAAmB,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;aACzI,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,EAAQ,EAAE,CAAC,aAAa,EAAE,IAAI,EAAG,mBAAmB,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;aACzI,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1D;IAEU,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AACzB,QAAA,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE;AAC/B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,QAAA,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE;AAC5B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE;AACpB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;AAC7B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC;IAC3B;IAEO,OAAO,GAAA;QACV,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;IAC1B;AAEA;;;;;;;;;;;AAWG;AACK,IAAA,gBAAgB,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC;AACtC,IAAA,eAAe,CAAC,MAAsB,EAAA;AAC1C,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS;;;AAGlC,QAAA,MAAM,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,MAAM;AACjD,QAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,MAAM,IAAI,MAAM;AAC1D,QAAA,MAAM,YAAY,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,MAAM;AACrD,QAAA,MAAM,YAAY,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,MAAM,IAAI,MAAM;;;;;AAM9D,QAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,QAAQ;AACnC,QAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,QAAQ;AACnC,QAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,YAAY;AACvC,QAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,YAAY;QAEvC,OAAO,IAAI,CAAC,gBAAgB;IAChC;AAEQ,IAAA,iBAAiB,CAAC,EAA0B,EAAA;AAChD,QAAA,MAAM,SAAS,GAAG,EAAE,CAAC,iBAAiB,EAAE;AAExC,QAAA,IAAI,SAAS,KAAK,IAAI,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC;QACpF;QAEA,OAAO;YACH,EAAE;YACF,OAAO,EAAE,IAAI,GAAG,EAAE;YAClB,SAAS;SACZ;IACL;AAEQ,IAAA,oBAAoB,CAAC,UAAsC,EAAA;QAC/D,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE;AAE3C,QAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC;QAC9E;QAEA,OAAO;AACH,YAAA,IAAI,EAAE,CAAC,MAAM,KAAU;gBACnB,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;YACjD,CAAC;AACD,YAAA,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAU;AAC7B,gBAAA,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE;AACxB,gBAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI;gBACxB,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;gBAE5C,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;gBAElC,IAAI,KAAK,IAAI,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,UAAU,EAAE;oBAClD,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC;AAC3C,oBAAA,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU;gBAC1C;qBAAO;AACH,oBAAA,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC;AAC9C,oBAAA,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC/E;YACJ,CAAC;AACD,YAAA,OAAO,EAAE,CAAC,MAAM,KAAU;AACtB,gBAAA,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC;AAClC,gBAAA,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;gBACjC,MAAM,CAAC,UAAU,EAAE;YACvB,CAAC;SACJ;IACL;AAEQ,IAAA,iBAAiB,CAAC,UAAsC,EAAA;AAC5D,QAAA,IAAI,cAAc,GAAG,EAAE;QAEvB,OAAO;AACH,YAAA,IAAI,EAAE,CAAC,GAAG,KAAU;AAChB,gBAAA,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE;AAExB,gBAAA,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC;AAExC,gBAAA,IAAI,cAAc,KAAK,GAAG,CAAC,OAAO,EAAE;oBAChC,IAAI,UAAU,GAA8B,IAAI;AAEhD,oBAAA,KAAK,MAAM,SAAS,IAAI,GAAG,CAAC,UAAU,EAAE;AACpC,wBAAA,IAAI,UAAU,KAAK,SAAS,CAAC,MAAM,EAAE;AACjC,4BAAA,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE;AACvB,4BAAA,UAAU,GAAG,SAAS,CAAC,MAAM;wBACjC;AAEA,wBAAA,IAAI,SAAS,CAAC,OAAO,EAAE;4BACnB,EAAE,CAAC,oBAAoB,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC;wBAClH;6BAAO;4BACH,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC;wBACvI;AAEA,wBAAA,EAAE,CAAC,uBAAuB,CAAC,SAAS,CAAC,QAAQ,CAAC;wBAC9C,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC;oBACjE;AAEA,oBAAA,IAAI,GAAG,CAAC,WAAW,EAAE;AACjB,wBAAA,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE;oBAC1B;AAEA,oBAAA,cAAc,GAAG,GAAG,CAAC,OAAO;gBAChC;YACJ,CAAC;YACD,MAAM,EAAE,MAAW;AACf,gBAAA,UAAU,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;YACvC,CAAC;YACD,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,KAAU;AACnC,gBAAA,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE;AAExB,gBAAA,IAAI,GAAG,CAAC,WAAW,EAAE;AACjB,oBAAA,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC;gBACzD;qBAAO;oBACH,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;gBACpC;YACJ,CAAC;AACD,YAAA,aAAa,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,KAAU;AAC5D,gBAAA,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE;AAExB,gBAAA,IAAI,GAAG,CAAC,WAAW,EAAE;AACjB,oBAAA,EAAE,CAAC,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,cAAc,EAAE,KAAK,EAAE,aAAa,CAAC;gBAClF;qBAAO;oBACH,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC;gBAC7D;YACJ,CAAC;AACD,YAAA,OAAO,EAAE,CAAC,GAAG,KAAU;gBACnB,UAAU,CAAC,EAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC;gBACrD,GAAG,CAAC,UAAU,EAAE;YACpB,CAAC;SACJ;IACL;AACH;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { AbstractWebGl2Renderer } from './AbstractWebGl2Renderer';
2
2
  import type { DrawableShape } from '../primitives/DrawableShape';
3
- import type { WebGl2RendererRuntime } from './WebGl2RendererRuntime';
3
+ import type { WebGl2Backend } from './WebGl2Backend';
4
4
  export declare class WebGl2PrimitiveRenderer extends AbstractWebGl2Renderer<DrawableShape> {
5
5
  private _vertexCapacity;
6
6
  private _indexCapacity;
@@ -17,7 +17,7 @@ export declare class WebGl2PrimitiveRenderer extends AbstractWebGl2Renderer<Draw
17
17
  render(shape: DrawableShape): void;
18
18
  flush(): void;
19
19
  destroy(): void;
20
- protected onConnect(runtime: WebGl2RendererRuntime): void;
20
+ protected onConnect(backend: WebGl2Backend): void;
21
21
  protected onDisconnect(): void;
22
22
  private _ensureVertexCapacity;
23
23
  private _ensureIndexCapacity;
@@ -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 { WebGl2VertexArrayObject } from './WebGl2VertexArrayObject.js';
5
5
  import { BufferTypes, BufferUsage } from '../types.js';
6
6
  import { WebGl2RenderBuffer } from './WebGl2RenderBuffer.js';
@@ -36,7 +36,7 @@ class WebGl2PrimitiveRenderer extends AbstractWebGl2Renderer {
36
36
  if (!connection) {
37
37
  throw new Error('Renderer not connected');
38
38
  }
39
- const runtime = this.getRuntime();
39
+ const backend = this.getBackend();
40
40
  const { geometry, drawMode, color, blendMode } = shape;
41
41
  const vertices = geometry.vertices;
42
42
  const sourceIndices = geometry.indices;
@@ -49,9 +49,9 @@ class WebGl2PrimitiveRenderer extends AbstractWebGl2Renderer {
49
49
  this._ensureIndexCapacity(indexCount);
50
50
  if (blendMode !== this._currentBlendMode) {
51
51
  this._currentBlendMode = blendMode;
52
- runtime.setBlendMode(blendMode);
52
+ backend.setBlendMode(blendMode);
53
53
  }
54
- const view = runtime.view;
54
+ const view = backend.view;
55
55
  if (this._currentView !== view || this._viewId !== view.updateId) {
56
56
  this._currentView = view;
57
57
  this._viewId = view.updateId;
@@ -75,12 +75,12 @@ class WebGl2PrimitiveRenderer extends AbstractWebGl2Renderer {
75
75
  }
76
76
  }
77
77
  this._shader.sync();
78
- runtime.bindVertexArrayObject(connection.vao);
78
+ backend.bindVertexArrayObject(connection.vao);
79
79
  connection.vertexBuffer.upload(this._float32View.subarray(0, vertexCount * vertexStrideWords));
80
80
  connection.indexBuffer.upload(this._indexData.subarray(0, indexCount));
81
81
  connection.vao.draw(indexCount, 0, drawMode);
82
- runtime.stats.batches++;
83
- runtime.stats.drawCalls++;
82
+ backend.stats.batches++;
83
+ backend.stats.drawCalls++;
84
84
  }
85
85
  flush() {
86
86
  // Primitive rendering is immediate per shape in this bridge stage.
@@ -91,10 +91,10 @@ class WebGl2PrimitiveRenderer extends AbstractWebGl2Renderer {
91
91
  this._currentBlendMode = null;
92
92
  this._currentView = null;
93
93
  }
94
- onConnect(runtime) {
95
- const gl = runtime.context;
94
+ onConnect(backend) {
95
+ const gl = backend.context;
96
96
  const vaoHandle = gl.createVertexArray();
97
- this._shader.connect(createWebGl2ShaderRuntime(gl));
97
+ this._shader.connect(createWebGl2ShaderProgram(gl));
98
98
  if (vaoHandle === null) {
99
99
  throw new Error('Could not create vertex array object.');
100
100
  }
@@ -103,6 +103,11 @@ class WebGl2PrimitiveRenderer extends AbstractWebGl2Renderer {
103
103
  .connect(this._createBufferRuntime(gl, buffers));
104
104
  const vertexBuffer = new WebGl2RenderBuffer(BufferTypes.ArrayBuffer, this._vertexData, BufferUsage.DynamicDraw)
105
105
  .connect(this._createBufferRuntime(gl, buffers));
106
+ // Force shader finalize so the attribute table is populated. The
107
+ // async-compile path defers attribute extraction from initialize()
108
+ // to first sync(); without this nudge, getAttribute() below would
109
+ // throw "Attribute 'a_position' is not available".
110
+ this._shader.sync();
106
111
  const vao = new WebGl2VertexArrayObject()
107
112
  .addIndex(indexBuffer)
108
113
  .addAttribute(vertexBuffer, this._shader.getAttribute('a_position'), gl.FLOAT, false, vertexStrideBytes, 0)
@@ -1 +1 @@
1
- {"version":3,"file":"WebGl2PrimitiveRenderer.js","sources":["../../../../../src/rendering/webgl2/WebGl2PrimitiveRenderer.ts"],"sourcesContent":[null],"names":["Buffer"],"mappings":"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"}
1
+ {"version":3,"file":"WebGl2PrimitiveRenderer.js","sources":["../../../../../src/rendering/webgl2/WebGl2PrimitiveRenderer.ts"],"sourcesContent":[null],"names":["Buffer"],"mappings":"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"}
@@ -9,6 +9,10 @@ const webGl2PrimitiveByteSizeMapping = {
9
9
  [ShaderPrimitives.IntVec2]: 2,
10
10
  [ShaderPrimitives.IntVec3]: 3,
11
11
  [ShaderPrimitives.IntVec4]: 4,
12
+ [ShaderPrimitives.UnsignedInt]: 1,
13
+ [ShaderPrimitives.UnsignedIntVec2]: 2,
14
+ [ShaderPrimitives.UnsignedIntVec3]: 3,
15
+ [ShaderPrimitives.UnsignedIntVec4]: 4,
12
16
  [ShaderPrimitives.Bool]: 1,
13
17
  [ShaderPrimitives.BoolVec2]: 2,
14
18
  [ShaderPrimitives.BoolVec3]: 3,
@@ -27,6 +31,10 @@ const webGl2PrimitiveArrayConstructors = {
27
31
  [ShaderPrimitives.IntVec2]: Int32Array,
28
32
  [ShaderPrimitives.IntVec3]: Int32Array,
29
33
  [ShaderPrimitives.IntVec4]: Int32Array,
34
+ [ShaderPrimitives.UnsignedInt]: Int32Array,
35
+ [ShaderPrimitives.UnsignedIntVec2]: Int32Array,
36
+ [ShaderPrimitives.UnsignedIntVec3]: Int32Array,
37
+ [ShaderPrimitives.UnsignedIntVec4]: Int32Array,
30
38
  [ShaderPrimitives.Bool]: Uint8Array,
31
39
  [ShaderPrimitives.BoolVec2]: Uint8Array,
32
40
  [ShaderPrimitives.BoolVec3]: Uint8Array,
@@ -45,6 +53,10 @@ const webGl2PrimitiveTypeNames = {
45
53
  [ShaderPrimitives.IntVec2]: 'INT_VEC2',
46
54
  [ShaderPrimitives.IntVec3]: 'INT_VEC3',
47
55
  [ShaderPrimitives.IntVec4]: 'INT_VEC4',
56
+ [ShaderPrimitives.UnsignedInt]: 'UNSIGNED_INT',
57
+ [ShaderPrimitives.UnsignedIntVec2]: 'UNSIGNED_INT_VEC2',
58
+ [ShaderPrimitives.UnsignedIntVec3]: 'UNSIGNED_INT_VEC3',
59
+ [ShaderPrimitives.UnsignedIntVec4]: 'UNSIGNED_INT_VEC4',
48
60
  [ShaderPrimitives.Bool]: 'BOOL',
49
61
  [ShaderPrimitives.BoolVec2]: 'BOOL_VEC2',
50
62
  [ShaderPrimitives.BoolVec3]: 'BOOL_VEC3',
@@ -1 +1 @@
1
- {"version":3,"file":"WebGl2ShaderMappings.js","sources":["../../../../../src/rendering/webgl2/WebGl2ShaderMappings.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebGl2ShaderMappings.js","sources":["../../../../../src/rendering/webgl2/WebGl2ShaderMappings.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { ShaderProgram } from '../shader/Shader';
2
+ export declare function createWebGl2ShaderProgram(gl: WebGL2RenderingContext): ShaderProgram;