@solidtv/renderer 1.5.4 → 1.5.6
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/exports/canvas-shaders.d.ts +1 -0
- package/dist/exports/canvas-shaders.js +1 -0
- package/dist/exports/canvas-shaders.js.map +1 -1
- 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/webgl-shaders.d.ts +1 -0
- package/dist/exports/webgl-shaders.js +1 -0
- package/dist/exports/webgl-shaders.js.map +1 -1
- package/dist/src/core/CoreShaderManager.js +16 -2
- package/dist/src/core/CoreShaderManager.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +13 -0
- package/dist/src/core/lib/WebGlContextWrapper.js +15 -0
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/lib/validateImageBitmap.js +7 -0
- package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
- package/dist/src/core/platforms/web/WebPlatform.js +57 -30
- package/dist/src/core/platforms/web/WebPlatform.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +10 -0
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +19 -0
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +14 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/shaders/canvas/EdgeFade.d.ts +10 -0
- package/dist/src/core/shaders/canvas/EdgeFade.js +92 -0
- package/dist/src/core/shaders/canvas/EdgeFade.js.map +1 -0
- package/dist/src/core/shaders/canvas/LinearGradient.js +1 -18
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/templates/EdgeFadeTemplate.d.ts +32 -0
- package/dist/src/core/shaders/templates/EdgeFadeTemplate.js +9 -0
- package/dist/src/core/shaders/templates/EdgeFadeTemplate.js.map +1 -0
- package/dist/src/core/shaders/webgl/EdgeFade.d.ts +9 -0
- package/dist/src/core/shaders/webgl/EdgeFade.js +74 -0
- package/dist/src/core/shaders/webgl/EdgeFade.js.map +1 -0
- package/dist/src/core/shaders/webgl/LinearGradient.js +31 -51
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RadialGradient.js +2 -2
- package/dist/src/core/shaders/webgl/RadialProgress.js +7 -0
- package/dist/src/core/shaders/webgl/RadialProgress.js.map +1 -1
- package/dist/src/core/text-rendering/SdfFontHandler.d.ts +1 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js +88 -51
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.js +2 -1
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +20 -0
- package/dist/src/main-api/Renderer.js +6 -0
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/exports/canvas-shaders.ts +1 -0
- package/exports/index.ts +1 -0
- package/exports/webgl-shaders.ts +1 -0
- package/package.json +1 -1
- package/src/core/CoreShaderManager.contextLoss.test.ts +72 -0
- package/src/core/CoreShaderManager.ts +15 -2
- package/src/core/lib/WebGlContextWrapper.ts +16 -0
- package/src/core/lib/validateImageBitmap.test.ts +15 -0
- package/src/core/lib/validateImageBitmap.ts +8 -0
- package/src/core/platforms/web/WebPlatform.loopError.test.ts +145 -0
- package/src/core/platforms/web/WebPlatform.ts +61 -35
- package/src/core/renderers/canvas/CanvasRenderer.ts +20 -0
- package/src/core/renderers/webgl/WebGlRenderer.contextLoss.test.ts +49 -0
- package/src/core/renderers/webgl/WebGlRenderer.ts +13 -1
- package/src/core/shaders/canvas/EdgeFade.ts +105 -0
- package/src/core/shaders/canvas/LinearGradient.test.ts +45 -0
- package/src/core/shaders/canvas/LinearGradient.ts +1 -18
- package/src/core/shaders/templates/EdgeFadeTemplate.test.ts +35 -0
- package/src/core/shaders/templates/EdgeFadeTemplate.ts +41 -0
- package/src/core/shaders/webgl/EdgeFade.ts +84 -0
- package/src/core/shaders/webgl/LinearGradient.test.ts +70 -0
- package/src/core/shaders/webgl/LinearGradient.ts +36 -51
- package/src/core/shaders/webgl/RadialGradient.ts +2 -2
- package/src/core/shaders/webgl/RadialProgress.ts +7 -0
- package/src/core/text-rendering/SdfFontHandler.ts +77 -30
- package/src/core/text-rendering/tests/SdfFontHandler.test.ts +181 -35
- package/src/core/textures/ImageTexture.test.ts +91 -0
- package/src/core/textures/ImageTexture.ts +4 -1
- package/src/main-api/Renderer.ts +28 -0
|
@@ -219,7 +219,10 @@ export class ImageTexture extends Texture {
|
|
|
219
219
|
},
|
|
220
220
|
);
|
|
221
221
|
return { data: bitmap, premultiplyAlpha: useGlPremultiply };
|
|
222
|
-
} else if (
|
|
222
|
+
} else if (
|
|
223
|
+
imageBitmapSupported.options === false &&
|
|
224
|
+
imageBitmapSupported.full === false
|
|
225
|
+
) {
|
|
223
226
|
// basic createImageBitmap without options or crop
|
|
224
227
|
// this is supported for Chrome v50 to v52/54 that doesn't support options.
|
|
225
228
|
// The browser default premultiplies, so WebGL must not premultiply again.
|
package/src/main-api/Renderer.ts
CHANGED
|
@@ -23,6 +23,9 @@ import type {
|
|
|
23
23
|
import { WebPlatform } from '../core/platforms/web/WebPlatform.js';
|
|
24
24
|
import { Platform } from '../core/platforms/Platform.js';
|
|
25
25
|
|
|
26
|
+
/** Shared default `handleLoopError` — swallows the error, keeping the loop alive. */
|
|
27
|
+
const noop = (): void => {};
|
|
28
|
+
|
|
26
29
|
/**
|
|
27
30
|
* FPS Update Event Data
|
|
28
31
|
*
|
|
@@ -661,6 +664,27 @@ export type RendererMainSettings = RendererRuntimeSettings & {
|
|
|
661
664
|
*
|
|
662
665
|
*/
|
|
663
666
|
maxRetryCount?: number;
|
|
667
|
+
|
|
668
|
+
/**
|
|
669
|
+
* Render loop error handler — an escape hatch for `requestAnimationFrame` crashes
|
|
670
|
+
*
|
|
671
|
+
* @remarks
|
|
672
|
+
* The render loop runs client-supplied code every frame: synchronous event
|
|
673
|
+
* subscribers (`frameTick`, `idle`, `fpsUpdate`, etc.) and animation steps. If
|
|
674
|
+
* any of these throw, the exception would otherwise propagate out of the
|
|
675
|
+
* `requestAnimationFrame` callback and permanently stop the loop — freezing
|
|
676
|
+
* the entire app until reload.
|
|
677
|
+
*
|
|
678
|
+
* The loop catches such errors and never lets them stop it. By default the
|
|
679
|
+
* error is swallowed (the default handler is a no-op), so a single bad frame
|
|
680
|
+
* can't freeze the app. Provide your own handler to log/report the crash (and
|
|
681
|
+
* optionally recover); the loop still keeps running after it returns.
|
|
682
|
+
*
|
|
683
|
+
* @param error The error thrown during the frame
|
|
684
|
+
*
|
|
685
|
+
* @defaultValue a no-op (errors are swallowed; the loop keeps running)
|
|
686
|
+
*/
|
|
687
|
+
handleLoopError?: (error: unknown) => void;
|
|
664
688
|
};
|
|
665
689
|
|
|
666
690
|
/**
|
|
@@ -777,6 +801,9 @@ export class RendererMain extends EventEmitter {
|
|
|
777
801
|
: settings.premultiplyAlphaHonored,
|
|
778
802
|
platform: settings.platform || null,
|
|
779
803
|
maxRetryCount: settings.maxRetryCount ?? 5,
|
|
804
|
+
// Default to a no-op so a thrown frame is swallowed and the render loop
|
|
805
|
+
// never crashes; apps can override to log/report.
|
|
806
|
+
handleLoopError: settings.handleLoopError ?? noop,
|
|
780
807
|
};
|
|
781
808
|
|
|
782
809
|
const {
|
|
@@ -841,6 +868,7 @@ export class RendererMain extends EventEmitter {
|
|
|
841
868
|
premultiplyAlphaHonored: settings.premultiplyAlphaHonored,
|
|
842
869
|
platform,
|
|
843
870
|
maxRetryCount: settings.maxRetryCount ?? 5,
|
|
871
|
+
handleLoopError: settings.handleLoopError,
|
|
844
872
|
});
|
|
845
873
|
|
|
846
874
|
// Extract the root node
|