@flighthq/scene2d-gl 0.2.1-next.840.857425c
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/enableGlColorAdjustmentGuards.d.ts +4 -0
- package/dist/enableGlColorAdjustmentGuards.d.ts.map +1 -0
- package/dist/enableGlColorAdjustmentGuards.js +21 -0
- package/dist/enableGlColorAdjustmentGuards.js.map +1 -0
- package/dist/glBitmap.d.ts +4 -0
- package/dist/glBitmap.d.ts.map +1 -0
- package/dist/glBitmap.js +93 -0
- package/dist/glBitmap.js.map +1 -0
- package/dist/glCache.d.ts +30 -0
- package/dist/glCache.d.ts.map +1 -0
- package/dist/glCache.js +196 -0
- package/dist/glCache.js.map +1 -0
- package/dist/glClip.d.ts +3 -0
- package/dist/glClip.d.ts.map +1 -0
- package/dist/glClip.js +46 -0
- package/dist/glClip.js.map +1 -0
- package/dist/glClipContours.d.ts +4 -0
- package/dist/glClipContours.d.ts.map +1 -0
- package/dist/glClipContours.js +148 -0
- package/dist/glClipContours.js.map +1 -0
- package/dist/glClipRectangle.d.ts +4 -0
- package/dist/glClipRectangle.d.ts.map +1 -0
- package/dist/glClipRectangle.js +68 -0
- package/dist/glClipRectangle.js.map +1 -0
- package/dist/glColorAdjustment.d.ts +3 -0
- package/dist/glColorAdjustment.d.ts.map +1 -0
- package/dist/glColorAdjustment.js +361 -0
- package/dist/glColorAdjustment.js.map +1 -0
- package/dist/glDefaultMaterial.d.ts +4 -0
- package/dist/glDefaultMaterial.d.ts.map +1 -0
- package/dist/glDefaultMaterial.js +20 -0
- package/dist/glDefaultMaterial.js.map +1 -0
- package/dist/glNode2D.d.ts +5 -0
- package/dist/glNode2D.d.ts.map +1 -0
- package/dist/glNode2D.js +41 -0
- package/dist/glNode2D.js.map +1 -0
- package/dist/glNode2DRegistration.d.ts +25 -0
- package/dist/glNode2DRegistration.d.ts.map +1 -0
- package/dist/glNode2DRegistration.js +51 -0
- package/dist/glNode2DRegistration.js.map +1 -0
- package/dist/glParticleEmitter2D.d.ts +4 -0
- package/dist/glParticleEmitter2D.d.ts.map +1 -0
- package/dist/glParticleEmitter2D.js +263 -0
- package/dist/glParticleEmitter2D.js.map +1 -0
- package/dist/glQuadBatch.d.ts +3 -0
- package/dist/glQuadBatch.d.ts.map +1 -0
- package/dist/glQuadBatch.js +92 -0
- package/dist/glQuadBatch.js.map +1 -0
- package/dist/glRichText.d.ts +8 -0
- package/dist/glRichText.d.ts.map +1 -0
- package/dist/glRichText.js +161 -0
- package/dist/glRichText.js.map +1 -0
- package/dist/glScale9Mapper.d.ts +3 -0
- package/dist/glScale9Mapper.d.ts.map +1 -0
- package/dist/glScale9Mapper.js +37 -0
- package/dist/glScale9Mapper.js.map +1 -0
- package/dist/glScale9Shape.d.ts +9 -0
- package/dist/glScale9Shape.d.ts.map +1 -0
- package/dist/glScale9Shape.js +118 -0
- package/dist/glScale9Shape.js.map +1 -0
- package/dist/glShape.d.ts +4 -0
- package/dist/glShape.d.ts.map +1 -0
- package/dist/glShape.js +146 -0
- package/dist/glShape.js.map +1 -0
- package/dist/glShapeMesh.d.ts +5 -0
- package/dist/glShapeMesh.d.ts.map +1 -0
- package/dist/glShapeMesh.js +114 -0
- package/dist/glShapeMesh.js.map +1 -0
- package/dist/glSprite.d.ts +3 -0
- package/dist/glSprite.d.ts.map +1 -0
- package/dist/glSprite.js +28 -0
- package/dist/glSprite.js.map +1 -0
- package/dist/glSpriteBatch.d.ts +11 -0
- package/dist/glSpriteBatch.d.ts.map +1 -0
- package/dist/glSpriteBatch.js +277 -0
- package/dist/glSpriteBatch.js.map +1 -0
- package/dist/glSpriteRenderer.d.ts +3 -0
- package/dist/glSpriteRenderer.d.ts.map +1 -0
- package/dist/glSpriteRenderer.js +54 -0
- package/dist/glSpriteRenderer.js.map +1 -0
- package/dist/glTestHelper.d.ts +9 -0
- package/dist/glTestHelper.d.ts.map +1 -0
- package/dist/glTestHelper.js +17 -0
- package/dist/glTestHelper.js.map +1 -0
- package/dist/glTextInput.d.ts +4 -0
- package/dist/glTextInput.d.ts.map +1 -0
- package/dist/glTextInput.js +43 -0
- package/dist/glTextInput.js.map +1 -0
- package/dist/glTextLabel.d.ts +4 -0
- package/dist/glTextLabel.d.ts.map +1 -0
- package/dist/glTextLabel.js +141 -0
- package/dist/glTextLabel.js.map +1 -0
- package/dist/glTilemap.d.ts +3 -0
- package/dist/glTilemap.d.ts.map +1 -0
- package/dist/glTilemap.js +79 -0
- package/dist/glTilemap.js.map +1 -0
- package/dist/glVelocity.d.ts +22 -0
- package/dist/glVelocity.d.ts.map +1 -0
- package/dist/glVelocity.js +319 -0
- package/dist/glVelocity.js.map +1 -0
- package/dist/glVideo.d.ts +6 -0
- package/dist/glVideo.d.ts.map +1 -0
- package/dist/glVideo.js +62 -0
- package/dist/glVideo.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/moduleMockTestHelper.d.ts +15 -0
- package/dist/moduleMockTestHelper.d.ts.map +1 -0
- package/dist/moduleMockTestHelper.js +25 -0
- package/dist/moduleMockTestHelper.js.map +1 -0
- package/package.json +60 -0
- package/src/enableGlColorAdjustmentGuards.test.ts +76 -0
- package/src/glBitmap.test.ts +136 -0
- package/src/glCache.test.ts +234 -0
- package/src/glClip.test.ts +101 -0
- package/src/glClipContours.test.ts +61 -0
- package/src/glClipRectangle.test.ts +47 -0
- package/src/glColorAdjustment.test.ts +166 -0
- package/src/glDefaultMaterial.test.ts +19 -0
- package/src/glNode2D.test.ts +85 -0
- package/src/glNode2DRegistration.test.ts +132 -0
- package/src/glParticleEmitter2D.test.ts +122 -0
- package/src/glQuadBatch.test.ts +132 -0
- package/src/glRichText.test.ts +140 -0
- package/src/glScale9Mapper.test.ts +20 -0
- package/src/glScale9Shape.test.ts +90 -0
- package/src/glShape.test.ts +116 -0
- package/src/glShapeMesh.test.ts +164 -0
- package/src/glSprite.test.ts +79 -0
- package/src/glSpriteBatch.test.ts +249 -0
- package/src/glSpriteRenderer.test.ts +89 -0
- package/src/glTextInput.test.ts +51 -0
- package/src/glTextLabel.test.ts +156 -0
- package/src/glTilemap.test.ts +127 -0
- package/src/glVelocity.test.ts +156 -0
- package/src/glVideo.test.ts +98 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glRichText.js","sourceRoot":"","sources":["../src/glRichText.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { RectangleLike, Scale9Mapper } from '@flighthq/types';
|
|
2
|
+
export declare function buildGlScale9Mapper(bounds: Readonly<RectangleLike>, scale9Grid: Readonly<RectangleLike>, scaleX: number, scaleY: number): Scale9Mapper | null;
|
|
3
|
+
//# sourceMappingURL=glScale9Mapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glScale9Mapper.d.ts","sourceRoot":"","sources":["../src/glScale9Mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEnE,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC/B,UAAU,EAAE,QAAQ,CAAC,aAAa,CAAC,EACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,YAAY,GAAG,IAAI,CAcrB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export function buildGlScale9Mapper(bounds, scale9Grid, scaleX, scaleY) {
|
|
2
|
+
if (scaleX <= 0 || scaleY <= 0 || bounds.width <= 0 || bounds.height <= 0)
|
|
3
|
+
return null;
|
|
4
|
+
const gx = scale9Grid.x;
|
|
5
|
+
const gy = scale9Grid.y;
|
|
6
|
+
const gw = scale9Grid.width;
|
|
7
|
+
const gh = scale9Grid.height;
|
|
8
|
+
const bw = bounds.width;
|
|
9
|
+
const bh = bounds.height;
|
|
10
|
+
return {
|
|
11
|
+
mapX: (x) => toScale9Position(x, gx, gw, bw, scaleX),
|
|
12
|
+
mapY: (y) => toScale9Position(y, gy, gh, bh, scaleY),
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function toScale9Position(pos, scale9Start, scale9Center, unscaledSize, scale) {
|
|
16
|
+
const scale9End = unscaledSize - scale9Center - scale9Start;
|
|
17
|
+
const size = unscaledSize * scale;
|
|
18
|
+
const center = size - scale9Start - scale9End;
|
|
19
|
+
if (pos <= scale9Start) {
|
|
20
|
+
if (center < 0) {
|
|
21
|
+
return (pos * (scale9Start + scale9End + center)) / (scale9Start + scale9End);
|
|
22
|
+
}
|
|
23
|
+
return pos;
|
|
24
|
+
}
|
|
25
|
+
if (pos >= scale9Start + scale9Center) {
|
|
26
|
+
if (center < 0) {
|
|
27
|
+
return (((scale9Start + (pos - scale9Start - scale9Center)) * (scale9Start + scale9End + center)) /
|
|
28
|
+
(scale9Start + scale9End));
|
|
29
|
+
}
|
|
30
|
+
return scale9Start + center + (pos - scale9Start - scale9Center);
|
|
31
|
+
}
|
|
32
|
+
if (center < 0) {
|
|
33
|
+
return (scale9Start * (scale9Start + scale9End + center)) / (scale9Start + scale9End);
|
|
34
|
+
}
|
|
35
|
+
return scale9Start + (center * (pos - scale9Start)) / scale9Center;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=glScale9Mapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glScale9Mapper.js","sourceRoot":"","sources":["../src/glScale9Mapper.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,mBAAmB,CACjC,MAA+B,EAC/B,UAAmC,EACnC,MAAc,EACd,MAAc;IAEd,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvF,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;IACxB,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;IACxB,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC;IAC5B,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC;IAC7B,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;IACxB,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;IAEzB,OAAO;QACL,IAAI,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC;QAC5D,IAAI,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC;KAC7D,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,GAAW,EACX,WAAmB,EACnB,YAAoB,EACpB,YAAoB,EACpB,KAAa;IAEb,MAAM,SAAS,GAAG,YAAY,GAAG,YAAY,GAAG,WAAW,CAAC;IAC5D,MAAM,IAAI,GAAG,YAAY,GAAG,KAAK,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,GAAG,WAAW,GAAG,SAAS,CAAC;IAE9C,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;QACvB,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,GAAG,CAAC,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;QAChF,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,GAAG,IAAI,WAAW,GAAG,YAAY,EAAE,CAAC;QACtC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,OAAO,CACL,CAAC,CAAC,WAAW,GAAG,CAAC,GAAG,GAAG,WAAW,GAAG,YAAY,CAAC,CAAC,GAAG,CAAC,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC,CAAC;gBACzF,CAAC,WAAW,GAAG,SAAS,CAAC,CAC1B,CAAC;QACJ,CAAC;QACD,OAAO,WAAW,GAAG,MAAM,GAAG,CAAC,GAAG,GAAG,WAAW,GAAG,YAAY,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,OAAO,CAAC,WAAW,GAAG,CAAC,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,WAAW,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,GAAG,YAAY,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { mapCanvasScale9ShapeCommands } from '@flighthq/scene2d-canvas';
|
|
2
|
+
import type { Scene2DRenderer, GlRenderState, Renderable, RendererData, RenderProxy2D } from '@flighthq/types';
|
|
3
|
+
export declare function createGlScale9ShapeData(state: GlRenderState, _source: Renderable): RendererData | null;
|
|
4
|
+
export declare function destroyGlScale9ShapeData(state: GlRenderState, data: RendererData): void;
|
|
5
|
+
export declare function drawGlScale9Shape(state: GlRenderState, renderProxy: RenderProxy2D): void;
|
|
6
|
+
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
|
+
export declare const defaultGlScale9ShapeRenderer: Scene2DRenderer;
|
|
9
|
+
//# sourceMappingURL=glScale9Shape.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glScale9Shape.d.ts","sourceRoot":"","sources":["../src/glScale9Shape.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,4BAA4B,EAA6B,MAAM,0BAA0B,CAAC;AACnG,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EAEb,UAAU,EACV,YAAY,EACZ,aAAa,EAEd,MAAM,iBAAiB,CAAC;AAoBzB,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CAgBtG;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,CAoExF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAErF;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,OAAO,EAAE,EACd,MAAM,EAAE,SAAS,OAAO,EAAE,EAC1B,MAAM,EAAE,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAAC,CAAC,GACzD,IAAI,CAeN;AAED,eAAO,MAAM,4BAA4B,EAAE,eAI1C,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { getNodeLocalBoundsRectangle, getNodeLocalContentRevision } from '@flighthq/node';
|
|
2
|
+
import { createGlTexture, drawGlQuad, updateGlTexture, useGlProgram } from '@flighthq/render-gl';
|
|
3
|
+
import { getGlRenderStateRuntime } from '@flighthq/render-gl';
|
|
4
|
+
import { setGlBaseUniforms, setGlMatrixFromValues } from '@flighthq/render-gl';
|
|
5
|
+
import { mapCanvasScale9ShapeCommands, renderCanvasShapeCommands } from '@flighthq/scene2d-canvas';
|
|
6
|
+
import { buildGlScale9Mapper } from './glScale9Mapper';
|
|
7
|
+
import { drawGlShape } from './glShape';
|
|
8
|
+
import { flushGlSpriteBatch } from './glSpriteBatch';
|
|
9
|
+
const _remappedCommands = [];
|
|
10
|
+
const _remappedPathData = [];
|
|
11
|
+
export function createGlScale9ShapeData(state, _source) {
|
|
12
|
+
const canvas = document.createElement('canvas');
|
|
13
|
+
canvas.width = 1;
|
|
14
|
+
canvas.height = 1;
|
|
15
|
+
const ctx = canvas.getContext('2d');
|
|
16
|
+
const texture = createGlTexture(state);
|
|
17
|
+
return {
|
|
18
|
+
canvas,
|
|
19
|
+
ctx,
|
|
20
|
+
lastH: 0,
|
|
21
|
+
lastScaleX: -1,
|
|
22
|
+
lastScaleY: -1,
|
|
23
|
+
lastContentId: -1,
|
|
24
|
+
lastW: 0,
|
|
25
|
+
texture,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
// Scale9 owns its texture directly (allocated in createData), so free it on teardown.
|
|
29
|
+
export function destroyGlScale9ShapeData(state, data) {
|
|
30
|
+
const { texture } = data;
|
|
31
|
+
state.gl.deleteTexture(texture);
|
|
32
|
+
}
|
|
33
|
+
export function drawGlScale9Shape(state, renderProxy) {
|
|
34
|
+
const runtime = getGlRenderStateRuntime(state);
|
|
35
|
+
flushGlSpriteBatch(state);
|
|
36
|
+
const source = renderProxy.source;
|
|
37
|
+
const { commands, scale9Grid } = source.data;
|
|
38
|
+
const version = getNodeLocalContentRevision(source);
|
|
39
|
+
if (commands.length === 0)
|
|
40
|
+
return;
|
|
41
|
+
if (renderProxy.rendererData === null)
|
|
42
|
+
return;
|
|
43
|
+
const bounds = getNodeLocalBoundsRectangle(source);
|
|
44
|
+
const mapper = buildGlScale9Mapper(bounds, scale9Grid, source.scaleX, source.scaleY);
|
|
45
|
+
if (mapper === null) {
|
|
46
|
+
drawGlShape(state, renderProxy);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const shapeData = renderProxy.rendererData;
|
|
50
|
+
const w = Math.ceil(bounds.width * source.scaleX);
|
|
51
|
+
const h = Math.ceil(bounds.height * source.scaleY);
|
|
52
|
+
if (w <= 0 || h <= 0)
|
|
53
|
+
return;
|
|
54
|
+
if (version !== shapeData.lastContentId ||
|
|
55
|
+
w !== shapeData.lastW ||
|
|
56
|
+
h !== shapeData.lastH ||
|
|
57
|
+
source.scaleX !== shapeData.lastScaleX ||
|
|
58
|
+
source.scaleY !== shapeData.lastScaleY) {
|
|
59
|
+
shapeData.canvas.width = w;
|
|
60
|
+
shapeData.canvas.height = h;
|
|
61
|
+
const ctx = shapeData.ctx;
|
|
62
|
+
ctx.clearRect(0, 0, w, h);
|
|
63
|
+
ctx.save();
|
|
64
|
+
remapGlScale9Commands(_remappedCommands, commands, mapper);
|
|
65
|
+
ctx.translate(-bounds.x, -bounds.y);
|
|
66
|
+
renderCanvasShapeCommands(ctx, _remappedCommands);
|
|
67
|
+
ctx.restore();
|
|
68
|
+
updateGlTexture(state, shapeData.texture, shapeData.canvas);
|
|
69
|
+
shapeData.lastH = h;
|
|
70
|
+
shapeData.lastScaleX = source.scaleX;
|
|
71
|
+
shapeData.lastScaleY = source.scaleY;
|
|
72
|
+
shapeData.lastContentId = version;
|
|
73
|
+
shapeData.lastW = w;
|
|
74
|
+
}
|
|
75
|
+
useGlProgram(state);
|
|
76
|
+
const gl = state.gl;
|
|
77
|
+
if (runtime.currentTexture !== shapeData.texture) {
|
|
78
|
+
gl.bindTexture(gl.TEXTURE_2D, shapeData.texture);
|
|
79
|
+
runtime.currentTexture = shapeData.texture;
|
|
80
|
+
}
|
|
81
|
+
const { shaderLoc, matrixArray } = runtime;
|
|
82
|
+
setGlBaseUniforms(gl, shaderLoc, renderProxy);
|
|
83
|
+
const t = renderProxy.transform2D;
|
|
84
|
+
setStrippedGlMatrixFromValues(gl, shaderLoc, matrixArray, t, source.scaleX, source.scaleY, runtime.renderTargetViewport ?? state.canvas);
|
|
85
|
+
drawGlQuad(state, 0, 0, w, h, 0, 0, 1, 1);
|
|
86
|
+
}
|
|
87
|
+
export function drawGlScale9ShapeMask(state, data) {
|
|
88
|
+
drawGlScale9Shape(state, data);
|
|
89
|
+
}
|
|
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
|
+
export const defaultGlScale9ShapeRenderer = {
|
|
107
|
+
createData: createGlScale9ShapeData,
|
|
108
|
+
destroyData: destroyGlScale9ShapeData,
|
|
109
|
+
submit: drawGlScale9Shape,
|
|
110
|
+
};
|
|
111
|
+
function setStrippedGlMatrixFromValues(gl, loc, m, t, scaleX, scaleY, viewport) {
|
|
112
|
+
const a = scaleX !== 0 ? t.a / scaleX : t.a;
|
|
113
|
+
const b = scaleX !== 0 ? t.b / scaleX : t.b;
|
|
114
|
+
const c = scaleY !== 0 ? t.c / scaleY : t.c;
|
|
115
|
+
const d = scaleY !== 0 ? t.d / scaleY : t.d;
|
|
116
|
+
setGlMatrixFromValues(gl, loc, m, a, b, c, d, t.tx, t.ty, viewport);
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=glScale9Shape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glScale9Shape.js","sourceRoot":"","sources":["../src/glScale9Shape.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Scene2DRenderer, GlRenderState, RenderProxy2D } from '@flighthq/types';
|
|
2
|
+
export declare function drawGlShape(state: GlRenderState, renderProxy: RenderProxy2D): void;
|
|
3
|
+
export declare const defaultGlShapeRenderer: Scene2DRenderer;
|
|
4
|
+
//# sourceMappingURL=glShape.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glShape.d.ts","sourceRoot":"","sources":["../src/glShape.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EAKb,aAAa,EAId,MAAM,iBAAiB,CAAC;AAiFzB,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CAoFlF;AAED,eAAO,MAAM,sBAAsB,EAAE,eAKpC,CAAC"}
|
package/dist/glShape.js
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { createImageResource, setImageResourceSource } from '@flighthq/image';
|
|
2
|
+
import { getNodeLocalBoundsRectangle, getNodeLocalContentRevision } from '@flighthq/node';
|
|
3
|
+
import { tessellatePath } from '@flighthq/path';
|
|
4
|
+
import { resolveGlMaterialRenderer } from '@flighthq/render-gl';
|
|
5
|
+
import { getGlRenderStateRuntime } from '@flighthq/render-gl';
|
|
6
|
+
import { renderCanvasShapeCommands } from '@flighthq/scene2d-canvas';
|
|
7
|
+
import { getShapeFillRegions, getShapeStrokeRegions, hasShapeFill } from '@flighthq/shape';
|
|
8
|
+
import { BatchFormat } from '@flighthq/types';
|
|
9
|
+
import { drawGlShapeMeshes } from './glShapeMesh';
|
|
10
|
+
import { ensureGlQuadBatchShader, packGlSpriteBatchMaterialInstance, prepareGlSpriteBatchWrite, recordGlSpriteBatchColorTransform, } from './glSpriteBatch';
|
|
11
|
+
// Chooses the fillable regions to tessellate into GPU meshes for a shape: its solid-fill regions when it
|
|
12
|
+
// is fill-only, or its stroke-outline regions (via getShapeStrokeRegions → strokePath) when it is
|
|
13
|
+
// stroke-only. Returns null when the shape must use the raster fallback — a gradient/bitmap fill or
|
|
14
|
+
// stroke, or a shape that BOTH fills and strokes (the fill + stroke mesh paths do not compose yet).
|
|
15
|
+
function resolveGlShapeMeshRegions(commands) {
|
|
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.imageResourceTextureCache.get(image);
|
|
53
|
+
if (entry !== undefined) {
|
|
54
|
+
state.gl.deleteTexture(entry.texture);
|
|
55
|
+
runtime.imageResourceTextureCache.delete(image);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export function drawGlShape(state, renderProxy) {
|
|
59
|
+
const runtime = getGlRenderStateRuntime(state);
|
|
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)
|
|
99
|
+
return;
|
|
100
|
+
if (version !== shapeData.lastContentId || w !== shapeData.lastW || h !== shapeData.lastH) {
|
|
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
|
+
recordGlSpriteBatchColorTransform(state, renderProxy.colorTransform, startCount);
|
|
138
|
+
runtime.spriteBatchCount++;
|
|
139
|
+
}
|
|
140
|
+
export const defaultGlShapeRenderer = {
|
|
141
|
+
format: BatchFormat.Quad,
|
|
142
|
+
createData: createGlShapeData,
|
|
143
|
+
destroyData: destroyGlShapeData,
|
|
144
|
+
submit: drawGlShape,
|
|
145
|
+
};
|
|
146
|
+
//# sourceMappingURL=glShape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glShape.js","sourceRoot":"","sources":["../src/glShape.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { GlRenderState, GlShapeMesh, GlShapeMeshBinding, RenderProxy2D } from '@flighthq/types';
|
|
2
|
+
export declare function drawGlShapeMeshBatch(state: GlRenderState, renderProxy: RenderProxy2D, meshes: readonly GlShapeMesh[], binding: Readonly<GlShapeMeshBinding>, onProgramBound?: (state: GlRenderState) => void): void;
|
|
3
|
+
export declare function drawGlShapeMeshes(state: GlRenderState, renderProxy: RenderProxy2D, meshes: readonly GlShapeMesh[]): void;
|
|
4
|
+
export declare function ensureGlShapeMeshProgram(state: GlRenderState): GlShapeMeshBinding;
|
|
5
|
+
//# sourceMappingURL=glShapeMesh.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glShapeMesh.d.ts","sourceRoot":"","sources":["../src/glShapeMesh.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAiBrG,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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { createGlProgram } from '@flighthq/render-gl';
|
|
2
|
+
import { getGlRenderStateRuntime } from '@flighthq/render-gl';
|
|
3
|
+
import { flushGlSpriteBatch } from './glSpriteBatch';
|
|
4
|
+
// GPU tessellated solid-fill path for Shape — the replacement for the canvas-raster-to-texture shortcut
|
|
5
|
+
// (which is resolution-bound, so circles go jagged when scaled up). Each fill region is tessellated to a
|
|
6
|
+
// triangle mesh (CPU, cached by content version in webglShape) and drawn here with a flat-color program,
|
|
7
|
+
// transformed by the node world transform in the vertex shader so it stays crisp at any zoom. Gradient/
|
|
8
|
+
// bitmap fills and strokes still take the raster path (see getShapeFillRegions returning null).
|
|
9
|
+
// Draws the shape's tessellated fill meshes through `binding`. Flushes the sprite batch first (these go
|
|
10
|
+
// through a separate program), honors the node blend mode and alpha, and is gated by any active clip
|
|
11
|
+
// stencil (GL state set by the clip hooks is left untouched). Records the program as currentProgram so
|
|
12
|
+
// the next content draw re-binds its own program (same hazard the clip path guards against). Uploads
|
|
13
|
+
// premultiplied color per mesh for the standard ONE / ONE_MINUS_SRC_ALPHA blend. `onProgramBound` runs
|
|
14
|
+
// after the program and matrix are set but before the draw loop, so a caller can upload extra uniforms
|
|
15
|
+
// (the color-adjustment fold sets its tint there) without this base driver knowing about them.
|
|
16
|
+
export function drawGlShapeMeshBatch(state, renderProxy, meshes, binding, onProgramBound) {
|
|
17
|
+
if (meshes.length === 0)
|
|
18
|
+
return;
|
|
19
|
+
const runtime = getGlRenderStateRuntime(state);
|
|
20
|
+
flushGlSpriteBatch(state);
|
|
21
|
+
const gl = state.gl;
|
|
22
|
+
gl.useProgram(binding.program);
|
|
23
|
+
runtime.currentProgram = binding.program;
|
|
24
|
+
state.applyBlendMode?.(state, renderProxy.blendMode);
|
|
25
|
+
gl.uniformMatrix3fv(binding.matrixLocation, false, shapeMeshMatrix(state, renderProxy));
|
|
26
|
+
onProgramBound?.(state);
|
|
27
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, binding.vertexBuffer);
|
|
28
|
+
gl.enableVertexAttribArray(binding.positionLocation);
|
|
29
|
+
gl.vertexAttribPointer(binding.positionLocation, 2, gl.FLOAT, false, 0, 0);
|
|
30
|
+
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, binding.indexBuffer);
|
|
31
|
+
const nodeAlpha = renderProxy.alpha;
|
|
32
|
+
for (let i = 0; i < meshes.length; i++) {
|
|
33
|
+
const mesh = meshes[i];
|
|
34
|
+
if (mesh.indices.length === 0)
|
|
35
|
+
continue;
|
|
36
|
+
const a = mesh.alpha * nodeAlpha;
|
|
37
|
+
if (a <= 0)
|
|
38
|
+
continue;
|
|
39
|
+
// Premultiplied color for the standard ONE / ONE_MINUS_SRC_ALPHA blend the renderer uses.
|
|
40
|
+
const r = ((mesh.color >> 16) & 0xff) / 255;
|
|
41
|
+
const g = ((mesh.color >> 8) & 0xff) / 255;
|
|
42
|
+
const b = (mesh.color & 0xff) / 255;
|
|
43
|
+
gl.uniform4f(binding.colorLocation, r * a, g * a, b * a, a);
|
|
44
|
+
gl.bufferData(gl.ARRAY_BUFFER, mesh.vertices, gl.STREAM_DRAW);
|
|
45
|
+
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, mesh.indices, gl.STREAM_DRAW);
|
|
46
|
+
gl.drawElements(gl.TRIANGLES, mesh.indices.length, gl.UNSIGNED_SHORT, 0);
|
|
47
|
+
}
|
|
48
|
+
gl.disableVertexAttribArray(binding.positionLocation);
|
|
49
|
+
}
|
|
50
|
+
// Draws the shape's tessellated fill meshes. Delegates to the opt-in color-adjustment fold when it is
|
|
51
|
+
// installed AND the node carries a color transform, so solid-fill tint stays byte-for-byte with the
|
|
52
|
+
// quad-batch path; otherwise runs the lean flat-color program, which never references the tint shader
|
|
53
|
+
// (it tree-shakes out with the fold until enableGlColorAdjustment is called).
|
|
54
|
+
export function drawGlShapeMeshes(state, renderProxy, meshes) {
|
|
55
|
+
if (meshes.length === 0)
|
|
56
|
+
return;
|
|
57
|
+
const fold = getGlRenderStateRuntime(state).glColorAdjustmentFold;
|
|
58
|
+
if (fold != null && renderProxy.colorTransform != null) {
|
|
59
|
+
fold.drawShapeMeshes(state, renderProxy, meshes);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
drawGlShapeMeshBatch(state, renderProxy, meshes, ensureGlShapeMeshProgram(state));
|
|
63
|
+
}
|
|
64
|
+
// The lean flat-color mesh binding for `state`, compiled once per context. The base path and the fold's
|
|
65
|
+
// tinted draw (which borrows these shared vertex/index buffers) resolve it here.
|
|
66
|
+
export function ensureGlShapeMeshProgram(state) {
|
|
67
|
+
const gl = state.gl;
|
|
68
|
+
const existing = shapeMeshPrograms.get(gl);
|
|
69
|
+
if (existing !== undefined)
|
|
70
|
+
return existing;
|
|
71
|
+
const program = compileShapeMeshProgram(gl);
|
|
72
|
+
const created = {
|
|
73
|
+
program,
|
|
74
|
+
vertexBuffer: gl.createBuffer(),
|
|
75
|
+
indexBuffer: gl.createBuffer(),
|
|
76
|
+
positionLocation: gl.getAttribLocation(program, 'a_position'),
|
|
77
|
+
matrixLocation: gl.getUniformLocation(program, 'u_matrix'),
|
|
78
|
+
colorLocation: gl.getUniformLocation(program, 'u_color'),
|
|
79
|
+
};
|
|
80
|
+
shapeMeshPrograms.set(gl, created);
|
|
81
|
+
return created;
|
|
82
|
+
}
|
|
83
|
+
const VERTEX_SOURCE = `
|
|
84
|
+
attribute vec2 a_position;
|
|
85
|
+
uniform mat3 u_matrix;
|
|
86
|
+
void main() {
|
|
87
|
+
vec3 p = u_matrix * vec3(a_position, 1.0);
|
|
88
|
+
gl_Position = vec4(p.xy, 0.0, 1.0);
|
|
89
|
+
}
|
|
90
|
+
`;
|
|
91
|
+
const FRAGMENT_SOURCE = `
|
|
92
|
+
precision mediump float;
|
|
93
|
+
uniform vec4 u_color;
|
|
94
|
+
void main() { gl_FragColor = u_color; }
|
|
95
|
+
`;
|
|
96
|
+
const shapeMeshPrograms = new WeakMap();
|
|
97
|
+
function compileShapeMeshProgram(gl) {
|
|
98
|
+
return createGlProgram(gl, VERTEX_SOURCE, FRAGMENT_SOURCE, 'Shape-mesh');
|
|
99
|
+
}
|
|
100
|
+
// Column-major mat3 = projection · world transform, mapping shape-local points to clip space — identical
|
|
101
|
+
// to the sprite batch's projection so the mesh aligns with everything else.
|
|
102
|
+
function shapeMeshMatrix(state, renderProxy) {
|
|
103
|
+
const viewport = getGlRenderStateRuntime(state).renderTargetViewport ?? state.canvas;
|
|
104
|
+
const iw = 2 / (viewport.width || 1);
|
|
105
|
+
const ih = 2 / (viewport.height || 1);
|
|
106
|
+
const t = renderProxy.transform2D;
|
|
107
|
+
// prettier-ignore
|
|
108
|
+
return new Float32Array([
|
|
109
|
+
t.a * iw, -t.b * ih, 0,
|
|
110
|
+
t.c * iw, -t.d * ih, 0,
|
|
111
|
+
t.tx * iw - 1, -t.ty * ih + 1, 1,
|
|
112
|
+
]);
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=glShapeMesh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glShapeMesh.js","sourceRoot":"","sources":["../src/glShapeMesh.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glSprite.d.ts","sourceRoot":"","sources":["../src/glSprite.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAI7D,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAwBzE"}
|
package/dist/glSprite.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { getRenderProxy2D, isRenderProxyVisible } from '@flighthq/render';
|
|
2
|
+
import { getGlRenderStateRuntime } from '@flighthq/render-gl';
|
|
3
|
+
import { getNode2DRuntime } from '@flighthq/scene2d';
|
|
4
|
+
import { flushGlSpriteBatch } from './glSpriteBatch';
|
|
5
|
+
export function renderGlSprite(state, source) {
|
|
6
|
+
const tempStack = getGlRenderStateRuntime(state).tempStack;
|
|
7
|
+
let stackLength = 1;
|
|
8
|
+
tempStack[0] = source;
|
|
9
|
+
while (stackLength > 0) {
|
|
10
|
+
const current = tempStack[--stackLength];
|
|
11
|
+
if (!current.enabled)
|
|
12
|
+
continue;
|
|
13
|
+
const data = getRenderProxy2D(state, current);
|
|
14
|
+
if (data === undefined || !isRenderProxyVisible(data))
|
|
15
|
+
continue;
|
|
16
|
+
data.renderer?.submit(state, data);
|
|
17
|
+
if (data.traverseChildren) {
|
|
18
|
+
const children = getNode2DRuntime(current).children;
|
|
19
|
+
if (children !== null) {
|
|
20
|
+
for (let i = children.length - 1; i >= 0; i--) {
|
|
21
|
+
tempStack[stackLength++] = children[i];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
flushGlSpriteBatch(state);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=glSprite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glSprite.js","sourceRoot":"","sources":["../src/glSprite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,UAAU,cAAc,CAAC,KAAoB,EAAE,MAAc;IACjE,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;IAC3D,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAEtB,OAAO,WAAW,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,SAAS,CAAC,EAAE,WAAW,CAAW,CAAC;QACnD,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,SAAS;QAC/B,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAAE,SAAS;QAEhE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAEnC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC;YACpD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC9C,SAAS,CAAC,WAAW,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAW,CAAC;gBACnD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { BlendMode, ColorTransform, GlMaterialRenderer, GlQuadBatchShader, GlRenderState, ImageResource, Material, MaterialData } from '@flighthq/types';
|
|
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}";
|
|
3
|
+
export declare function bindGlQuadBatchBaseAttributes(state: GlRenderState, locCorner: number): void;
|
|
4
|
+
export declare function ensureGlQuadBatchShader(state: GlRenderState): GlQuadBatchShader;
|
|
5
|
+
export declare function flushGlSpriteBatch(state: GlRenderState): void;
|
|
6
|
+
export declare function packGlSpriteBatchMaterialInstance(state: GlRenderState, materialData: MaterialData | null, instanceIndex: number): void;
|
|
7
|
+
export declare function prepareGlSpriteBatchWrite(state: GlRenderState, texture: Readonly<ImageResource>, blendMode: BlendMode | null, material: Material | null, materialRenderer: GlMaterialRenderer, maxInstances: number, smoothing?: boolean | null): number;
|
|
8
|
+
export declare function recordGlSpriteBatchColorTransform(state: GlRenderState, colorTransform: ColorTransform | null | undefined, instanceIndex: number): void;
|
|
9
|
+
export declare function setGlQuadBatchWorldAndTexture(state: GlRenderState, locWorldMatrix: WebGLUniformLocation, locTexture: WebGLUniformLocation, locStraightTextureAlpha?: WebGLUniformLocation): void;
|
|
10
|
+
export declare function useGlQuadBatchProgram(state: GlRenderState, program: WebGLProgram): void;
|
|
11
|
+
//# sourceMappingURL=glSpriteBatch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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;AAqCH,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,CA0D7D;AAMD,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,aAAa,EACpB,YAAY,EAAE,YAAY,GAAG,IAAI,EACjC,aAAa,EAAE,MAAM,GACpB,IAAI,CAUN;AASD,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,EACpB,SAAS,GAAE,OAAO,GAAG,IAAW,GAC/B,MAAM,CA2CR;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,EAChC,uBAAuB,CAAC,EAAE,oBAAoB,GAC7C,IAAI,CAqBN;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAMvF"}
|