@flighthq/displayobject-gl 0.1.0 → 0.2.1-next.410.a23f189

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 (80) hide show
  1. package/dist/enableGlColorAdjustmentGuards.d.ts +4 -0
  2. package/dist/enableGlColorAdjustmentGuards.d.ts.map +1 -0
  3. package/dist/enableGlColorAdjustmentGuards.js +21 -0
  4. package/dist/enableGlColorAdjustmentGuards.js.map +1 -0
  5. package/dist/glBitmap.d.ts.map +1 -1
  6. package/dist/glBitmap.js +17 -32
  7. package/dist/glBitmap.js.map +1 -1
  8. package/dist/glCache.d.ts.map +1 -1
  9. package/dist/glCache.js +11 -4
  10. package/dist/glCache.js.map +1 -1
  11. package/dist/glColorAdjustment.d.ts +3 -0
  12. package/dist/glColorAdjustment.d.ts.map +1 -0
  13. package/dist/glColorAdjustment.js +353 -0
  14. package/dist/glColorAdjustment.js.map +1 -0
  15. package/dist/glParticleEmitter.d.ts.map +1 -1
  16. package/dist/glParticleEmitter.js +4 -3
  17. package/dist/glParticleEmitter.js.map +1 -1
  18. package/dist/glQuadBatch.d.ts.map +1 -1
  19. package/dist/glQuadBatch.js +11 -7
  20. package/dist/glQuadBatch.js.map +1 -1
  21. package/dist/glRichText.js +3 -2
  22. package/dist/glRichText.js.map +1 -1
  23. package/dist/glShape.d.ts.map +1 -1
  24. package/dist/glShape.js +15 -11
  25. package/dist/glShape.js.map +1 -1
  26. package/dist/glShapeMesh.d.ts +10 -6
  27. package/dist/glShapeMesh.d.ts.map +1 -1
  28. package/dist/glShapeMesh.js +48 -29
  29. package/dist/glShapeMesh.js.map +1 -1
  30. package/dist/glSpriteBatch.d.ts +3 -3
  31. package/dist/glSpriteBatch.d.ts.map +1 -1
  32. package/dist/glSpriteBatch.js +43 -20
  33. package/dist/glSpriteBatch.js.map +1 -1
  34. package/dist/glSpriteRenderer.d.ts.map +1 -1
  35. package/dist/glSpriteRenderer.js +5 -3
  36. package/dist/glSpriteRenderer.js.map +1 -1
  37. package/dist/glTextInput.js +1 -1
  38. package/dist/glTextInput.js.map +1 -1
  39. package/dist/glTextLabel.d.ts.map +1 -1
  40. package/dist/glTextLabel.js +23 -12
  41. package/dist/glTextLabel.js.map +1 -1
  42. package/dist/glTilemap.d.ts.map +1 -1
  43. package/dist/glTilemap.js +11 -6
  44. package/dist/glTilemap.js.map +1 -1
  45. package/dist/glVelocity.js +5 -5
  46. package/dist/glVelocity.js.map +1 -1
  47. package/dist/glVideo.d.ts.map +1 -1
  48. package/dist/glVideo.js +34 -32
  49. package/dist/glVideo.js.map +1 -1
  50. package/dist/index.d.ts +2 -3
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +2 -3
  53. package/dist/index.js.map +1 -1
  54. package/package.json +24 -15
  55. package/src/enableGlColorAdjustmentGuards.test.ts +76 -0
  56. package/src/glBitmap.test.ts +11 -3
  57. package/src/glCache.test.ts +6 -2
  58. package/src/glColorAdjustment.test.ts +166 -0
  59. package/src/glRichText.test.ts +7 -2
  60. package/src/glShape.test.ts +2 -1
  61. package/src/glShapeMesh.test.ts +103 -3
  62. package/src/glSpriteBatch.test.ts +61 -3
  63. package/src/glTextLabel.test.ts +17 -12
  64. package/src/glVelocity.test.ts +2 -1
  65. package/src/glVideo.test.ts +47 -14
  66. package/dist/glColorTransformMaterial.d.ts +0 -4
  67. package/dist/glColorTransformMaterial.d.ts.map +0 -1
  68. package/dist/glColorTransformMaterial.js +0 -116
  69. package/dist/glColorTransformMaterial.js.map +0 -1
  70. package/dist/glMaterials.d.ts +0 -4
  71. package/dist/glMaterials.d.ts.map +0 -1
  72. package/dist/glMaterials.js +0 -97
  73. package/dist/glMaterials.js.map +0 -1
  74. package/dist/glUniformColorTransformMaterial.d.ts +0 -4
  75. package/dist/glUniformColorTransformMaterial.d.ts.map +0 -1
  76. package/dist/glUniformColorTransformMaterial.js +0 -56
  77. package/dist/glUniformColorTransformMaterial.js.map +0 -1
  78. package/src/glColorTransformMaterial.test.ts +0 -45
  79. package/src/glMaterials.test.ts +0 -91
  80. package/src/glUniformColorTransformMaterial.test.ts +0 -24
@@ -1,5 +1,6 @@
1
+ import { hasImageResourcePixels } from '@flighthq/image';
1
2
  import { noopRendererData } from '@flighthq/render';
2
- import { bindGlTexture } from '@flighthq/render-gl';
3
+ import { bindGlImageResourceTexture } from '@flighthq/render-gl';
3
4
  import { createGlProgram } from '@flighthq/render-gl';
4
5
  import { getGlRenderStateRuntime } from '@flighthq/render-gl';
5
6
  import { flushGlSpriteBatch } from './glSpriteBatch';
@@ -113,12 +114,12 @@ export function drawGlParticleEmitter(state, renderProxy) {
113
114
  const runtime = getGlRenderStateRuntime(state);
114
115
  const source = renderProxy.source;
115
116
  const { atlas, alphas, colors, ids, particleCount, transforms } = source.data;
116
- if (atlas === null || atlas.image === null || atlas.image.source === null || particleCount === 0)
117
+ if (atlas === null || atlas.image === null || !hasImageResourcePixels(atlas.image) || particleCount === 0)
117
118
  return;
118
119
  const shader = ensureParticleShader(state);
119
120
  ensureInstanceCapacity(state, particleCount);
120
121
  state.applyBlendMode?.(state, renderProxy.blendMode);
121
- bindGlTexture(state, atlas.image.source);
122
+ bindGlImageResourceTexture(state, atlas.image);
122
123
  const gl = state.gl;
123
124
  const regions = atlas.regions;
124
125
  const numRegions = regions.length;
@@ -1 +1 @@
1
- {"version":3,"file":"glParticleEmitter.js","sourceRoot":"","sources":["../src/glParticleEmitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"glParticleEmitter.js","sourceRoot":"","sources":["../src/glParticleEmitter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"glQuadBatch.d.ts","sourceRoot":"","sources":["../src/glQuadBatch.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAA2C,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAqG/F,eAAO,MAAM,0BAA0B,EAAE,cAIxC,CAAC"}
1
+ {"version":3,"file":"glQuadBatch.d.ts","sourceRoot":"","sources":["../src/glQuadBatch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAA2D,cAAc,EAAE,MAAM,iBAAiB,CAAC;AA6G/G,eAAO,MAAM,0BAA0B,EAAE,cAIxC,CAAC"}
@@ -1,8 +1,9 @@
1
+ import { hasImageResourcePixels } from '@flighthq/image';
1
2
  import { noopRendererData } from '@flighthq/render';
2
3
  import { resolveGlMaterialRenderer } from '@flighthq/render-gl';
3
4
  import { getGlRenderStateRuntime } from '@flighthq/render-gl';
4
5
  import { BatchFormat } from '@flighthq/types';
5
- import { ensureGlQuadBatchShader, packGlSpriteBatchMaterialInstance, prepareGlSpriteBatchWrite } from './glSpriteBatch';
6
+ import { ensureGlQuadBatchShader, packGlSpriteBatchMaterialInstance, prepareGlSpriteBatchWrite, recordGlSpriteBatchColorTransform, } from './glSpriteBatch';
6
7
  // Per-instance layout (13 floats = 52 bytes, world-space transforms + per-instance alpha):
7
8
  // [0-3] a, b, c, d — world-space 2D matrix
8
9
  // [4-5] tx, ty — world-space translation
@@ -15,17 +16,19 @@ function submitGlQuadBatch(state, quadBatch) {
15
16
  const source = quadBatch.source;
16
17
  const data = source.data;
17
18
  const { atlas, instanceCount, ids, transforms } = data;
18
- if (atlas === null || atlas.image === null || atlas.image.source === null || instanceCount === 0)
19
+ if (atlas === null || atlas.image === null || !hasImageResourcePixels(atlas.image) || instanceCount === 0)
19
20
  return;
20
21
  ensureGlQuadBatchShader(state);
21
22
  const material = quadBatch.material;
22
23
  const materialRenderer = resolveGlMaterialRenderer(state, material);
23
24
  if (materialRenderer === null)
24
25
  return;
25
- const perQuadMaterialData = data.materialData;
26
26
  const nodeMaterialData = quadBatch.materialData;
27
+ // Per-quad color transforms, overriding the node-level tint for the quads that carry one.
28
+ const perQuadColorTransform = data.materialData;
29
+ const nodeColorTransform = quadBatch.colorTransform;
27
30
  const startCount = runtime.spriteBatchCount;
28
- const base = prepareGlSpriteBatchWrite(state, atlas.image.source, quadBatch.blendMode, material, materialRenderer, instanceCount);
31
+ const base = prepareGlSpriteBatchWrite(state, atlas.image, quadBatch.blendMode, material, materialRenderer, instanceCount);
29
32
  const regions = atlas.regions;
30
33
  const numRegions = regions.length;
31
34
  const iw = 1 / (atlas.image.width || 1);
@@ -72,9 +75,10 @@ function submitGlQuadBatch(state, quadBatch) {
72
75
  instanceData[writeBase + 10] = (region.x + region.width) * iw;
73
76
  instanceData[writeBase + 11] = (region.y + region.height) * ih;
74
77
  instanceData[writeBase + 12] = alpha;
75
- // Per-quad value overrides the node-level default (null identity in the material).
76
- const md = perQuadMaterialData?.[i] ?? nodeMaterialData;
77
- packGlSpriteBatchMaterialInstance(state, md, startCount + drawCount);
78
+ packGlSpriteBatchMaterialInstance(state, nodeMaterialData, startCount + drawCount);
79
+ // Per-quad tint overrides the node-level tint (null → the node's, itself possibly null → untinted).
80
+ const colorTransform = perQuadColorTransform?.[i] ?? nodeColorTransform;
81
+ recordGlSpriteBatchColorTransform(state, colorTransform, startCount + drawCount);
78
82
  writeBase += INSTANCE_FLOATS;
79
83
  drawCount++;
80
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"glQuadBatch.js","sourceRoot":"","sources":["../src/glQuadBatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"glQuadBatch.js","sourceRoot":"","sources":["../src/glQuadBatch.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { computeRgbHexString } from '@flighthq/materials';
1
+ import { computeRgbHexString } from '@flighthq/color';
2
2
  import { createGlTexture, drawGlQuad, updateGlTexture, useGlProgram } from '@flighthq/render-gl';
3
3
  import { resolveGlShader } from '@flighthq/render-gl';
4
4
  import { computeTextFormatFontString } from '@flighthq/text';
@@ -125,10 +125,11 @@ function layoutRichText(source, richTextRuntime, text, formatRanges) {
125
125
  computeTextLayout(result, {
126
126
  text,
127
127
  formatRanges,
128
- width: data.wordWrap ? data.width : 10000,
128
+ width: data.width,
129
129
  height: data.height,
130
130
  measure,
131
131
  multiline: data.multiline,
132
+ verticalAlign: data.autoSize === 'none' ? data.verticalAlign : 'top',
132
133
  wordWrap: data.wordWrap,
133
134
  });
134
135
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"glRichText.js","sourceRoot":"","sources":["../src/glRichText.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAc9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,IAAI,gBAAgB,GAA6B,IAAI,CAAC;AACtD,IAAI,aAAa,GAAoC,IAAI,CAAC;AAC1D,IAAI,sBAAsB,GAA6B,IAAI,CAAC;AAQ5D,MAAM,UAAU,oBAAoB,CAAC,MAAqB,EAAE,OAAmB;IAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAA6B,CAAC;AACtD,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,qBAAqB,CAAC,KAAoB,EAAE,IAAkB;IAC5E,MAAM,EAAE,OAAO,EAAE,GAAG,IAAiC,CAAC;IACtD,IAAI,OAAO,KAAK,IAAI;QAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACxD,CAAC;AAWD,MAAM,UAAU,cAAc,CAAC,KAAoB,EAAE,WAA0B;IAC7E,mGAAmG;IACnG,uFAAuF;IACvF,wGAAwG;IACxG,MAAM,OAAO,GACX,sBAAsB,KAAK,IAAI,IAAI,kBAAkB,CAAC,WAAW,CAAC,MAAkB,CAAC,CAAC,KAAK,KAAK,IAAI;QAClG,CAAC,CAAC,sBAAsB;QACxB,CAAC,CAAC,SAAS,CAAC;IAChB,yBAAyB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,KAAoB,EACpB,WAA0B,EAC1B,OAA2B;IAE3B,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,WAAW,CAAC,MAAkB,CAAC;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAoB,CAAC;IACtE,MAAM,OAAO,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACpD,sBAAsB,CAAC,OAAO,EAAE,IAAI,EAAE,4BAA4B,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5E,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO;IAE1E,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3F,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAChE,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO;IAEvC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACpC,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC9D,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAEvC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,MAAM,CAAC,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7D,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,CAAC,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;QACrB,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACnD,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAE5B,IAAI,WAAW,CAAC,YAAY,KAAK,IAAI;QAAE,OAAO;IAC9C,MAAM,YAAY,GAAG,WAAW,CAAC,YAAyC,CAAC;IAC3E,IAAI,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;IACnC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACjC,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC;IACjC,CAAC;IACD,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,gBAAiB,CAAC,CAAC;IAEnD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAE1C,kGAAkG;IAClG,gGAAgG;IAChG,MAAM,OAAO,GAAG,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvD,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAA0B;IACnE,sBAAsB,GAAG,OAAO,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,MAAM,yBAAyB,GAA0B;IAC9D,UAAU,EAAE,oBAAoB;IAChC,WAAW,EAAE,qBAAqB;IAClC,MAAM,EAAE,cAAc;CACvB,CAAC;AAEF,SAAS,oBAAoB,CAC3B,OAAiC,EACjC,MAAgB,EAChB,MAA8C,EAC9C,MAAc,EACd,MAAc,EACd,IAAY;IAEZ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IAC1C,MAAM,aAAa,GAAG,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,MAAM,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChH,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC;IAEnC,OAAO,CAAC,IAAI,EAAE,CAAC;IACf,OAAO,CAAC,SAAS,EAAE,CAAC;IACpB,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,EAAE,CAAC;IACf,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;IACpC,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC;IAE5B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,SAAS,GAAG,gBAAgB;YAAE,SAAS;QAEjD,OAAO,CAAC,IAAI,GAAG,2BAA2B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzD,OAAO,CAAC,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/D,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC;QACxC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC;QACvD,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE9B,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;YAChC,OAAO,CAAC,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;YAChF,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;YAChE,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACzB,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACvC,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,OAAO,EAAE,CAAC;AACpB,CAAC;AAED,SAAS,cAAc,CACrB,MAAgB,EAChB,eAAgC,EAChC,IAAY,EACZ,YAAqE;IAErE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,MAAkB,EAAU,EAAE;QAC5D,MAAM,OAAO,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;QACnD,OAAO,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;IAC1C,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,mBAAmB,CAAC,eAAmC,CAAC,CAAC;IACxE,iBAAiB,CAAC,MAAM,EAAE;QACxB,IAAI;QACJ,YAAY;QACZ,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;QACzC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO;QACP,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,MAAc,EAAE,aAAqB,CAAC;IAC/E,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACpD,aAAa,GAAG,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC;IACrD,CAAC;IACD,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;IAC1C,IAAI,gBAAgB,CAAC,KAAK,KAAK,EAAE;QAAE,gBAAgB,CAAC,KAAK,GAAG,EAAE,CAAC;IAC/D,IAAI,gBAAgB,CAAC,MAAM,KAAK,EAAE;QAAE,gBAAgB,CAAC,MAAM,GAAG,EAAE,CAAC;IACjE,OAAO,aAAc,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"glRichText.js","sourceRoot":"","sources":["../src/glRichText.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"glShape.d.ts","sourceRoot":"","sources":["../src/glShape.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,qBAAqB,EACrB,aAAa,EAGb,aAAa,EAEd,MAAM,iBAAiB,CAAC;AA2DzB,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CA+ElF;AAED,eAAO,MAAM,sBAAsB,EAAE,qBAKpC,CAAC"}
1
+ {"version":3,"file":"glShape.d.ts","sourceRoot":"","sources":["../src/glShape.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,qBAAqB,EACrB,aAAa,EAKb,aAAa,EAEd,MAAM,iBAAiB,CAAC;AAoEzB,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CAiFlF;AAED,eAAO,MAAM,sBAAsB,EAAE,qBAKpC,CAAC"}
package/dist/glShape.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { renderCanvasShapeCommands } from '@flighthq/displayobject-canvas';
2
+ import { createImageResource, setImageResourceSource } from '@flighthq/image';
2
3
  import { getNodeLocalBoundsRectangle, getNodeLocalContentRevision } from '@flighthq/node';
3
4
  import { tessellatePath } from '@flighthq/path';
4
5
  import { resolveGlMaterialRenderer } from '@flighthq/render-gl';
@@ -6,7 +7,7 @@ import { getGlRenderStateRuntime } from '@flighthq/render-gl';
6
7
  import { getShapeFillRegions } from '@flighthq/shape';
7
8
  import { BatchFormat } from '@flighthq/types';
8
9
  import { drawGlShapeMeshes } from './glShapeMesh';
9
- import { ensureGlQuadBatchShader, packGlSpriteBatchMaterialInstance, prepareGlSpriteBatchWrite } from './glSpriteBatch';
10
+ import { ensureGlQuadBatchShader, packGlSpriteBatchMaterialInstance, prepareGlSpriteBatchWrite, recordGlSpriteBatchColorTransform, } from './glSpriteBatch';
10
11
  function getGlShapeData(data) {
11
12
  return data;
12
13
  }
@@ -21,6 +22,7 @@ function createGlShapeData(_state, _source) {
21
22
  return toGlShapeRendererData({
22
23
  canvas,
23
24
  ctx,
25
+ image: createImageResource(canvas),
24
26
  lastContentId: -1,
25
27
  lastW: 0,
26
28
  lastH: 0,
@@ -28,15 +30,15 @@ function createGlShapeData(_state, _source) {
28
30
  meshes: null,
29
31
  });
30
32
  }
31
- // The batch uploads this shape's canvas into the shared texture cache; free that GPU texture when
32
- // the shape is torn down so it does not leak past the canvas it was keyed on.
33
+ // The batch uploads this shape's canvas-backed resource into the shared cache; free that GPU texture when
34
+ // the shape is torn down so it does not leak past the resource it was keyed on.
33
35
  function destroyGlShapeData(state, data) {
34
36
  const runtime = getGlRenderStateRuntime(state);
35
- const { canvas } = getGlShapeData(data);
36
- const texture = runtime.textureCache.get(canvas);
37
- if (texture !== undefined) {
38
- state.gl.deleteTexture(texture);
39
- runtime.textureCache.delete(canvas);
37
+ const { image } = getGlShapeData(data);
38
+ const entry = runtime.imageResourceTextureCache.get(image);
39
+ if (entry !== undefined) {
40
+ state.gl.deleteTexture(entry.texture);
41
+ runtime.imageResourceTextureCache.delete(image);
40
42
  }
41
43
  }
42
44
  export function drawGlShape(state, renderProxy) {
@@ -87,8 +89,9 @@ export function drawGlShape(state, renderProxy) {
87
89
  ctx.translate(-bounds.x, -bounds.y);
88
90
  renderCanvasShapeCommands(ctx, commands);
89
91
  ctx.restore();
90
- // Invalidate the cached GPU texture so the batch re-uploads from the updated canvas.
91
- runtime.textureCache.delete(shapeData.canvas);
92
+ // Re-reads the canvas dimensions and bumps the resource version so the batch's version-aware cache
93
+ // re-uploads from the updated canvas.
94
+ setImageResourceSource(shapeData.image, shapeData.canvas);
92
95
  shapeData.lastContentId = version;
93
96
  shapeData.lastW = w;
94
97
  shapeData.lastH = h;
@@ -98,7 +101,7 @@ export function drawGlShape(state, renderProxy) {
98
101
  const tx = t.tx + t.a * bounds.x + t.c * bounds.y;
99
102
  const ty = t.ty + t.b * bounds.x + t.d * bounds.y;
100
103
  const startCount = runtime.spriteBatchCount;
101
- const base = prepareGlSpriteBatchWrite(state, shapeData.canvas, renderProxy.blendMode, material, materialRenderer, 1);
104
+ const base = prepareGlSpriteBatchWrite(state, shapeData.image, renderProxy.blendMode, material, materialRenderer, 1);
102
105
  const d = runtime.spriteBatchInstanceData;
103
106
  d[base] = t.a;
104
107
  d[base + 1] = t.b;
@@ -114,6 +117,7 @@ export function drawGlShape(state, renderProxy) {
114
117
  d[base + 11] = 1;
115
118
  d[base + 12] = renderProxy.alpha;
116
119
  packGlSpriteBatchMaterialInstance(state, renderProxy.materialData, startCount);
120
+ recordGlSpriteBatchColorTransform(state, renderProxy.colorTransform, startCount);
117
121
  runtime.spriteBatchCount++;
118
122
  }
119
123
  export const defaultGlShapeRenderer = {
@@ -1 +1 @@
1
- {"version":3,"file":"glShape.js","sourceRoot":"","sources":["../src/glShape.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"glShape.js","sourceRoot":"","sources":["../src/glShape.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,13 @@
1
- import type { GlRenderState, RenderProxy2D } from '@flighthq/types';
2
- export interface GlShapeMesh {
3
- vertices: Float32Array;
4
- indices: Uint16Array;
5
- color: number;
6
- alpha: number;
1
+ import type { GlRenderState, GlShapeMesh, RenderProxy2D } from '@flighthq/types';
2
+ export interface GlShapeMeshBinding {
3
+ program: WebGLProgram;
4
+ vertexBuffer: WebGLBuffer;
5
+ indexBuffer: WebGLBuffer;
6
+ positionLocation: number;
7
+ matrixLocation: WebGLUniformLocation | null;
8
+ colorLocation: WebGLUniformLocation | null;
7
9
  }
10
+ export declare function drawGlShapeMeshBatch(state: GlRenderState, renderProxy: RenderProxy2D, meshes: readonly GlShapeMesh[], binding: Readonly<GlShapeMeshBinding>, onProgramBound?: (state: GlRenderState) => void): void;
8
11
  export declare function drawGlShapeMeshes(state: GlRenderState, renderProxy: RenderProxy2D, meshes: readonly GlShapeMesh[]): void;
12
+ export declare function ensureGlShapeMeshProgram(state: GlRenderState): GlShapeMeshBinding;
9
13
  //# sourceMappingURL=glShapeMesh.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"glShapeMesh.d.ts","sourceRoot":"","sources":["../src/glShapeMesh.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAUpE,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAMD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,aAAa,EAC1B,MAAM,EAAE,SAAS,WAAW,EAAE,GAC7B,IAAI,CAmCN"}
1
+ {"version":3,"file":"glShapeMesh.d.ts","sourceRoot":"","sources":["../src/glShapeMesh.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAajF,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,YAAY,CAAC;IACtB,YAAY,EAAE,WAAW,CAAC;IAC1B,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC5C,aAAa,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAC5C;AASD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,aAAa,EAC1B,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,OAAO,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACrC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAC9C,IAAI,CAmCN;AAMD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,aAAa,EAC1B,MAAM,EAAE,SAAS,WAAW,EAAE,GAC7B,IAAI,CAQN;AAID,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,aAAa,GAAG,kBAAkB,CAgBjF"}
@@ -1,25 +1,28 @@
1
1
  import { createGlProgram } from '@flighthq/render-gl';
2
2
  import { getGlRenderStateRuntime } from '@flighthq/render-gl';
3
3
  import { flushGlSpriteBatch } from './glSpriteBatch';
4
- // Draws the shape's tessellated fill meshes. Flushes the sprite batch first (these go through a separate
5
- // program), honors the node blend mode and alpha, and is gated by any active clip stencil (GL state set
6
- // by the clip hooks is left untouched). Records the mesh program as currentProgram so the next content
7
- // draw re-binds its own program (same hazard the clip path guards against).
8
- export function drawGlShapeMeshes(state, renderProxy, meshes) {
4
+ // Draws the shape's tessellated fill meshes through `binding`. Flushes the sprite batch first (these go
5
+ // through a separate program), honors the node blend mode and alpha, and is gated by any active clip
6
+ // stencil (GL state set by the clip hooks is left untouched). Records the program as currentProgram so
7
+ // the next content draw re-binds its own program (same hazard the clip path guards against). Uploads
8
+ // premultiplied color per mesh for the standard ONE / ONE_MINUS_SRC_ALPHA blend. `onProgramBound` runs
9
+ // after the program and matrix are set but before the draw loop, so a caller can upload extra uniforms
10
+ // (the color-adjustment fold sets its tint there) without this base driver knowing about them.
11
+ export function drawGlShapeMeshBatch(state, renderProxy, meshes, binding, onProgramBound) {
9
12
  if (meshes.length === 0)
10
13
  return;
11
14
  const runtime = getGlRenderStateRuntime(state);
12
15
  flushGlSpriteBatch(state);
13
16
  const gl = state.gl;
14
- const program = ensureShapeMeshProgram(state);
15
- gl.useProgram(program.program);
16
- runtime.currentProgram = program.program;
17
+ gl.useProgram(binding.program);
18
+ runtime.currentProgram = binding.program;
17
19
  state.applyBlendMode?.(state, renderProxy.blendMode);
18
- gl.uniformMatrix3fv(program.matrixLocation, false, shapeMeshMatrix(state, renderProxy));
19
- gl.bindBuffer(gl.ARRAY_BUFFER, program.vertexBuffer);
20
- gl.enableVertexAttribArray(program.positionLocation);
21
- gl.vertexAttribPointer(program.positionLocation, 2, gl.FLOAT, false, 0, 0);
22
- gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, program.indexBuffer);
20
+ gl.uniformMatrix3fv(binding.matrixLocation, false, shapeMeshMatrix(state, renderProxy));
21
+ onProgramBound?.(state);
22
+ gl.bindBuffer(gl.ARRAY_BUFFER, binding.vertexBuffer);
23
+ gl.enableVertexAttribArray(binding.positionLocation);
24
+ gl.vertexAttribPointer(binding.positionLocation, 2, gl.FLOAT, false, 0, 0);
25
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, binding.indexBuffer);
23
26
  const nodeAlpha = renderProxy.alpha;
24
27
  for (let i = 0; i < meshes.length; i++) {
25
28
  const mesh = meshes[i];
@@ -32,28 +35,30 @@ export function drawGlShapeMeshes(state, renderProxy, meshes) {
32
35
  const r = ((mesh.color >> 16) & 0xff) / 255;
33
36
  const g = ((mesh.color >> 8) & 0xff) / 255;
34
37
  const b = (mesh.color & 0xff) / 255;
35
- gl.uniform4f(program.colorLocation, r * a, g * a, b * a, a);
38
+ gl.uniform4f(binding.colorLocation, r * a, g * a, b * a, a);
36
39
  gl.bufferData(gl.ARRAY_BUFFER, mesh.vertices, gl.STREAM_DRAW);
37
40
  gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, mesh.indices, gl.STREAM_DRAW);
38
41
  gl.drawElements(gl.TRIANGLES, mesh.indices.length, gl.UNSIGNED_SHORT, 0);
39
42
  }
40
- gl.disableVertexAttribArray(program.positionLocation);
43
+ gl.disableVertexAttribArray(binding.positionLocation);
41
44
  }
42
- const VERTEX_SOURCE = `
43
- attribute vec2 a_position;
44
- uniform mat3 u_matrix;
45
- void main() {
46
- vec3 p = u_matrix * vec3(a_position, 1.0);
47
- gl_Position = vec4(p.xy, 0.0, 1.0);
45
+ // Draws the shape's tessellated fill meshes. Delegates to the opt-in color-adjustment fold when it is
46
+ // installed AND the node carries a color transform, so solid-fill tint stays byte-for-byte with the
47
+ // quad-batch path; otherwise runs the lean flat-color program, which never references the tint shader
48
+ // (it tree-shakes out with the fold until enableGlColorAdjustment is called).
49
+ export function drawGlShapeMeshes(state, renderProxy, meshes) {
50
+ if (meshes.length === 0)
51
+ return;
52
+ const fold = getGlRenderStateRuntime(state).glColorAdjustmentFold;
53
+ if (fold != null && renderProxy.colorTransform != null) {
54
+ fold.drawShapeMeshes(state, renderProxy, meshes);
55
+ return;
56
+ }
57
+ drawGlShapeMeshBatch(state, renderProxy, meshes, ensureGlShapeMeshProgram(state));
48
58
  }
49
- `;
50
- const FRAGMENT_SOURCE = `
51
- precision mediump float;
52
- uniform vec4 u_color;
53
- void main() { gl_FragColor = u_color; }
54
- `;
55
- const shapeMeshPrograms = new WeakMap();
56
- function ensureShapeMeshProgram(state) {
59
+ // The lean flat-color mesh binding for `state`, compiled once per context. The base path and the fold's
60
+ // tinted draw (which borrows these shared vertex/index buffers) resolve it here.
61
+ export function ensureGlShapeMeshProgram(state) {
57
62
  const gl = state.gl;
58
63
  const existing = shapeMeshPrograms.get(gl);
59
64
  if (existing !== undefined)
@@ -70,6 +75,20 @@ function ensureShapeMeshProgram(state) {
70
75
  shapeMeshPrograms.set(gl, created);
71
76
  return created;
72
77
  }
78
+ const VERTEX_SOURCE = `
79
+ attribute vec2 a_position;
80
+ uniform mat3 u_matrix;
81
+ void main() {
82
+ vec3 p = u_matrix * vec3(a_position, 1.0);
83
+ gl_Position = vec4(p.xy, 0.0, 1.0);
84
+ }
85
+ `;
86
+ const FRAGMENT_SOURCE = `
87
+ precision mediump float;
88
+ uniform vec4 u_color;
89
+ void main() { gl_FragColor = u_color; }
90
+ `;
91
+ const shapeMeshPrograms = new WeakMap();
73
92
  function compileShapeMeshProgram(gl) {
74
93
  return createGlProgram(gl, VERTEX_SOURCE, FRAGMENT_SOURCE, 'Shape-mesh');
75
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"glShapeMesh.js","sourceRoot":"","sources":["../src/glShapeMesh.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"glShapeMesh.js","sourceRoot":"","sources":["../src/glShapeMesh.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
- import type { BlendMode, GlMaterialRenderer, GlRenderState, Material, MaterialData } from '@flighthq/types';
2
- import type { GlQuadBatchShader } from '@flighthq/types';
1
+ import type { BlendMode, ColorTransform, GlMaterialRenderer, GlQuadBatchShader, GlRenderState, ImageResource, Material, MaterialData } from '@flighthq/types';
3
2
  export declare const QUAD_BATCH_VS = "#version 300 es\nprecision mediump float;\n\nlayout(location = 0) in vec2 a_corner;\nlayout(location = 1) in vec2 a_matAB;\nlayout(location = 2) in vec2 a_matCD;\nlayout(location = 3) in vec2 a_matTXTY;\nlayout(location = 4) in vec2 a_size;\nlayout(location = 5) in vec4 a_uvRect;\nlayout(location = 6) in float a_alpha;\n\nuniform mat3 u_world;\n\nout vec2 v_texCoord;\nout float v_alpha;\n\nvoid main() {\n vec2 local = a_corner * a_size;\n vec2 worldPos = vec2(\n a_matAB.x * local.x + a_matCD.x * local.y + a_matTXTY.x,\n a_matAB.y * local.x + a_matCD.y * local.y + a_matTXTY.y\n );\n vec3 clip = u_world * vec3(worldPos, 1.0);\n gl_Position = vec4(clip.xy, 0.0, 1.0);\n v_texCoord = mix(a_uvRect.xy, a_uvRect.zw, a_corner);\n v_alpha = a_alpha;\n}";
4
3
  export declare function bindGlQuadBatchBaseAttributes(state: GlRenderState, locCorner: number): void;
5
4
  export declare function ensureGlQuadBatchShader(state: GlRenderState): GlQuadBatchShader;
6
5
  export declare function flushGlSpriteBatch(state: GlRenderState): void;
7
6
  export declare function packGlSpriteBatchMaterialInstance(state: GlRenderState, materialData: MaterialData | null, instanceIndex: number): void;
8
- export declare function prepareGlSpriteBatchWrite(state: GlRenderState, texture: CanvasImageSource, blendMode: BlendMode | null, material: Material | null, materialRenderer: GlMaterialRenderer, maxInstances: number): number;
7
+ export declare function prepareGlSpriteBatchWrite(state: GlRenderState, texture: Readonly<ImageResource>, blendMode: BlendMode | null, material: Material | null, materialRenderer: GlMaterialRenderer, maxInstances: number): number;
8
+ export declare function recordGlSpriteBatchColorTransform(state: GlRenderState, colorTransform: ColorTransform | null | undefined, instanceIndex: number): void;
9
9
  export declare function setGlQuadBatchWorldAndTexture(state: GlRenderState, locWorldMatrix: WebGLUniformLocation, locTexture: WebGLUniformLocation): void;
10
10
  export declare function useGlQuadBatchProgram(state: GlRenderState, program: WebGLProgram): void;
11
11
  //# sourceMappingURL=glSpriteBatch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"glSpriteBatch.d.ts","sourceRoot":"","sources":["../src/glSpriteBatch.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC5G,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAmBzD,eAAO,MAAM,aAAa,kwBA0BxB,CAAC;AAiCH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CA4B3F;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,GAAG,iBAAiB,CAc/E;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAmD7D;AAKD,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,aAAa,EACpB,YAAY,EAAE,YAAY,GAAG,IAAI,EACjC,aAAa,EAAE,MAAM,GACpB,IAAI,CAUN;AAOD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,SAAS,GAAG,IAAI,EAC3B,QAAQ,EAAE,QAAQ,GAAG,IAAI,EACzB,gBAAgB,EAAE,kBAAkB,EACpC,YAAY,EAAE,MAAM,GACnB,MAAM,CAyCR;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,aAAa,EACpB,cAAc,EAAE,oBAAoB,EACpC,UAAU,EAAE,oBAAoB,GAC/B,IAAI,CAkBN;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAMvF"}
1
+ {"version":3,"file":"glSpriteBatch.d.ts","sourceRoot":"","sources":["../src/glSpriteBatch.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,QAAQ,EACR,YAAY,EACb,MAAM,iBAAiB,CAAC;AAoBzB,eAAO,MAAM,aAAa,kwBA0BxB,CAAC;AAiCH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CA4B3F;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,GAAG,iBAAiB,CAc/E;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAwD7D;AAMD,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,aAAa,EACpB,YAAY,EAAE,YAAY,GAAG,IAAI,EACjC,aAAa,EAAE,MAAM,GACpB,IAAI,CAUN;AAOD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,SAAS,EAAE,SAAS,GAAG,IAAI,EAC3B,QAAQ,EAAE,QAAQ,GAAG,IAAI,EACzB,gBAAgB,EAAE,kBAAkB,EACpC,YAAY,EAAE,MAAM,GACnB,MAAM,CAyCR;AAOD,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,aAAa,EACpB,cAAc,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,EACjD,aAAa,EAAE,MAAM,GACpB,IAAI,CAQN;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,aAAa,EACpB,cAAc,EAAE,oBAAoB,EACpC,UAAU,EAAE,oBAAoB,GAC/B,IAAI,CAkBN;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAMvF"}
@@ -1,4 +1,4 @@
1
- import { bindGlTexture } from '@flighthq/render-gl';
1
+ import { bindGlImageResourceTexture } from '@flighthq/render-gl';
2
2
  import { createGlProgram } from '@flighthq/render-gl';
3
3
  import { getGlRenderStateRuntime } from '@flighthq/render-gl';
4
4
  // Base per-instance layout (13 floats = 52 bytes, world-space transforms + per-instance alpha):
@@ -13,8 +13,9 @@ import { getGlRenderStateRuntime } from '@flighthq/render-gl';
13
13
  // count and divisor convention.
14
14
  const SPRITE_INSTANCE_FLOATS = 13;
15
15
  const SPRITE_INSTANCE_STRIDE = SPRITE_INSTANCE_FLOATS * 4;
16
- // Highest per-instance attribute location any sprite-batch material may use. Divisors for
17
- // locations 1..this are reset after each flush so later non-instanced draws are not corrupted.
16
+ // Highest per-instance attribute location any sprite-batch material or the opt-in color-adjustment
17
+ // fold (a_ctMult/a_ctOff at 7/8) may use. Divisors for locations 1..this are reset after each flush so
18
+ // later non-instanced draws are not corrupted.
18
19
  const MAX_INSTANCE_ATTRIB_LOCATION = 8;
19
20
  export const QUAD_BATCH_VS = `#version 300 es
20
21
  precision mediump float;
@@ -139,21 +140,27 @@ export function flushGlSpriteBatch(state) {
139
140
  gl.bindBuffer(gl.ARRAY_BUFFER, runtime.spriteBatchInstanceBuffer);
140
141
  }
141
142
  gl.bufferSubData(gl.ARRAY_BUFFER, 0, runtime.spriteBatchInstanceData, 0, count * SPRITE_INSTANCE_FLOATS);
142
- if (floats > 0) {
143
- if (runtime.spriteBatchMaterialBuffer === null) {
144
- runtime.spriteBatchMaterialBuffer = gl.createBuffer();
145
- gl.bindBuffer(gl.ARRAY_BUFFER, runtime.spriteBatchMaterialBuffer);
146
- gl.bufferData(gl.ARRAY_BUFFER, runtime.spriteBatchMaterialData.byteLength, gl.DYNAMIC_DRAW);
147
- }
148
- else {
149
- gl.bindBuffer(gl.ARRAY_BUFFER, runtime.spriteBatchMaterialBuffer);
143
+ state.applyBlendMode?.(state, blendMode);
144
+ bindGlImageResourceTexture(state, texture);
145
+ // The color-adjustment fold is opt-in (enableGlColorAdjustment): when installed it selects and binds
146
+ // its program for a tinted batch, returning true; when absent, or for an untinted batch, the lean
147
+ // material path runs and no fold code is linked into this module.
148
+ const ctHandled = runtime.glColorAdjustmentFold?.flush(state, count) ?? false;
149
+ if (!ctHandled) {
150
+ if (floats > 0) {
151
+ if (runtime.spriteBatchMaterialBuffer === null) {
152
+ runtime.spriteBatchMaterialBuffer = gl.createBuffer();
153
+ gl.bindBuffer(gl.ARRAY_BUFFER, runtime.spriteBatchMaterialBuffer);
154
+ gl.bufferData(gl.ARRAY_BUFFER, runtime.spriteBatchMaterialData.byteLength, gl.DYNAMIC_DRAW);
155
+ }
156
+ else {
157
+ gl.bindBuffer(gl.ARRAY_BUFFER, runtime.spriteBatchMaterialBuffer);
158
+ }
159
+ gl.bufferSubData(gl.ARRAY_BUFFER, 0, runtime.spriteBatchMaterialData, 0, count * floats);
150
160
  }
151
- gl.bufferSubData(gl.ARRAY_BUFFER, 0, runtime.spriteBatchMaterialData, 0, count * floats);
161
+ // Resolved renderer owns program selection, uniforms, and all attribute setup (base + its own).
162
+ renderer.bind(state, material);
152
163
  }
153
- state.applyBlendMode?.(state, blendMode);
154
- bindGlTexture(state, texture);
155
- // Resolved renderer owns program selection, uniforms, and all attribute setup (base + its own).
156
- renderer.bind(state, material);
157
164
  gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, runtime.quadIndexBuffer);
158
165
  gl.drawElementsInstanced(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0, count);
159
166
  for (let loc = 1; loc <= MAX_INSTANCE_ATTRIB_LOCATION; loc++) {
@@ -162,7 +169,8 @@ export function flushGlSpriteBatch(state) {
162
169
  }
163
170
  // Writes one instance's per-instance material floats into the active material buffer at the given
164
171
  // instance index, converting the supplied per-instance materialData. No-op for uniform-only
165
- // materials (no packInstance / floats === 0).
172
+ // materials (no packInstance / floats === 0). Color transform is folded separately by
173
+ // recordGlSpriteBatchColorTransform — it is not a material.
166
174
  export function packGlSpriteBatchMaterialInstance(state, materialData, instanceIndex) {
167
175
  const runtime = getGlRenderStateRuntime(state);
168
176
  const renderer = runtime.spriteBatchMaterialRenderer;
@@ -172,9 +180,9 @@ export function packGlSpriteBatchMaterialInstance(state, materialData, instanceI
172
180
  }
173
181
  // Ensures the sprite batch can accept up to `maxInstances` more instances for the given texture,
174
182
  // blend mode, and material. Flushes the current batch when any of the three changes (material is
175
- // compared by reference) or capacity is exceeded. Returns the float index in
176
- // spriteBatchInstanceData where the caller should begin writing base instance data; the caller
177
- // increments state.spriteBatchCount and calls packGlSpriteBatchMaterialInstance per instance.
183
+ // compared by reference) or capacity is exceeded. The color transform is orthogonal — it never keys
184
+ // the batch. Returns the float index in spriteBatchInstanceData where the caller should begin writing
185
+ // base instance data; the caller increments state.spriteBatchCount and records per-instance data.
178
186
  export function prepareGlSpriteBatchWrite(state, texture, blendMode, material, materialRenderer, maxInstances) {
179
187
  const runtime = getGlRenderStateRuntime(state);
180
188
  if (texture !== runtime.spriteBatchTexture ||
@@ -212,6 +220,21 @@ export function prepareGlSpriteBatchWrite(state, texture, blendMode, material, m
212
220
  }
213
221
  return runtime.spriteBatchCount * SPRITE_INSTANCE_FLOATS;
214
222
  }
223
+ // Folds instance `instanceIndex`'s effective color transform into the active batch through the opt-in
224
+ // color-adjustment fold, without ever splitting the batch. When the capability was not enabled
225
+ // (enableGlColorAdjustment), the fold slot is null and the tint is skipped — the batch draws untinted
226
+ // (the sentinel behavior); an installed guard reports the miss. `colorTransform` is null for an
227
+ // untinted instance, which is a no-op whether or not the fold is enabled.
228
+ export function recordGlSpriteBatchColorTransform(state, colorTransform, instanceIndex) {
229
+ const runtime = getGlRenderStateRuntime(state);
230
+ const fold = runtime.glColorAdjustmentFold;
231
+ if (fold != null) {
232
+ fold.record(runtime, colorTransform, instanceIndex);
233
+ return;
234
+ }
235
+ if (colorTransform != null)
236
+ runtime.glColorAdjustmentGuard?.(state, colorTransform);
237
+ }
215
238
  export function setGlQuadBatchWorldAndTexture(state, locWorldMatrix, locTexture) {
216
239
  const runtime = getGlRenderStateRuntime(state);
217
240
  const gl = state.gl;