@flighthq/scene2d-wgpu 0.3.0-next.906.07cea63 → 0.3.0

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 (128) hide show
  1. package/dist/contract.d.ts +8 -6
  2. package/dist/contract.d.ts.map +1 -1
  3. package/dist/contract.js +8 -6
  4. package/dist/contract.js.map +1 -1
  5. package/dist/enableWgpuColorAdjustmentGuards.js +2 -2
  6. package/dist/enableWgpuColorAdjustmentGuards.js.map +1 -1
  7. package/dist/enableWgpuStrokePathTessellation.d.ts +3 -0
  8. package/dist/enableWgpuStrokePathTessellation.d.ts.map +1 -0
  9. package/dist/enableWgpuStrokePathTessellation.js +8 -0
  10. package/dist/enableWgpuStrokePathTessellation.js.map +1 -0
  11. package/dist/index.d.ts +2 -1
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +2 -1
  14. package/dist/index.js.map +1 -1
  15. package/dist/wgpuBitmapText.d.ts.map +1 -1
  16. package/dist/wgpuBitmapText.js +20 -16
  17. package/dist/wgpuBitmapText.js.map +1 -1
  18. package/dist/wgpuCache.d.ts.map +1 -1
  19. package/dist/wgpuCache.js +19 -16
  20. package/dist/wgpuCache.js.map +1 -1
  21. package/dist/wgpuClipContours.js +3 -3
  22. package/dist/wgpuClipContours.js.map +1 -1
  23. package/dist/wgpuClipRectangle.js +3 -3
  24. package/dist/wgpuClipRectangle.js.map +1 -1
  25. package/dist/wgpuColorAdjustmentMaterialFeature.d.ts.map +1 -1
  26. package/dist/wgpuColorAdjustmentMaterialFeature.js +156 -67
  27. package/dist/wgpuColorAdjustmentMaterialFeature.js.map +1 -1
  28. package/dist/wgpuMeshShapeRenderer.d.ts +4 -0
  29. package/dist/wgpuMeshShapeRenderer.d.ts.map +1 -0
  30. package/dist/wgpuMeshShapeRenderer.js +92 -0
  31. package/dist/wgpuMeshShapeRenderer.js.map +1 -0
  32. package/dist/wgpuNode2D.js +2 -2
  33. package/dist/wgpuNode2D.js.map +1 -1
  34. package/dist/wgpuParticleEmitter2D.d.ts.map +1 -1
  35. package/dist/wgpuParticleEmitter2D.js +26 -10
  36. package/dist/wgpuParticleEmitter2D.js.map +1 -1
  37. package/dist/wgpuQuadBatch.d.ts +1 -1
  38. package/dist/wgpuQuadBatch.d.ts.map +1 -1
  39. package/dist/wgpuQuadBatch.js +18 -13
  40. package/dist/wgpuQuadBatch.js.map +1 -1
  41. package/dist/wgpuQuadBatchWriter.d.ts +12 -0
  42. package/dist/wgpuQuadBatchWriter.d.ts.map +1 -0
  43. package/dist/{wgpuSpriteBatch.js → wgpuQuadBatchWriter.js} +97 -72
  44. package/dist/wgpuQuadBatchWriter.js.map +1 -0
  45. package/dist/wgpuRasterShapeRenderer.d.ts +4 -0
  46. package/dist/wgpuRasterShapeRenderer.d.ts.map +1 -0
  47. package/dist/wgpuRasterShapeRenderer.js +110 -0
  48. package/dist/wgpuRasterShapeRenderer.js.map +1 -0
  49. package/dist/wgpuRichText.d.ts.map +1 -1
  50. package/dist/wgpuRichText.js +7 -4
  51. package/dist/wgpuRichText.js.map +1 -1
  52. package/dist/wgpuScale9Shape.d.ts +1 -3
  53. package/dist/wgpuScale9Shape.d.ts.map +1 -1
  54. package/dist/wgpuScale9Shape.js +36 -33
  55. package/dist/wgpuScale9Shape.js.map +1 -1
  56. package/dist/wgpuShape.d.ts +2 -1
  57. package/dist/wgpuShape.d.ts.map +1 -1
  58. package/dist/wgpuShape.js +19 -153
  59. package/dist/wgpuShape.js.map +1 -1
  60. package/dist/wgpuShapeData.d.ts +6 -0
  61. package/dist/wgpuShapeData.d.ts.map +1 -0
  62. package/dist/wgpuShapeData.js +81 -0
  63. package/dist/wgpuShapeData.js.map +1 -0
  64. package/dist/wgpuShapeMesh.d.ts +2 -1
  65. package/dist/wgpuShapeMesh.d.ts.map +1 -1
  66. package/dist/wgpuShapeMesh.js +74 -62
  67. package/dist/wgpuShapeMesh.js.map +1 -1
  68. package/dist/wgpuShapeRasterizer.d.ts +4 -0
  69. package/dist/wgpuShapeRasterizer.d.ts.map +1 -0
  70. package/dist/wgpuShapeRasterizer.js +11 -0
  71. package/dist/wgpuShapeRasterizer.js.map +1 -0
  72. package/dist/wgpuSprite.d.ts +3 -2
  73. package/dist/wgpuSprite.d.ts.map +1 -1
  74. package/dist/wgpuSprite.js +67 -25
  75. package/dist/wgpuSprite.js.map +1 -1
  76. package/dist/wgpuStandardMaterial.d.ts +1 -1
  77. package/dist/wgpuStandardMaterial.js +3 -3
  78. package/dist/wgpuStandardMaterial.js.map +1 -1
  79. package/dist/wgpuTextLabel.d.ts.map +1 -1
  80. package/dist/wgpuTextLabel.js +15 -12
  81. package/dist/wgpuTextLabel.js.map +1 -1
  82. package/dist/wgpuTilemap.d.ts.map +1 -1
  83. package/dist/wgpuTilemap.js +19 -18
  84. package/dist/wgpuTilemap.js.map +1 -1
  85. package/package.json +22 -18
  86. package/src/enableWgpuColorAdjustmentGuards.test.ts +4 -4
  87. package/src/enableWgpuStrokePathTessellation.test.ts +23 -0
  88. package/src/wgpuBitmapText.test.ts +2 -2
  89. package/src/wgpuCache.test.ts +14 -11
  90. package/src/wgpuColorAdjustmentMaterialFeature.test.ts +52 -46
  91. package/src/wgpuMeshShapeRenderer.test.ts +167 -0
  92. package/src/wgpuParticleEmitter2D.test.ts +16 -7
  93. package/src/wgpuQuadBatch.test.ts +3 -3
  94. package/src/{wgpuSpriteBatch.test.ts → wgpuQuadBatchWriter.test.ts} +79 -70
  95. package/src/wgpuRasterShapeRenderer.test.ts +156 -0
  96. package/src/wgpuScale9Shape.test.ts +0 -13
  97. package/src/wgpuShape.test.ts +169 -15
  98. package/src/wgpuShapeData.test.ts +97 -0
  99. package/src/wgpuShapeMesh.test.ts +170 -15
  100. package/src/wgpuShapeRasterizer.test.ts +36 -0
  101. package/src/wgpuSprite.test.ts +45 -10
  102. package/src/wgpuStandardMaterial.test.ts +3 -3
  103. package/src/wgpuTextLabel.test.ts +7 -7
  104. package/src/wgpuTilemap.test.ts +4 -4
  105. package/src/wgpuVelocity.test.ts +3 -3
  106. package/dist/wgpuBitmap.d.ts +0 -4
  107. package/dist/wgpuBitmap.d.ts.map +0 -1
  108. package/dist/wgpuBitmap.js +0 -84
  109. package/dist/wgpuBitmap.js.map +0 -1
  110. package/dist/wgpuRenderTargetNode2D.d.ts +0 -11
  111. package/dist/wgpuRenderTargetNode2D.d.ts.map +0 -1
  112. package/dist/wgpuRenderTargetNode2D.js +0 -100
  113. package/dist/wgpuRenderTargetNode2D.js.map +0 -1
  114. package/dist/wgpuSpriteBatch.d.ts +0 -12
  115. package/dist/wgpuSpriteBatch.d.ts.map +0 -1
  116. package/dist/wgpuSpriteBatch.js.map +0 -1
  117. package/dist/wgpuSpriteRenderer.d.ts +0 -3
  118. package/dist/wgpuSpriteRenderer.d.ts.map +0 -1
  119. package/dist/wgpuSpriteRenderer.js +0 -55
  120. package/dist/wgpuSpriteRenderer.js.map +0 -1
  121. package/dist/wgpuVideo.d.ts +0 -6
  122. package/dist/wgpuVideo.d.ts.map +0 -1
  123. package/dist/wgpuVideo.js +0 -63
  124. package/dist/wgpuVideo.js.map +0 -1
  125. package/src/wgpuBitmap.test.ts +0 -40
  126. package/src/wgpuRenderTargetNode2D.test.ts +0 -267
  127. package/src/wgpuSpriteRenderer.test.ts +0 -63
  128. package/src/wgpuVideo.test.ts +0 -59
@@ -1,23 +1,27 @@
1
- import { getWgpuRenderStateRuntime } from '@flighthq/render-wgpu/contract';
2
- import { getWgpuQuadBatchPreludeWGSL } from './wgpuSpriteBatch';
3
- // Enables the opt-in inline color-adjustment fold on a WebGPU render state: the fused-color-matrix
1
+ import { getWgpuBlendState, getWgpuRenderStateRuntime } from '@flighthq/render-wgpu/contract';
2
+ import { enableColorAdjustments } from '@flighthq/render/contract';
3
+ import { getWgpuQuadBatchPreludeWGSL } from './wgpuQuadBatchWriter';
4
+ import { drawWgpuShapeMeshBatch } from './wgpuShapeMesh';
5
+ // Enables the opt-in color-adjustment accumulator and inline fold on a WebGPU render state: the fused-color-matrix
4
6
  // scene2d the sprite/quad batch draws through so a color adjustment (and, later, other pointwise
5
7
  // adjustments) folds into the batch as per-instance storage data at @group(3) — replicated across the
6
8
  // batch for a whole-batch tint, or varied per instance — without ever splitting the batch. Until a
7
- // state calls this, its batch renderer carries none of this module's WGSL (it tree-shakes out) and
8
- // recordWgpuSpriteBatchColorScaleBias silently skips every tint. Idempotent; safe to call per state.
9
+ // state calls this, its render proxies stay unadjusted and the batch renderer carries none of this module's WGSL
10
+ // (both tree-shake out) and
11
+ // recordWgpuQuadBatchColorScaleBias silently skips every tint. Idempotent; safe to call per state.
9
12
  export function registerWgpuColorAdjustmentMaterialFeature(state) {
13
+ enableColorAdjustments(state);
10
14
  const runtime = getWgpuRenderStateRuntime(state);
11
15
  runtime.wgpuColorAdjustmentMaterialFeature = wgpuColorAdjustmentMaterialFeature;
12
- if (runtime.spriteBatchColorScaleBiasMode === undefined)
13
- runtime.spriteBatchColorScaleBiasMode = CT_MODE_NONE;
16
+ if (runtime.quadBatchWriterColorScaleBiasMode === undefined)
17
+ runtime.quadBatchWriterColorScaleBiasMode = CT_MODE_NONE;
14
18
  }
15
19
  // Per-instance color-adjustment data (8 floats = 4 scale + 4 bias). Wgpu carries every tint
16
20
  // through the per-instance storage buffer, so a whole-batch (uniform) tint is the same value on each
17
21
  // instance — there is no separate hardware-uniform path.
18
22
  const COLOR_SCALE_BIAS_FLOATS = 8;
19
23
  const COLOR_MATRIX_FLOATS = 20;
20
- // Color-adjustment fold modes for the active sprite batch. NONE keeps the base module; UNIFORM defers
24
+ // Color-adjustment fold modes for the active quad-batch writer. NONE keeps the base module; UNIFORM defers
21
25
  // per-instance fill while one tint covers the whole batch; PER_INSTANCE packs a tint per instance.
22
26
  const CT_MODE_NONE = 0;
23
27
  const CT_MODE_UNIFORM = 1;
@@ -47,7 +51,7 @@ fn applyFlightColorMatrix(
47
51
  // Folds instance `instanceIndex`'s effective color adjustment into the active batch. See the fold-mode
48
52
  // constants for the promotion rules. `colorScaleBias` is null for an untinted instance.
49
53
  function recordWgpuColorAdjustment(runtime, colorScaleBias, instanceIndex) {
50
- const mode = runtime.spriteBatchColorScaleBiasMode ?? CT_MODE_NONE;
54
+ const mode = runtime.quadBatchWriterColorScaleBiasMode ?? CT_MODE_NONE;
51
55
  const tint = colorScaleBias ?? null;
52
56
  if (mode === CT_MODE_MATRIX) {
53
57
  writeWgpuColorMatrixInstance(runtime, tint, instanceIndex);
@@ -57,42 +61,42 @@ function recordWgpuColorAdjustment(runtime, colorScaleBias, instanceIndex) {
57
61
  if (tint === null)
58
62
  return;
59
63
  if (instanceIndex === 0) {
60
- runtime.spriteBatchColorScaleBiasMode = CT_MODE_UNIFORM;
61
- runtime.spriteBatchUniformColorScaleBias = tint;
64
+ runtime.quadBatchWriterColorScaleBiasMode = CT_MODE_UNIFORM;
65
+ runtime.quadBatchWriterUniformColorScaleBias = tint;
62
66
  return;
63
67
  }
64
68
  if (isColorMatrixData(tint)) {
65
- promoteWgpuSpriteBatchColorScaleBiasToMatrix(runtime, instanceIndex, null);
69
+ promoteWgpuQuadBatchWriterColorScaleBiasToMatrix(runtime, instanceIndex, null);
66
70
  writeWgpuColorMatrixInstance(runtime, tint, instanceIndex);
67
71
  return;
68
72
  }
69
73
  const packedTint = getPackedTint(tint);
70
74
  if (packedTint !== null) {
71
- promoteWgpuSpriteBatchColorScaleBiasToPackedTint(runtime, instanceIndex, null);
75
+ promoteWgpuQuadBatchWriterColorScaleBiasToPackedTint(runtime, instanceIndex, null);
72
76
  writeWgpuPackedTintInstance(runtime, packedTint, instanceIndex);
73
77
  }
74
78
  else {
75
- promoteWgpuSpriteBatchColorScaleBiasToPerInstance(runtime, instanceIndex, null);
79
+ promoteWgpuQuadBatchWriterColorScaleBiasToPerInstance(runtime, instanceIndex, null);
76
80
  writeWgpuColorScaleBiasInstance(runtime, tint, instanceIndex);
77
81
  }
78
82
  return;
79
83
  }
80
84
  if (mode === CT_MODE_UNIFORM) {
81
- const uniform = runtime.spriteBatchUniformColorScaleBias ?? null;
85
+ const uniform = runtime.quadBatchWriterUniformColorScaleBias ?? null;
82
86
  if (equalsRecordedColorScaleBias(tint, uniform))
83
87
  return;
84
88
  if (isColorMatrixData(tint) || (uniform !== null && isColorMatrixData(uniform))) {
85
- promoteWgpuSpriteBatchColorScaleBiasToMatrix(runtime, instanceIndex, uniform);
89
+ promoteWgpuQuadBatchWriterColorScaleBiasToMatrix(runtime, instanceIndex, uniform);
86
90
  writeWgpuColorMatrixInstance(runtime, tint, instanceIndex);
87
91
  return;
88
92
  }
89
93
  const packedTint = getPackedTint(tint);
90
94
  if (getPackedTint(uniform) !== null && packedTint !== null) {
91
- promoteWgpuSpriteBatchColorScaleBiasToPackedTint(runtime, instanceIndex, uniform);
95
+ promoteWgpuQuadBatchWriterColorScaleBiasToPackedTint(runtime, instanceIndex, uniform);
92
96
  writeWgpuPackedTintInstance(runtime, packedTint, instanceIndex);
93
97
  }
94
98
  else {
95
- promoteWgpuSpriteBatchColorScaleBiasToPerInstance(runtime, instanceIndex, uniform);
99
+ promoteWgpuQuadBatchWriterColorScaleBiasToPerInstance(runtime, instanceIndex, uniform);
96
100
  writeWgpuColorScaleBiasInstance(runtime, tint, instanceIndex);
97
101
  }
98
102
  return;
@@ -122,52 +126,52 @@ function recordWgpuColorAdjustment(runtime, colorScaleBias, instanceIndex) {
122
126
  }
123
127
  // Resolves the active batch's folded realization: replicates a whole-batch uniform tint across the
124
128
  // batch, then returns the per-instance storage data + the folded shader module. Returns null when the
125
- // batch carried no tint, so flushWgpuSpriteBatch runs the lean material path. Resets the fold mode for
129
+ // batch carried no tint, so flushWgpuQuadBatchWriter runs the lean material path. Resets the fold mode for
126
130
  // the next batch.
127
131
  function resolveWgpuColorAdjustmentFlush(state, count) {
128
132
  const runtime = getWgpuRenderStateRuntime(state);
129
- const ctMode = runtime.spriteBatchColorScaleBiasMode ?? CT_MODE_NONE;
133
+ const ctMode = runtime.quadBatchWriterColorScaleBiasMode ?? CT_MODE_NONE;
130
134
  if (ctMode === CT_MODE_NONE)
131
135
  return null;
132
136
  if (ctMode === CT_MODE_UNIFORM) {
133
- const uniform = runtime.spriteBatchUniformColorScaleBias;
137
+ const uniform = runtime.quadBatchWriterUniformColorScaleBias;
134
138
  if (isColorMatrixData(uniform)) {
135
- runtime.spriteBatchColorScaleBiasMode = CT_MODE_MATRIX;
136
- fillWgpuSpriteBatchUniformColorMatrix(runtime, uniform, count);
139
+ runtime.quadBatchWriterColorScaleBiasMode = CT_MODE_MATRIX;
140
+ fillWgpuQuadBatchWriterUniformColorMatrix(runtime, uniform, count);
137
141
  }
138
142
  else {
139
143
  const packedTint = getPackedTint(uniform);
140
144
  if (packedTint !== null) {
141
- runtime.spriteBatchColorScaleBiasMode = CT_MODE_PACKED_TINT;
142
- fillWgpuSpriteBatchUniformPackedTint(runtime, packedTint, count);
145
+ runtime.quadBatchWriterColorScaleBiasMode = CT_MODE_PACKED_TINT;
146
+ fillWgpuQuadBatchWriterUniformPackedTint(runtime, packedTint, count);
143
147
  }
144
148
  else {
145
- runtime.spriteBatchColorScaleBiasMode = CT_MODE_PER_INSTANCE;
146
- fillWgpuSpriteBatchUniformColorScaleBias(runtime, uniform, count);
149
+ runtime.quadBatchWriterColorScaleBiasMode = CT_MODE_PER_INSTANCE;
150
+ fillWgpuQuadBatchWriterUniformColorScaleBias(runtime, uniform, count);
147
151
  }
148
152
  }
149
153
  }
150
- const resolvedMode = runtime.spriteBatchColorScaleBiasMode;
151
- runtime.spriteBatchColorScaleBiasMode = CT_MODE_NONE;
152
- runtime.spriteBatchUniformColorScaleBias = null;
154
+ const resolvedMode = runtime.quadBatchWriterColorScaleBiasMode;
155
+ runtime.quadBatchWriterColorScaleBiasMode = CT_MODE_NONE;
156
+ runtime.quadBatchWriterUniformColorScaleBias = null;
153
157
  if (resolvedMode === CT_MODE_PACKED_TINT) {
154
158
  return {
155
- data: runtime.spriteBatchColorTintData,
159
+ data: runtime.quadBatchWriterColorTintData,
156
160
  floats: 1,
157
- module: getWgpuSpriteBatchPackedTintModule(state),
161
+ module: getWgpuQuadBatchWriterPackedTintModule(state),
158
162
  };
159
163
  }
160
164
  if (resolvedMode === CT_MODE_MATRIX) {
161
165
  return {
162
- data: runtime.spriteBatchColorMatrixData,
166
+ data: runtime.quadBatchWriterColorMatrixData,
163
167
  floats: COLOR_MATRIX_FLOATS,
164
- module: getWgpuSpriteBatchColorMatrixModule(state),
168
+ module: getWgpuQuadBatchWriterColorMatrixModule(state),
165
169
  };
166
170
  }
167
171
  return {
168
- data: runtime.spriteBatchColorScaleBiasData,
172
+ data: runtime.quadBatchWriterColorScaleBiasData,
169
173
  floats: COLOR_SCALE_BIAS_FLOATS,
170
- module: getWgpuSpriteBatchColorScaleBiasModule(state),
174
+ module: getWgpuQuadBatchWriterColorScaleBiasModule(state),
171
175
  };
172
176
  }
173
177
  // Value equality for the whole-batch uniform check: reference-equal short-circuits (every glyph of a
@@ -196,35 +200,35 @@ function equalsRecordedColorScaleBias(a, b) {
196
200
  // Grows the color-adjustment data array to hold `floatsNeeded` floats, preserving already-recorded
197
201
  // per-instance data.
198
202
  function ensureWgpuColorScaleBiasCapacity(runtime, floatsNeeded) {
199
- const existing = runtime.spriteBatchColorScaleBiasData;
203
+ const existing = runtime.quadBatchWriterColorScaleBiasData;
200
204
  if (existing !== undefined && floatsNeeded <= existing.length)
201
205
  return;
202
206
  const newSize = Math.max(floatsNeeded, (existing?.length ?? 0) * 2, COLOR_SCALE_BIAS_FLOATS * 256);
203
207
  const grown = new Float32Array(newSize);
204
208
  if (existing !== undefined)
205
209
  grown.set(existing);
206
- runtime.spriteBatchColorScaleBiasData = grown;
210
+ runtime.quadBatchWriterColorScaleBiasData = grown;
207
211
  }
208
212
  // Replicates a whole-batch uniform tint across `count` instances at flush time — Wgpu has no separate
209
213
  // hardware-uniform tint path, so a uniform is the same value on every instance of the storage buffer.
210
- function fillWgpuSpriteBatchUniformColorScaleBias(runtime, colorScaleBias, count) {
214
+ function fillWgpuQuadBatchWriterUniformColorScaleBias(runtime, colorScaleBias, count) {
211
215
  ensureWgpuColorScaleBiasCapacity(runtime, count * COLOR_SCALE_BIAS_FLOATS);
212
216
  for (let i = 0; i < count; i++)
213
217
  writeWgpuColorScaleBiasInstance(runtime, colorScaleBias, i);
214
218
  }
215
- function fillWgpuSpriteBatchUniformPackedTint(runtime, rgba, count) {
219
+ function fillWgpuQuadBatchWriterUniformPackedTint(runtime, rgba, count) {
216
220
  for (let i = 0; i < count; i++)
217
221
  writeWgpuPackedTintInstance(runtime, rgba, i);
218
222
  }
219
- function fillWgpuSpriteBatchUniformColorMatrix(runtime, matrix, count) {
223
+ function fillWgpuQuadBatchWriterUniformColorMatrix(runtime, matrix, count) {
220
224
  for (let i = 0; i < count; i++)
221
225
  writeWgpuColorMatrixInstance(runtime, matrix, i);
222
226
  }
223
- // The folded per-instance color-adjustment shader module (cached per device): the base sprite-batch
227
+ // The folded per-instance color-adjustment shader module (cached per device): the base quad-batch writer
224
228
  // prelude plus a scene2d that reads 8 per-instance floats from the material storage buffer (@group(3))
225
229
  // and applies `color * mult + offset` in unpremultiplied space. Reused verbatim from the former
226
230
  // color-adjustment material so premultiplied-alpha handling is unchanged.
227
- function getWgpuSpriteBatchColorScaleBiasModule(state) {
231
+ function getWgpuQuadBatchWriterColorScaleBiasModule(state) {
228
232
  const cached = _colorScaleBiasModules.get(state.device);
229
233
  if (cached !== undefined)
230
234
  return cached;
@@ -234,7 +238,7 @@ function getWgpuSpriteBatchColorScaleBiasModule(state) {
234
238
  _colorScaleBiasModules.set(state.device, module);
235
239
  return module;
236
240
  }
237
- function getWgpuSpriteBatchPackedTintModule(state) {
241
+ function getWgpuQuadBatchWriterPackedTintModule(state) {
238
242
  const cached = _packedTintModules.get(state.device);
239
243
  if (cached !== undefined)
240
244
  return cached;
@@ -244,7 +248,7 @@ function getWgpuSpriteBatchPackedTintModule(state) {
244
248
  _packedTintModules.set(state.device, module);
245
249
  return module;
246
250
  }
247
- function getWgpuSpriteBatchColorMatrixModule(state) {
251
+ function getWgpuQuadBatchWriterColorMatrixModule(state) {
248
252
  const cached = _colorMatrixModules.get(state.device);
249
253
  if (cached !== undefined)
250
254
  return cached;
@@ -256,36 +260,36 @@ function getWgpuSpriteBatchColorMatrixModule(state) {
256
260
  }
257
261
  // Switches the batch to per-instance mode and back-fills every already-recorded instance
258
262
  // [0, instanceCount) with `fill` (a prior uniform value, or null → identity).
259
- function promoteWgpuSpriteBatchColorScaleBiasToPerInstance(runtime, instanceCount, fill) {
260
- runtime.spriteBatchColorScaleBiasMode = CT_MODE_PER_INSTANCE;
263
+ function promoteWgpuQuadBatchWriterColorScaleBiasToPerInstance(runtime, instanceCount, fill) {
264
+ runtime.quadBatchWriterColorScaleBiasMode = CT_MODE_PER_INSTANCE;
261
265
  for (let i = 0; i < instanceCount; i++)
262
266
  writeWgpuColorScaleBiasInstance(runtime, fill, i);
263
267
  }
264
- function promoteWgpuSpriteBatchColorScaleBiasToPackedTint(runtime, instanceCount, fill) {
265
- runtime.spriteBatchColorScaleBiasMode = CT_MODE_PACKED_TINT;
268
+ function promoteWgpuQuadBatchWriterColorScaleBiasToPackedTint(runtime, instanceCount, fill) {
269
+ runtime.quadBatchWriterColorScaleBiasMode = CT_MODE_PACKED_TINT;
266
270
  for (let i = 0; i < instanceCount; i++)
267
271
  writeWgpuPackedTintInstance(runtime, getPackedTint(fill), i);
268
272
  }
269
273
  function promoteWgpuPackedTintToColorScaleBias(runtime, instanceCount) {
270
- runtime.spriteBatchColorScaleBiasMode = CT_MODE_PER_INSTANCE;
271
- const packed = runtime.spriteBatchColorTintData;
274
+ runtime.quadBatchWriterColorScaleBiasMode = CT_MODE_PER_INSTANCE;
275
+ const packed = runtime.quadBatchWriterColorTintData;
272
276
  for (let i = 0; i < instanceCount; i++)
273
277
  writeWgpuNativePackedTintAsColorScaleBias(runtime, packed[i], i);
274
278
  }
275
- function promoteWgpuSpriteBatchColorScaleBiasToMatrix(runtime, instanceCount, fill) {
276
- runtime.spriteBatchColorScaleBiasMode = CT_MODE_MATRIX;
279
+ function promoteWgpuQuadBatchWriterColorScaleBiasToMatrix(runtime, instanceCount, fill) {
280
+ runtime.quadBatchWriterColorScaleBiasMode = CT_MODE_MATRIX;
277
281
  for (let i = 0; i < instanceCount; i++)
278
282
  writeWgpuColorMatrixInstance(runtime, fill, i);
279
283
  }
280
284
  function promoteWgpuPackedTintToColorMatrix(runtime, instanceCount) {
281
- const packed = runtime.spriteBatchColorTintData;
282
- runtime.spriteBatchColorScaleBiasMode = CT_MODE_MATRIX;
285
+ const packed = runtime.quadBatchWriterColorTintData;
286
+ runtime.quadBatchWriterColorScaleBiasMode = CT_MODE_MATRIX;
283
287
  for (let i = 0; i < instanceCount; i++)
284
288
  writeWgpuNativePackedTintAsColorMatrix(runtime, packed[i], i);
285
289
  }
286
290
  function promoteWgpuColorScaleBiasToMatrix(runtime, instanceCount) {
287
- const affine = runtime.spriteBatchColorScaleBiasData;
288
- runtime.spriteBatchColorScaleBiasMode = CT_MODE_MATRIX;
291
+ const affine = runtime.quadBatchWriterColorScaleBiasData;
292
+ runtime.quadBatchWriterColorScaleBiasMode = CT_MODE_MATRIX;
289
293
  for (let i = 0; i < instanceCount; i++) {
290
294
  writeWgpuAffineValuesAsColorMatrix(runtime, affine, i * COLOR_SCALE_BIAS_FLOATS, i);
291
295
  }
@@ -295,7 +299,7 @@ function promoteWgpuColorScaleBiasToMatrix(runtime, instanceCount) {
295
299
  function writeWgpuColorScaleBiasInstance(runtime, colorScaleBias, instanceIndex) {
296
300
  const offset = instanceIndex * COLOR_SCALE_BIAS_FLOATS;
297
301
  ensureWgpuColorScaleBiasCapacity(runtime, offset + COLOR_SCALE_BIAS_FLOATS);
298
- const out = runtime.spriteBatchColorScaleBiasData;
302
+ const out = runtime.quadBatchWriterColorScaleBiasData;
299
303
  if (colorScaleBias !== null) {
300
304
  for (let channel = 0; channel < 4; channel++) {
301
305
  out[offset + channel] = getColorScale(colorScaleBias, channel);
@@ -315,15 +319,15 @@ function writeWgpuColorScaleBiasInstance(runtime, colorScaleBias, instanceIndex)
315
319
  }
316
320
  function writeWgpuColorMatrixInstance(runtime, adjustment, instanceIndex) {
317
321
  const offset = instanceIndex * COLOR_MATRIX_FLOATS;
318
- let out = runtime.spriteBatchColorMatrixData;
322
+ let out = runtime.quadBatchWriterColorMatrixData;
319
323
  if (out === undefined) {
320
324
  out = new Float32Array(COLOR_MATRIX_FLOATS * 256);
321
- runtime.spriteBatchColorMatrixData = out;
325
+ runtime.quadBatchWriterColorMatrixData = out;
322
326
  }
323
327
  else if (offset + COLOR_MATRIX_FLOATS > out.length) {
324
328
  const grown = new Float32Array(Math.max(offset + COLOR_MATRIX_FLOATS, out.length * 2));
325
329
  grown.set(out);
326
- runtime.spriteBatchColorMatrixData = grown;
330
+ runtime.quadBatchWriterColorMatrixData = grown;
327
331
  out = grown;
328
332
  }
329
333
  if (adjustment === null) {
@@ -354,7 +358,7 @@ function writeIdentityColorMatrix(out, offset) {
354
358
  }
355
359
  function writeWgpuNativePackedTintAsColorMatrix(runtime, nativeWord, instanceIndex) {
356
360
  writeWgpuColorMatrixInstance(runtime, null, instanceIndex);
357
- const out = runtime.spriteBatchColorMatrixData;
361
+ const out = runtime.quadBatchWriterColorMatrixData;
358
362
  const offset = instanceIndex * COLOR_MATRIX_FLOATS;
359
363
  out[offset] = (nativeWord & 0xff) / 255;
360
364
  out[offset + 5] = ((nativeWord >>> 8) & 0xff) / 255;
@@ -363,7 +367,7 @@ function writeWgpuNativePackedTintAsColorMatrix(runtime, nativeWord, instanceInd
363
367
  }
364
368
  function writeWgpuAffineValuesAsColorMatrix(runtime, affine, affineOffset, instanceIndex) {
365
369
  writeWgpuColorMatrixInstance(runtime, null, instanceIndex);
366
- const out = runtime.spriteBatchColorMatrixData;
370
+ const out = runtime.quadBatchWriterColorMatrixData;
367
371
  const offset = instanceIndex * COLOR_MATRIX_FLOATS;
368
372
  for (let channel = 0; channel < 4; channel++) {
369
373
  out[offset + channel * 4 + channel] = affine[affineOffset + channel];
@@ -371,15 +375,15 @@ function writeWgpuAffineValuesAsColorMatrix(runtime, affine, affineOffset, insta
371
375
  }
372
376
  }
373
377
  function writeWgpuPackedTintInstance(runtime, rgba, instanceIndex) {
374
- let data = runtime.spriteBatchColorTintData;
378
+ let data = runtime.quadBatchWriterColorTintData;
375
379
  if (data === undefined) {
376
380
  data = new Uint32Array(256);
377
- runtime.spriteBatchColorTintData = data;
381
+ runtime.quadBatchWriterColorTintData = data;
378
382
  }
379
383
  else if (instanceIndex >= data.length) {
380
384
  const grown = new Uint32Array(Math.max(instanceIndex + 1, data.length * 2));
381
385
  grown.set(data);
382
- runtime.spriteBatchColorTintData = grown;
386
+ runtime.quadBatchWriterColorTintData = grown;
383
387
  data = grown;
384
388
  }
385
389
  data[instanceIndex] = rgbaToNativeByteWord(rgba);
@@ -387,7 +391,7 @@ function writeWgpuPackedTintInstance(runtime, rgba, instanceIndex) {
387
391
  function writeWgpuNativePackedTintAsColorScaleBias(runtime, nativeWord, instanceIndex) {
388
392
  const offset = instanceIndex * COLOR_SCALE_BIAS_FLOATS;
389
393
  writeWgpuColorScaleBiasInstance(runtime, null, instanceIndex);
390
- const data = runtime.spriteBatchColorScaleBiasData;
394
+ const data = runtime.quadBatchWriterColorScaleBiasData;
391
395
  data[offset] = (nativeWord & 0xff) / 255;
392
396
  data[offset + 1] = ((nativeWord >>> 8) & 0xff) / 255;
393
397
  data[offset + 2] = ((nativeWord >>> 16) & 0xff) / 255;
@@ -450,6 +454,90 @@ function getColorBias(value, channel) {
450
454
  return value.blueBias;
451
455
  return value.alphaBias;
452
456
  }
457
+ // Draws tessellated solid fills through the same opt-in scale/bias fold as quad batches. A shape has
458
+ // one resolved node adjustment, so the value is uploaded once in each per-mesh uniform rather than as
459
+ // vertex data. The source color remains premultiplied by mesh alpha × node alpha in the shared driver;
460
+ // the fragment shader preserves the established unpremultiply → adjust → repremultiply order.
461
+ function drawWgpuShapeMeshesColorScaleBias(state, renderProxy, meshes, buffers) {
462
+ const colorScaleBias = renderProxy.colorScaleBias;
463
+ const uniform = _shapeMeshColorScaleBiasUniformScratch;
464
+ uniform[16] = colorScaleBias.redScale;
465
+ uniform[17] = colorScaleBias.greenScale;
466
+ uniform[18] = colorScaleBias.blueScale;
467
+ uniform[19] = colorScaleBias.alphaScale;
468
+ uniform[20] = colorScaleBias.redBias;
469
+ uniform[21] = colorScaleBias.greenBias;
470
+ uniform[22] = colorScaleBias.blueBias;
471
+ uniform[23] = colorScaleBias.alphaBias;
472
+ drawWgpuShapeMeshBatch(state, renderProxy, meshes, buffers, ensureWgpuShapeMeshColorScaleBiasPipeline(state, renderProxy.blendMode), buffers.colorScaleBiasUniformBuffers, buffers.colorScaleBiasBindGroups, uniform);
473
+ }
474
+ function ensureWgpuShapeMeshColorScaleBiasPipeline(state, blendMode) {
475
+ let cache = _shapeMeshColorScaleBiasPipelines.get(state.device);
476
+ if (cache === undefined) {
477
+ cache = new Map();
478
+ _shapeMeshColorScaleBiasPipelines.set(state.device, cache);
479
+ }
480
+ const runtime = getWgpuRenderStateRuntime(state);
481
+ const format = runtime.currentColorFormat ?? state.format;
482
+ const key = `${format}|${blendMode ?? 'null'}`;
483
+ const existing = cache.get(key);
484
+ if (existing !== undefined)
485
+ return existing;
486
+ const device = state.device;
487
+ const module = device.createShaderModule({ code: SHAPE_MESH_COLOR_SCALE_BIAS_WGSL });
488
+ const bindGroupLayout = device.createBindGroupLayout({
489
+ entries: [{ binding: 0, visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT, buffer: { type: 'uniform' } }],
490
+ });
491
+ const layout = device.createPipelineLayout({ bindGroupLayouts: [bindGroupLayout] });
492
+ const pipeline = device.createRenderPipeline({
493
+ layout,
494
+ vertex: {
495
+ module,
496
+ entryPoint: 'vs_main',
497
+ buffers: [{ arrayStride: 8, attributes: [{ shaderLocation: 0, offset: 0, format: 'float32x2' }] }],
498
+ },
499
+ fragment: {
500
+ module,
501
+ entryPoint: 'fs_main',
502
+ targets: [{ format, blend: getWgpuBlendState(blendMode) }],
503
+ },
504
+ primitive: { topology: 'triangle-list', cullMode: 'none' },
505
+ depthStencil: {
506
+ format: 'depth24plus-stencil8',
507
+ depthWriteEnabled: false,
508
+ depthCompare: 'always',
509
+ stencilFront: { compare: 'equal', passOp: 'keep', failOp: 'keep', depthFailOp: 'keep' },
510
+ stencilBack: { compare: 'equal', passOp: 'keep', failOp: 'keep', depthFailOp: 'keep' },
511
+ stencilReadMask: 0xff,
512
+ stencilWriteMask: 0x00,
513
+ },
514
+ });
515
+ const created = { pipeline, bindGroupLayout };
516
+ cache.set(key, created);
517
+ return created;
518
+ }
519
+ const SHAPE_MESH_COLOR_SCALE_BIAS_WGSL = /* wgsl */ `
520
+ ${WGPU_COLOR_ADJUSTMENT_FRAGMENT_CHUNK}
521
+ struct ShapeMeshUniforms {
522
+ matrix : mat3x3f,
523
+ color : vec4f,
524
+ colorScale : vec4f,
525
+ colorBias : vec4f,
526
+ }
527
+ @group(0) @binding(0) var<uniform> u : ShapeMeshUniforms;
528
+ @vertex fn vs_main(@location(0) position : vec2f) -> @builtin(position) vec4f {
529
+ let p = u.matrix * vec3f(position, 1.0);
530
+ return vec4f(p.x, p.y, 0.0, 1.0);
531
+ }
532
+ @fragment fn fs_main() -> @location(0) vec4f {
533
+ if (u.color.a <= 0.0) { discard; }
534
+ var color = vec4f(u.color.rgb / u.color.a, u.color.a);
535
+ color = applyFlightColorAdjustment(color, u.colorScale, u.colorBias);
536
+ return vec4f(color.rgb * color.a, color.a);
537
+ }
538
+ `;
539
+ const _shapeMeshColorScaleBiasPipelines = new WeakMap();
540
+ const _shapeMeshColorScaleBiasUniformScratch = new Float32Array(24);
453
541
  const COLOR_SCALE_BIAS_WGSL = /* wgsl */ `
454
542
  ${WGPU_COLOR_ADJUSTMENT_FRAGMENT_CHUNK}
455
543
  @group(3) @binding(0) var<storage, read> ctData : array<f32>;
@@ -566,6 +654,7 @@ const _colorMatrixModules = new WeakMap();
566
654
  const wgpuColorAdjustmentMaterialFeature = {
567
655
  fragmentShaderChunk: WGPU_COLOR_ADJUSTMENT_FRAGMENT_CHUNK,
568
656
  matrixFragmentShaderChunk: WGPU_COLOR_MATRIX_FRAGMENT_CHUNK,
657
+ drawShapeMeshes: drawWgpuShapeMeshesColorScaleBias,
569
658
  record: recordWgpuColorAdjustment,
570
659
  resolveFlush: resolveWgpuColorAdjustmentFlush,
571
660
  };
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuColorAdjustmentMaterialFeature.js","sourceRoot":"","sources":["../src/wgpuColorAdjustmentMaterialFeature.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wgpuColorAdjustmentMaterialFeature.js","sourceRoot":"","sources":["../src/wgpuColorAdjustmentMaterialFeature.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { RenderProxy2D, Scene2DRenderer, WgpuRenderState } from '@flighthq/types/contract';
2
+ export declare function drawWgpuMeshShape(state: WgpuRenderState, renderProxy: RenderProxy2D): boolean;
3
+ export declare const defaultWgpuMeshShapeRenderer: Scene2DRenderer;
4
+ //# sourceMappingURL=wgpuMeshShapeRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuMeshShapeRenderer.d.ts","sourceRoot":"","sources":["../src/wgpuMeshShapeRenderer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EAKf,eAAe,EAEhB,MAAM,0BAA0B,CAAC;AAUlC,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,GAAG,OAAO,CA6C7F;AASD,eAAO,MAAM,4BAA4B,EAAE,eAQ1C,CAAC"}
@@ -0,0 +1,92 @@
1
+ import { getNodeLocalContentRevision } from '@flighthq/node/contract';
2
+ import { tessellatePath } from '@flighthq/path/contract';
3
+ import { getWgpuRenderStateRuntime } from '@flighthq/render-wgpu/contract';
4
+ import { getShapeFillRegions, getShapeStrokeOutlineRegions, getShapeStrokeRegions } from '@flighthq/shape/contract';
5
+ import { BatchFormat, RenderRegistry, ShapeKind } from '@flighthq/types/contract';
6
+ import { createWgpuShapeData, destroyWgpuShapeData, getWgpuShapeData } from './wgpuShapeData';
7
+ import { drawWgpuShapeMeshes } from './wgpuShapeMesh';
8
+ // Draws the shape through the GPU mesh path alone, and reports whether it did. Returns false when any
9
+ // fill or stroke has no tessellated form — a gradient, a texture fill, or a closed stroke the active
10
+ // tessellator rejects — which is the signal drawWgpuShape uses to fall through to the raster strategy.
11
+ // Mirrors scene2d-gl/glMeshShapeRenderer.
12
+ export function drawWgpuMeshShape(state, renderProxy) {
13
+ const runtime = getWgpuRenderStateRuntime(state);
14
+ if (runtime.renderPass === null)
15
+ return false;
16
+ const source = renderProxy.source;
17
+ const { commands } = source.data;
18
+ if (commands.length === 0 || renderProxy.rendererData === null)
19
+ return false;
20
+ // Compact open outlines are the default. Explicitly enabling stroke-path tessellation adds hollow
21
+ // closed rings and pathological-geometry rejection to this state only.
22
+ const strokePathTessellator = runtime.strokeTessellator;
23
+ const regions = resolveWgpuShapeMeshRegions(commands, strokePathTessellator !== null);
24
+ if (regions === null || regions.length === 0)
25
+ return false;
26
+ const meshData = getWgpuShapeData(renderProxy.rendererData);
27
+ if (meshData === null)
28
+ return false;
29
+ const version = getNodeLocalContentRevision(source);
30
+ if (meshData.meshVersion !== version) {
31
+ const meshes = [];
32
+ let supported = true;
33
+ for (let i = 0; i < regions.length; i++) {
34
+ const region = regions[i];
35
+ const mesh = strokePathTessellator !== null && isShapeStrokeRegion(region)
36
+ ? strokePathTessellator(region.path, region.style)
37
+ : tessellatePath(region.path);
38
+ if (mesh === null) {
39
+ supported = false;
40
+ break;
41
+ }
42
+ meshes.push({
43
+ vertices: new Float32Array(mesh.vertices),
44
+ indices: new Uint16Array(mesh.indices),
45
+ color: region.color,
46
+ alpha: region.alpha,
47
+ });
48
+ }
49
+ meshData.meshes = supported ? meshes : null;
50
+ meshData.meshVersion = version;
51
+ }
52
+ if (meshData.meshes === null)
53
+ return false;
54
+ drawWgpuShapeMeshes(state, renderProxy, meshData.meshes, meshData.meshBuffers);
55
+ return true;
56
+ }
57
+ // The GPU-only shape strategy: everything is tessellated, nothing is ever rasterized, and this module
58
+ // never references the canvas replay — so registering this renderer instead of defaultWgpuShapeRenderer
59
+ // leaves @flighthq/scene2d-canvas out of the bundle entirely and needs no shape commands registered.
60
+ //
61
+ // A fill with no tessellated form does not draw. That is the deliberate consequence of choosing this
62
+ // strategy rather than a defect, so it reports the same ShapeRasterizer miss the hybrid reports when no
63
+ // rasterizer is registered: the shape needs raster and this state will not do it.
64
+ export const defaultWgpuMeshShapeRenderer = {
65
+ format: BatchFormat.Quad,
66
+ createData: createWgpuShapeData,
67
+ destroyData: destroyWgpuShapeData,
68
+ submit(state, renderProxy) {
69
+ if (drawWgpuMeshShape(state, renderProxy))
70
+ return;
71
+ getWgpuRenderStateRuntime(state).registryMiss?.(RenderRegistry.ShapeRasterizer, ShapeKind);
72
+ },
73
+ };
74
+ // Resolves every solid fill and solid stroke into one fill-before-stroke source list. The default lane
75
+ // uses compact fillable open-stroke outlines; the opt-in ring lane retains styled centerlines for the
76
+ // heavier direct stroke tessellator.
77
+ function resolveWgpuShapeMeshRegions(commands, strokePathTessellatorEnabled) {
78
+ const fillRegions = getShapeFillRegions(commands);
79
+ if (fillRegions === null)
80
+ return null;
81
+ const strokeRegions = strokePathTessellatorEnabled
82
+ ? getShapeStrokeRegions(commands)
83
+ : getShapeStrokeOutlineRegions(commands);
84
+ if (strokeRegions === null)
85
+ return null;
86
+ const regions = [...fillRegions, ...strokeRegions];
87
+ return regions.length > 0 ? regions : null;
88
+ }
89
+ function isShapeStrokeRegion(region) {
90
+ return 'style' in region;
91
+ }
92
+ //# sourceMappingURL=wgpuMeshShapeRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuMeshShapeRenderer.js","sourceRoot":"","sources":["../src/wgpuMeshShapeRenderer.ts"],"names":[],"mappings":"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"}