bloody-engine 1.1.6 → 1.1.7
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 +87 -31
- 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/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);
|
|
@@ -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
|
/**
|
|
@@ -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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"}
|
|
@@ -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":"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;AAI/C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,eAAe;IACf,CAAC,EAAE,MAAM,CAAC;IACV,8BAA8B;IAC9B,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtD,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,kBAAkB;IAClB,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACzC;AAcD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yCAAyC;IACzC,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;GAKG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,EAAE,CAAM;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAwB;IAGvC,OAAO,CAAC,iBAAiB,CAGvB;IAGF,OAAO,CAAC,cAAc,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAe;IAG/B,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,mBAAmB,CAAc;IAGzC,OAAO,CAAC,OAAO,CAA0C;IACzD,OAAO,CAAC,cAAc,CAAS;IAG/B,OAAO,CAAC,gBAAgB,CAAiB;IACzC,OAAO,CAAC,kBAAkB,CAAS;IAGnC,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,MAAM,CAAS;IAGvB,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,sBAAsB,CAAa;gBAGzC,EAAE,EAAE,GAAG,EACP,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,wBAA6B;IAqCxC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgC1B;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI;IAIzC;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAerC;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAQ1B;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IA0D9B;;OAEG;IACH,OAAO,CAAC,YAAY;IAkBpB;;OAEG;IACH,OAAO,CAAC,WAAW;IA4CnB;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAqD/B;;OAEG;IACH,OAAO,CAAC,WAAW;IAkBnB;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAI3C;;;OAGG;IACH,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI9C;;OAEG;IACH,UAAU,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE;IAO1D;;OAEG;IACH,OAAO,IAAI,IAAI;CAKhB"}
|
|
@@ -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"}
|