@lightningjs/renderer 2.1.2 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -4
- package/dist/exports/core-api.d.ts +74 -0
- package/dist/exports/core-api.js +96 -0
- package/dist/exports/core-api.js.map +1 -0
- package/dist/exports/index.d.ts +1 -0
- package/dist/exports/index.js +1 -0
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/main-api.d.ts +30 -0
- package/dist/exports/main-api.js +45 -0
- package/dist/exports/main-api.js.map +1 -0
- package/dist/src/common/IAnimationController.d.ts +1 -1
- package/dist/src/core/CoreExtension.d.ts +12 -0
- package/dist/src/core/CoreExtension.js +29 -0
- package/dist/src/core/CoreExtension.js.map +1 -0
- package/dist/src/core/CoreNode.d.ts +1 -1
- package/dist/src/core/CoreNode.js +45 -46
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.js +1 -0
- package/dist/src/core/CoreShaderManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +1 -0
- package/dist/src/core/Stage.js +2 -1
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/animations/CoreAnimationController.js +3 -2
- package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +144 -2
- package/dist/src/core/lib/WebGlContextWrapper.js +211 -20
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +1 -0
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +4 -3
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +8 -18
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +2 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +55 -2
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +6 -6
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +2 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +12 -9
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
- package/dist/src/core/utils.d.ts +1 -1
- package/dist/src/main-api/ICoreDriver.d.ts +24 -0
- package/dist/src/main-api/ICoreDriver.js +20 -0
- package/dist/src/main-api/ICoreDriver.js.map +1 -0
- package/dist/src/main-api/Inspector.js +9 -0
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +10 -0
- package/dist/src/main-api/Renderer.js +2 -0
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/main-api/RendererMain.d.ts +378 -0
- package/dist/src/main-api/RendererMain.js +367 -0
- package/dist/src/main-api/RendererMain.js.map +1 -0
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +9 -0
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +38 -0
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +1 -0
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +56 -0
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +101 -0
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +1 -0
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +32 -0
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +28 -0
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +1 -0
- package/dist/src/render-drivers/main/MainCoreDriver.d.ts +21 -0
- package/dist/src/render-drivers/main/MainCoreDriver.js +115 -0
- package/dist/src/render-drivers/main/MainCoreDriver.js.map +1 -0
- package/dist/src/render-drivers/main/MainOnlyNode.d.ts +101 -0
- package/dist/src/render-drivers/main/MainOnlyNode.js +425 -0
- package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -0
- package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +47 -0
- package/dist/src/render-drivers/main/MainOnlyTextNode.js +204 -0
- package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +1 -0
- package/dist/src/render-drivers/threadx/NodeStruct.d.ts +93 -0
- package/dist/src/render-drivers/threadx/NodeStruct.js +290 -0
- package/dist/src/render-drivers/threadx/NodeStruct.js.map +1 -0
- package/dist/src/render-drivers/threadx/SharedNode.d.ts +40 -0
- package/dist/src/render-drivers/threadx/SharedNode.js +61 -0
- package/dist/src/render-drivers/threadx/SharedNode.js.map +1 -0
- package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +44 -0
- package/dist/src/render-drivers/threadx/TextNodeStruct.js +203 -0
- package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +1 -0
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +25 -0
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +232 -0
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +1 -0
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +24 -0
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +113 -0
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +1 -0
- package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +46 -0
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js +160 -0
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +1 -0
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +28 -0
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +55 -0
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +1 -0
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +70 -0
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +32 -0
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +1 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +19 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +184 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +27 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +109 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +1 -0
- package/dist/src/render-drivers/threadx/worker/renderer.d.ts +1 -0
- package/dist/src/render-drivers/threadx/worker/renderer.js +147 -0
- package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -0
- package/dist/src/render-drivers/utils.d.ts +12 -0
- package/dist/src/render-drivers/utils.js +74 -0
- package/dist/src/render-drivers/utils.js.map +1 -0
- package/dist/src/utils.d.ts +1 -1
- package/dist/src/utils.js +2 -2
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/exports/index.ts +1 -0
- package/package.json +1 -1
- package/src/common/IAnimationController.ts +5 -1
- package/src/core/CoreNode.ts +57 -55
- package/src/core/CoreShaderManager.ts +1 -0
- package/src/core/Stage.ts +3 -0
- package/src/core/animations/CoreAnimationController.ts +3 -2
- package/src/core/lib/WebGlContextWrapper.ts +288 -26
- package/src/core/renderers/CoreRenderer.ts +1 -0
- package/src/core/renderers/webgl/WebGlCoreRenderer.ts +8 -3
- package/src/core/renderers/webgl/WebGlCoreShader.ts +21 -28
- package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +1 -1
- package/src/core/renderers/webgl/shaders/DynamicShader.ts +75 -3
- package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +4 -1
- package/src/core/renderers/webgl/shaders/SdfShader.ts +21 -6
- package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +3 -0
- package/src/core/text-rendering/renderers/TextRenderer.ts +18 -18
- package/src/main-api/Inspector.ts +12 -0
- package/src/main-api/Renderer.ts +13 -0
- package/src/utils.ts +2 -1
|
@@ -431,24 +431,24 @@ export abstract class TextRenderer<
|
|
|
431
431
|
};
|
|
432
432
|
// For each prop setter add a wrapper method that checks if the prop is
|
|
433
433
|
// different before calling the setter
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
434
|
+
const propSet = {};
|
|
435
|
+
Object.keys(propSetters).forEach((key) => {
|
|
436
|
+
Object.defineProperty(propSet, key, {
|
|
437
|
+
value: (state: StateT, value: TrProps[keyof TrProps]) => {
|
|
438
|
+
// Check if the current prop value is different before calling the setter
|
|
439
|
+
if (state.props[key as keyof TrProps] !== value) {
|
|
440
|
+
propSetters[key as keyof TrPropSetters](state, value as never);
|
|
441
|
+
|
|
442
|
+
// Assume any prop change will require a render
|
|
443
|
+
// This ensures that renders are triggered appropriately even with RAF paused
|
|
444
|
+
this.stage.requestRender();
|
|
445
|
+
}
|
|
446
|
+
},
|
|
447
|
+
writable: false, // Prevents property from being changed
|
|
448
|
+
configurable: false, // Prevents property from being deleted
|
|
449
|
+
});
|
|
450
|
+
});
|
|
451
|
+
this.set = propSet as Readonly<TrPropSetters<StateT>>;
|
|
452
452
|
}
|
|
453
453
|
|
|
454
454
|
setStatus(state: StateT, status: StateT['status'], error?: Error) {
|
|
@@ -246,6 +246,18 @@ export class Inspector {
|
|
|
246
246
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
|
|
247
247
|
(node as any).div = div;
|
|
248
248
|
|
|
249
|
+
node.on('inViewport', () => {
|
|
250
|
+
div.setAttribute('state', 'inViewport');
|
|
251
|
+
});
|
|
252
|
+
|
|
253
|
+
node.on('inBounds', () => {
|
|
254
|
+
div.setAttribute('state', 'inBounds');
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
node.on('outOfBounds', () => {
|
|
258
|
+
div.setAttribute('state', 'outOfBounds');
|
|
259
|
+
});
|
|
260
|
+
|
|
249
261
|
return this.createProxy(node, div);
|
|
250
262
|
}
|
|
251
263
|
|
package/src/main-api/Renderer.ts
CHANGED
|
@@ -245,6 +245,17 @@ export interface RendererMainSettings {
|
|
|
245
245
|
*
|
|
246
246
|
*/
|
|
247
247
|
fontEngines: (typeof SdfTextRenderer | typeof CanvasTextRenderer)[];
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Force WebGL2
|
|
251
|
+
*
|
|
252
|
+
* @remarks
|
|
253
|
+
* Force the renderer to use WebGL2. This can be used to force the renderer to
|
|
254
|
+
* use WebGL2 even if the browser supports WebGL1.
|
|
255
|
+
*
|
|
256
|
+
* @defaultValue `false`
|
|
257
|
+
*/
|
|
258
|
+
forceWebGL2?: boolean;
|
|
248
259
|
}
|
|
249
260
|
|
|
250
261
|
/**
|
|
@@ -330,6 +341,7 @@ export class RendererMain extends EventEmitter {
|
|
|
330
341
|
numImageWorkers:
|
|
331
342
|
settings.numImageWorkers !== undefined ? settings.numImageWorkers : 2,
|
|
332
343
|
enableContextSpy: settings.enableContextSpy ?? false,
|
|
344
|
+
forceWebGL2: settings.forceWebGL2 ?? false,
|
|
333
345
|
inspector: settings.inspector ?? false,
|
|
334
346
|
renderEngine: settings.renderEngine,
|
|
335
347
|
quadBufferSize: settings.quadBufferSize ?? 4 * 1024 * 1024,
|
|
@@ -366,6 +378,7 @@ export class RendererMain extends EventEmitter {
|
|
|
366
378
|
deviceLogicalPixelRatio: this.settings.deviceLogicalPixelRatio,
|
|
367
379
|
devicePhysicalPixelRatio: this.settings.devicePhysicalPixelRatio,
|
|
368
380
|
enableContextSpy: this.settings.enableContextSpy,
|
|
381
|
+
forceWebGL2: this.settings.forceWebGL2,
|
|
369
382
|
fpsUpdateInterval: this.settings.fpsUpdateInterval,
|
|
370
383
|
numImageWorkers: this.settings.numImageWorkers,
|
|
371
384
|
renderEngine: this.settings.renderEngine,
|
package/src/utils.ts
CHANGED
|
@@ -21,6 +21,7 @@ import type { ContextSpy } from './core/lib/ContextSpy.js';
|
|
|
21
21
|
|
|
22
22
|
export function createWebGLContext(
|
|
23
23
|
canvas: HTMLCanvasElement | OffscreenCanvas,
|
|
24
|
+
forceWebGL2 = false,
|
|
24
25
|
contextSpy: ContextSpy | null,
|
|
25
26
|
): WebGLRenderingContext {
|
|
26
27
|
const config: WebGLContextAttributes = {
|
|
@@ -38,7 +39,7 @@ export function createWebGLContext(
|
|
|
38
39
|
const gl =
|
|
39
40
|
// TODO: Remove this assertion once this issue is fixed in TypeScript
|
|
40
41
|
// https://github.com/microsoft/TypeScript/issues/53614
|
|
41
|
-
(canvas.getContext('webgl', config) ||
|
|
42
|
+
(canvas.getContext(forceWebGL2 ? 'webgl2' : 'webgl', config) ||
|
|
42
43
|
canvas.getContext(
|
|
43
44
|
'experimental-webgl' as 'webgl',
|
|
44
45
|
config,
|