bloody-engine 1.1.6 → 1.1.8
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/node/index.js +153 -53
- package/dist/node/src/platforms/node/node-context.d.ts.map +1 -1
- package/dist/node/src/platforms/node/webgl-extensions.d.ts +32 -0
- package/dist/node/src/platforms/node/webgl-extensions.d.ts.map +1 -0
- package/dist/node/src/rendering/batch-renderer.d.ts.map +1 -1
- package/dist/node/src/rendering/hybrid-renderer.d.ts +8 -3
- package/dist/node/src/rendering/hybrid-renderer.d.ts.map +1 -1
- package/dist/node/src/rendering/instanced-renderer.d.ts +1 -0
- package/dist/node/src/rendering/instanced-renderer.d.ts.map +1 -1
- package/dist/node/src/rendering/ring-buffer.d.ts +4 -0
- package/dist/node/src/rendering/ring-buffer.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/node/index.js
CHANGED
|
@@ -43,11 +43,24 @@ class NodeRenderingContext {
|
|
|
43
43
|
}
|
|
44
44
|
isWebGL2() {
|
|
45
45
|
const glAny = this.glContext;
|
|
46
|
-
|
|
46
|
+
const hasWebGL2Features = glAny.drawBuffers !== void 0 && glAny.getBufferSubData !== void 0;
|
|
47
|
+
if (!hasWebGL2Features && glAny.getSupportedExtensions) {
|
|
48
|
+
const extensions = glAny.getSupportedExtensions();
|
|
49
|
+
return extensions.includes("WEBGL_draw_buffers");
|
|
50
|
+
}
|
|
51
|
+
return hasWebGL2Features;
|
|
47
52
|
}
|
|
48
53
|
supportsInstancing() {
|
|
49
54
|
const glAny = this.glContext;
|
|
50
|
-
|
|
55
|
+
const hasDirectMethods = glAny.drawArraysInstanced !== void 0 && glAny.vertexAttribDivisor !== void 0;
|
|
56
|
+
if (hasDirectMethods) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
if (glAny.getSupportedExtensions) {
|
|
60
|
+
const extensions = glAny.getSupportedExtensions();
|
|
61
|
+
return extensions.includes("ANGLE_instanced_arrays");
|
|
62
|
+
}
|
|
63
|
+
return false;
|
|
51
64
|
}
|
|
52
65
|
getWebGL2Context() {
|
|
53
66
|
return this.glContext;
|
|
@@ -2752,7 +2765,11 @@ class GPUBasedSpriteBatchRenderer {
|
|
|
2752
2765
|
this.maxQuads = maxQuads;
|
|
2753
2766
|
this.tileSize = tileSize;
|
|
2754
2767
|
this.zScale = zScale;
|
|
2755
|
-
|
|
2768
|
+
const glAny = gl;
|
|
2769
|
+
this.resolution = {
|
|
2770
|
+
width: glAny.canvas?.width || glAny.drawingBufferWidth || 800,
|
|
2771
|
+
height: glAny.canvas?.height || glAny.drawingBufferHeight || 600
|
|
2772
|
+
};
|
|
2756
2773
|
this.depthSorter = new DepthSorter({ cellSize: spatialCellSize });
|
|
2757
2774
|
const totalFloats = maxQuads * this.verticesPerQuad * this.floatsPerVertex;
|
|
2758
2775
|
this.vertexData = new Float32Array(totalFloats);
|
|
@@ -2854,7 +2871,7 @@ class GPUBasedSpriteBatchRenderer {
|
|
|
2854
2871
|
// top-right
|
|
2855
2872
|
[halfW, halfH],
|
|
2856
2873
|
// top-right (duplicate)
|
|
2857
|
-
[-
|
|
2874
|
+
[-halfW, halfH],
|
|
2858
2875
|
// top-left
|
|
2859
2876
|
[-halfW, -halfH]
|
|
2860
2877
|
// bottom-left (duplicate)
|
|
@@ -3051,14 +3068,14 @@ class RingBuffer {
|
|
|
3051
3068
|
this.frameIndex = 0;
|
|
3052
3069
|
this.fenceSync = null;
|
|
3053
3070
|
this.pendingFrames = [];
|
|
3071
|
+
this.useFallbackMode = false;
|
|
3072
|
+
this.fallbackBuffer = null;
|
|
3054
3073
|
this.ALIGNMENT = 256;
|
|
3055
3074
|
this.FRAME_COUNT = 3;
|
|
3056
|
-
const glAny = options.gl;
|
|
3057
|
-
if (!glAny || typeof glAny.mapBufferRange !== "function") {
|
|
3058
|
-
throw new Error("RingBuffer requires WebGL2 context with mapBufferRange support");
|
|
3059
|
-
}
|
|
3060
3075
|
this.gl = options.gl;
|
|
3061
3076
|
this.size = options.size;
|
|
3077
|
+
const glAny = options.gl;
|
|
3078
|
+
this.useFallbackMode = typeof glAny.mapBufferRange !== "function";
|
|
3062
3079
|
this.buffer = this.gl.createBuffer();
|
|
3063
3080
|
this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.buffer);
|
|
3064
3081
|
this.gl.bufferData(
|
|
@@ -3066,18 +3083,22 @@ class RingBuffer {
|
|
|
3066
3083
|
this.size,
|
|
3067
3084
|
options.usage ?? this.gl.DYNAMIC_DRAW
|
|
3068
3085
|
);
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
this.
|
|
3077
|
-
|
|
3078
|
-
|
|
3079
|
-
|
|
3080
|
-
|
|
3086
|
+
if (this.useFallbackMode) {
|
|
3087
|
+
this.fallbackBuffer = new Float32Array(this.size / 4);
|
|
3088
|
+
} else {
|
|
3089
|
+
const MAP_WRITE_BIT2 = 2;
|
|
3090
|
+
const MAP_PERSISTENT_BIT2 = 64;
|
|
3091
|
+
const MAP_COHERENT_BIT2 = 128;
|
|
3092
|
+
const flags = MAP_WRITE_BIT2 | MAP_PERSISTENT_BIT2 | MAP_COHERENT_BIT2;
|
|
3093
|
+
this.mappedPtr = glAny.mapBufferRange(
|
|
3094
|
+
this.gl.ARRAY_BUFFER,
|
|
3095
|
+
0,
|
|
3096
|
+
this.size,
|
|
3097
|
+
flags
|
|
3098
|
+
);
|
|
3099
|
+
if (!this.mappedPtr) {
|
|
3100
|
+
throw new Error("Failed to map ring buffer persistently");
|
|
3101
|
+
}
|
|
3081
3102
|
}
|
|
3082
3103
|
this.gl.bindBuffer(this.gl.ARRAY_BUFFER, null);
|
|
3083
3104
|
}
|
|
@@ -3105,7 +3126,7 @@ class RingBuffer {
|
|
|
3105
3126
|
const region = {
|
|
3106
3127
|
offset: this.writeOffset,
|
|
3107
3128
|
size: alignedSize,
|
|
3108
|
-
view: new Float32Array(this.mappedPtr, this.writeOffset / 4, byteSize / 4),
|
|
3129
|
+
view: this.useFallbackMode ? this.fallbackBuffer.subarray(this.writeOffset / 4, this.writeOffset / 4 + byteSize / 4) : new Float32Array(this.mappedPtr, this.writeOffset / 4, byteSize / 4),
|
|
3109
3130
|
frameIndex: this.frameIndex
|
|
3110
3131
|
};
|
|
3111
3132
|
this.writeOffset += alignedSize;
|
|
@@ -3117,6 +3138,18 @@ class RingBuffer {
|
|
|
3117
3138
|
*/
|
|
3118
3139
|
advanceFrame() {
|
|
3119
3140
|
const glAny = this.gl;
|
|
3141
|
+
if (this.useFallbackMode && this.fallbackBuffer) {
|
|
3142
|
+
this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.buffer);
|
|
3143
|
+
this.gl.bufferSubData(this.gl.ARRAY_BUFFER, 0, this.fallbackBuffer);
|
|
3144
|
+
this.gl.bindBuffer(this.gl.ARRAY_BUFFER, null);
|
|
3145
|
+
}
|
|
3146
|
+
if (!glAny.fenceSync) {
|
|
3147
|
+
this.frameIndex++;
|
|
3148
|
+
if (this.writeOffset > this.size * 0.9) {
|
|
3149
|
+
this.writeOffset = 0;
|
|
3150
|
+
}
|
|
3151
|
+
return;
|
|
3152
|
+
}
|
|
3120
3153
|
const SYNC_GPU_COMMANDS_COMPLETE = 37143;
|
|
3121
3154
|
this.fenceSync = glAny.fenceSync(SYNC_GPU_COMMANDS_COMPLETE, 0);
|
|
3122
3155
|
if (!this.fenceSync) {
|
|
@@ -3215,6 +3248,29 @@ class RingBuffer {
|
|
|
3215
3248
|
this.gl.deleteBuffer(this.buffer);
|
|
3216
3249
|
}
|
|
3217
3250
|
}
|
|
3251
|
+
function getInstancingMethods(gl) {
|
|
3252
|
+
if (gl.drawArraysInstanced && gl.vertexAttribDivisor) {
|
|
3253
|
+
return {
|
|
3254
|
+
drawArraysInstanced: gl.drawArraysInstanced.bind(gl),
|
|
3255
|
+
drawElementsInstanced: gl.drawElementsInstanced?.bind(gl) || gl.drawArraysInstanced.bind(gl),
|
|
3256
|
+
vertexAttribDivisor: gl.vertexAttribDivisor.bind(gl)
|
|
3257
|
+
};
|
|
3258
|
+
}
|
|
3259
|
+
const ext = gl.getExtension("ANGLE_instanced_arrays");
|
|
3260
|
+
if (ext) {
|
|
3261
|
+
const drawArrays = ext.drawArraysInstanced || ext._drawArraysInstanced;
|
|
3262
|
+
const drawElements = ext.drawElementsInstanced || ext._drawElementsInstanced;
|
|
3263
|
+
const divisor = ext.vertexAttribDivisor || ext._vertexAttribDivisor;
|
|
3264
|
+
if (drawArrays && divisor) {
|
|
3265
|
+
return {
|
|
3266
|
+
drawArraysInstanced: drawArrays.bind(ext),
|
|
3267
|
+
drawElementsInstanced: drawElements?.bind(ext) || drawArrays.bind(ext),
|
|
3268
|
+
vertexAttribDivisor: divisor.bind(ext)
|
|
3269
|
+
};
|
|
3270
|
+
}
|
|
3271
|
+
}
|
|
3272
|
+
return null;
|
|
3273
|
+
}
|
|
3218
3274
|
class InstancedRenderer {
|
|
3219
3275
|
constructor(gl, shader, options = {}) {
|
|
3220
3276
|
this.texture = null;
|
|
@@ -3222,10 +3278,11 @@ class InstancedRenderer {
|
|
|
3222
3278
|
this.depthTestEnabled = true;
|
|
3223
3279
|
this.lastFrameDrawCalls = 0;
|
|
3224
3280
|
this.lastFrameInstanceCount = 0;
|
|
3225
|
-
const
|
|
3226
|
-
if (!
|
|
3227
|
-
throw new Error("InstancedRenderer requires WebGL2 context with instancing support");
|
|
3281
|
+
const methods = getInstancingMethods(gl);
|
|
3282
|
+
if (!methods) {
|
|
3283
|
+
throw new Error("InstancedRenderer requires WebGL2 context with instancing support (ANGLE_instanced_arrays)");
|
|
3228
3284
|
}
|
|
3285
|
+
this.instancingMethods = methods;
|
|
3229
3286
|
this.gl = gl;
|
|
3230
3287
|
this.shader = shader;
|
|
3231
3288
|
this.maxInstances = options.maxInstances ?? 1e4;
|
|
@@ -3424,7 +3481,7 @@ class InstancedRenderer {
|
|
|
3424
3481
|
}
|
|
3425
3482
|
this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.instanceBufferWebGL);
|
|
3426
3483
|
this.setupInstanceAttributes(region.offset);
|
|
3427
|
-
this.
|
|
3484
|
+
this.instancingMethods.drawArraysInstanced(
|
|
3428
3485
|
this.gl.TRIANGLES,
|
|
3429
3486
|
0,
|
|
3430
3487
|
6,
|
|
@@ -3439,42 +3496,41 @@ class InstancedRenderer {
|
|
|
3439
3496
|
setupInstanceAttributes(offset) {
|
|
3440
3497
|
const stride = this.instanceStride * 4;
|
|
3441
3498
|
const baseOffset = offset;
|
|
3442
|
-
const glAny = this.gl;
|
|
3443
3499
|
const gridAttr = this.shader.getAttributeLocation("aGridPosition");
|
|
3444
3500
|
if (gridAttr !== -1) {
|
|
3445
3501
|
this.gl.enableVertexAttribArray(gridAttr);
|
|
3446
3502
|
this.gl.vertexAttribPointer(gridAttr, 2, this.gl.FLOAT, false, stride, baseOffset);
|
|
3447
|
-
|
|
3503
|
+
this.instancingMethods.vertexAttribDivisor(gridAttr, 1);
|
|
3448
3504
|
}
|
|
3449
3505
|
const zAttr = this.shader.getAttributeLocation("aZPosition");
|
|
3450
3506
|
if (zAttr !== -1) {
|
|
3451
3507
|
this.gl.enableVertexAttribArray(zAttr);
|
|
3452
3508
|
this.gl.vertexAttribPointer(zAttr, 1, this.gl.FLOAT, false, stride, baseOffset + 2 * 4);
|
|
3453
|
-
|
|
3509
|
+
this.instancingMethods.vertexAttribDivisor(zAttr, 1);
|
|
3454
3510
|
}
|
|
3455
3511
|
const colorAttr = this.shader.getAttributeLocation("aColor");
|
|
3456
3512
|
if (colorAttr !== -1) {
|
|
3457
3513
|
this.gl.enableVertexAttribArray(colorAttr);
|
|
3458
3514
|
this.gl.vertexAttribPointer(colorAttr, 4, this.gl.FLOAT, false, stride, baseOffset + 3 * 4);
|
|
3459
|
-
|
|
3515
|
+
this.instancingMethods.vertexAttribDivisor(colorAttr, 1);
|
|
3460
3516
|
}
|
|
3461
3517
|
const texAttr = this.shader.getAttributeLocation("aTexIndex");
|
|
3462
3518
|
if (texAttr !== -1) {
|
|
3463
3519
|
this.gl.enableVertexAttribArray(texAttr);
|
|
3464
3520
|
this.gl.vertexAttribPointer(texAttr, 1, this.gl.FLOAT, false, stride, baseOffset + 7 * 4);
|
|
3465
|
-
|
|
3521
|
+
this.instancingMethods.vertexAttribDivisor(texAttr, 1);
|
|
3466
3522
|
}
|
|
3467
3523
|
const uvOffsetAttr = this.shader.getAttributeLocation("aUVOffset");
|
|
3468
3524
|
if (uvOffsetAttr !== -1) {
|
|
3469
3525
|
this.gl.enableVertexAttribArray(uvOffsetAttr);
|
|
3470
3526
|
this.gl.vertexAttribPointer(uvOffsetAttr, 2, this.gl.FLOAT, false, stride, baseOffset + 8 * 4);
|
|
3471
|
-
|
|
3527
|
+
this.instancingMethods.vertexAttribDivisor(uvOffsetAttr, 1);
|
|
3472
3528
|
}
|
|
3473
3529
|
const sizeAttr = this.shader.getAttributeLocation("aSize");
|
|
3474
3530
|
if (sizeAttr !== -1) {
|
|
3475
3531
|
this.gl.enableVertexAttribArray(sizeAttr);
|
|
3476
3532
|
this.gl.vertexAttribPointer(sizeAttr, 2, this.gl.FLOAT, false, stride, baseOffset + 10 * 4);
|
|
3477
|
-
|
|
3533
|
+
this.instancingMethods.vertexAttribDivisor(sizeAttr, 1);
|
|
3478
3534
|
}
|
|
3479
3535
|
}
|
|
3480
3536
|
/**
|
|
@@ -3528,6 +3584,7 @@ class InstancedRenderer {
|
|
|
3528
3584
|
}
|
|
3529
3585
|
class HybridRenderer {
|
|
3530
3586
|
constructor(gl, instancedShader, batchShader, options = {}) {
|
|
3587
|
+
this.quads = [];
|
|
3531
3588
|
this.metrics = {
|
|
3532
3589
|
instancedDrawCalls: 0,
|
|
3533
3590
|
batchedDrawCalls: 0,
|
|
@@ -3557,20 +3614,10 @@ class HybridRenderer {
|
|
|
3557
3614
|
}
|
|
3558
3615
|
/**
|
|
3559
3616
|
* Add a sprite for rendering
|
|
3560
|
-
*
|
|
3617
|
+
* Stores the sprite and routes to appropriate renderer during render()
|
|
3561
3618
|
*/
|
|
3562
3619
|
addSprite(sprite) {
|
|
3563
|
-
|
|
3564
|
-
gridX: sprite.gridX ?? 0,
|
|
3565
|
-
gridY: sprite.gridY ?? 0,
|
|
3566
|
-
z: sprite.z ?? 0,
|
|
3567
|
-
color: sprite.color ?? { r: 1, g: 1, b: 1, a: 1 },
|
|
3568
|
-
texIndex: sprite.texIndex ?? 0,
|
|
3569
|
-
uvOffset: sprite.uvRect ? { u: sprite.uvRect.uMin, v: sprite.uvRect.vMin } : { u: 0, v: 0 },
|
|
3570
|
-
size: { width: sprite.width, height: sprite.height }
|
|
3571
|
-
};
|
|
3572
|
-
this.instancedRenderer.addInstance(instance);
|
|
3573
|
-
this.batchRenderer.addQuad(sprite);
|
|
3620
|
+
this.quads.push(sprite);
|
|
3574
3621
|
}
|
|
3575
3622
|
/**
|
|
3576
3623
|
* Add a quad (alias for addSprite for API compatibility)
|
|
@@ -3580,11 +3627,12 @@ class HybridRenderer {
|
|
|
3580
3627
|
this.addSprite(quad);
|
|
3581
3628
|
}
|
|
3582
3629
|
/**
|
|
3583
|
-
* Clear all renderers
|
|
3630
|
+
* Clear all renderers and stored quads
|
|
3584
3631
|
*/
|
|
3585
3632
|
clear() {
|
|
3586
3633
|
this.instancedRenderer.clear();
|
|
3587
3634
|
this.batchRenderer.clear();
|
|
3635
|
+
this.quads = [];
|
|
3588
3636
|
this.metrics = {
|
|
3589
3637
|
instancedDrawCalls: 0,
|
|
3590
3638
|
batchedDrawCalls: 0,
|
|
@@ -3606,17 +3654,69 @@ class HybridRenderer {
|
|
|
3606
3654
|
this.instancedRenderer.setDepthTestEnabled(enabled);
|
|
3607
3655
|
this.batchRenderer.setDepthTestEnabled(enabled);
|
|
3608
3656
|
}
|
|
3657
|
+
/**
|
|
3658
|
+
* Group quads by texture and size for efficient batching
|
|
3659
|
+
*/
|
|
3660
|
+
groupQuads() {
|
|
3661
|
+
const groups = /* @__PURE__ */ new Map();
|
|
3662
|
+
for (const quad of this.quads) {
|
|
3663
|
+
const key = `${quad.texIndex ?? 0}_${quad.width}_${quad.height}`;
|
|
3664
|
+
if (!groups.has(key)) {
|
|
3665
|
+
groups.set(key, {
|
|
3666
|
+
texIndex: quad.texIndex ?? 0,
|
|
3667
|
+
width: quad.width,
|
|
3668
|
+
height: quad.height,
|
|
3669
|
+
quads: []
|
|
3670
|
+
});
|
|
3671
|
+
}
|
|
3672
|
+
groups.get(key).quads.push(quad);
|
|
3673
|
+
}
|
|
3674
|
+
return groups;
|
|
3675
|
+
}
|
|
3609
3676
|
/**
|
|
3610
3677
|
* Render all sprites
|
|
3611
3678
|
* Returns rendering metrics
|
|
3612
3679
|
*/
|
|
3613
3680
|
render(camera) {
|
|
3614
|
-
this.metrics
|
|
3615
|
-
|
|
3616
|
-
|
|
3617
|
-
|
|
3618
|
-
|
|
3619
|
-
|
|
3681
|
+
this.metrics = {
|
|
3682
|
+
instancedDrawCalls: 0,
|
|
3683
|
+
batchedDrawCalls: 0,
|
|
3684
|
+
instancedInstances: 0,
|
|
3685
|
+
batchedInstances: 0
|
|
3686
|
+
};
|
|
3687
|
+
const groups = this.groupQuads();
|
|
3688
|
+
for (const group of groups.values()) {
|
|
3689
|
+
if (group.quads.length >= this.threshold) {
|
|
3690
|
+
for (const quad of group.quads) {
|
|
3691
|
+
const instance = {
|
|
3692
|
+
gridX: quad.gridX ?? 0,
|
|
3693
|
+
gridY: quad.gridY ?? 0,
|
|
3694
|
+
z: quad.z ?? 0,
|
|
3695
|
+
color: quad.color ?? { r: 1, g: 1, b: 1, a: 1 },
|
|
3696
|
+
texIndex: quad.texIndex ?? 0,
|
|
3697
|
+
uvOffset: quad.uvRect ? { u: quad.uvRect.uMin, v: quad.uvRect.vMin } : { u: 0, v: 0 },
|
|
3698
|
+
size: { width: quad.width, height: quad.height }
|
|
3699
|
+
};
|
|
3700
|
+
this.instancedRenderer.addInstance(instance);
|
|
3701
|
+
}
|
|
3702
|
+
this.metrics.instancedInstances += group.quads.length;
|
|
3703
|
+
} else {
|
|
3704
|
+
for (const quad of group.quads) {
|
|
3705
|
+
this.batchRenderer.addQuad(quad);
|
|
3706
|
+
}
|
|
3707
|
+
this.metrics.batchedInstances += group.quads.length;
|
|
3708
|
+
}
|
|
3709
|
+
}
|
|
3710
|
+
if (this.metrics.instancedInstances > 0) {
|
|
3711
|
+
this.metrics.instancedDrawCalls = this.instancedRenderer.render(camera);
|
|
3712
|
+
}
|
|
3713
|
+
if (this.metrics.batchedInstances > 0) {
|
|
3714
|
+
this.batchRenderer.render(camera);
|
|
3715
|
+
this.metrics.batchedDrawCalls = 1;
|
|
3716
|
+
}
|
|
3717
|
+
this.quads = [];
|
|
3718
|
+
this.instancedRenderer.clear();
|
|
3719
|
+
this.batchRenderer.clear();
|
|
3620
3720
|
this.frameCount++;
|
|
3621
3721
|
if (this.frameCount % 60 === 0) {
|
|
3622
3722
|
this.adjustThreshold();
|
|
@@ -3631,10 +3731,10 @@ class HybridRenderer {
|
|
|
3631
3731
|
}
|
|
3632
3732
|
/**
|
|
3633
3733
|
* Get total quad count (API compatibility with GPUBasedSpriteBatchRenderer)
|
|
3634
|
-
* Returns
|
|
3734
|
+
* Returns actual number of quads waiting to be rendered
|
|
3635
3735
|
*/
|
|
3636
3736
|
getQuadCount() {
|
|
3637
|
-
return this.
|
|
3737
|
+
return this.quads.length;
|
|
3638
3738
|
}
|
|
3639
3739
|
/**
|
|
3640
3740
|
* Set instancing threshold manually
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-context.d.ts","sourceRoot":"","sources":["../../../../../src/platforms/node/node-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,uBAAuB,EACxB,MAAM,mCAAmC,CAAC;AAE3C;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,SAAS,EAAE,qBAAqB,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAS;gBAEf,OAAO,EAAE,uBAAuB;IAiB5C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAU3C,WAAW,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAIhD,KAAK,CAAC,KAAK,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IASnE,OAAO,IAAI,IAAI;IAKf,OAAO,IAAI,IAAI;IAOf,QAAQ,IAAI,OAAO;
|
|
1
|
+
{"version":3,"file":"node-context.d.ts","sourceRoot":"","sources":["../../../../../src/platforms/node/node-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,uBAAuB,EACxB,MAAM,mCAAmC,CAAC;AAE3C;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,SAAS,EAAE,qBAAqB,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAS;gBAEf,OAAO,EAAE,uBAAuB;IAiB5C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAU3C,WAAW,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAIhD,KAAK,CAAC,KAAK,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IASnE,OAAO,IAAI,IAAI;IAKf,OAAO,IAAI,IAAI;IAOf,QAAQ,IAAI,OAAO;IAiBnB,kBAAkB,IAAI,OAAO;IAqB7B,gBAAgB,IAAI,GAAG;IAMvB;;;OAGG;IACH,UAAU,IAAI,UAAU;CAazB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebGL Extension Helper for Node.js
|
|
3
|
+
*
|
|
4
|
+
* headless-gl provides WebGL2 features through extensions rather than
|
|
5
|
+
* direct context methods. This helper provides unified access to both.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Get instancing extension methods
|
|
9
|
+
* Returns either direct methods or ANGLE_instanced_arrays extension
|
|
10
|
+
* Handles both standard names and headless-gl's underscored names
|
|
11
|
+
*/
|
|
12
|
+
export declare function getInstancingMethods(gl: any): {
|
|
13
|
+
drawArraysInstanced: Function;
|
|
14
|
+
drawElementsInstanced: Function;
|
|
15
|
+
vertexAttribDivisor: Function;
|
|
16
|
+
} | null;
|
|
17
|
+
/**
|
|
18
|
+
* Check if instancing is available
|
|
19
|
+
*/
|
|
20
|
+
export declare function hasInstancingSupport(gl: any): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Get WebGL2 buffer mapping methods
|
|
23
|
+
* Returns either direct methods or checks for extension support
|
|
24
|
+
*/
|
|
25
|
+
export declare function getBufferMappingMethods(gl: any): {
|
|
26
|
+
mapBufferRange: Function;
|
|
27
|
+
unmapBuffer: Function;
|
|
28
|
+
fenceSync: Function;
|
|
29
|
+
clientWaitSync: Function;
|
|
30
|
+
deleteSync: Function;
|
|
31
|
+
} | null;
|
|
32
|
+
//# sourceMappingURL=webgl-extensions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webgl-extensions.d.ts","sourceRoot":"","sources":["../../../../../src/platforms/node/webgl-extensions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,GAAG,GAAG;IAC7C,mBAAmB,EAAE,QAAQ,CAAC;IAC9B,qBAAqB,EAAE,QAAQ,CAAC;IAChC,mBAAmB,EAAE,QAAQ,CAAC;CAC/B,GAAG,IAAI,CA4BP;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,GAAG,GAAG,OAAO,CAErD;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,GAAG,GAAG;IAChD,cAAc,EAAE,QAAQ,CAAC;IACzB,WAAW,EAAE,QAAQ,CAAC;IACtB,SAAS,EAAE,QAAQ,CAAC;IACpB,cAAc,EAAE,QAAQ,CAAC;IACzB,UAAU,EAAE,QAAQ,CAAC;CACtB,GAAG,IAAI,CAeP"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-renderer.d.ts","sourceRoot":"","sources":["../../../../src/rendering/batch-renderer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"batch-renderer.d.ts","sourceRoot":"","sources":["../../../../src/rendering/batch-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,7 @@ export declare class HybridRenderer {
|
|
|
42
42
|
private instancedRenderer;
|
|
43
43
|
private batchRenderer;
|
|
44
44
|
private threshold;
|
|
45
|
+
private quads;
|
|
45
46
|
private metrics;
|
|
46
47
|
private frameCount;
|
|
47
48
|
private lastFpsCheck;
|
|
@@ -50,7 +51,7 @@ export declare class HybridRenderer {
|
|
|
50
51
|
instancedShader: Shader, batchShader: Shader, options?: HybridRendererOptions);
|
|
51
52
|
/**
|
|
52
53
|
* Add a sprite for rendering
|
|
53
|
-
*
|
|
54
|
+
* Stores the sprite and routes to appropriate renderer during render()
|
|
54
55
|
*/
|
|
55
56
|
addSprite(sprite: SpriteQuadInstance): void;
|
|
56
57
|
/**
|
|
@@ -59,7 +60,7 @@ export declare class HybridRenderer {
|
|
|
59
60
|
*/
|
|
60
61
|
addQuad(quad: SpriteQuadInstance): void;
|
|
61
62
|
/**
|
|
62
|
-
* Clear all renderers
|
|
63
|
+
* Clear all renderers and stored quads
|
|
63
64
|
*/
|
|
64
65
|
clear(): void;
|
|
65
66
|
/**
|
|
@@ -70,6 +71,10 @@ export declare class HybridRenderer {
|
|
|
70
71
|
* Set depth testing
|
|
71
72
|
*/
|
|
72
73
|
setDepthTestEnabled(enabled: boolean): void;
|
|
74
|
+
/**
|
|
75
|
+
* Group quads by texture and size for efficient batching
|
|
76
|
+
*/
|
|
77
|
+
private groupQuads;
|
|
73
78
|
/**
|
|
74
79
|
* Render all sprites
|
|
75
80
|
* Returns rendering metrics
|
|
@@ -81,7 +86,7 @@ export declare class HybridRenderer {
|
|
|
81
86
|
getMetrics(): RenderMetrics;
|
|
82
87
|
/**
|
|
83
88
|
* Get total quad count (API compatibility with GPUBasedSpriteBatchRenderer)
|
|
84
|
-
* Returns
|
|
89
|
+
* Returns actual number of quads waiting to be rendered
|
|
85
90
|
*/
|
|
86
91
|
getQuadCount(): number;
|
|
87
92
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hybrid-renderer.d.ts","sourceRoot":"","sources":["../../../../src/rendering/hybrid-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAA+B,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAExF;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,qCAAqC;IACrC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mCAAmC;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,oCAAoC;IACpC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kCAAkC;IAClC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;
|
|
1
|
+
{"version":3,"file":"hybrid-renderer.d.ts","sourceRoot":"","sources":["../../../../src/rendering/hybrid-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAA+B,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAExF;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,qCAAqC;IACrC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mCAAmC;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,oCAAoC;IACpC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kCAAkC;IAClC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAYD;;;;;;GAMG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAA4B;IAGzC,OAAO,CAAC,OAAO,CAKb;IAGF,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,kBAAkB,CAAgB;gBAGxC,EAAE,EAAE,GAAG,EAAE,yCAAyC;IAClD,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,qBAA0B;IAuBrC;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAI3C;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI;IAIvC;;OAEG;IACH,KAAK,IAAI,IAAI;IAcb;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI;IAKzC;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAK3C;;OAEG;IACH,OAAO,CAAC,UAAU;IAqBlB;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;IAmErC;;OAEG;IACH,UAAU,IAAI,aAAa;IAI3B;;;OAGG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAK/C;;OAEG;IACH,sBAAsB,IAAI,MAAM;IAIhC;;;OAGG;IACH,OAAO,CAAC,eAAe;IAqBvB;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instanced-renderer.d.ts","sourceRoot":"","sources":["../../../../src/rendering/instanced-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"instanced-renderer.d.ts","sourceRoot":"","sources":["../../../../src/rendering/instanced-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,8 @@ export interface RingBufferOptions {
|
|
|
42
42
|
*
|
|
43
43
|
* Circular buffer with persistent mapping for efficient GPU streaming.
|
|
44
44
|
* Uses triple buffering to avoid CPU-GPU synchronization points.
|
|
45
|
+
*
|
|
46
|
+
* Falls back to regular buffer updates if persistent mapping is not available.
|
|
45
47
|
*/
|
|
46
48
|
export declare class RingBuffer {
|
|
47
49
|
private gl;
|
|
@@ -53,6 +55,8 @@ export declare class RingBuffer {
|
|
|
53
55
|
private frameIndex;
|
|
54
56
|
private fenceSync;
|
|
55
57
|
private pendingFrames;
|
|
58
|
+
private useFallbackMode;
|
|
59
|
+
private fallbackBuffer;
|
|
56
60
|
private readonly ALIGNMENT;
|
|
57
61
|
private readonly FRAME_COUNT;
|
|
58
62
|
constructor(options: RingBufferOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ring-buffer.d.ts","sourceRoot":"","sources":["../../../../src/rendering/ring-buffer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,IAAI,EAAE,YAAY,CAAC;IACnB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,EAAE,EAAE,GAAG,CAAC;IACR,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAWD
|
|
1
|
+
{"version":3,"file":"ring-buffer.d.ts","sourceRoot":"","sources":["../../../../src/rendering/ring-buffer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,IAAI,EAAE,YAAY,CAAC;IACnB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,EAAE,EAAE,GAAG,CAAC;IACR,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAWD;;;;;;;GAOG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,EAAE,CAAM;IAChB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,IAAI,CAAS;IAGrB,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,UAAU,CAAa;IAG/B,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,aAAa,CAAsB;IAG3C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,cAAc,CAA6B;IAGnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAO;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAK;gBAErB,OAAO,EAAE,iBAAiB;IA6CtC;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAwCnD;;;OAGG;IACH,YAAY,IAAI,IAAI;IAqDpB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;;OAGG;IACH,KAAK,IAAI,IAAI;IAmBb;;;OAGG;IACH,SAAS,IAAI,WAAW;IAIxB;;;OAGG;IACH,gBAAgB,IAAI,WAAW,GAAG,IAAI;IAItC;;;OAGG;IACH,OAAO,IAAI,IAAI;CA0BhB"}
|