@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
package/dist/contract.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './enableGlColorAdjustmentGuards';
|
|
2
|
-
export * from './
|
|
2
|
+
export * from './enableGlStrokePathTessellation';
|
|
3
|
+
export * from './glSprite';
|
|
3
4
|
export * from './glBitmapText';
|
|
4
5
|
export * from './glCache';
|
|
5
6
|
export * from './glClip';
|
|
@@ -11,18 +12,20 @@ export * from './glNode2D';
|
|
|
11
12
|
export * from './glParticleEmitter2D';
|
|
12
13
|
export * from './glQuadBatch';
|
|
13
14
|
export * from './glRichText';
|
|
14
|
-
export * from './glRenderTargetNode2D';
|
|
15
15
|
export * from './glScale9Mapper';
|
|
16
16
|
export * from './glScale9Shape';
|
|
17
|
+
export * from './glMeshShapeRenderer';
|
|
18
|
+
export * from './glRasterShapeRenderer';
|
|
19
|
+
export * from './explainGlScene2DCoverage';
|
|
17
20
|
export * from './glShape';
|
|
21
|
+
export * from './glShapeData';
|
|
18
22
|
export * from './glShapeMesh';
|
|
19
23
|
export * from './glSprite';
|
|
20
|
-
export * from './
|
|
21
|
-
export * from './glSpriteRenderer';
|
|
24
|
+
export * from './glQuadBatchWriter';
|
|
22
25
|
export * from './glTextInput';
|
|
23
26
|
export * from './glTextLabel';
|
|
24
27
|
export * from './glTilemap';
|
|
25
28
|
export * from './glVelocity';
|
|
26
|
-
export
|
|
27
|
-
export
|
|
29
|
+
export { defaultCanvasBeginTextureFill as defaultGlBeginTextureFill, defaultCanvasBeginFill as defaultGlBeginFill, defaultCanvasBeginGradientFill as defaultGlBeginGradientFill, defaultCanvasCubicCurveTo as defaultGlCubicCurveTo, defaultCanvasCurveTo as defaultGlCurveTo, defaultCanvasDrawCircle as defaultGlDrawCircle, defaultCanvasDrawEllipse as defaultGlDrawEllipse, defaultCanvasDrawRectangle as defaultGlDrawRectangle, defaultCanvasDrawRoundRectangle as defaultGlDrawRoundRectangle, defaultCanvasEndFill as defaultGlEndFill, defaultCanvasLineStyle as defaultGlLineStyle, defaultCanvasLineTo as defaultGlLineTo, defaultCanvasMoveTo as defaultGlMoveTo, defaultCanvasShapeCommands as defaultGlShapeCommands, defaultCanvasTextureShapeCommands as defaultGlTextureShapeCommands, registerCanvasShapeCommands as registerGlShapeCommands, } from '@flighthq/scene2d-canvas/contract';
|
|
30
|
+
export * from './glShapeRasterizer';
|
|
28
31
|
//# sourceMappingURL=contract.d.ts.map
|
package/dist/contract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oCAAoC,CAAC;AACnD,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oCAAoC,CAAC;AACnD,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAG7B,OAAO,EACL,6BAA6B,IAAI,yBAAyB,EAC1D,sBAAsB,IAAI,kBAAkB,EAC5C,8BAA8B,IAAI,0BAA0B,EAC5D,yBAAyB,IAAI,qBAAqB,EAClD,oBAAoB,IAAI,gBAAgB,EACxC,uBAAuB,IAAI,mBAAmB,EAC9C,wBAAwB,IAAI,oBAAoB,EAChD,0BAA0B,IAAI,sBAAsB,EACpD,+BAA+B,IAAI,2BAA2B,EAC9D,oBAAoB,IAAI,gBAAgB,EACxC,sBAAsB,IAAI,kBAAkB,EAC5C,mBAAmB,IAAI,eAAe,EACtC,mBAAmB,IAAI,eAAe,EACtC,0BAA0B,IAAI,sBAAsB,EACpD,iCAAiC,IAAI,6BAA6B,EAClE,2BAA2B,IAAI,uBAAuB,GACvD,MAAM,mCAAmC,CAAC;AAC3C,cAAc,qBAAqB,CAAC"}
|
package/dist/contract.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './enableGlColorAdjustmentGuards';
|
|
2
|
-
export * from './
|
|
2
|
+
export * from './enableGlStrokePathTessellation';
|
|
3
|
+
export * from './glSprite';
|
|
3
4
|
export * from './glBitmapText';
|
|
4
5
|
export * from './glCache';
|
|
5
6
|
export * from './glClip';
|
|
@@ -11,19 +12,21 @@ export * from './glNode2D';
|
|
|
11
12
|
export * from './glParticleEmitter2D';
|
|
12
13
|
export * from './glQuadBatch';
|
|
13
14
|
export * from './glRichText';
|
|
14
|
-
export * from './glRenderTargetNode2D';
|
|
15
15
|
export * from './glScale9Mapper';
|
|
16
16
|
export * from './glScale9Shape';
|
|
17
|
+
export * from './glMeshShapeRenderer';
|
|
18
|
+
export * from './glRasterShapeRenderer';
|
|
19
|
+
export * from './explainGlScene2DCoverage';
|
|
17
20
|
export * from './glShape';
|
|
21
|
+
export * from './glShapeData';
|
|
18
22
|
export * from './glShapeMesh';
|
|
19
23
|
export * from './glSprite';
|
|
20
|
-
export * from './
|
|
21
|
-
export * from './glSpriteRenderer';
|
|
24
|
+
export * from './glQuadBatchWriter';
|
|
22
25
|
export * from './glTextInput';
|
|
23
26
|
export * from './glTextLabel';
|
|
24
27
|
export * from './glTilemap';
|
|
25
28
|
export * from './glVelocity';
|
|
26
|
-
export * from './glVideo';
|
|
27
29
|
// Re-export shape commands from canvas (shapes deferred to canvas for now)
|
|
28
|
-
export {
|
|
30
|
+
export { defaultCanvasBeginTextureFill as defaultGlBeginTextureFill, defaultCanvasBeginFill as defaultGlBeginFill, defaultCanvasBeginGradientFill as defaultGlBeginGradientFill, defaultCanvasCubicCurveTo as defaultGlCubicCurveTo, defaultCanvasCurveTo as defaultGlCurveTo, defaultCanvasDrawCircle as defaultGlDrawCircle, defaultCanvasDrawEllipse as defaultGlDrawEllipse, defaultCanvasDrawRectangle as defaultGlDrawRectangle, defaultCanvasDrawRoundRectangle as defaultGlDrawRoundRectangle, defaultCanvasEndFill as defaultGlEndFill, defaultCanvasLineStyle as defaultGlLineStyle, defaultCanvasLineTo as defaultGlLineTo, defaultCanvasMoveTo as defaultGlMoveTo, defaultCanvasShapeCommands as defaultGlShapeCommands, defaultCanvasTextureShapeCommands as defaultGlTextureShapeCommands, registerCanvasShapeCommands as registerGlShapeCommands, } from '@flighthq/scene2d-canvas/contract';
|
|
31
|
+
export * from './glShapeRasterizer';
|
|
29
32
|
//# sourceMappingURL=contract.js.map
|
package/dist/contract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oCAAoC,CAAC;AACnD,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oCAAoC,CAAC;AACnD,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAE7B,2EAA2E;AAC3E,OAAO,EACL,6BAA6B,IAAI,yBAAyB,EAC1D,sBAAsB,IAAI,kBAAkB,EAC5C,8BAA8B,IAAI,0BAA0B,EAC5D,yBAAyB,IAAI,qBAAqB,EAClD,oBAAoB,IAAI,gBAAgB,EACxC,uBAAuB,IAAI,mBAAmB,EAC9C,wBAAwB,IAAI,oBAAoB,EAChD,0BAA0B,IAAI,sBAAsB,EACpD,+BAA+B,IAAI,2BAA2B,EAC9D,oBAAoB,IAAI,gBAAgB,EACxC,sBAAsB,IAAI,kBAAkB,EAC5C,mBAAmB,IAAI,eAAe,EACtC,mBAAmB,IAAI,eAAe,EACtC,0BAA0B,IAAI,sBAAsB,EACpD,iCAAiC,IAAI,6BAA6B,EAClE,2BAA2B,IAAI,uBAAuB,GACvD,MAAM,mCAAmC,CAAC;AAC3C,cAAc,qBAAqB,CAAC"}
|
|
@@ -6,7 +6,7 @@ export function areGlColorAdjustmentGuardsEnabled(state) {
|
|
|
6
6
|
return getGlRenderStateRuntime(state).glColorAdjustmentMaterialFeatureGuard != null;
|
|
7
7
|
}
|
|
8
8
|
// Installs the shakeable color-adjustment guard on `state`: when a node carries a color adjustment but
|
|
9
|
-
// registerGlColorAdjustmentMaterialFeature was never called,
|
|
9
|
+
// registerGlColorAdjustmentMaterialFeature was never called, recordGlQuadBatchColorScaleBias reaches this guard
|
|
10
10
|
// through its nullable runtime slot and warns once (the tint is skipped, drawn untinted — the sentinel
|
|
11
11
|
// behavior, never a throw). Not calling this — the production default — costs the batch nothing, since
|
|
12
12
|
// the message and @flighthq/log dependency live only in this separately-imported module. Idempotent.
|
|
@@ -15,7 +15,7 @@ export function enableGlColorAdjustmentGuards(state) {
|
|
|
15
15
|
}
|
|
16
16
|
function warnGlColorAdjustmentNotEnabled() {
|
|
17
17
|
logOnce('scene2d-gl:color-adjustment-not-enabled', LogLevel.Warn, {
|
|
18
|
-
message: '
|
|
18
|
+
message: 'recordGlQuadBatchColorScaleBias: color adjustment present but GL color adjustment not enabled — call registerGlColorAdjustmentMaterialFeature(state)',
|
|
19
19
|
}, 'scene2d-gl');
|
|
20
20
|
}
|
|
21
21
|
//# sourceMappingURL=enableGlColorAdjustmentGuards.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enableGlColorAdjustmentGuards.js","sourceRoot":"","sources":["../src/enableGlColorAdjustmentGuards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,oGAAoG;AACpG,MAAM,UAAU,iCAAiC,CAAC,KAAoB;IACpE,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC,qCAAqC,IAAI,IAAI,CAAC;AACtF,CAAC;AAED,uGAAuG;AACvG,
|
|
1
|
+
{"version":3,"file":"enableGlColorAdjustmentGuards.js","sourceRoot":"","sources":["../src/enableGlColorAdjustmentGuards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,oGAAoG;AACpG,MAAM,UAAU,iCAAiC,CAAC,KAAoB;IACpE,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC,qCAAqC,IAAI,IAAI,CAAC;AACtF,CAAC;AAED,uGAAuG;AACvG,gHAAgH;AAChH,uGAAuG;AACvG,uGAAuG;AACvG,qGAAqG;AACrG,MAAM,UAAU,6BAA6B,CAAC,KAAoB;IAChE,uBAAuB,CAAC,KAAK,CAAC,CAAC,qCAAqC,GAAG,+BAA+B,CAAC;AACzG,CAAC;AAED,SAAS,+BAA+B;IACtC,OAAO,CACL,yCAAyC,EACzC,QAAQ,CAAC,IAAI,EACb;QACE,OAAO,EACL,sJAAsJ;KACzJ,EACD,YAAY,CACb,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enableGlStrokePathTessellation.d.ts","sourceRoot":"","sources":["../src/enableGlStrokePathTessellation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAI9D,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAEzE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { tessellateStrokePath } from '@flighthq/path/contract';
|
|
2
|
+
import { getGlRenderStateRuntime } from '@flighthq/render-gl/contract';
|
|
3
|
+
// Installs the closed-ring/pathology-aware stroke kernel only for states that need it. Ordinary shape
|
|
4
|
+
// bundles keep the compact open-outline mesh lane and rasterize closed strokes.
|
|
5
|
+
export function enableGlStrokePathTessellation(state) {
|
|
6
|
+
getGlRenderStateRuntime(state).strokeTessellator = tessellateStrokePath;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=enableGlStrokePathTessellation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enableGlStrokePathTessellation.js","sourceRoot":"","sources":["../src/enableGlStrokePathTessellation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAGvE,sGAAsG;AACtG,gFAAgF;AAChF,MAAM,UAAU,8BAA8B,CAAC,KAAoB;IACjE,uBAAuB,CAAC,KAAK,CAAC,CAAC,iBAAiB,GAAG,oBAAoB,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { GlRenderState, Scene2DKindUsage, SceneCoverageEntry } from '@flighthq/types/contract';
|
|
2
|
+
export declare function explainGlScene2DCoverage(out: SceneCoverageEntry[], state: GlRenderState, usage: Readonly<Scene2DKindUsage>): void;
|
|
3
|
+
export declare function hasGlScene2DCoverage(state: GlRenderState, usage: Readonly<Scene2DKindUsage>): boolean;
|
|
4
|
+
//# sourceMappingURL=explainGlScene2DCoverage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explainGlScene2DCoverage.d.ts","sourceRoot":"","sources":["../src/explainGlScene2DCoverage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AASpG,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,kBAAkB,EAAE,EACzB,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAChC,IAAI,CAGN;AAID,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAGrG"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { getGlRenderStateRuntime } from '@flighthq/render-gl/contract';
|
|
2
|
+
import { explainScene2DCoverage, hasScene2DCoverage } from '@flighthq/render/contract';
|
|
3
|
+
import { RenderRegistry, SceneCoverage, StandardMaterialKind } from '@flighthq/types/contract';
|
|
4
|
+
// Clears `out`, then reports every requirement in `usage` with how well this GL state is wired for it —
|
|
5
|
+
// satisfied entries included, so one call is a complete manifest.
|
|
6
|
+
//
|
|
7
|
+
// Composes rather than restates: the node-renderer and shape-command registries live on the base render
|
|
8
|
+
// state and are answered by explainScene2DCoverage for every backend alike, so this appends only what is
|
|
9
|
+
// GL's own — blend realizations and 2D material renderers.
|
|
10
|
+
export function explainGlScene2DCoverage(out, state, usage) {
|
|
11
|
+
explainScene2DCoverage(out, state, usage);
|
|
12
|
+
collectGlScene2DCoverageGaps(out, state, usage, false);
|
|
13
|
+
}
|
|
14
|
+
// Whether this state can serve everything `usage` names, GL specifics included. Stops at the first
|
|
15
|
+
// shortfall and never allocates. Use the explain form to find out WHICH requirement and how badly.
|
|
16
|
+
export function hasGlScene2DCoverage(state, usage) {
|
|
17
|
+
if (!hasScene2DCoverage(state, usage))
|
|
18
|
+
return false;
|
|
19
|
+
return !collectGlScene2DCoverageGaps(null, state, usage, true);
|
|
20
|
+
}
|
|
21
|
+
// Appends the GL-only half. `found` counts only real shortfalls, so appending satisfied entries never
|
|
22
|
+
// flips the predicate.
|
|
23
|
+
function collectGlScene2DCoverageGaps(out, state, usage, stopAtFirst) {
|
|
24
|
+
let found = false;
|
|
25
|
+
const runtime = getGlRenderStateRuntime(state);
|
|
26
|
+
// GL composites through an explicit per-mode realization; an unregistered mode falls back to normal
|
|
27
|
+
// compositing, so the node still draws but not as authored. Canvas and DOM express these natively and
|
|
28
|
+
// report nothing here, which is why this half is GL's and not the shared check's.
|
|
29
|
+
const blendModes = runtime.glBlendModeRegistry;
|
|
30
|
+
for (let i = 0; i < usage.blendModes.length; i++) {
|
|
31
|
+
const kind = usage.blendModes[i];
|
|
32
|
+
if (blendModes?.has(kind) === true) {
|
|
33
|
+
out?.push({ coverage: SceneCoverage.Satisfied, kind, registry: RenderRegistry.BlendRealization });
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
found = true;
|
|
37
|
+
if (stopAtFirst)
|
|
38
|
+
return true;
|
|
39
|
+
out?.push({ coverage: SceneCoverage.Fallback, kind, registry: RenderRegistry.BlendRealization });
|
|
40
|
+
}
|
|
41
|
+
// resolveGlMaterialRenderer falls back to whatever is registered for StandardMaterialKind, so an
|
|
42
|
+
// unregistered kind may still draw — as the standard material, which is a downgrade worth naming
|
|
43
|
+
// rather than a silence, and is NOT the same as nothing being registered at all.
|
|
44
|
+
const materials = runtime.materialRendererMap;
|
|
45
|
+
const hasStandard = materials?.has(StandardMaterialKind) === true;
|
|
46
|
+
for (let i = 0; i < usage.materialKinds.length; i++) {
|
|
47
|
+
const kind = usage.materialKinds[i];
|
|
48
|
+
if (materials?.has(kind) === true) {
|
|
49
|
+
out?.push({ coverage: SceneCoverage.Satisfied, kind, registry: RenderRegistry.MaterialRenderer });
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
found = true;
|
|
53
|
+
if (stopAtFirst)
|
|
54
|
+
return true;
|
|
55
|
+
out?.push({
|
|
56
|
+
coverage: hasStandard ? SceneCoverage.Fallback : SceneCoverage.Missing,
|
|
57
|
+
kind,
|
|
58
|
+
registry: RenderRegistry.MaterialRenderer,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
return found;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=explainGlScene2DCoverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explainGlScene2DCoverage.js","sourceRoot":"","sources":["../src/explainGlScene2DCoverage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glBitmapText.d.ts","sourceRoot":"","sources":["../src/glBitmapText.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"glBitmapText.d.ts","sourceRoot":"","sources":["../src/glBitmapText.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAKV,cAAc,EACf,MAAM,0BAA0B,CAAC;AAsGlC,eAAO,MAAM,2BAA2B,EAAE,cAIzC,CAAC"}
|
package/dist/glBitmapText.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { getGlRenderStateRuntime, resolveGlMaterialRenderer, resolveGlTexture } from '@flighthq/render-gl/contract';
|
|
2
|
+
import { SCENE2D_WORKING_COLOR_SPACE } from '@flighthq/render/contract';
|
|
3
3
|
import { noopRendererData } from '@flighthq/render/contract';
|
|
4
4
|
import { getNode2DRuntime } from '@flighthq/scene2d/contract';
|
|
5
|
+
import { getTextureHeight, getTextureWidth, hasTextureSource } from '@flighthq/texture/contract';
|
|
5
6
|
import { BatchFormat } from '@flighthq/types/contract';
|
|
6
|
-
import { ensureGlQuadBatchShader,
|
|
7
|
+
import { ensureGlQuadBatchShader, packGlQuadBatchMaterialInstance, prepareGlQuadBatchWrite, recordGlQuadBatchColorScaleBias, } from './glQuadBatchWriter';
|
|
7
8
|
// Per-instance stride, matching the QuadBatch/Tilemap sprite path (13 floats: world transform + region +
|
|
8
9
|
// uv + alpha). See glQuadBatch.
|
|
9
10
|
const INSTANCE_FLOATS = 13;
|
|
10
11
|
// Draws a BitmapText leaf: one batched sprite pass per glyph-atlas page (each page binds its own atlas
|
|
11
12
|
// image, so a multi-page source issues one draw per page). The node's resolved color adjustment folds in
|
|
12
|
-
// as a whole-node tint on every glyph — the same `
|
|
13
|
+
// as a whole-node tint on every glyph — the same `recordGlQuadBatchColorScaleBias` path a tinted
|
|
13
14
|
// QuadBatch uses — realized only when `registerGlColorAdjustmentMaterialFeature` has installed the fold. Mirrors
|
|
14
15
|
// `submitGlQuadBatch`'s vector2 inner loop, sourced from the page's own `ids`/`transforms` arrays.
|
|
15
16
|
function submitGlBitmapText(state, node) {
|
|
@@ -32,19 +33,23 @@ function submitGlBitmapText(state, node) {
|
|
|
32
33
|
const alpha = node.alpha;
|
|
33
34
|
for (const page of pages) {
|
|
34
35
|
const atlas = page.atlas;
|
|
35
|
-
const
|
|
36
|
-
if (
|
|
36
|
+
const texture = atlas.texture;
|
|
37
|
+
if (texture === null || !hasTextureSource(texture) || page.instanceCount === 0)
|
|
37
38
|
continue;
|
|
39
|
+
const glTexture = resolveGlTexture(state, texture, true, SCENE2D_WORKING_COLOR_SPACE);
|
|
40
|
+
if (glTexture === null)
|
|
41
|
+
continue;
|
|
42
|
+
const straightAlpha = runtime.currentTextureStraightAlpha;
|
|
38
43
|
ensureGlQuadBatchShader(state);
|
|
39
|
-
//
|
|
44
|
+
// prepareGlQuadBatchWrite may flush the prior page's batch (each page binds a different image), so
|
|
40
45
|
// read the running instance count AFTER it so material/color-adjustment indices align with `base`.
|
|
41
|
-
const base =
|
|
42
|
-
const startCount = runtime.
|
|
46
|
+
const base = prepareGlQuadBatchWrite(state, glTexture, straightAlpha, texture.sampler, node.blendMode, material, materialRenderer, page.instanceCount);
|
|
47
|
+
const startCount = runtime.quadBatchWriterCount;
|
|
43
48
|
const regions = atlas.regions;
|
|
44
49
|
const numRegions = regions.length;
|
|
45
|
-
const iw = 1 / (
|
|
46
|
-
const ih = 1 / (
|
|
47
|
-
const instanceData = runtime.
|
|
50
|
+
const iw = 1 / Math.max(1, getTextureWidth(texture));
|
|
51
|
+
const ih = 1 / Math.max(1, getTextureHeight(texture));
|
|
52
|
+
const instanceData = runtime.quadBatchWriterInstanceData;
|
|
48
53
|
const ids = page.ids;
|
|
49
54
|
const transforms = page.transforms;
|
|
50
55
|
let writeBase = base;
|
|
@@ -71,12 +76,12 @@ function submitGlBitmapText(state, node) {
|
|
|
71
76
|
instanceData[writeBase + 10] = (region.x + region.width) * iw;
|
|
72
77
|
instanceData[writeBase + 11] = (region.y + region.height) * ih;
|
|
73
78
|
instanceData[writeBase + 12] = alpha;
|
|
74
|
-
|
|
75
|
-
|
|
79
|
+
packGlQuadBatchMaterialInstance(state, nodeMaterialData, startCount + drawCount);
|
|
80
|
+
recordGlQuadBatchColorScaleBias(state, nodeColorScaleBias, startCount + drawCount);
|
|
76
81
|
writeBase += INSTANCE_FLOATS;
|
|
77
82
|
drawCount++;
|
|
78
83
|
}
|
|
79
|
-
runtime.
|
|
84
|
+
runtime.quadBatchWriterCount += drawCount;
|
|
80
85
|
}
|
|
81
86
|
}
|
|
82
87
|
export const defaultGlBitmapTextRenderer = {
|
package/dist/glBitmapText.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glBitmapText.js","sourceRoot":"","sources":["../src/glBitmapText.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"glBitmapText.js","sourceRoot":"","sources":["../src/glBitmapText.ts"],"names":[],"mappings":"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"}
|
package/dist/glCache.d.ts
CHANGED
|
@@ -22,8 +22,8 @@ export declare function getGlRenderCacheTarget(state: GlRenderState, cache: Rend
|
|
|
22
22
|
* Bakes `source`'s subtree into its cache target using the offscreen `cacheState`, then records
|
|
23
23
|
* the transform that places the result back in scene space. Returns whether a bake happened —
|
|
24
24
|
* the offscreen state's own dirtiness decides it (honoring its sceneGraphSyncPolicy), so this is
|
|
25
|
-
* cheap to call every frame.
|
|
26
|
-
*
|
|
25
|
+
* cheap to call every frame. The render-pass bracket owns the shared GL context while the cache
|
|
26
|
+
* state bakes, then restores the screen pass and invalidates both states' binding caches.
|
|
27
27
|
*/
|
|
28
28
|
export declare function refreshGlRenderCache(cacheState: GlRenderState, cache: RenderCache, source: Node2D, options?: Readonly<RenderCacheRefreshOptions>): boolean;
|
|
29
29
|
export declare function releaseGlRenderCache(state: GlRenderState, cache: RenderCache): void;
|
package/dist/glCache.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glCache.d.ts","sourceRoot":"","sources":["../src/glCache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"glCache.d.ts","sourceRoot":"","sources":["../src/glCache.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACV,MAAM,EACN,eAAe,EACf,aAAa,EACb,cAAc,EAEd,WAAW,EACX,yBAAyB,EAE1B,MAAM,0BAA0B,CAAC;AAKlC;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,aAAa,GAAG,aAAa,CAM5E;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,cAAc,CAUhB;AAID,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CAE/E;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,GAAG,cAAc,GAAG,IAAI,CAEtG;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,aAAa,EACzB,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,QAAQ,CAAC,yBAAyB,CAAC,GAC5C,OAAO,CAkCT;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAOnF;AA0BD,eAAO,MAAM,4BAA4B,EAAE,eAG1C,CAAC"}
|
package/dist/glCache.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { createMatrix, createRectangle } from '@flighthq/geometry/contract';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { computeScene2DRenderTargetTransform, computeRenderCacheTransform, computeRenderTargetSize, copyAllRenderersFromRenderState, createRenderState, getRenderProxyCache, noopRendererData, prepareScene2DRender, registerRenderCacheRenderer, } from '@flighthq/render/contract';
|
|
6
|
-
import { EntityRuntimeKey } from '@flighthq/types/contract';
|
|
2
|
+
import { computeNodeRootLocalBoundsRectangle } from '@flighthq/node/contract';
|
|
3
|
+
import { beginGlRenderPass, createGlOffscreenRenderState, createGlRenderTarget, destroyGlRenderTarget, drawGlRenderTargetResult, endGlRenderPass, resizeGlRenderTarget, setGlRenderTransform2D, } from '@flighthq/render-gl/contract';
|
|
4
|
+
import { computeScene2DRenderTargetTransform, computeRenderCacheTransform, computeRenderTargetSize, getRenderProxyCache, noopRendererData, prepareScene2DRender, registerRenderCacheRenderer, } from '@flighthq/render/contract';
|
|
7
5
|
import { renderGlScene2D } from './glNode2D';
|
|
8
|
-
import {
|
|
6
|
+
import { flushGlQuadBatchWriter } from './glQuadBatchWriter';
|
|
9
7
|
/**
|
|
10
8
|
* Creates an offscreen render state for baking render caches consumed by `screenState`.
|
|
11
9
|
*
|
|
@@ -16,64 +14,9 @@ import { flushGlSpriteBatch } from './glSpriteBatch';
|
|
|
16
14
|
* neither substitutes a cache into itself nor disturbs the screen state's nodes.
|
|
17
15
|
*/
|
|
18
16
|
export function createGlCacheState(screenState) {
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
pixelRatio: screenState.pixelRatio,
|
|
23
|
-
renderTransform2D: createMatrix(),
|
|
24
|
-
roundPixels: screenState.roundPixels,
|
|
25
|
-
sceneGraphSyncPolicy: screenState.sceneGraphSyncPolicy,
|
|
26
|
-
});
|
|
27
|
-
// Attach the cache runtime before copying renderers: copyAllRenderersFromRenderState registers
|
|
28
|
-
// into the runtime's rendererMap, so the backend runtime must already be installed.
|
|
29
|
-
const cacheRuntime = createGlRenderStateRuntime();
|
|
30
|
-
cacheState[EntityRuntimeKey] = cacheRuntime;
|
|
31
|
-
copyAllRenderersFromRenderState(cacheState, screenState);
|
|
32
|
-
cacheState.applyBlendMode = screenState.applyBlendMode;
|
|
33
|
-
cacheState.canvas = screenState.canvas;
|
|
34
|
-
cacheState.gl = screenState.gl;
|
|
35
|
-
cacheRuntime.defaultBitmapShader = screenRuntime.defaultBitmapShader;
|
|
36
|
-
cacheRuntime.particleShader = screenRuntime.particleShader;
|
|
37
|
-
cacheRuntime.particleCornerBuffer = screenRuntime.particleCornerBuffer;
|
|
38
|
-
cacheRuntime.particleInstanceBuffer = screenRuntime.particleInstanceBuffer;
|
|
39
|
-
cacheRuntime.particleInstanceData = screenRuntime.particleInstanceData;
|
|
40
|
-
cacheRuntime.quadBatchShader = screenRuntime.quadBatchShader;
|
|
41
|
-
cacheRuntime.quadBatchCornerBuffer = screenRuntime.quadBatchCornerBuffer;
|
|
42
|
-
cacheRuntime.colorScaleBiasInstancedShader = screenRuntime.colorScaleBiasInstancedShader;
|
|
43
|
-
cacheRuntime.uniformColorScaleBiasShader = screenRuntime.uniformColorScaleBiasShader;
|
|
44
|
-
// Propagate the opt-in color-adjustment fold + guard so tinted nodes inside a cached subtree fold
|
|
45
|
-
// the same way when baked offscreen. Their per-batch CT data lives on cacheRuntime, lazily grown.
|
|
46
|
-
cacheRuntime.glColorAdjustmentMaterialFeature = screenRuntime.glColorAdjustmentMaterialFeature;
|
|
47
|
-
cacheRuntime.glColorAdjustmentMaterialFeatureGuard = screenRuntime.glColorAdjustmentMaterialFeatureGuard;
|
|
48
|
-
cacheRuntime.materialRendererMap = screenRuntime.materialRendererMap;
|
|
49
|
-
cacheRuntime.materialBitmapShaderMap = screenRuntime.materialBitmapShaderMap;
|
|
50
|
-
cacheRuntime.shaderLoc = screenRuntime.shaderLoc;
|
|
51
|
-
cacheRuntime.textureCache = screenRuntime.textureCache;
|
|
52
|
-
cacheRuntime.quadVertexBuffer = screenRuntime.quadVertexBuffer;
|
|
53
|
-
cacheRuntime.quadIndexBuffer = screenRuntime.quadIndexBuffer;
|
|
54
|
-
cacheRuntime.quadVertexData = screenRuntime.quadVertexData;
|
|
55
|
-
cacheRuntime.matrixArray = screenRuntime.matrixArray;
|
|
56
|
-
cacheRuntime.currentBlendMode = null;
|
|
57
|
-
cacheRuntime.currentFramebuffer = null;
|
|
58
|
-
cacheRuntime.currentMaskDepth = 0;
|
|
59
|
-
cacheRuntime.currentProgram = null;
|
|
60
|
-
cacheRuntime.currentScissorRect = null;
|
|
61
|
-
cacheRuntime.currentTexture = null;
|
|
62
|
-
cacheRuntime.currentTextureStraightAlpha = false;
|
|
63
|
-
cacheRuntime.flushPendingDraws = null;
|
|
64
|
-
cacheRuntime.renderTargetViewport = null;
|
|
65
|
-
cacheRuntime.scissorStack = [];
|
|
66
|
-
cacheRuntime.spriteBatchBlendMode = null;
|
|
67
|
-
cacheRuntime.spriteBatchMaterial = null;
|
|
68
|
-
cacheRuntime.spriteBatchMaterialRenderer = null;
|
|
69
|
-
cacheRuntime.spriteBatchMaterialFloats = 0;
|
|
70
|
-
cacheRuntime.spriteBatchMaterialData = new Float32Array(0);
|
|
71
|
-
cacheRuntime.spriteBatchMaterialBuffer = null;
|
|
72
|
-
cacheRuntime.spriteBatchCount = 0;
|
|
73
|
-
cacheRuntime.spriteBatchInstanceBuffer = null;
|
|
74
|
-
cacheRuntime.spriteBatchInstanceData = new Float32Array(0);
|
|
75
|
-
cacheRuntime.spriteBatchTexture = null;
|
|
76
|
-
cacheRuntime.spriteBatchSmoothing = null;
|
|
17
|
+
const cacheState = createGlOffscreenRenderState(screenState);
|
|
18
|
+
// Adapter maps are deliberately fresh on the derived state. In particular, the cache adapter
|
|
19
|
+
// attached on the screen state is absent while this state renders the content that populates it.
|
|
77
20
|
_cacheStateScreen.set(cacheState, screenState);
|
|
78
21
|
return cacheState;
|
|
79
22
|
}
|
|
@@ -109,15 +52,15 @@ export function getGlRenderCacheTarget(state, cache) {
|
|
|
109
52
|
* Bakes `source`'s subtree into its cache target using the offscreen `cacheState`, then records
|
|
110
53
|
* the transform that places the result back in scene space. Returns whether a bake happened —
|
|
111
54
|
* the offscreen state's own dirtiness decides it (honoring its sceneGraphSyncPolicy), so this is
|
|
112
|
-
* cheap to call every frame.
|
|
113
|
-
*
|
|
55
|
+
* cheap to call every frame. The render-pass bracket owns the shared GL context while the cache
|
|
56
|
+
* state bakes, then restores the screen pass and invalidates both states' binding caches.
|
|
114
57
|
*/
|
|
115
58
|
export function refreshGlRenderCache(cacheState, cache, source, options) {
|
|
116
59
|
const screenState = getGlRenderCacheScreenState(cacheState);
|
|
117
60
|
const padding = options?.padding ?? 0;
|
|
118
61
|
const minWidth = options?.minWidth ?? 1;
|
|
119
62
|
const minHeight = options?.minHeight ?? 1;
|
|
120
|
-
|
|
63
|
+
computeNodeRootLocalBoundsRectangle(_bounds, source);
|
|
121
64
|
const { width, height } = computeRenderTargetSize(_bounds, padding, minWidth, minHeight);
|
|
122
65
|
const existing = getGlRenderCacheTarget(screenState, cache);
|
|
123
66
|
const resized = existing === null || existing.width !== width || existing.height !== height;
|
|
@@ -128,30 +71,19 @@ export function refreshGlRenderCache(cacheState, cache, source, options) {
|
|
|
128
71
|
// retained cache content on the not-dirty path. The cache's local-space transform is set explicitly,
|
|
129
72
|
// since a pass no longer carries one.
|
|
130
73
|
beginGlRenderPass(cacheState, target, { preserveColor: true, preserveDepth: true });
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
cacheRuntime.currentScissorRect = null;
|
|
144
|
-
cacheState.gl.clearColor(0, 0, 0, 0);
|
|
145
|
-
cacheState.gl.clear(cacheState.gl.COLOR_BUFFER_BIT);
|
|
146
|
-
renderGlScene2D(cacheState, source);
|
|
74
|
+
let dirty = false;
|
|
75
|
+
try {
|
|
76
|
+
setGlRenderTransform2D(cacheState, _renderTransform);
|
|
77
|
+
dirty = prepareScene2DRender(cacheState, source);
|
|
78
|
+
if (dirty || resized) {
|
|
79
|
+
cacheState.gl.clearColor(0, 0, 0, 0);
|
|
80
|
+
cacheState.gl.clear(cacheState.gl.COLOR_BUFFER_BIT);
|
|
81
|
+
renderGlScene2D(cacheState, source);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
finally {
|
|
85
|
+
endGlRenderPass(cacheState);
|
|
147
86
|
}
|
|
148
|
-
endGlRenderPass(cacheState);
|
|
149
|
-
const screenRuntime = getGlRenderStateRuntime(screenState);
|
|
150
|
-
screenRuntime.currentBlendMode = null;
|
|
151
|
-
screenRuntime.currentProgram = null;
|
|
152
|
-
screenRuntime.currentScissorRect = null;
|
|
153
|
-
screenRuntime.currentTexture = null;
|
|
154
|
-
screenRuntime.currentTextureStraightAlpha = false;
|
|
155
87
|
return dirty || resized;
|
|
156
88
|
}
|
|
157
89
|
export function releaseGlRenderCache(state, cache) {
|
|
@@ -171,10 +103,10 @@ function drawGlRenderCache(state, renderProxy) {
|
|
|
171
103
|
if (target === undefined)
|
|
172
104
|
return;
|
|
173
105
|
// Drain pending batched geometry before the immediate composite quad. Like every other
|
|
174
|
-
// immediate-draw renderer (RichText,
|
|
106
|
+
// immediate-draw renderer (RichText, Scale9), this bypasses the quad-batch writer; without the
|
|
175
107
|
// flush the cached result draws ahead of geometry submitted earlier in the walk, which only
|
|
176
108
|
// flushes at the end — producing out-of-order replay (a doubled image on Gl).
|
|
177
|
-
|
|
109
|
+
flushGlQuadBatchWriter(state);
|
|
178
110
|
// renderProxy.transform2D already carries the cache placement transform (folded in by the
|
|
179
111
|
// adapter), so the target composites with an identity offset.
|
|
180
112
|
drawGlRenderTargetResult(state, renderProxy, target, _identity);
|
package/dist/glCache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glCache.js","sourceRoot":"","sources":["../src/glCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"glCache.js","sourceRoot":"","sources":["../src/glCache.ts"],"names":[],"mappings":"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"}
|
package/dist/glClipContours.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createGlProgram } from '@flighthq/render-gl/contract';
|
|
2
2
|
import { getGlRenderStateRuntime } from '@flighthq/render-gl/contract';
|
|
3
|
-
import {
|
|
3
|
+
import { flushGlQuadBatchWriter } from './glQuadBatchWriter';
|
|
4
4
|
// Stencil-then-cover fill of arbitrary flattened contours, used to realize a *path* ClipRegion exactly
|
|
5
5
|
// (crisp at any zoom — the contours are transformed in the vertex shader each frame, never cached as a
|
|
6
6
|
// texture). This is the contour counterpart to webglClipRectangle's scissor and replaces the old mask
|
|
@@ -33,7 +33,7 @@ precision mediump float;
|
|
|
33
33
|
void main() { gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); }
|
|
34
34
|
`;
|
|
35
35
|
export function popGlClipContours(state) {
|
|
36
|
-
|
|
36
|
+
flushGlQuadBatchWriter(state);
|
|
37
37
|
const runtime = getGlRenderStateRuntime(state);
|
|
38
38
|
const gl = state.gl;
|
|
39
39
|
const nextDepth = Math.max(0, (runtime.currentMaskDepth ?? 0) - 1);
|
|
@@ -47,7 +47,7 @@ export function popGlClipContours(state) {
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
export function pushGlClipContours(state, contours, winding, worldTransform) {
|
|
50
|
-
|
|
50
|
+
flushGlQuadBatchWriter(state);
|
|
51
51
|
const runtime = getGlRenderStateRuntime(state);
|
|
52
52
|
const gl = state.gl;
|
|
53
53
|
const depth = runtime.currentMaskDepth ?? 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glClipContours.js","sourceRoot":"","sources":["../src/glClipContours.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAGvE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"glClipContours.js","sourceRoot":"","sources":["../src/glClipContours.ts"],"names":[],"mappings":"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"}
|