@oh-just-another/renderer-canvas 0.59.0 → 0.61.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/CHANGELOG.md +108 -0
- package/README.md +10 -7
- package/dist/.tsbuildinfo +1 -1
- package/dist/canvas-target.d.ts +6 -1
- package/dist/canvas-target.d.ts.map +1 -1
- package/dist/canvas-target.js +12 -2
- package/dist/canvas-target.js.map +1 -1
- package/dist/constants.d.ts +49 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +49 -0
- package/dist/constants.js.map +1 -1
- package/dist/hi-dpi.d.ts +10 -0
- package/dist/hi-dpi.d.ts.map +1 -1
- package/dist/hi-dpi.js +12 -1
- package/dist/hi-dpi.js.map +1 -1
- package/dist/image-source.d.ts +11 -0
- package/dist/image-source.d.ts.map +1 -1
- package/dist/image-source.js +20 -0
- package/dist/image-source.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/layered-canvas.d.ts +7 -1
- package/dist/layered-canvas.d.ts.map +1 -1
- package/dist/layered-canvas.js +6 -3
- package/dist/layered-canvas.js.map +1 -1
- package/dist/layered-surface.d.ts +16 -0
- package/dist/layered-surface.d.ts.map +1 -1
- package/dist/layered-surface.js +59 -14
- package/dist/layered-surface.js.map +1 -1
- package/dist/recording-target.d.ts +56 -13
- package/dist/recording-target.d.ts.map +1 -1
- package/dist/recording-target.js +229 -38
- package/dist/recording-target.js.map +1 -1
- package/dist/render-worker.js +19 -7
- package/dist/render-worker.js.map +1 -1
- package/dist/replay-codec.d.ts +56 -0
- package/dist/replay-codec.d.ts.map +1 -0
- package/dist/replay-codec.js +543 -0
- package/dist/replay-codec.js.map +1 -0
- package/dist/tile-compositor.d.ts +52 -1
- package/dist/tile-compositor.d.ts.map +1 -1
- package/dist/tile-compositor.js +82 -5
- package/dist/tile-compositor.js.map +1 -1
- package/dist/webgl2-curve.d.ts +12 -2
- package/dist/webgl2-curve.d.ts.map +1 -1
- package/dist/webgl2-curve.js +168 -40
- package/dist/webgl2-curve.js.map +1 -1
- package/dist/webgl2-ellipse.d.ts +1 -29
- package/dist/webgl2-ellipse.d.ts.map +1 -1
- package/dist/webgl2-ellipse.js +35 -22
- package/dist/webgl2-ellipse.js.map +1 -1
- package/dist/webgl2-msdf-text.d.ts +15 -2
- package/dist/webgl2-msdf-text.d.ts.map +1 -1
- package/dist/webgl2-msdf-text.js +101 -9
- package/dist/webgl2-msdf-text.js.map +1 -1
- package/dist/webgl2-rect-batch.d.ts +81 -0
- package/dist/webgl2-rect-batch.d.ts.map +1 -0
- package/dist/webgl2-rect-batch.js +201 -0
- package/dist/webgl2-rect-batch.js.map +1 -0
- package/dist/webgl2-stroke.d.ts +14 -35
- package/dist/webgl2-stroke.d.ts.map +1 -1
- package/dist/webgl2-stroke.js +27 -30
- package/dist/webgl2-stroke.js.map +1 -1
- package/dist/webgl2-target.d.ts +95 -13
- package/dist/webgl2-target.d.ts.map +1 -1
- package/dist/webgl2-target.js +423 -230
- package/dist/webgl2-target.js.map +1 -1
- package/package.json +4 -3
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { compileShader, glReq, linkProgram } from "./webgl-helpers.js";
|
|
2
|
+
import { INITIAL_RECT_BATCH_INSTANCES } from "./constants.js";
|
|
3
|
+
/**
|
|
4
|
+
* Floats per instance in a {@link RectBatch}:
|
|
5
|
+
* [m0x, m0y, m1x, m1y, tx, ty, r, g, b, a]
|
|
6
|
+
*
|
|
7
|
+
* The first six carry the rect's already-projected clip-space affine
|
|
8
|
+
* (unit-quad → NDC) as two column vectors + a translation — the same
|
|
9
|
+
* matrix the non-batched rect-fill path feeds `uniformMatrix3fv`, minus
|
|
10
|
+
* the constant `[0, 0, 1]` third column the vertex shader reconstructs.
|
|
11
|
+
* The last four carry the fill colour with `a` = effective alpha
|
|
12
|
+
* (`opacity * fillAlpha`); the shader premultiplies to match the
|
|
13
|
+
* `blendFunc(ONE, 1-SRC_ALPHA)` contract.
|
|
14
|
+
*/
|
|
15
|
+
export const RECT_INSTANCE_FLOATS = 10;
|
|
16
|
+
/**
|
|
17
|
+
* CPU-side accumulator for instanced sharp-rect fills — the pure,
|
|
18
|
+
* GL-free half of the batcher. {@link WebGL2Target} queues one instance
|
|
19
|
+
* per axis-aligned `rect()` + `fill()` and drains the queue via
|
|
20
|
+
* {@link flush} whenever a non-batchable draw intervenes or the frame
|
|
21
|
+
* ends, so draw order (z-order) is preserved: every rect queued before
|
|
22
|
+
* an interrupting op is emitted, in submission order, before that op.
|
|
23
|
+
*
|
|
24
|
+
* Kept free of any `WebGLRenderingContext` reference so the flush /
|
|
25
|
+
* ordering / packing logic is unit-testable in Node — the GL upload +
|
|
26
|
+
* `drawArraysInstanced` live in {@link RectInstancePipeline}, injected as
|
|
27
|
+
* the {@link flush} sink.
|
|
28
|
+
*
|
|
29
|
+
* Capacity ratchets up to the next power of two on demand and never
|
|
30
|
+
* shrinks; single-threaded WebGL serialises all pushes so no locking is
|
|
31
|
+
* needed.
|
|
32
|
+
*/
|
|
33
|
+
export class RectBatch {
|
|
34
|
+
data;
|
|
35
|
+
instanceCount = 0;
|
|
36
|
+
constructor(initialInstances = INITIAL_RECT_BATCH_INSTANCES) {
|
|
37
|
+
this.data = new Float32Array(Math.max(1, initialInstances) * RECT_INSTANCE_FLOATS);
|
|
38
|
+
}
|
|
39
|
+
/** Number of instances queued since the last flush. */
|
|
40
|
+
get pending() {
|
|
41
|
+
return this.instanceCount;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Queue one rect-fill instance. `m0*` / `m1*` / `t*` are the projected
|
|
45
|
+
* clip-space affine columns (see {@link RECT_INSTANCE_FLOATS}); `r,g,b`
|
|
46
|
+
* are the fill colour in 0–1 and `a` the effective alpha.
|
|
47
|
+
*/
|
|
48
|
+
add(m0x, m0y, m1x, m1y, tx, ty, r, g, b, a) {
|
|
49
|
+
const need = (this.instanceCount + 1) * RECT_INSTANCE_FLOATS;
|
|
50
|
+
if (need > this.data.length) {
|
|
51
|
+
let cap = this.data.length;
|
|
52
|
+
while (cap < need)
|
|
53
|
+
cap *= 2;
|
|
54
|
+
const next = new Float32Array(cap);
|
|
55
|
+
next.set(this.data);
|
|
56
|
+
this.data = next;
|
|
57
|
+
}
|
|
58
|
+
const base = this.instanceCount * RECT_INSTANCE_FLOATS;
|
|
59
|
+
this.data[base] = m0x;
|
|
60
|
+
this.data[base + 1] = m0y;
|
|
61
|
+
this.data[base + 2] = m1x;
|
|
62
|
+
this.data[base + 3] = m1y;
|
|
63
|
+
this.data[base + 4] = tx;
|
|
64
|
+
this.data[base + 5] = ty;
|
|
65
|
+
this.data[base + 6] = r;
|
|
66
|
+
this.data[base + 7] = g;
|
|
67
|
+
this.data[base + 8] = b;
|
|
68
|
+
this.data[base + 9] = a;
|
|
69
|
+
this.instanceCount++;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Drain the queue through `sink` (one instanced draw) and reset. No-op
|
|
73
|
+
* when empty. Returns whether a draw was issued. `sink` receives the
|
|
74
|
+
* backing buffer (which may be longer than `count * stride` — read only
|
|
75
|
+
* the first `count` instances) and the instance count.
|
|
76
|
+
*/
|
|
77
|
+
flush(sink) {
|
|
78
|
+
if (this.instanceCount === 0)
|
|
79
|
+
return false;
|
|
80
|
+
sink(this.data, this.instanceCount);
|
|
81
|
+
this.instanceCount = 0;
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
/** Drop queued instances without drawing (context loss / dispose). */
|
|
85
|
+
reset() {
|
|
86
|
+
this.instanceCount = 0;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* GL half of the sharp-rect batcher: owns the instanced program, a VAO
|
|
91
|
+
* binding a static unit-quad (per-vertex) to a growable per-instance
|
|
92
|
+
* buffer, and issues one `drawArraysInstanced` per flush.
|
|
93
|
+
*
|
|
94
|
+
* One draw call renders the whole queued run regardless of instance
|
|
95
|
+
* count — the win over the per-rect `drawArrays` path that motivated the
|
|
96
|
+
* batcher (B19). Instances draw in submission order with blending on and
|
|
97
|
+
* depth off, so later rects blend over earlier ones exactly as
|
|
98
|
+
* sequential draws would.
|
|
99
|
+
*/
|
|
100
|
+
export class RectInstancePipeline {
|
|
101
|
+
gl;
|
|
102
|
+
program;
|
|
103
|
+
vao;
|
|
104
|
+
unitQuadVbo;
|
|
105
|
+
instanceVbo;
|
|
106
|
+
/** Byte capacity currently allocated on `instanceVbo`. */
|
|
107
|
+
instanceBytes = 0;
|
|
108
|
+
constructor(gl) {
|
|
109
|
+
this.gl = gl;
|
|
110
|
+
const vert = compileShader(gl, gl.VERTEX_SHADER, VERTEX_SRC, "RectInstance");
|
|
111
|
+
const frag = compileShader(gl, gl.FRAGMENT_SHADER, FRAGMENT_SRC, "RectInstance");
|
|
112
|
+
this.program = linkProgram(gl, vert, frag, "RectInstance");
|
|
113
|
+
const aPos = gl.getAttribLocation(this.program, "aPos");
|
|
114
|
+
const aM0 = gl.getAttribLocation(this.program, "aM0");
|
|
115
|
+
const aM1 = gl.getAttribLocation(this.program, "aM1");
|
|
116
|
+
const aTrans = gl.getAttribLocation(this.program, "aTrans");
|
|
117
|
+
const aColor = gl.getAttribLocation(this.program, "aColor");
|
|
118
|
+
this.vao = glReq(gl.createVertexArray());
|
|
119
|
+
this.unitQuadVbo = glReq(gl.createBuffer());
|
|
120
|
+
this.instanceVbo = glReq(gl.createBuffer());
|
|
121
|
+
gl.bindVertexArray(this.vao);
|
|
122
|
+
// Per-vertex unit quad, TRIANGLE_STRIP order [0,0]→[1,1].
|
|
123
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this.unitQuadVbo);
|
|
124
|
+
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0, 0, 1, 0, 0, 1, 1, 1]), gl.STATIC_DRAW);
|
|
125
|
+
gl.enableVertexAttribArray(aPos);
|
|
126
|
+
gl.vertexAttribPointer(aPos, 2, gl.FLOAT, false, 0, 0);
|
|
127
|
+
gl.vertexAttribDivisor(aPos, 0);
|
|
128
|
+
// Per-instance interleaved attributes on the growable buffer.
|
|
129
|
+
const stride = RECT_INSTANCE_FLOATS * 4;
|
|
130
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this.instanceVbo);
|
|
131
|
+
gl.enableVertexAttribArray(aM0);
|
|
132
|
+
gl.vertexAttribPointer(aM0, 2, gl.FLOAT, false, stride, 0);
|
|
133
|
+
gl.vertexAttribDivisor(aM0, 1);
|
|
134
|
+
gl.enableVertexAttribArray(aM1);
|
|
135
|
+
gl.vertexAttribPointer(aM1, 2, gl.FLOAT, false, stride, 8);
|
|
136
|
+
gl.vertexAttribDivisor(aM1, 1);
|
|
137
|
+
gl.enableVertexAttribArray(aTrans);
|
|
138
|
+
gl.vertexAttribPointer(aTrans, 2, gl.FLOAT, false, stride, 16);
|
|
139
|
+
gl.vertexAttribDivisor(aTrans, 1);
|
|
140
|
+
gl.enableVertexAttribArray(aColor);
|
|
141
|
+
gl.vertexAttribPointer(aColor, 4, gl.FLOAT, false, stride, 24);
|
|
142
|
+
gl.vertexAttribDivisor(aColor, 1);
|
|
143
|
+
gl.bindVertexArray(null);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Upload the first `instanceCount` instances of `data` and draw them
|
|
147
|
+
* in one instanced call. Leaves the default VAO bound so the caller's
|
|
148
|
+
* non-VAO solid-program plumbing keeps working.
|
|
149
|
+
*/
|
|
150
|
+
draw(data, instanceCount) {
|
|
151
|
+
if (instanceCount === 0)
|
|
152
|
+
return;
|
|
153
|
+
const gl = this.gl;
|
|
154
|
+
const used = data.subarray(0, instanceCount * RECT_INSTANCE_FLOATS);
|
|
155
|
+
gl.useProgram(this.program);
|
|
156
|
+
gl.bindVertexArray(this.vao);
|
|
157
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this.instanceVbo);
|
|
158
|
+
// Grow the GPU buffer in place; re-spec with orphaning only when it
|
|
159
|
+
// must enlarge, otherwise sub-update the live storage.
|
|
160
|
+
const neededBytes = used.byteLength;
|
|
161
|
+
if (neededBytes > this.instanceBytes) {
|
|
162
|
+
gl.bufferData(gl.ARRAY_BUFFER, used, gl.DYNAMIC_DRAW);
|
|
163
|
+
this.instanceBytes = neededBytes;
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
gl.bufferSubData(gl.ARRAY_BUFFER, 0, used);
|
|
167
|
+
}
|
|
168
|
+
gl.drawArraysInstanced(gl.TRIANGLE_STRIP, 0, 4, instanceCount);
|
|
169
|
+
gl.bindVertexArray(null);
|
|
170
|
+
}
|
|
171
|
+
dispose() {
|
|
172
|
+
this.gl.deleteVertexArray(this.vao);
|
|
173
|
+
this.gl.deleteBuffer(this.unitQuadVbo);
|
|
174
|
+
this.gl.deleteBuffer(this.instanceVbo);
|
|
175
|
+
this.gl.deleteProgram(this.program);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
const VERTEX_SRC = `#version 300 es
|
|
179
|
+
in vec2 aPos;
|
|
180
|
+
in vec2 aM0;
|
|
181
|
+
in vec2 aM1;
|
|
182
|
+
in vec2 aTrans;
|
|
183
|
+
in vec4 aColor;
|
|
184
|
+
out vec4 vColor;
|
|
185
|
+
void main() {
|
|
186
|
+
// Reconstruct the clip-space position from the projected affine
|
|
187
|
+
// columns: p = M0 * x + M1 * y + T (unit quad x,y in [0,1]).
|
|
188
|
+
vec2 p = aM0 * aPos.x + aM1 * aPos.y + aTrans;
|
|
189
|
+
gl_Position = vec4(p, 0.0, 1.0);
|
|
190
|
+
vColor = aColor;
|
|
191
|
+
}`;
|
|
192
|
+
const FRAGMENT_SRC = `#version 300 es
|
|
193
|
+
precision mediump float;
|
|
194
|
+
in vec4 vColor;
|
|
195
|
+
out vec4 fragColor;
|
|
196
|
+
void main() {
|
|
197
|
+
// Premultiplied output (rgb*a, a) — matches premultipliedAlpha:true +
|
|
198
|
+
// blendFunc(ONE, 1-SRC_ALPHA).
|
|
199
|
+
fragColor = vec4(vColor.rgb * vColor.a, vColor.a);
|
|
200
|
+
}`;
|
|
201
|
+
//# sourceMappingURL=webgl2-rect-batch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webgl2-rect-batch.js","sourceRoot":"","sources":["../src/webgl2-rect-batch.ts"],"names":[],"mappings":"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"}
|
package/dist/webgl2-stroke.d.ts
CHANGED
|
@@ -1,25 +1,5 @@
|
|
|
1
1
|
import type { LineCap, LineJoin } from "@oh-just-another/renderer-core";
|
|
2
|
-
import { type Transform
|
|
3
|
-
/**
|
|
4
|
-
* GPU-side stroke pipeline for the WebGL2 backend. Builds a single
|
|
5
|
-
* triangle list per call (joins + caps included), uploads once, and
|
|
6
|
-
* draws via the host's solid-color program. Independent of the
|
|
7
|
-
* fill / text / image pipelines — they each manage their own VBO.
|
|
8
|
-
*
|
|
9
|
-
* Supports the full Canvas2D / SVG join + cap matrix:
|
|
10
|
-
* joins: "miter" (default), "bevel", "round"
|
|
11
|
-
* caps: "butt" (default), "square", "round"
|
|
12
|
-
*
|
|
13
|
-
* One TRIANGLES list rather than a strip + extra primitives: round
|
|
14
|
-
* joins / caps need fan triangles glued on top of the strip, and a
|
|
15
|
-
* single TRIANGLES list avoids re-binding the buffer per join while
|
|
16
|
-
* keeping heterogeneous join geometry easy to author.
|
|
17
|
-
*/
|
|
18
|
-
/** Two-vertex pair per polyline vertex (left + right side of the band). */
|
|
19
|
-
interface SideOffset {
|
|
20
|
-
ox: number;
|
|
21
|
-
oy: number;
|
|
22
|
-
}
|
|
2
|
+
import { type Transform } from "@oh-just-another/types";
|
|
23
3
|
export interface StrokeStyle {
|
|
24
4
|
readonly width: number;
|
|
25
5
|
readonly color: readonly [number, number, number];
|
|
@@ -27,26 +7,25 @@ export interface StrokeStyle {
|
|
|
27
7
|
readonly join: LineJoin;
|
|
28
8
|
readonly cap: LineCap;
|
|
29
9
|
}
|
|
30
|
-
/**
|
|
31
|
-
* Compute one miter offset at the hinge between two unit normals.
|
|
32
|
-
* Returns `{ ox, oy }` along the bisector, clamped to MITER_LIMIT.
|
|
33
|
-
* Exported so `webgl2-target.ts` can reuse it for closed-polyline seam
|
|
34
|
-
* vertices.
|
|
35
|
-
*/
|
|
36
|
-
export declare const miterOffset: (n1x: number, n1y: number, n2x: number, n2y: number, half: number) => SideOffset;
|
|
37
10
|
/**
|
|
38
11
|
* Build the stroke geometry for a polyline + style, upload to the
|
|
39
12
|
* caller's dynamic VBO, and draw. Identity uTransform — vertices are
|
|
40
13
|
* pre-projected into clip space here.
|
|
41
14
|
*
|
|
42
|
-
* The caller passes its solid program +
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* the
|
|
15
|
+
* The caller passes its solid program + its dynamic VBO + the VAO that
|
|
16
|
+
* has the `aPos` layout on that VBO recorded once at target init.
|
|
17
|
+
* Binding the VAO replaces the per-draw `enableVertexAttribArray` /
|
|
18
|
+
* `vertexAttribPointer` re-declaration; the VAO is unbound after the
|
|
19
|
+
* draw so stroke state can't leak into other pipelines.
|
|
46
20
|
*/
|
|
47
|
-
export declare const drawPolylineStroke: (gl: WebGL2RenderingContext,
|
|
21
|
+
export declare const drawPolylineStroke: (gl: WebGL2RenderingContext,
|
|
22
|
+
/** Flat `[x0, y0, x1, y1, ...]` polyline vertices. */
|
|
23
|
+
xy: ArrayLike<number>,
|
|
24
|
+
/** Number of (x, y) points in `xy`. */
|
|
25
|
+
pointCount: number, style: StrokeStyle, transform: Transform, size: {
|
|
48
26
|
width: number;
|
|
49
27
|
height: number;
|
|
50
|
-
}, program: WebGLProgram, uTransformLoc: WebGLUniformLocation | null, uColorLoc: WebGLUniformLocation | null, uOpacityLoc: WebGLUniformLocation | null, dynamicVbo: WebGLBuffer,
|
|
51
|
-
|
|
28
|
+
}, program: WebGLProgram, uTransformLoc: WebGLUniformLocation | null, uColorLoc: WebGLUniformLocation | null, uOpacityLoc: WebGLUniformLocation | null, dynamicVbo: WebGLBuffer,
|
|
29
|
+
/** VAO with the `aPos` (2 × FLOAT, tight) layout recorded on `dynamicVbo`. */
|
|
30
|
+
dynamicVao: WebGLVertexArrayObject, identityMat3: Float32Array) => void;
|
|
52
31
|
//# sourceMappingURL=webgl2-stroke.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webgl2-stroke.d.ts","sourceRoot":"","sources":["../src/webgl2-stroke.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAO,KAAK,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"webgl2-stroke.d.ts","sourceRoot":"","sources":["../src/webgl2-stroke.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAO,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AA+E7D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAClD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB;AA6BD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,GAC7B,IAAI,sBAAsB;AAC1B,sDAAsD;AACtD,IAAI,SAAS,CAAC,MAAM,CAAC;AACrB,uCAAuC;AACvC,YAAY,MAAM,EAClB,OAAO,WAAW,EAClB,WAAW,SAAS,EACpB,MAAM;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACvC,SAAS,YAAY,EACrB,eAAe,oBAAoB,GAAG,IAAI,EAC1C,WAAW,oBAAoB,GAAG,IAAI,EACtC,aAAa,oBAAoB,GAAG,IAAI,EACxC,YAAY,WAAW;AACvB,8EAA8E;AAC9E,YAAY,sBAAsB,EAClC,cAAc,YAAY,KACzB,IA4NF,CAAC"}
|
package/dist/webgl2-stroke.js
CHANGED
|
@@ -58,7 +58,7 @@ const trisPush = (x, y) => {
|
|
|
58
58
|
* Exported so `webgl2-target.ts` can reuse it for closed-polyline seam
|
|
59
59
|
* vertices.
|
|
60
60
|
*/
|
|
61
|
-
|
|
61
|
+
const miterOffset = (n1x, n1y, n2x, n2y, half) => {
|
|
62
62
|
let bx = n1x + n2x;
|
|
63
63
|
let by = n1y + n2y;
|
|
64
64
|
const blen = Math.hypot(bx, by);
|
|
@@ -77,32 +77,35 @@ export const miterOffset = (n1x, n1y, n2x, n2y, half) => {
|
|
|
77
77
|
* caller's dynamic VBO, and draw. Identity uTransform — vertices are
|
|
78
78
|
* pre-projected into clip space here.
|
|
79
79
|
*
|
|
80
|
-
* The caller passes its solid program +
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
* the
|
|
80
|
+
* The caller passes its solid program + its dynamic VBO + the VAO that
|
|
81
|
+
* has the `aPos` layout on that VBO recorded once at target init.
|
|
82
|
+
* Binding the VAO replaces the per-draw `enableVertexAttribArray` /
|
|
83
|
+
* `vertexAttribPointer` re-declaration; the VAO is unbound after the
|
|
84
|
+
* draw so stroke state can't leak into other pipelines.
|
|
84
85
|
*/
|
|
85
|
-
export const drawPolylineStroke = (gl,
|
|
86
|
-
|
|
86
|
+
export const drawPolylineStroke = (gl,
|
|
87
|
+
/** Flat `[x0, y0, x1, y1, ...]` polyline vertices. */
|
|
88
|
+
xy,
|
|
89
|
+
/** Number of (x, y) points in `xy`. */
|
|
90
|
+
pointCount, style, transform, size, program, uTransformLoc, uColorLoc, uOpacityLoc, dynamicVbo,
|
|
91
|
+
/** VAO with the `aPos` (2 × FLOAT, tight) layout recorded on `dynamicVbo`. */
|
|
92
|
+
dynamicVao, identityMat3) => {
|
|
93
|
+
if (style.width <= 0 || pointCount < 2)
|
|
87
94
|
return;
|
|
88
95
|
const half = style.width / 2;
|
|
89
|
-
const segCount =
|
|
96
|
+
const segCount = pointCount - 1;
|
|
90
97
|
// Reuse the module-level scratch nx/ny buffers — grow on demand.
|
|
91
98
|
ensureNCapacity(segCount);
|
|
92
99
|
const nx = scratchNx;
|
|
93
100
|
const ny = scratchNy;
|
|
94
101
|
for (let i = 0; i < segCount; i++) {
|
|
95
|
-
const
|
|
96
|
-
const
|
|
97
|
-
const dx = b.x - a.x;
|
|
98
|
-
const dy = b.y - a.y;
|
|
102
|
+
const dx = req(xy[i * 2 + 2]) - req(xy[i * 2]);
|
|
103
|
+
const dy = req(xy[i * 2 + 3]) - req(xy[i * 2 + 1]);
|
|
99
104
|
const len = Math.hypot(dx, dy) || 1;
|
|
100
105
|
nx[i] = -dy / len;
|
|
101
106
|
ny[i] = dx / len;
|
|
102
107
|
}
|
|
103
|
-
const
|
|
104
|
-
const last = req(polyline[polyline.length - 1]);
|
|
105
|
-
const closed = polyline.length >= 3 && first.x === last.x && first.y === last.y;
|
|
108
|
+
const closed = pointCount >= 3 && xy[0] === xy[(pointCount - 1) * 2] && xy[1] === xy[(pointCount - 1) * 2 + 1];
|
|
106
109
|
// Reset the scratch vertex stream length — world-space (x, y) pairs
|
|
107
110
|
// are pushed into `scratchTris` via `trisPush`, then projected
|
|
108
111
|
// in-place to clip space before the bufferData call.
|
|
@@ -129,10 +132,8 @@ export const drawPolylineStroke = (gl, polyline, style, transform, size, program
|
|
|
129
132
|
const segLeft = (i) => ({ ox: req(nx[i]) * half, oy: req(ny[i]) * half });
|
|
130
133
|
// Emit the rect bands for every segment.
|
|
131
134
|
for (let i = 0; i < segCount; i++) {
|
|
132
|
-
const a = req(polyline[i]);
|
|
133
|
-
const b = req(polyline[i + 1]);
|
|
134
135
|
const o = segLeft(i);
|
|
135
|
-
band(
|
|
136
|
+
band(req(xy[i * 2]), req(xy[i * 2 + 1]), o.ox, o.oy, req(xy[i * 2 + 2]), req(xy[i * 2 + 3]), o.ox, o.oy);
|
|
136
137
|
}
|
|
137
138
|
// Emit join geometry at every interior vertex (and at the seam for
|
|
138
139
|
// closed polylines).
|
|
@@ -206,21 +207,15 @@ export const drawPolylineStroke = (gl, polyline, style, transform, size, program
|
|
|
206
207
|
}
|
|
207
208
|
};
|
|
208
209
|
for (let i = 1; i < segCount; i++) {
|
|
209
|
-
|
|
210
|
-
emitJoin(p.x, p.y, req(nx[i - 1]), req(ny[i - 1]), req(nx[i]), req(ny[i]));
|
|
210
|
+
emitJoin(req(xy[i * 2]), req(xy[i * 2 + 1]), req(nx[i - 1]), req(ny[i - 1]), req(nx[i]), req(ny[i]));
|
|
211
211
|
}
|
|
212
212
|
if (closed) {
|
|
213
|
-
|
|
214
|
-
emitJoin(p.x, p.y, req(nx[segCount - 1]), req(ny[segCount - 1]), req(nx[0]), req(ny[0]));
|
|
213
|
+
emitJoin(req(xy[0]), req(xy[1]), req(nx[segCount - 1]), req(ny[segCount - 1]), req(nx[0]), req(ny[0]));
|
|
215
214
|
}
|
|
216
215
|
// Caps on open polylines (closed shapes don't have caps).
|
|
217
216
|
if (!closed) {
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
emitCap(push, capFirst.x, capFirst.y, second.x, second.y, req(nx[0]), req(ny[0]), half, style.cap, true);
|
|
221
|
-
const lastVx = req(polyline[polyline.length - 1]);
|
|
222
|
-
const prevVx = req(polyline[polyline.length - 2]);
|
|
223
|
-
emitCap(push, lastVx.x, lastVx.y, prevVx.x, prevVx.y, req(nx[segCount - 1]), req(ny[segCount - 1]), half, style.cap, false);
|
|
217
|
+
emitCap(push, req(xy[0]), req(xy[1]), req(xy[2]), req(xy[3]), req(nx[0]), req(ny[0]), half, style.cap, true);
|
|
218
|
+
emitCap(push, req(xy[(pointCount - 1) * 2]), req(xy[(pointCount - 1) * 2 + 1]), req(xy[(pointCount - 2) * 2]), req(xy[(pointCount - 2) * 2 + 1]), req(nx[segCount - 1]), req(ny[segCount - 1]), half, style.cap, false);
|
|
224
219
|
}
|
|
225
220
|
if (scratchTrisLen === 0)
|
|
226
221
|
return;
|
|
@@ -238,15 +233,17 @@ export const drawPolylineStroke = (gl, polyline, style, transform, size, program
|
|
|
238
233
|
scratchTris[i + 1] = wy * sy + 1;
|
|
239
234
|
}
|
|
240
235
|
gl.useProgram(program);
|
|
236
|
+
gl.bindVertexArray(dynamicVao);
|
|
241
237
|
gl.bindBuffer(gl.ARRAY_BUFFER, dynamicVbo);
|
|
242
238
|
// subarray gives a view into the live scratch buffer — no copy.
|
|
243
239
|
gl.bufferData(gl.ARRAY_BUFFER, scratchTris.subarray(0, scratchTrisLen), gl.DYNAMIC_DRAW);
|
|
244
|
-
gl.enableVertexAttribArray(aPosLoc);
|
|
245
|
-
gl.vertexAttribPointer(aPosLoc, 2, gl.FLOAT, false, 0, 0);
|
|
246
240
|
gl.uniformMatrix3fv(uTransformLoc, false, identityMat3);
|
|
247
241
|
gl.uniform3f(uColorLoc, style.color[0], style.color[1], style.color[2]);
|
|
248
242
|
gl.uniform1f(uOpacityLoc, style.opacity);
|
|
249
243
|
gl.drawArrays(gl.TRIANGLES, 0, scratchTrisLen / 2);
|
|
244
|
+
// Reset to the default VAO so stroke state can't leak into other
|
|
245
|
+
// pipelines (matches the rect-batch discipline).
|
|
246
|
+
gl.bindVertexArray(null);
|
|
250
247
|
};
|
|
251
248
|
/**
|
|
252
249
|
* Emit a cap at one endpoint of an open polyline. `start` indicates
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webgl2-stroke.js","sourceRoot":"","sources":["../src/webgl2-stroke.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"webgl2-stroke.js","sourceRoot":"","sources":["../src/webgl2-stroke.ts"],"names":[],"mappings":"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"}
|