@flighthq/displayobject-gl 0.1.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/glBitmap.d.ts +4 -0
- package/dist/glBitmap.d.ts.map +1 -0
- package/dist/glBitmap.js +106 -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 +185 -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/glColorTransformMaterial.d.ts +4 -0
- package/dist/glColorTransformMaterial.d.ts.map +1 -0
- package/dist/glColorTransformMaterial.js +116 -0
- package/dist/glColorTransformMaterial.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/glDisplayObject.d.ts +5 -0
- package/dist/glDisplayObject.d.ts.map +1 -0
- package/dist/glDisplayObject.js +41 -0
- package/dist/glDisplayObject.js.map +1 -0
- package/dist/glDisplayObjectRegistration.d.ts +25 -0
- package/dist/glDisplayObjectRegistration.d.ts.map +1 -0
- package/dist/glDisplayObjectRegistration.js +51 -0
- package/dist/glDisplayObjectRegistration.js.map +1 -0
- package/dist/glMaterials.d.ts +4 -0
- package/dist/glMaterials.d.ts.map +1 -0
- package/dist/glMaterials.js +97 -0
- package/dist/glMaterials.js.map +1 -0
- package/dist/glParticleEmitter.d.ts +4 -0
- package/dist/glParticleEmitter.d.ts.map +1 -0
- package/dist/glParticleEmitter.js +258 -0
- package/dist/glParticleEmitter.js.map +1 -0
- package/dist/glQuadBatch.d.ts +3 -0
- package/dist/glQuadBatch.d.ts.map +1 -0
- package/dist/glQuadBatch.js +88 -0
- package/dist/glQuadBatch.js.map +1 -0
- package/dist/glRichText.d.ts +9 -0
- package/dist/glRichText.d.ts.map +1 -0
- package/dist/glRichText.js +149 -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 +125 -0
- package/dist/glShape.js.map +1 -0
- package/dist/glShapeMesh.d.ts +9 -0
- package/dist/glShapeMesh.d.ts.map +1 -0
- package/dist/glShapeMesh.js +90 -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 +241 -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 +50 -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 +130 -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 +74 -0
- package/dist/glTilemap.js.map +1 -0
- package/dist/glUniformColorTransformMaterial.d.ts +4 -0
- package/dist/glUniformColorTransformMaterial.d.ts.map +1 -0
- package/dist/glUniformColorTransformMaterial.js +56 -0
- package/dist/glUniformColorTransformMaterial.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 +60 -0
- package/dist/glVideo.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -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 +51 -0
- package/src/glBitmap.test.ts +128 -0
- package/src/glCache.test.ts +230 -0
- package/src/glClip.test.ts +101 -0
- package/src/glClipContours.test.ts +61 -0
- package/src/glClipRectangle.test.ts +47 -0
- package/src/glColorTransformMaterial.test.ts +45 -0
- package/src/glDefaultMaterial.test.ts +19 -0
- package/src/glDisplayObject.test.ts +85 -0
- package/src/glDisplayObjectRegistration.test.ts +130 -0
- package/src/glMaterials.test.ts +91 -0
- package/src/glParticleEmitter.test.ts +98 -0
- package/src/glQuadBatch.test.ts +132 -0
- package/src/glRichText.test.ts +135 -0
- package/src/glScale9Mapper.test.ts +20 -0
- package/src/glScale9Shape.test.ts +90 -0
- package/src/glShape.test.ts +115 -0
- package/src/glShapeMesh.test.ts +64 -0
- package/src/glSprite.test.ts +79 -0
- package/src/glSpriteBatch.test.ts +153 -0
- package/src/glSpriteRenderer.test.ts +75 -0
- package/src/glTextInput.test.ts +51 -0
- package/src/glTextLabel.test.ts +151 -0
- package/src/glTilemap.test.ts +127 -0
- package/src/glUniformColorTransformMaterial.test.ts +24 -0
- package/src/glVelocity.test.ts +155 -0
- package/src/glVideo.test.ts +65 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { getGlRenderStateRuntime } from '@flighthq/render-gl';
|
|
2
|
+
import { flushGlSpriteBatch } from './glSpriteBatch';
|
|
3
|
+
export function popGlClipRectangle(state) {
|
|
4
|
+
const runtime = getGlRenderStateRuntime(state);
|
|
5
|
+
const stack = getScissorStack(state);
|
|
6
|
+
stack.pop();
|
|
7
|
+
const previous = stack.length > 0 ? stack[stack.length - 1] : null;
|
|
8
|
+
runtime.currentScissorRect = previous;
|
|
9
|
+
flushGlSpriteBatch(state);
|
|
10
|
+
const gl = state.gl;
|
|
11
|
+
if (previous === null) {
|
|
12
|
+
gl.disable(gl.SCISSOR_TEST);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
gl.scissor(previous.x, previous.y, previous.width, previous.height);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export function pushGlClipRectangle(state, rect, transform) {
|
|
19
|
+
const runtime = getGlRenderStateRuntime(state);
|
|
20
|
+
const next = intersectScissorRect(runtime.currentScissorRect ?? null, computeScissorRect(state, rect, transform));
|
|
21
|
+
runtime.currentScissorRect = next;
|
|
22
|
+
getScissorStack(state).push(next);
|
|
23
|
+
flushGlSpriteBatch(state);
|
|
24
|
+
const gl = state.gl;
|
|
25
|
+
gl.enable(gl.SCISSOR_TEST);
|
|
26
|
+
gl.scissor(next.x, next.y, next.width, next.height);
|
|
27
|
+
}
|
|
28
|
+
function computeScissorRect(state, rect, transform) {
|
|
29
|
+
const x0 = transform.a * rect.x + transform.c * rect.y + transform.tx;
|
|
30
|
+
const y0 = transform.b * rect.x + transform.d * rect.y + transform.ty;
|
|
31
|
+
const x1 = transform.a * (rect.x + rect.width) + transform.c * rect.y + transform.tx;
|
|
32
|
+
const y1 = transform.b * (rect.x + rect.width) + transform.d * rect.y + transform.ty;
|
|
33
|
+
const x2 = transform.a * rect.x + transform.c * (rect.y + rect.height) + transform.tx;
|
|
34
|
+
const y2 = transform.b * rect.x + transform.d * (rect.y + rect.height) + transform.ty;
|
|
35
|
+
const x3 = transform.a * (rect.x + rect.width) + transform.c * (rect.y + rect.height) + transform.tx;
|
|
36
|
+
const y3 = transform.b * (rect.x + rect.width) + transform.d * (rect.y + rect.height) + transform.ty;
|
|
37
|
+
const viewport = getGlRenderStateRuntime(state).renderTargetViewport ?? state.canvas;
|
|
38
|
+
const minX = Math.max(0, Math.floor(Math.min(x0, x1, x2, x3)));
|
|
39
|
+
const maxX = Math.min(viewport.width, Math.ceil(Math.max(x0, x1, x2, x3)));
|
|
40
|
+
const minY = Math.max(0, Math.floor(Math.min(y0, y1, y2, y3)));
|
|
41
|
+
const maxY = Math.min(viewport.height, Math.ceil(Math.max(y0, y1, y2, y3)));
|
|
42
|
+
return {
|
|
43
|
+
height: Math.max(0, maxY - minY),
|
|
44
|
+
width: Math.max(0, maxX - minX),
|
|
45
|
+
x: minX,
|
|
46
|
+
y: Math.max(0, viewport.height - maxY),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function getScissorStack(state) {
|
|
50
|
+
const runtime = getGlRenderStateRuntime(state);
|
|
51
|
+
runtime.scissorStack ??= [];
|
|
52
|
+
return runtime.scissorStack;
|
|
53
|
+
}
|
|
54
|
+
function intersectScissorRect(a, b) {
|
|
55
|
+
if (a === null)
|
|
56
|
+
return { height: b.height, width: b.width, x: b.x, y: b.y };
|
|
57
|
+
const x = Math.max(a.x, b.x);
|
|
58
|
+
const y = Math.max(a.y, b.y);
|
|
59
|
+
const right = Math.min(a.x + a.width, b.x + b.width);
|
|
60
|
+
const bottom = Math.min(a.y + a.height, b.y + b.height);
|
|
61
|
+
return {
|
|
62
|
+
height: Math.max(0, bottom - y),
|
|
63
|
+
width: Math.max(0, right - x),
|
|
64
|
+
x,
|
|
65
|
+
y,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=glClipRectangle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glClipRectangle.js","sourceRoot":"","sources":["../src/glClipRectangle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { GlMaterialRenderer, GlRenderState } from '@flighthq/types';
|
|
2
|
+
export declare function registerGlColorTransformMaterial(state: GlRenderState): void;
|
|
3
|
+
export declare const colorTransformGlMaterialRenderer: GlMaterialRenderer;
|
|
4
|
+
//# sourceMappingURL=glColorTransformMaterial.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glColorTransformMaterial.d.ts","sourceRoot":"","sources":["../src/glColorTransformMaterial.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAkB,kBAAkB,EAAE,aAAa,EAAgB,MAAM,iBAAiB,CAAC;AA2EvG,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAE3E;AAID,eAAO,MAAM,gCAAgC,EAAE,kBAwC9C,CAAC"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { createGlProgram } from '@flighthq/render-gl';
|
|
2
|
+
import { registerGlMaterialRenderer } from '@flighthq/render-gl';
|
|
3
|
+
import { getGlRenderStateRuntime } from '@flighthq/render-gl';
|
|
4
|
+
import { ColorTransformMaterialKind } from '@flighthq/types';
|
|
5
|
+
import { bindGlQuadBatchBaseAttributes, setGlQuadBatchWorldAndTexture, useGlQuadBatchProgram } from './glSpriteBatch';
|
|
6
|
+
const COLOR_TRANSFORM_INSTANCE_FLOATS = 8;
|
|
7
|
+
const COLOR_TRANSFORM_INSTANCE_STRIDE = COLOR_TRANSFORM_INSTANCE_FLOATS * 4;
|
|
8
|
+
const CT_INSTANCED_VS = `#version 300 es
|
|
9
|
+
precision mediump float;
|
|
10
|
+
|
|
11
|
+
layout(location = 0) in vec2 a_corner;
|
|
12
|
+
layout(location = 1) in vec2 a_matAB;
|
|
13
|
+
layout(location = 2) in vec2 a_matCD;
|
|
14
|
+
layout(location = 3) in vec2 a_matTXTY;
|
|
15
|
+
layout(location = 4) in vec2 a_size;
|
|
16
|
+
layout(location = 5) in vec4 a_uvRect;
|
|
17
|
+
layout(location = 6) in float a_alpha;
|
|
18
|
+
layout(location = 7) in vec4 a_ctMult;
|
|
19
|
+
layout(location = 8) in vec4 a_ctOff;
|
|
20
|
+
|
|
21
|
+
uniform mat3 u_world;
|
|
22
|
+
|
|
23
|
+
out vec2 v_texCoord;
|
|
24
|
+
out float v_alpha;
|
|
25
|
+
out vec4 v_ctMult;
|
|
26
|
+
out vec4 v_ctOff;
|
|
27
|
+
|
|
28
|
+
void main() {
|
|
29
|
+
vec2 local = a_corner * a_size;
|
|
30
|
+
vec2 worldPos = vec2(
|
|
31
|
+
a_matAB.x * local.x + a_matCD.x * local.y + a_matTXTY.x,
|
|
32
|
+
a_matAB.y * local.x + a_matCD.y * local.y + a_matTXTY.y
|
|
33
|
+
);
|
|
34
|
+
vec3 clip = u_world * vec3(worldPos, 1.0);
|
|
35
|
+
gl_Position = vec4(clip.xy, 0.0, 1.0);
|
|
36
|
+
v_texCoord = mix(a_uvRect.xy, a_uvRect.zw, a_corner);
|
|
37
|
+
v_alpha = a_alpha;
|
|
38
|
+
v_ctMult = a_ctMult;
|
|
39
|
+
v_ctOff = a_ctOff;
|
|
40
|
+
}`;
|
|
41
|
+
const CT_INSTANCED_FS = `#version 300 es
|
|
42
|
+
precision mediump float;
|
|
43
|
+
in vec2 v_texCoord;
|
|
44
|
+
in float v_alpha;
|
|
45
|
+
in vec4 v_ctMult;
|
|
46
|
+
in vec4 v_ctOff;
|
|
47
|
+
uniform sampler2D u_texture;
|
|
48
|
+
out vec4 fragColor;
|
|
49
|
+
void main() {
|
|
50
|
+
vec4 color = texture(u_texture, v_texCoord) * clamp(v_alpha, 0.0, 1.0);
|
|
51
|
+
if (color.a <= 0.0) discard;
|
|
52
|
+
color = vec4(color.rgb / color.a, color.a);
|
|
53
|
+
color = clamp(color * v_ctMult + v_ctOff, vec4(0.0), vec4(1.0));
|
|
54
|
+
fragColor = vec4(color.rgb * color.a, color.a);
|
|
55
|
+
}`;
|
|
56
|
+
function ensureGlColorTransformInstancedShader(state) {
|
|
57
|
+
const runtime = getGlRenderStateRuntime(state);
|
|
58
|
+
if (runtime.colorTransformInstancedShader)
|
|
59
|
+
return runtime.colorTransformInstancedShader;
|
|
60
|
+
const gl = state.gl;
|
|
61
|
+
const program = createGlProgram(gl, CT_INSTANCED_VS, CT_INSTANCED_FS, 'Color-transform material');
|
|
62
|
+
runtime.colorTransformInstancedShader = {
|
|
63
|
+
program,
|
|
64
|
+
locCorner: 0,
|
|
65
|
+
locWorldMatrix: gl.getUniformLocation(program, 'u_world'),
|
|
66
|
+
locTexture: gl.getUniformLocation(program, 'u_texture'),
|
|
67
|
+
};
|
|
68
|
+
return runtime.colorTransformInstancedShader;
|
|
69
|
+
}
|
|
70
|
+
export function registerGlColorTransformMaterial(state) {
|
|
71
|
+
registerGlMaterialRenderer(state, ColorTransformMaterialKind, colorTransformGlMaterialRenderer);
|
|
72
|
+
}
|
|
73
|
+
// Per-instance color transform: reads each node's resolved color transform (materialData) and packs
|
|
74
|
+
// it as two vec4 instance attributes, so independently-tinted nodes share one batch.
|
|
75
|
+
export const colorTransformGlMaterialRenderer = {
|
|
76
|
+
instanceFloatCount: COLOR_TRANSFORM_INSTANCE_FLOATS,
|
|
77
|
+
bind(state) {
|
|
78
|
+
const runtime = getGlRenderStateRuntime(state);
|
|
79
|
+
const shader = ensureGlColorTransformInstancedShader(state);
|
|
80
|
+
useGlQuadBatchProgram(state, shader.program);
|
|
81
|
+
setGlQuadBatchWorldAndTexture(state, shader.locWorldMatrix, shader.locTexture);
|
|
82
|
+
bindGlQuadBatchBaseAttributes(state, shader.locCorner);
|
|
83
|
+
const gl = state.gl;
|
|
84
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, runtime.spriteBatchMaterialBuffer);
|
|
85
|
+
gl.enableVertexAttribArray(7);
|
|
86
|
+
gl.vertexAttribPointer(7, 4, gl.FLOAT, false, COLOR_TRANSFORM_INSTANCE_STRIDE, 0);
|
|
87
|
+
gl.vertexAttribDivisor(7, 1);
|
|
88
|
+
gl.enableVertexAttribArray(8);
|
|
89
|
+
gl.vertexAttribPointer(8, 4, gl.FLOAT, false, COLOR_TRANSFORM_INSTANCE_STRIDE, 16);
|
|
90
|
+
gl.vertexAttribDivisor(8, 1);
|
|
91
|
+
},
|
|
92
|
+
packInstance(_state, materialData, out, offset) {
|
|
93
|
+
const ct = materialData;
|
|
94
|
+
if (ct !== null) {
|
|
95
|
+
out[offset] = ct.redMultiplier;
|
|
96
|
+
out[offset + 1] = ct.greenMultiplier;
|
|
97
|
+
out[offset + 2] = ct.blueMultiplier;
|
|
98
|
+
out[offset + 3] = ct.alphaMultiplier;
|
|
99
|
+
out[offset + 4] = ct.redOffset / 255;
|
|
100
|
+
out[offset + 5] = ct.greenOffset / 255;
|
|
101
|
+
out[offset + 6] = ct.blueOffset / 255;
|
|
102
|
+
out[offset + 7] = ct.alphaOffset / 255;
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
out[offset] = 1;
|
|
106
|
+
out[offset + 1] = 1;
|
|
107
|
+
out[offset + 2] = 1;
|
|
108
|
+
out[offset + 3] = 1;
|
|
109
|
+
out[offset + 4] = 0;
|
|
110
|
+
out[offset + 5] = 0;
|
|
111
|
+
out[offset + 6] = 0;
|
|
112
|
+
out[offset + 7] = 0;
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
//# sourceMappingURL=glColorTransformMaterial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glColorTransformMaterial.js","sourceRoot":"","sources":["../src/glColorTransformMaterial.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { GlMaterialRenderer, GlRenderState } from '@flighthq/types';
|
|
2
|
+
export declare function registerDefaultGlMaterial(state: GlRenderState): void;
|
|
3
|
+
export declare const defaultGlMaterialRenderer: GlMaterialRenderer;
|
|
4
|
+
//# sourceMappingURL=glDefaultMaterial.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glDefaultMaterial.d.ts","sourceRoot":"","sources":["../src/glDefaultMaterial.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAczE,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAEpE;AAED,eAAO,MAAM,yBAAyB,EAAE,kBAQvC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { registerGlMaterialRenderer } from '@flighthq/render-gl';
|
|
2
|
+
import { DefaultMaterialKind } from '@flighthq/types';
|
|
3
|
+
import { bindGlQuadBatchBaseAttributes, ensureGlQuadBatchShader, setGlQuadBatchWorldAndTexture, useGlQuadBatchProgram, } from './glSpriteBatch';
|
|
4
|
+
// Registers the bundled default material (the plain textured-quad pipeline) under DefaultMaterialKind.
|
|
5
|
+
// It is a bundled material like any other — it has no privileged status in the render path; a node
|
|
6
|
+
// with no material renders only if a renderer is registered for DefaultMaterialKind. A user can copy
|
|
7
|
+
// this file, swap the shader, and register their own default the same way.
|
|
8
|
+
export function registerDefaultGlMaterial(state) {
|
|
9
|
+
registerGlMaterialRenderer(state, DefaultMaterialKind, defaultGlMaterialRenderer);
|
|
10
|
+
}
|
|
11
|
+
export const defaultGlMaterialRenderer = {
|
|
12
|
+
instanceFloatCount: 0,
|
|
13
|
+
bind(state) {
|
|
14
|
+
const shader = ensureGlQuadBatchShader(state);
|
|
15
|
+
useGlQuadBatchProgram(state, shader.program);
|
|
16
|
+
setGlQuadBatchWorldAndTexture(state, shader.locWorldMatrix, shader.locTexture);
|
|
17
|
+
bindGlQuadBatchBaseAttributes(state, shader.locCorner);
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=glDefaultMaterial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glDefaultMaterial.js","sourceRoot":"","sources":["../src/glDefaultMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EACL,6BAA6B,EAC7B,uBAAuB,EACvB,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,uGAAuG;AACvG,mGAAmG;AACnG,qGAAqG;AACrG,2EAA2E;AAC3E,MAAM,UAAU,yBAAyB,CAAC,KAAoB;IAC5D,0BAA0B,CAAC,KAAK,EAAE,mBAAmB,EAAE,yBAAyB,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAuB;IAC3D,kBAAkB,EAAE,CAAC;IACrB,IAAI,CAAC,KAAoB;QACvB,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC9C,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7C,6BAA6B,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAC/E,6BAA6B,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { DisplayObject, DisplayObjectRenderer, GlRenderState, RenderProxy2D } from '@flighthq/types';
|
|
2
|
+
export declare function drawGlDisplayObject(_state: GlRenderState, _renderProxy: RenderProxy2D): void;
|
|
3
|
+
export declare function renderGlDisplayObject(state: GlRenderState, source: DisplayObject): void;
|
|
4
|
+
export declare const defaultGlDisplayObjectRenderer: DisplayObjectRenderer;
|
|
5
|
+
//# sourceMappingURL=glDisplayObject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glDisplayObject.d.ts","sourceRoot":"","sources":["../src/glDisplayObject.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAI1G,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,GAAG,IAAI,CAE5F;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAiCvF;AAED,eAAO,MAAM,8BAA8B,EAAE,qBAG5C,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { getDisplayObjectRuntime } from '@flighthq/displayobject';
|
|
2
|
+
import { getRenderProxy2D, isRenderProxyVisible, noopRendererData } from '@flighthq/render';
|
|
3
|
+
import { getGlRenderStateRuntime } from '@flighthq/render-gl';
|
|
4
|
+
import { flushGlSpriteBatch } from './glSpriteBatch';
|
|
5
|
+
export function drawGlDisplayObject(_state, _renderProxy) {
|
|
6
|
+
// Plain display objects have no visual geometry of their own.
|
|
7
|
+
}
|
|
8
|
+
export function renderGlDisplayObject(state, source) {
|
|
9
|
+
const tempStack = getGlRenderStateRuntime(state).tempStack;
|
|
10
|
+
const clipHooks = state.displayObjectClipHooks;
|
|
11
|
+
let stackLength = 1;
|
|
12
|
+
tempStack[0] = source;
|
|
13
|
+
while (stackLength > 0) {
|
|
14
|
+
const current = tempStack[--stackLength];
|
|
15
|
+
if (!current.enabled)
|
|
16
|
+
continue;
|
|
17
|
+
const data = getRenderProxy2D(state, current);
|
|
18
|
+
if (data === undefined)
|
|
19
|
+
continue;
|
|
20
|
+
clipHooks?.popClip(state, data, current);
|
|
21
|
+
if (!isRenderProxyVisible(data))
|
|
22
|
+
continue;
|
|
23
|
+
clipHooks?.pushClip(state, data, current);
|
|
24
|
+
data.renderer?.submit(state, data);
|
|
25
|
+
if (data.traverseChildren) {
|
|
26
|
+
const children = getDisplayObjectRuntime(current).children;
|
|
27
|
+
if (children !== null) {
|
|
28
|
+
for (let i = children.length - 1; i >= 0; i--) {
|
|
29
|
+
tempStack[stackLength++] = children[i];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
flushGlSpriteBatch(state);
|
|
35
|
+
clipHooks?.finalize(state);
|
|
36
|
+
}
|
|
37
|
+
export const defaultGlDisplayObjectRenderer = {
|
|
38
|
+
createData: noopRendererData,
|
|
39
|
+
submit: drawGlDisplayObject,
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=glDisplayObject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glDisplayObject.js","sourceRoot":"","sources":["../src/glDisplayObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAG9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,UAAU,mBAAmB,CAAC,MAAqB,EAAE,YAA2B;IACpF,8DAA8D;AAChE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAoB,EAAE,MAAqB;IAC/E,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;IAC3D,MAAM,SAAS,GAAG,KAAK,CAAC,sBAAsB,CAAC;IAE/C,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,CAAkB,CAAC;QAC1D,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,SAAS;QAE/B,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,IAAI,KAAK,SAAS;YAAE,SAAS;QAEjC,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAEzC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAAE,SAAS;QAE1C,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAE1C,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC;YAC3D,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,CAAkB,CAAC;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC1B,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,MAAM,8BAA8B,GAA0B;IACnE,UAAU,EAAE,gBAAgB;IAC5B,MAAM,EAAE,mBAAmB;CAC5B,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { GlRenderState } from '@flighthq/types';
|
|
2
|
+
/**
|
|
3
|
+
* Registers every built-in GL display-object renderer against its kind in `state`.
|
|
4
|
+
*
|
|
5
|
+
* This is the convenience path — the tree-shakable golden path is registering each
|
|
6
|
+
* `default*Renderer` descriptor individually via `registerRenderer`. Call this when you
|
|
7
|
+
* want all renderers registered in one step and do not need to tree-shake individual leaf
|
|
8
|
+
* types. The default material must be separately registered via `registerDefaultGlMaterial`.
|
|
9
|
+
*
|
|
10
|
+
* Registered renderers:
|
|
11
|
+
* - `BitmapKind` → `defaultGlBitmapRenderer`
|
|
12
|
+
* - `DisplayObjectKind` → `defaultGlDisplayObjectRenderer`
|
|
13
|
+
* - `ParticleEmitterKind`→ `defaultGlParticleEmitterRenderer`
|
|
14
|
+
* - `QuadBatchKind` → `defaultGlQuadBatchRenderer`
|
|
15
|
+
* - `RenderCacheKind` → `defaultGlRenderCacheRenderer`
|
|
16
|
+
* - `RichTextKind` → `defaultGlRichTextRenderer`
|
|
17
|
+
* - `Scale9ShapeKind` → `defaultGlScale9ShapeRenderer`
|
|
18
|
+
* - `ShapeKind` → `defaultGlShapeRenderer`
|
|
19
|
+
* - `SpriteKind` → `defaultGlSpriteRenderer`
|
|
20
|
+
* - `TextLabelKind` → `defaultGlTextLabelRenderer`
|
|
21
|
+
* - `TilemapKind` → `defaultGlTilemapRenderer`
|
|
22
|
+
* - `VideoKind` → `defaultGlVideoRenderer`
|
|
23
|
+
*/
|
|
24
|
+
export declare function registerGlDisplayObjectRenderers(state: GlRenderState): void;
|
|
25
|
+
//# sourceMappingURL=glDisplayObjectRegistration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glDisplayObjectRegistration.d.ts","sourceRoot":"","sources":["../src/glDisplayObjectRegistration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA6BrD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAa3E"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { registerRenderer } from '@flighthq/render';
|
|
2
|
+
import { BitmapKind, DisplayObjectKind, ParticleEmitterKind, QuadBatchKind, RenderCacheKind, RichTextKind, Scale9ShapeKind, ShapeKind, SpriteKind, TextLabelKind, TilemapKind, VideoKind, } from '@flighthq/types';
|
|
3
|
+
import { defaultGlBitmapRenderer } from './glBitmap';
|
|
4
|
+
import { defaultGlRenderCacheRenderer } from './glCache';
|
|
5
|
+
import { defaultGlDisplayObjectRenderer } from './glDisplayObject';
|
|
6
|
+
import { defaultGlParticleEmitterRenderer } from './glParticleEmitter';
|
|
7
|
+
import { defaultGlQuadBatchRenderer } from './glQuadBatch';
|
|
8
|
+
import { defaultGlRichTextRenderer } from './glRichText';
|
|
9
|
+
import { defaultGlScale9ShapeRenderer } from './glScale9Shape';
|
|
10
|
+
import { defaultGlShapeRenderer } from './glShape';
|
|
11
|
+
import { defaultGlSpriteRenderer } from './glSpriteRenderer';
|
|
12
|
+
import { defaultGlTextLabelRenderer } from './glTextLabel';
|
|
13
|
+
import { defaultGlTilemapRenderer } from './glTilemap';
|
|
14
|
+
import { defaultGlVideoRenderer } from './glVideo';
|
|
15
|
+
/**
|
|
16
|
+
* Registers every built-in GL display-object renderer against its kind in `state`.
|
|
17
|
+
*
|
|
18
|
+
* This is the convenience path — the tree-shakable golden path is registering each
|
|
19
|
+
* `default*Renderer` descriptor individually via `registerRenderer`. Call this when you
|
|
20
|
+
* want all renderers registered in one step and do not need to tree-shake individual leaf
|
|
21
|
+
* types. The default material must be separately registered via `registerDefaultGlMaterial`.
|
|
22
|
+
*
|
|
23
|
+
* Registered renderers:
|
|
24
|
+
* - `BitmapKind` → `defaultGlBitmapRenderer`
|
|
25
|
+
* - `DisplayObjectKind` → `defaultGlDisplayObjectRenderer`
|
|
26
|
+
* - `ParticleEmitterKind`→ `defaultGlParticleEmitterRenderer`
|
|
27
|
+
* - `QuadBatchKind` → `defaultGlQuadBatchRenderer`
|
|
28
|
+
* - `RenderCacheKind` → `defaultGlRenderCacheRenderer`
|
|
29
|
+
* - `RichTextKind` → `defaultGlRichTextRenderer`
|
|
30
|
+
* - `Scale9ShapeKind` → `defaultGlScale9ShapeRenderer`
|
|
31
|
+
* - `ShapeKind` → `defaultGlShapeRenderer`
|
|
32
|
+
* - `SpriteKind` → `defaultGlSpriteRenderer`
|
|
33
|
+
* - `TextLabelKind` → `defaultGlTextLabelRenderer`
|
|
34
|
+
* - `TilemapKind` → `defaultGlTilemapRenderer`
|
|
35
|
+
* - `VideoKind` → `defaultGlVideoRenderer`
|
|
36
|
+
*/
|
|
37
|
+
export function registerGlDisplayObjectRenderers(state) {
|
|
38
|
+
registerRenderer(state, BitmapKind, defaultGlBitmapRenderer);
|
|
39
|
+
registerRenderer(state, DisplayObjectKind, defaultGlDisplayObjectRenderer);
|
|
40
|
+
registerRenderer(state, ParticleEmitterKind, defaultGlParticleEmitterRenderer);
|
|
41
|
+
registerRenderer(state, QuadBatchKind, defaultGlQuadBatchRenderer);
|
|
42
|
+
registerRenderer(state, RenderCacheKind, defaultGlRenderCacheRenderer);
|
|
43
|
+
registerRenderer(state, RichTextKind, defaultGlRichTextRenderer);
|
|
44
|
+
registerRenderer(state, Scale9ShapeKind, defaultGlScale9ShapeRenderer);
|
|
45
|
+
registerRenderer(state, ShapeKind, defaultGlShapeRenderer);
|
|
46
|
+
registerRenderer(state, SpriteKind, defaultGlSpriteRenderer);
|
|
47
|
+
registerRenderer(state, TextLabelKind, defaultGlTextLabelRenderer);
|
|
48
|
+
registerRenderer(state, TilemapKind, defaultGlTilemapRenderer);
|
|
49
|
+
registerRenderer(state, VideoKind, defaultGlVideoRenderer);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=glDisplayObjectRegistration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glDisplayObjectRegistration.js","sourceRoot":"","sources":["../src/glDisplayObjectRegistration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,YAAY,EACZ,eAAe,EACf,SAAS,EACT,UAAU,EACV,aAAa,EACb,WAAW,EACX,SAAS,GACV,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,4BAA4B,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,gCAAgC,CAAC,KAAoB;IACnE,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,uBAAuB,CAAC,CAAC;IAC7D,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,EAAE,8BAA8B,CAAC,CAAC;IAC3E,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,EAAE,gCAAgC,CAAC,CAAC;IAC/E,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,0BAA0B,CAAC,CAAC;IACnE,gBAAgB,CAAC,KAAK,EAAE,eAAe,EAAE,4BAA4B,CAAC,CAAC;IACvE,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,yBAAyB,CAAC,CAAC;IACjE,gBAAgB,CAAC,KAAK,EAAE,eAAe,EAAE,4BAA4B,CAAC,CAAC;IACvE,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,sBAAsB,CAAC,CAAC;IAC3D,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,uBAAuB,CAAC,CAAC;IAC7D,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,0BAA0B,CAAC,CAAC;IACnE,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC;IAC/D,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,sBAAsB,CAAC,CAAC;AAC7D,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ColorTransform, GlRenderState, RenderProxy } from '@flighthq/types';
|
|
2
|
+
export declare function getGlRenderProxyColorTransform(renderProxy: Readonly<RenderProxy>): ColorTransform | null;
|
|
3
|
+
export declare function registerGlColorTransformShader(state: GlRenderState): void;
|
|
4
|
+
//# sourceMappingURL=glMaterials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glMaterials.d.ts","sourceRoot":"","sources":["../src/glMaterials.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,WAAW,EAGZ,MAAM,iBAAiB,CAAC;AAOzB,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,cAAc,GAAG,IAAI,CAUxG;AAKD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CASzE"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { createGlProgram } from '@flighthq/render-gl';
|
|
2
|
+
import { getGlRenderStateRuntime } from '@flighthq/render-gl';
|
|
3
|
+
import { setGlAttributes, setGlBaseUniforms, setGlMatrixFromTransform } from '@flighthq/render-gl';
|
|
4
|
+
import { registerGlMaterialShader } from '@flighthq/render-gl';
|
|
5
|
+
import { ColorTransformMaterialKind, UniformColorTransformMaterialKind } from '@flighthq/types';
|
|
6
|
+
// Effective color transform for a render node from its material: the value carried on a
|
|
7
|
+
// UniformColorTransformMaterial, or the per-node materialData for a ColorTransformMaterial. Null
|
|
8
|
+
// for any other (or no) material — display objects are tinted purely through the material system.
|
|
9
|
+
export function getGlRenderProxyColorTransform(renderProxy) {
|
|
10
|
+
const material = renderProxy.material;
|
|
11
|
+
if (material === null)
|
|
12
|
+
return null;
|
|
13
|
+
if (material.kind === UniformColorTransformMaterialKind) {
|
|
14
|
+
return material.colorTransform;
|
|
15
|
+
}
|
|
16
|
+
if (material.kind === ColorTransformMaterialKind) {
|
|
17
|
+
return renderProxy.materialData;
|
|
18
|
+
}
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
// Compiles the color-transform bitmap shader and stores it on the state. Unlike before, it does NOT
|
|
22
|
+
// become the default shader — resolveGlShader selects it only for nodes whose material is a color
|
|
23
|
+
// transform, so the standard pipeline pays nothing for it.
|
|
24
|
+
export function registerGlColorTransformShader(state) {
|
|
25
|
+
const runtime = getGlRenderStateRuntime(state);
|
|
26
|
+
if (runtime.colorTransformBitmapShader !== undefined)
|
|
27
|
+
return;
|
|
28
|
+
const shaderLoc = compileGlColorTransformProgram(state.gl);
|
|
29
|
+
const shader = createGlColorTransformBitmapShader(shaderLoc, runtime.matrixArray);
|
|
30
|
+
runtime.colorTransformBitmapShader = shader;
|
|
31
|
+
registerGlMaterialShader(state, ColorTransformMaterialKind, shader);
|
|
32
|
+
registerGlMaterialShader(state, UniformColorTransformMaterialKind, shader);
|
|
33
|
+
}
|
|
34
|
+
function compileGlColorTransformProgram(gl) {
|
|
35
|
+
const program = createGlProgram(gl, COLOR_TRANSFORM_VERTEX_SRC, COLOR_TRANSFORM_FRAGMENT_SRC, 'Color-transform bitmap');
|
|
36
|
+
return {
|
|
37
|
+
program,
|
|
38
|
+
locPosition: gl.getAttribLocation(program, 'a_position'),
|
|
39
|
+
locTexCoord: gl.getAttribLocation(program, 'a_texCoord'),
|
|
40
|
+
locMatrix: gl.getUniformLocation(program, 'u_matrix'),
|
|
41
|
+
locAlpha: gl.getUniformLocation(program, 'u_alpha'),
|
|
42
|
+
locColorMultiplier: gl.getUniformLocation(program, 'u_cm'),
|
|
43
|
+
locColorOffset: gl.getUniformLocation(program, 'u_co'),
|
|
44
|
+
locHasColorTransform: gl.getUniformLocation(program, 'u_ct'),
|
|
45
|
+
locTexture: gl.getUniformLocation(program, 'u_texture'),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function createGlColorTransformBitmapShader(shaderLoc, matrixArray) {
|
|
49
|
+
return {
|
|
50
|
+
locations: shaderLoc,
|
|
51
|
+
program: shaderLoc.program,
|
|
52
|
+
bind(gl, state, renderProxy) {
|
|
53
|
+
setGlAttributes(gl, shaderLoc);
|
|
54
|
+
setGlMatrixFromTransform(gl, shaderLoc, matrixArray, renderProxy.transform2D, getGlRenderStateRuntime(state).renderTargetViewport ?? state.canvas);
|
|
55
|
+
setGlBaseUniforms(gl, shaderLoc, renderProxy);
|
|
56
|
+
setGlColorTransformUniforms(gl, shaderLoc, renderProxy);
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function setGlColorTransformUniforms(gl, loc, renderProxy) {
|
|
61
|
+
const colorTransform = getGlRenderProxyColorTransform(renderProxy);
|
|
62
|
+
if (colorTransform === null) {
|
|
63
|
+
gl.uniform1i(loc.locHasColorTransform, 0);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
gl.uniform1i(loc.locHasColorTransform, 1);
|
|
67
|
+
gl.uniform4f(loc.locColorMultiplier, colorTransform.redMultiplier, colorTransform.greenMultiplier, colorTransform.blueMultiplier, colorTransform.alphaMultiplier);
|
|
68
|
+
gl.uniform4f(loc.locColorOffset, colorTransform.redOffset / 255, colorTransform.greenOffset / 255, colorTransform.blueOffset / 255, colorTransform.alphaOffset / 255);
|
|
69
|
+
}
|
|
70
|
+
const COLOR_TRANSFORM_FRAGMENT_SRC = `#version 300 es
|
|
71
|
+
precision mediump float;
|
|
72
|
+
in vec2 v_texCoord;
|
|
73
|
+
uniform sampler2D u_texture;
|
|
74
|
+
uniform float u_alpha;
|
|
75
|
+
uniform bool u_ct;
|
|
76
|
+
uniform vec4 u_cm,u_co;
|
|
77
|
+
out vec4 fragColor;
|
|
78
|
+
void main(){
|
|
79
|
+
vec4 c=texture(u_texture,v_texCoord);
|
|
80
|
+
if(u_ct&&c.a>0.){
|
|
81
|
+
c.rgb/=c.a;
|
|
82
|
+
c=clamp(c*u_cm+u_co,0.,1.);
|
|
83
|
+
c.rgb*=c.a;
|
|
84
|
+
}
|
|
85
|
+
fragColor=c*clamp(u_alpha,0.,1.);
|
|
86
|
+
}`;
|
|
87
|
+
const COLOR_TRANSFORM_VERTEX_SRC = `#version 300 es
|
|
88
|
+
in vec2 a_position;
|
|
89
|
+
in vec2 a_texCoord;
|
|
90
|
+
uniform mat3 u_matrix;
|
|
91
|
+
out vec2 v_texCoord;
|
|
92
|
+
void main() {
|
|
93
|
+
vec3 pos = u_matrix * vec3(a_position, 1.0);
|
|
94
|
+
gl_Position = vec4(pos.xy, 0.0, 1.0);
|
|
95
|
+
v_texCoord = a_texCoord;
|
|
96
|
+
}`;
|
|
97
|
+
//# sourceMappingURL=glMaterials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glMaterials.js","sourceRoot":"","sources":["../src/glMaterials.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { GlRenderState, RenderProxy2D, SpriteRenderer } from '@flighthq/types';
|
|
2
|
+
export declare function drawGlParticleEmitter(state: GlRenderState, renderProxy: RenderProxy2D): void;
|
|
3
|
+
export declare const defaultGlParticleEmitterRenderer: SpriteRenderer;
|
|
4
|
+
//# sourceMappingURL=glParticleEmitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glParticleEmitter.d.ts","sourceRoot":"","sources":["../src/glParticleEmitter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAmB,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAuHrG,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CA0J5F;AAED,eAAO,MAAM,gCAAgC,EAAE,cAM9C,CAAC"}
|