@flighthq/scene2d-gl 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.
- package/dist/contract.d.ts +9 -6
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +9 -6
- package/dist/contract.js.map +1 -1
- package/dist/enableGlColorAdjustmentGuards.js +2 -2
- package/dist/enableGlColorAdjustmentGuards.js.map +1 -1
- package/dist/enableGlStrokePathTessellation.d.ts +3 -0
- package/dist/enableGlStrokePathTessellation.d.ts.map +1 -0
- package/dist/enableGlStrokePathTessellation.js +8 -0
- package/dist/enableGlStrokePathTessellation.js.map +1 -0
- package/dist/explainGlScene2DCoverage.d.ts +4 -0
- package/dist/explainGlScene2DCoverage.d.ts.map +1 -0
- package/dist/explainGlScene2DCoverage.js +63 -0
- package/dist/explainGlScene2DCoverage.js.map +1 -0
- package/dist/glBitmapText.d.ts.map +1 -1
- package/dist/glBitmapText.js +20 -15
- package/dist/glBitmapText.js.map +1 -1
- package/dist/glCache.d.ts +2 -2
- package/dist/glCache.d.ts.map +1 -1
- package/dist/glCache.js +24 -92
- package/dist/glCache.js.map +1 -1
- package/dist/glClipContours.js +3 -3
- package/dist/glClipContours.js.map +1 -1
- package/dist/glClipRectangle.js +10 -8
- package/dist/glClipRectangle.js.map +1 -1
- package/dist/glColorAdjustmentMaterialFeature.d.ts.map +1 -1
- package/dist/glColorAdjustmentMaterialFeature.js +79 -76
- package/dist/glColorAdjustmentMaterialFeature.js.map +1 -1
- package/dist/glMeshShapeRenderer.d.ts +4 -0
- package/dist/glMeshShapeRenderer.d.ts.map +1 -0
- package/dist/glMeshShapeRenderer.js +89 -0
- package/dist/glMeshShapeRenderer.js.map +1 -0
- package/dist/glNode2D.js +2 -2
- package/dist/glNode2D.js.map +1 -1
- package/dist/glParticleEmitter2D.js +10 -9
- package/dist/glParticleEmitter2D.js.map +1 -1
- package/dist/glQuadBatch.d.ts.map +1 -1
- package/dist/glQuadBatch.js +18 -12
- package/dist/glQuadBatch.js.map +1 -1
- package/dist/{glSpriteBatch.d.ts → glQuadBatchWriter.d.ts} +6 -6
- package/dist/glQuadBatchWriter.d.ts.map +1 -0
- package/dist/{glSpriteBatch.js → glQuadBatchWriter.js} +84 -73
- package/dist/glQuadBatchWriter.js.map +1 -0
- package/dist/glRasterShapeRenderer.d.ts +4 -0
- package/dist/glRasterShapeRenderer.d.ts.map +1 -0
- package/dist/glRasterShapeRenderer.js +103 -0
- package/dist/glRasterShapeRenderer.js.map +1 -0
- package/dist/glRichText.js +2 -2
- package/dist/glRichText.js.map +1 -1
- package/dist/glScale9Shape.d.ts +1 -3
- package/dist/glScale9Shape.d.ts.map +1 -1
- package/dist/glScale9Shape.js +27 -29
- package/dist/glScale9Shape.js.map +1 -1
- package/dist/glShape.d.ts +2 -1
- package/dist/glShape.d.ts.map +1 -1
- package/dist/glShape.js +19 -135
- package/dist/glShape.js.map +1 -1
- package/dist/glShapeData.d.ts +7 -0
- package/dist/glShapeData.d.ts.map +1 -0
- package/dist/glShapeData.js +57 -0
- package/dist/glShapeData.js.map +1 -0
- package/dist/glShapeMesh.js +5 -5
- package/dist/glShapeMesh.js.map +1 -1
- package/dist/glShapeRasterizer.d.ts +4 -0
- package/dist/glShapeRasterizer.d.ts.map +1 -0
- package/dist/glShapeRasterizer.js +11 -0
- package/dist/glShapeRasterizer.js.map +1 -0
- package/dist/glSprite.d.ts +3 -2
- package/dist/glSprite.d.ts.map +1 -1
- package/dist/glSprite.js +64 -24
- package/dist/glSprite.js.map +1 -1
- package/dist/glStandardMaterial.d.ts +1 -1
- package/dist/glStandardMaterial.js +2 -2
- package/dist/glStandardMaterial.js.map +1 -1
- package/dist/glTestHelper.d.ts +1 -0
- package/dist/glTestHelper.d.ts.map +1 -1
- package/dist/glTestHelper.js +1 -0
- package/dist/glTestHelper.js.map +1 -1
- package/dist/glTextLabel.d.ts.map +1 -1
- package/dist/glTextLabel.js +14 -12
- package/dist/glTextLabel.js.map +1 -1
- package/dist/glTilemap.d.ts.map +1 -1
- package/dist/glTilemap.js +19 -17
- package/dist/glTilemap.js.map +1 -1
- package/dist/glVelocity.js +2 -2
- package/dist/glVelocity.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/package.json +22 -19
- package/src/enableGlColorAdjustmentGuards.test.ts +4 -4
- package/src/enableGlStrokePathTessellation.test.ts +16 -0
- package/src/explainGlScene2DCoverage.test.ts +99 -0
- package/src/glBitmapText.test.ts +18 -17
- package/src/glCache.test.ts +24 -11
- package/src/glClipContours.test.ts +57 -2
- package/src/glClipRectangle.test.ts +9 -0
- package/src/glColorAdjustmentMaterialFeature.test.ts +74 -71
- package/src/glMeshShapeRenderer.test.ts +112 -0
- package/src/glParticleEmitter2D.test.ts +38 -22
- package/src/glQuadBatch.test.ts +40 -28
- package/src/{glSpriteBatch.test.ts → glQuadBatchWriter.test.ts} +74 -53
- package/src/glRasterShapeRenderer.test.ts +109 -0
- package/src/glScale9Shape.test.ts +0 -13
- package/src/glShape.test.ts +166 -21
- package/src/glShapeData.test.ts +74 -0
- package/src/glShapeMesh.test.ts +1 -1
- package/src/glShapeRasterizer.test.ts +32 -0
- package/src/glSprite.test.ts +71 -62
- package/src/glStandardMaterial.test.ts +3 -3
- package/src/glTextLabel.test.ts +16 -16
- package/src/glTilemap.test.ts +44 -47
- package/src/glVelocity.test.ts +4 -4
- package/dist/glBitmap.d.ts +0 -4
- package/dist/glBitmap.d.ts.map +0 -1
- package/dist/glBitmap.js +0 -93
- package/dist/glBitmap.js.map +0 -1
- package/dist/glRenderTargetNode2D.d.ts +0 -11
- package/dist/glRenderTargetNode2D.d.ts.map +0 -1
- package/dist/glRenderTargetNode2D.js +0 -78
- package/dist/glRenderTargetNode2D.js.map +0 -1
- package/dist/glSpriteBatch.d.ts.map +0 -1
- package/dist/glSpriteBatch.js.map +0 -1
- package/dist/glSpriteRenderer.d.ts +0 -3
- package/dist/glSpriteRenderer.d.ts.map +0 -1
- package/dist/glSpriteRenderer.js +0 -54
- package/dist/glSpriteRenderer.js.map +0 -1
- package/dist/glVideo.d.ts +0 -6
- package/dist/glVideo.d.ts.map +0 -1
- package/dist/glVideo.js +0 -63
- package/dist/glVideo.js.map +0 -1
- package/src/glBitmap.test.ts +0 -136
- package/src/glRenderTargetNode2D.test.ts +0 -328
- package/src/glSpriteRenderer.test.ts +0 -89
- package/src/glVideo.test.ts +0 -99
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glQuadBatchWriter.js","sourceRoot":"","sources":["../src/glQuadBatchWriter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { GlRenderState, RenderProxy2D, Scene2DRenderer } from '@flighthq/types/contract';
|
|
2
|
+
export declare function drawGlRasterShape(state: GlRenderState, renderProxy: RenderProxy2D): void;
|
|
3
|
+
export declare const defaultGlRasterShapeRenderer: Scene2DRenderer;
|
|
4
|
+
//# sourceMappingURL=glRasterShapeRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glRasterShapeRenderer.d.ts","sourceRoot":"","sources":["../src/glRasterShapeRenderer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAS,MAAM,0BAA0B,CAAC;AAmBrG,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CAwFxF;AASD,eAAO,MAAM,4BAA4B,EAAE,eAK1C,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { invalidateImageResource } from '@flighthq/image/contract';
|
|
2
|
+
import { getNodeLocalBoundsRectangle, getNodeLocalContentRevision } from '@flighthq/node/contract';
|
|
3
|
+
import { bindGlImageResourceTexture, resolveGlMaterialRenderer } from '@flighthq/render-gl/contract';
|
|
4
|
+
import { getGlRenderStateRuntime } from '@flighthq/render-gl/contract';
|
|
5
|
+
import { BatchFormat, RenderRegistry, ShapeKind } from '@flighthq/types/contract';
|
|
6
|
+
import { ensureGlQuadBatchShader, packGlQuadBatchMaterialInstance, prepareGlQuadBatchWrite, recordGlQuadBatchColorScaleBias, } from './glQuadBatchWriter';
|
|
7
|
+
import { acquireGlShapeRasterSurface, createGlShapeData, destroyGlShapeData, getGlShapeData } from './glShapeData';
|
|
8
|
+
import { getGlShapeRasterizer } from './glShapeRasterizer';
|
|
9
|
+
// Replays the shape's whole command stream into an offscreen 2D canvas and draws the result as one
|
|
10
|
+
// textured quad. Every command in the stream is replayed, not just the ones the mesh path could not
|
|
11
|
+
// express, which is why a state that can rasterize at all needs the full canvas command vocabulary
|
|
12
|
+
// registered rather than some subset of it.
|
|
13
|
+
//
|
|
14
|
+
// Drawing at all is the registered rasterizer's job, so an absent one is reported rather than quietly
|
|
15
|
+
// dropping the shape.
|
|
16
|
+
export function drawGlRasterShape(state, renderProxy) {
|
|
17
|
+
const runtime = getGlRenderStateRuntime(state);
|
|
18
|
+
const source = renderProxy.source;
|
|
19
|
+
const { commands } = source.data;
|
|
20
|
+
if (commands.length === 0 || renderProxy.rendererData === null)
|
|
21
|
+
return;
|
|
22
|
+
const rasterizer = getGlShapeRasterizer(state);
|
|
23
|
+
if (rasterizer === null) {
|
|
24
|
+
runtime.registryMiss?.(RenderRegistry.ShapeRasterizer, ShapeKind);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const material = renderProxy.material;
|
|
28
|
+
const materialRenderer = resolveGlMaterialRenderer(state, material);
|
|
29
|
+
if (materialRenderer === null)
|
|
30
|
+
return;
|
|
31
|
+
const version = getNodeLocalContentRevision(source);
|
|
32
|
+
const shapeData = getGlShapeData(renderProxy.rendererData);
|
|
33
|
+
const bounds = getNodeLocalBoundsRectangle(source);
|
|
34
|
+
const w = Math.ceil(bounds.width);
|
|
35
|
+
const h = Math.ceil(bounds.height);
|
|
36
|
+
if (w <= 0 || h <= 0)
|
|
37
|
+
return;
|
|
38
|
+
// The raster is the shape's own pixels, so it is sized in device pixels and the replay is pre-scaled
|
|
39
|
+
// to match — the same treatment glTextLabel and glRichText give their offscreen canvases. The quad
|
|
40
|
+
// below stays in local units and samples the whole texture, so a denser raster is only sharper: none
|
|
41
|
+
// of the geometry, bounds, or batching moves with it. pixelRatio joins the invalidation check because
|
|
42
|
+
// a state that changes it must re-rasterize at the new density.
|
|
43
|
+
const pixelRatio = state.pixelRatio;
|
|
44
|
+
const surface = acquireGlShapeRasterSurface(shapeData);
|
|
45
|
+
if (version !== shapeData.lastContentId ||
|
|
46
|
+
w !== shapeData.lastW ||
|
|
47
|
+
h !== shapeData.lastH ||
|
|
48
|
+
pixelRatio !== shapeData.lastPixelRatio) {
|
|
49
|
+
const { canvas, ctx } = surface;
|
|
50
|
+
canvas.width = Math.ceil(w * pixelRatio);
|
|
51
|
+
canvas.height = Math.ceil(h * pixelRatio);
|
|
52
|
+
ctx.setTransform(pixelRatio, 0, 0, pixelRatio, -bounds.x * pixelRatio, -bounds.y * pixelRatio);
|
|
53
|
+
ctx.clearRect(bounds.x, bounds.y, w, h);
|
|
54
|
+
rasterizer(ctx, commands, state);
|
|
55
|
+
ctx.setTransform(1, 0, 0, 1, 0, 0);
|
|
56
|
+
// Re-reads the canvas dimensions and bumps the resource version so the batch's version-aware cache
|
|
57
|
+
// re-uploads from the updated canvas.
|
|
58
|
+
invalidateImageResource(surface.image);
|
|
59
|
+
shapeData.lastContentId = version;
|
|
60
|
+
shapeData.lastPixelRatio = pixelRatio;
|
|
61
|
+
shapeData.lastW = w;
|
|
62
|
+
shapeData.lastH = h;
|
|
63
|
+
}
|
|
64
|
+
ensureGlQuadBatchShader(state);
|
|
65
|
+
const t = renderProxy.transform2D;
|
|
66
|
+
const tx = t.tx + t.a * bounds.x + t.c * bounds.y;
|
|
67
|
+
const ty = t.ty + t.b * bounds.x + t.d * bounds.y;
|
|
68
|
+
const texture = bindGlImageResourceTexture(state, surface.image, null, null, true);
|
|
69
|
+
const straightAlpha = runtime.currentTextureStraightAlpha;
|
|
70
|
+
const startCount = runtime.quadBatchWriterCount;
|
|
71
|
+
const base = prepareGlQuadBatchWrite(state, texture, straightAlpha, null, renderProxy.blendMode, material, materialRenderer, 1);
|
|
72
|
+
const d = runtime.quadBatchWriterInstanceData;
|
|
73
|
+
d[base] = t.a;
|
|
74
|
+
d[base + 1] = t.b;
|
|
75
|
+
d[base + 2] = t.c;
|
|
76
|
+
d[base + 3] = t.d;
|
|
77
|
+
d[base + 4] = tx;
|
|
78
|
+
d[base + 5] = ty;
|
|
79
|
+
d[base + 6] = w;
|
|
80
|
+
d[base + 7] = h;
|
|
81
|
+
d[base + 8] = 0;
|
|
82
|
+
d[base + 9] = 0;
|
|
83
|
+
d[base + 10] = 1;
|
|
84
|
+
d[base + 11] = 1;
|
|
85
|
+
d[base + 12] = renderProxy.alpha;
|
|
86
|
+
packGlQuadBatchMaterialInstance(state, renderProxy.materialData, startCount);
|
|
87
|
+
recordGlQuadBatchColorScaleBias(state, renderProxy.colorMatrix ?? renderProxy.colorScaleBias, startCount);
|
|
88
|
+
runtime.quadBatchWriterCount++;
|
|
89
|
+
}
|
|
90
|
+
// The canvas-only shape strategy: every shape rasterizes through the registered rasterizer, and this
|
|
91
|
+
// module never references the tessellator — so registering this renderer instead of defaultGlShapeRenderer
|
|
92
|
+
// leaves @flighthq/path's tessellatePath and shape's region resolvers out of the bundle.
|
|
93
|
+
//
|
|
94
|
+
// Choosing it means the full canvas command vocabulary must be registered on this state, unconditionally:
|
|
95
|
+
// every shape replays its whole command stream. Pick it for exact 2D-canvas fidelity, or to avoid
|
|
96
|
+
// shipping a tessellator at all; pick defaultGlMeshShapeRenderer for the opposite trade.
|
|
97
|
+
export const defaultGlRasterShapeRenderer = {
|
|
98
|
+
format: BatchFormat.Quad,
|
|
99
|
+
createData: createGlShapeData,
|
|
100
|
+
destroyData: destroyGlShapeData,
|
|
101
|
+
submit: drawGlRasterShape,
|
|
102
|
+
};
|
|
103
|
+
//# sourceMappingURL=glRasterShapeRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glRasterShapeRenderer.js","sourceRoot":"","sources":["../src/glRasterShapeRenderer.ts"],"names":[],"mappings":"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"}
|
package/dist/glRichText.js
CHANGED
|
@@ -4,7 +4,7 @@ import { resolveGlShader } from '@flighthq/render-gl/contract';
|
|
|
4
4
|
import { computeTextFormatFontString } from '@flighthq/text/contract';
|
|
5
5
|
import { getRichTextPasswordCharacter, getRichTextRuntime } from '@flighthq/text/contract';
|
|
6
6
|
import { computeRichTextContent, computeTextBoundsHeight, computeTextBoundsOffsetX, computeTextBoundsWidth, computeTextLayout, getRichTextContent, getRichTextScrollYOffset, getTextLayoutResult, } from '@flighthq/textlayout/contract';
|
|
7
|
-
import {
|
|
7
|
+
import { flushGlQuadBatchWriter } from './glQuadBatchWriter';
|
|
8
8
|
let _offscreenCanvas = null;
|
|
9
9
|
let _offscreenCtx = null;
|
|
10
10
|
let _webglTextInputOverlay = null;
|
|
@@ -27,7 +27,7 @@ export function drawGlRichText(state, renderProxy) {
|
|
|
27
27
|
drawGlRichTextWithOverlay(state, renderProxy, overlay);
|
|
28
28
|
}
|
|
29
29
|
export function drawGlRichTextWithOverlay(state, renderProxy, overlay) {
|
|
30
|
-
|
|
30
|
+
flushGlQuadBatchWriter(state);
|
|
31
31
|
const source = renderProxy.source;
|
|
32
32
|
const data = source.data;
|
|
33
33
|
const richTextRuntime = getRichTextRuntime(source);
|
package/dist/glRichText.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glRichText.js","sourceRoot":"","sources":["../src/glRichText.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC1G,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC3F,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,+BAA+B,CAAC;AAcvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"glRichText.js","sourceRoot":"","sources":["../src/glRichText.ts"],"names":[],"mappings":"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"}
|
package/dist/glScale9Shape.d.ts
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { Scene2DRenderer, GlRenderState, Renderable, RendererData, RenderProxy2D } from '@flighthq/types/contract';
|
|
1
|
+
import type { GlRenderState, RenderProxy2D, Renderable, RendererData, Scene2DRenderer } from '@flighthq/types/contract';
|
|
3
2
|
export declare function createGlScale9ShapeData(state: GlRenderState, _source: Renderable): RendererData | null;
|
|
4
3
|
export declare function destroyGlScale9ShapeData(state: GlRenderState, data: RendererData): void;
|
|
5
4
|
export declare function drawGlScale9Shape(state: GlRenderState, renderProxy: RenderProxy2D): void;
|
|
6
5
|
export declare function drawGlScale9ShapeMask(state: GlRenderState, data: RenderProxy2D): void;
|
|
7
|
-
export declare function remapGlScale9Commands(out: unknown[], source: readonly unknown[], mapper: Parameters<typeof mapCanvasScale9ShapeCommands>[2]): void;
|
|
8
6
|
export declare const defaultGlScale9ShapeRenderer: Scene2DRenderer;
|
|
9
7
|
//# sourceMappingURL=glScale9Shape.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glScale9Shape.d.ts","sourceRoot":"","sources":["../src/glScale9Shape.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"glScale9Shape.d.ts","sourceRoot":"","sources":["../src/glScale9Shape.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,aAAa,EAEb,aAAa,EACb,UAAU,EACV,YAAY,EAEZ,eAAe,EAEhB,MAAM,0BAA0B,CAAC;AAsBlC,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CAiBtG;AAGD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAGvF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CAiFxF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAErF;AAED,eAAO,MAAM,4BAA4B,EAAE,eAI1C,CAAC"}
|
package/dist/glScale9Shape.js
CHANGED
|
@@ -2,12 +2,13 @@ import { getNodeLocalBoundsRectangle, getNodeLocalContentRevision } from '@fligh
|
|
|
2
2
|
import { createGlTexture, drawGlQuad, updateGlTexture, useGlProgram } from '@flighthq/render-gl/contract';
|
|
3
3
|
import { getGlRenderStateRuntime } from '@flighthq/render-gl/contract';
|
|
4
4
|
import { setGlBaseUniforms, setGlMatrixFromValues } from '@flighthq/render-gl/contract';
|
|
5
|
-
import {
|
|
5
|
+
import { mapScale9ShapeCommands } from '@flighthq/shape/contract';
|
|
6
|
+
import { RenderRegistry, Scale9ShapeKind } from '@flighthq/types/contract';
|
|
7
|
+
import { flushGlQuadBatchWriter } from './glQuadBatchWriter';
|
|
6
8
|
import { buildGlScale9Mapper } from './glScale9Mapper';
|
|
7
9
|
import { drawGlShape } from './glShape';
|
|
8
|
-
import {
|
|
10
|
+
import { getGlShapeRasterizer } from './glShapeRasterizer';
|
|
9
11
|
const _remappedCommands = [];
|
|
10
|
-
const _remappedPathData = [];
|
|
11
12
|
export function createGlScale9ShapeData(state, _source) {
|
|
12
13
|
const canvas = document.createElement('canvas');
|
|
13
14
|
canvas.width = 1;
|
|
@@ -21,6 +22,7 @@ export function createGlScale9ShapeData(state, _source) {
|
|
|
21
22
|
lastScaleX: -1,
|
|
22
23
|
lastScaleY: -1,
|
|
23
24
|
lastContentId: -1,
|
|
25
|
+
lastPixelRatio: 0,
|
|
24
26
|
lastW: 0,
|
|
25
27
|
texture,
|
|
26
28
|
};
|
|
@@ -32,7 +34,7 @@ export function destroyGlScale9ShapeData(state, data) {
|
|
|
32
34
|
}
|
|
33
35
|
export function drawGlScale9Shape(state, renderProxy) {
|
|
34
36
|
const runtime = getGlRenderStateRuntime(state);
|
|
35
|
-
|
|
37
|
+
flushGlQuadBatchWriter(state);
|
|
36
38
|
const source = renderProxy.source;
|
|
37
39
|
const { commands, scale9Grid } = source.data;
|
|
38
40
|
const version = getNodeLocalContentRevision(source);
|
|
@@ -40,6 +42,13 @@ export function drawGlScale9Shape(state, renderProxy) {
|
|
|
40
42
|
return;
|
|
41
43
|
if (renderProxy.rendererData === null)
|
|
42
44
|
return;
|
|
45
|
+
// A fill with no tessellated form is the registered rasterizer's job; an absent one is reported
|
|
46
|
+
// rather than quietly dropping the fill.
|
|
47
|
+
const rasterizer = getGlShapeRasterizer(state);
|
|
48
|
+
if (rasterizer === null) {
|
|
49
|
+
getGlRenderStateRuntime(state).registryMiss?.(RenderRegistry.ShapeRasterizer, Scale9ShapeKind);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
43
52
|
const bounds = getNodeLocalBoundsRectangle(source);
|
|
44
53
|
const mapper = buildGlScale9Mapper(bounds, scale9Grid, source.scaleX, source.scaleY);
|
|
45
54
|
if (mapper === null) {
|
|
@@ -47,29 +56,34 @@ export function drawGlScale9Shape(state, renderProxy) {
|
|
|
47
56
|
return;
|
|
48
57
|
}
|
|
49
58
|
const shapeData = renderProxy.rendererData;
|
|
59
|
+
const pixelRatio = state.pixelRatio;
|
|
50
60
|
const w = Math.ceil(bounds.width * source.scaleX);
|
|
51
61
|
const h = Math.ceil(bounds.height * source.scaleY);
|
|
52
62
|
if (w <= 0 || h <= 0)
|
|
53
63
|
return;
|
|
64
|
+
// Sized in device pixels with the replay pre-scaled to match, exactly as glTextLabel and glRichText
|
|
65
|
+
// treat their offscreen canvases. The quad below stays in local units and samples the whole texture,
|
|
66
|
+
// so a denser raster is only sharper — no geometry moves with it.
|
|
54
67
|
if (version !== shapeData.lastContentId ||
|
|
55
68
|
w !== shapeData.lastW ||
|
|
56
69
|
h !== shapeData.lastH ||
|
|
57
70
|
source.scaleX !== shapeData.lastScaleX ||
|
|
58
|
-
source.scaleY !== shapeData.lastScaleY
|
|
59
|
-
shapeData.
|
|
60
|
-
shapeData.canvas.
|
|
71
|
+
source.scaleY !== shapeData.lastScaleY ||
|
|
72
|
+
pixelRatio !== shapeData.lastPixelRatio) {
|
|
73
|
+
shapeData.canvas.width = Math.ceil(w * pixelRatio);
|
|
74
|
+
shapeData.canvas.height = Math.ceil(h * pixelRatio);
|
|
61
75
|
const ctx = shapeData.ctx;
|
|
62
|
-
ctx.
|
|
63
|
-
ctx.
|
|
64
|
-
|
|
65
|
-
ctx
|
|
66
|
-
|
|
67
|
-
ctx.restore();
|
|
76
|
+
ctx.setTransform(pixelRatio, 0, 0, pixelRatio, -bounds.x * pixelRatio, -bounds.y * pixelRatio);
|
|
77
|
+
ctx.clearRect(bounds.x, bounds.y, w, h);
|
|
78
|
+
mapScale9ShapeCommands(_remappedCommands, commands, mapper);
|
|
79
|
+
rasterizer(ctx, _remappedCommands, state);
|
|
80
|
+
ctx.setTransform(1, 0, 0, 1, 0, 0);
|
|
68
81
|
updateGlTexture(state, shapeData.texture, shapeData.canvas);
|
|
69
82
|
shapeData.lastH = h;
|
|
70
83
|
shapeData.lastScaleX = source.scaleX;
|
|
71
84
|
shapeData.lastScaleY = source.scaleY;
|
|
72
85
|
shapeData.lastContentId = version;
|
|
86
|
+
shapeData.lastPixelRatio = pixelRatio;
|
|
73
87
|
shapeData.lastW = w;
|
|
74
88
|
}
|
|
75
89
|
useGlProgram(state);
|
|
@@ -87,22 +101,6 @@ export function drawGlScale9Shape(state, renderProxy) {
|
|
|
87
101
|
export function drawGlScale9ShapeMask(state, data) {
|
|
88
102
|
drawGlScale9Shape(state, data);
|
|
89
103
|
}
|
|
90
|
-
export function remapGlScale9Commands(out, source, mapper) {
|
|
91
|
-
mapCanvasScale9ShapeCommands(out, source, mapper);
|
|
92
|
-
let i = 0;
|
|
93
|
-
while (i < out.length) {
|
|
94
|
-
const key = out[i];
|
|
95
|
-
const argCount = out[i + 1];
|
|
96
|
-
if (key === 'drawPath') {
|
|
97
|
-
const pathData = out[i + 3];
|
|
98
|
-
_remappedPathData.length = pathData.length;
|
|
99
|
-
for (let k = 0; k < pathData.length; k++)
|
|
100
|
-
_remappedPathData[k] = pathData[k];
|
|
101
|
-
out[i + 3] = _remappedPathData;
|
|
102
|
-
}
|
|
103
|
-
i += argCount + 2;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
104
|
export const defaultGlScale9ShapeRenderer = {
|
|
107
105
|
createData: createGlScale9ShapeData,
|
|
108
106
|
destroyData: destroyGlScale9ShapeData,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glScale9Shape.js","sourceRoot":"","sources":["../src/glScale9Shape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC1G,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACxF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"glScale9Shape.js","sourceRoot":"","sources":["../src/glScale9Shape.ts"],"names":[],"mappings":"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"}
|
package/dist/glShape.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { GlRenderState, RenderProxy2D, Scene2DRenderer } from '@flighthq/types/contract';
|
|
2
2
|
export declare function drawGlShape(state: GlRenderState, renderProxy: RenderProxy2D): void;
|
|
3
3
|
export declare const defaultGlShapeRenderer: Scene2DRenderer;
|
|
4
|
+
export declare const defaultGlMorphShapeRenderer: Scene2DRenderer;
|
|
4
5
|
//# sourceMappingURL=glShape.d.ts.map
|
package/dist/glShape.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glShape.d.ts","sourceRoot":"","sources":["../src/glShape.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"glShape.d.ts","sourceRoot":"","sources":["../src/glShape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAW9F,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CAGlF;AAUD,eAAO,MAAM,sBAAsB,EAAE,eAKpC,CAAC;AAGF,eAAO,MAAM,2BAA2B,EAAE,eAAwC,CAAC"}
|
package/dist/glShape.js
CHANGED
|
@@ -1,146 +1,30 @@
|
|
|
1
|
-
import { createImageResource, setImageResourceSource } from '@flighthq/image/contract';
|
|
2
|
-
import { getNodeLocalBoundsRectangle, getNodeLocalContentRevision } from '@flighthq/node/contract';
|
|
3
|
-
import { tessellatePath } from '@flighthq/path/contract';
|
|
4
|
-
import { resolveGlMaterialRenderer } from '@flighthq/render-gl/contract';
|
|
5
|
-
import { getGlRenderStateRuntime } from '@flighthq/render-gl/contract';
|
|
6
|
-
import { renderCanvasShapeCommands } from '@flighthq/scene2d-canvas/contract';
|
|
7
|
-
import { getShapeFillRegions, getShapeStrokeRegions, hasShapeFill } from '@flighthq/shape/contract';
|
|
8
1
|
import { BatchFormat } from '@flighthq/types/contract';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
//
|
|
13
|
-
//
|
|
14
|
-
//
|
|
15
|
-
|
|
16
|
-
const fillRegions = getShapeFillRegions(commands);
|
|
17
|
-
if (fillRegions !== null)
|
|
18
|
-
return fillRegions.length > 0 ? fillRegions : null;
|
|
19
|
-
// getShapeFillRegions bailed: a gradient/bitmap fill, or any stroke is present. A stroke-ONLY shape can
|
|
20
|
-
// still render its strokes as outline meshes; a filled-and-stroked shape stays on the raster path.
|
|
21
|
-
if (hasShapeFill(commands))
|
|
22
|
-
return null;
|
|
23
|
-
return getShapeStrokeRegions(commands);
|
|
24
|
-
}
|
|
25
|
-
function getGlShapeData(data) {
|
|
26
|
-
return data;
|
|
27
|
-
}
|
|
28
|
-
function toGlShapeRendererData(data) {
|
|
29
|
-
return data;
|
|
30
|
-
}
|
|
31
|
-
function createGlShapeData(_state, _source) {
|
|
32
|
-
const canvas = document.createElement('canvas');
|
|
33
|
-
canvas.width = 1;
|
|
34
|
-
canvas.height = 1;
|
|
35
|
-
const ctx = canvas.getContext('2d');
|
|
36
|
-
return toGlShapeRendererData({
|
|
37
|
-
canvas,
|
|
38
|
-
ctx,
|
|
39
|
-
image: createImageResource(canvas),
|
|
40
|
-
lastContentId: -1,
|
|
41
|
-
lastW: 0,
|
|
42
|
-
lastH: 0,
|
|
43
|
-
meshVersion: -1,
|
|
44
|
-
meshes: null,
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
// The batch uploads this shape's canvas-backed resource into the shared cache; free that GPU texture when
|
|
48
|
-
// the shape is torn down so it does not leak past the resource it was keyed on.
|
|
49
|
-
function destroyGlShapeData(state, data) {
|
|
50
|
-
const runtime = getGlRenderStateRuntime(state);
|
|
51
|
-
const { image } = getGlShapeData(data);
|
|
52
|
-
const entry = runtime.imageResourcePremultipliedTextureCache.get(image);
|
|
53
|
-
if (entry !== undefined) {
|
|
54
|
-
state.gl.deleteTexture(entry.texture);
|
|
55
|
-
runtime.imageResourcePremultipliedTextureCache.delete(image);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
2
|
+
import { drawGlMeshShape } from './glMeshShapeRenderer';
|
|
3
|
+
import { drawGlRasterShape } from './glRasterShapeRenderer';
|
|
4
|
+
import { createGlShapeData, destroyGlShapeData } from './glShapeData';
|
|
5
|
+
// Tessellates what it can and rasterizes the rest: the GPU mesh path is tried first, and a shape with a
|
|
6
|
+
// fill that has no tessellated form — a gradient, a texture fill, a closed stroke — falls through to the
|
|
7
|
+
// canvas replay. Both halves cache into the same per-node renderer data, so a shape that changes between
|
|
8
|
+
// the two does not thrash.
|
|
58
9
|
export function drawGlShape(state, renderProxy) {
|
|
59
|
-
|
|
60
|
-
const source = renderProxy.source;
|
|
61
|
-
const { commands } = source.data;
|
|
62
|
-
const version = getNodeLocalContentRevision(source);
|
|
63
|
-
if (commands.length === 0)
|
|
64
|
-
return;
|
|
65
|
-
if (renderProxy.rendererData === null)
|
|
66
|
-
return;
|
|
67
|
-
// GPU mesh path: solid-fill shapes tessellate to colored meshes (crisp at any zoom), and a STROKE-ONLY
|
|
68
|
-
// shape offsets its strokes to fillable outlines via getShapeStrokeRegions (real joins/caps/dashing,
|
|
69
|
-
// resolution-independent — no offscreen-canvas raster). Falls through to the canvas-raster path for
|
|
70
|
-
// gradient/bitmap fills/strokes and filled-and-stroked shapes (the fill + stroke mesh paths don't
|
|
71
|
-
// compose yet).
|
|
72
|
-
const regions = resolveGlShapeMeshRegions(commands);
|
|
73
|
-
if (regions !== null && regions.length > 0) {
|
|
74
|
-
const meshData = getGlShapeData(renderProxy.rendererData);
|
|
75
|
-
if (meshData.meshVersion !== version) {
|
|
76
|
-
meshData.meshes = regions.map((region) => {
|
|
77
|
-
const mesh = tessellatePath(region.path);
|
|
78
|
-
return {
|
|
79
|
-
vertices: new Float32Array(mesh.vertices),
|
|
80
|
-
indices: new Uint16Array(mesh.indices),
|
|
81
|
-
color: region.color,
|
|
82
|
-
alpha: region.alpha,
|
|
83
|
-
};
|
|
84
|
-
});
|
|
85
|
-
meshData.meshVersion = version;
|
|
86
|
-
}
|
|
87
|
-
drawGlShapeMeshes(state, renderProxy, meshData.meshes ?? []);
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
const material = renderProxy.material;
|
|
91
|
-
const materialRenderer = resolveGlMaterialRenderer(state, material);
|
|
92
|
-
if (materialRenderer === null)
|
|
93
|
-
return;
|
|
94
|
-
const shapeData = getGlShapeData(renderProxy.rendererData);
|
|
95
|
-
const bounds = getNodeLocalBoundsRectangle(source);
|
|
96
|
-
const w = Math.ceil(bounds.width);
|
|
97
|
-
const h = Math.ceil(bounds.height);
|
|
98
|
-
if (w <= 0 || h <= 0)
|
|
10
|
+
if (drawGlMeshShape(state, renderProxy))
|
|
99
11
|
return;
|
|
100
|
-
|
|
101
|
-
shapeData.canvas.width = w;
|
|
102
|
-
shapeData.canvas.height = h;
|
|
103
|
-
const ctx = shapeData.ctx;
|
|
104
|
-
ctx.clearRect(0, 0, w, h);
|
|
105
|
-
ctx.save();
|
|
106
|
-
ctx.translate(-bounds.x, -bounds.y);
|
|
107
|
-
renderCanvasShapeCommands(ctx, commands);
|
|
108
|
-
ctx.restore();
|
|
109
|
-
// Re-reads the canvas dimensions and bumps the resource version so the batch's version-aware cache
|
|
110
|
-
// re-uploads from the updated canvas.
|
|
111
|
-
setImageResourceSource(shapeData.image, shapeData.canvas);
|
|
112
|
-
shapeData.lastContentId = version;
|
|
113
|
-
shapeData.lastW = w;
|
|
114
|
-
shapeData.lastH = h;
|
|
115
|
-
}
|
|
116
|
-
ensureGlQuadBatchShader(state);
|
|
117
|
-
const t = renderProxy.transform2D;
|
|
118
|
-
const tx = t.tx + t.a * bounds.x + t.c * bounds.y;
|
|
119
|
-
const ty = t.ty + t.b * bounds.x + t.d * bounds.y;
|
|
120
|
-
const startCount = runtime.spriteBatchCount;
|
|
121
|
-
const base = prepareGlSpriteBatchWrite(state, shapeData.image, renderProxy.blendMode, material, materialRenderer, 1);
|
|
122
|
-
const d = runtime.spriteBatchInstanceData;
|
|
123
|
-
d[base] = t.a;
|
|
124
|
-
d[base + 1] = t.b;
|
|
125
|
-
d[base + 2] = t.c;
|
|
126
|
-
d[base + 3] = t.d;
|
|
127
|
-
d[base + 4] = tx;
|
|
128
|
-
d[base + 5] = ty;
|
|
129
|
-
d[base + 6] = w;
|
|
130
|
-
d[base + 7] = h;
|
|
131
|
-
d[base + 8] = 0;
|
|
132
|
-
d[base + 9] = 0;
|
|
133
|
-
d[base + 10] = 1;
|
|
134
|
-
d[base + 11] = 1;
|
|
135
|
-
d[base + 12] = renderProxy.alpha;
|
|
136
|
-
packGlSpriteBatchMaterialInstance(state, renderProxy.materialData, startCount);
|
|
137
|
-
recordGlSpriteBatchColorScaleBias(state, renderProxy.colorMatrix ?? renderProxy.colorScaleBias, startCount);
|
|
138
|
-
runtime.spriteBatchCount++;
|
|
12
|
+
drawGlRasterShape(state, renderProxy);
|
|
139
13
|
}
|
|
14
|
+
// The general-purpose shape strategy, and the right default for an app that does not want to reason
|
|
15
|
+
// about which fills tessellate. Because it may take either path, it pulls both the tessellator and the
|
|
16
|
+
// canvas replay into the bundle, and whether it needs shape commands registered depends on scene
|
|
17
|
+
// content: a scene of solid fills never rasterizes, while one gradient fill makes the full canvas
|
|
18
|
+
// command vocabulary a requirement.
|
|
19
|
+
//
|
|
20
|
+
// Register defaultGlMeshShapeRenderer or defaultGlRasterShapeRenderer instead to pin the strategy — each
|
|
21
|
+
// pays for only its own path and has a wiring requirement that does not depend on the scene.
|
|
140
22
|
export const defaultGlShapeRenderer = {
|
|
141
23
|
format: BatchFormat.Quad,
|
|
142
24
|
createData: createGlShapeData,
|
|
143
25
|
destroyData: destroyGlShapeData,
|
|
144
26
|
submit: drawGlShape,
|
|
145
27
|
};
|
|
28
|
+
// MorphShape owns a distinct kind while sharing Shape's mesh/raster renderer and cache lifecycle.
|
|
29
|
+
export const defaultGlMorphShapeRenderer = defaultGlShapeRenderer;
|
|
146
30
|
//# sourceMappingURL=glShape.js.map
|
package/dist/glShape.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glShape.js","sourceRoot":"","sources":["../src/glShape.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"glShape.js","sourceRoot":"","sources":["../src/glShape.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEtE,wGAAwG;AACxG,yGAAyG;AACzG,yGAAyG;AACzG,2BAA2B;AAC3B,MAAM,UAAU,WAAW,CAAC,KAAoB,EAAE,WAA0B;IAC1E,IAAI,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC;QAAE,OAAO;IAChD,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AACxC,CAAC;AAED,oGAAoG;AACpG,uGAAuG;AACvG,iGAAiG;AACjG,kGAAkG;AAClG,oCAAoC;AACpC,EAAE;AACF,yGAAyG;AACzG,6FAA6F;AAC7F,MAAM,CAAC,MAAM,sBAAsB,GAAoB;IACrD,MAAM,EAAE,WAAW,CAAC,IAAI;IACxB,UAAU,EAAE,iBAAiB;IAC7B,WAAW,EAAE,kBAAkB;IAC/B,MAAM,EAAE,WAAW;CACpB,CAAC;AAEF,kGAAkG;AAClG,MAAM,CAAC,MAAM,2BAA2B,GAAoB,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { GlRenderState, GlShapeRasterSurface, GlShapeRendererData, Renderable, RendererData } from '@flighthq/types/contract';
|
|
2
|
+
export declare function acquireGlShapeRasterSurface(data: GlShapeRendererData): GlShapeRasterSurface;
|
|
3
|
+
export declare function createGlShapeData(_state: GlRenderState, _source: Renderable): RendererData | null;
|
|
4
|
+
export declare function destroyGlShapeData(state: GlRenderState, data: RendererData): void;
|
|
5
|
+
export declare function getGlShapeData(data: RendererData): GlShapeRendererData;
|
|
6
|
+
export declare function toGlShapeRendererData(data: GlShapeRendererData): RendererData;
|
|
7
|
+
//# sourceMappingURL=glShapeData.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glShapeData.d.ts","sourceRoot":"","sources":["../src/glShapeData.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,UAAU,EACV,YAAY,EACb,MAAM,0BAA0B,CAAC;AAMlC,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,mBAAmB,GAAG,oBAAoB,CAa3F;AAID,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CAUjG;AAKD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CASjF;AAID,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,mBAAmB,CAEtE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,GAAG,YAAY,CAE7E"}
|