@motion-core/motion-gpu 0.4.1 → 0.5.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 +99 -0
- package/dist/advanced.d.ts +1 -0
- package/dist/advanced.d.ts.map +1 -0
- package/dist/advanced.js +14 -6
- package/dist/core/advanced.d.ts +1 -0
- package/dist/core/advanced.d.ts.map +1 -0
- package/dist/core/advanced.js +14 -5
- package/dist/core/compute-shader.d.ts +87 -0
- package/dist/core/compute-shader.d.ts.map +1 -0
- package/dist/core/compute-shader.js +205 -0
- package/dist/core/compute-shader.js.map +1 -0
- package/dist/core/current-value.d.ts +1 -0
- package/dist/core/current-value.d.ts.map +1 -0
- package/dist/core/current-value.js +35 -34
- package/dist/core/current-value.js.map +1 -0
- package/dist/core/error-diagnostics.d.ts +1 -0
- package/dist/core/error-diagnostics.d.ts.map +1 -0
- package/dist/core/error-diagnostics.js +70 -137
- package/dist/core/error-diagnostics.js.map +1 -0
- package/dist/core/error-report.d.ts +2 -1
- package/dist/core/error-report.d.ts.map +1 -0
- package/dist/core/error-report.js +247 -233
- package/dist/core/error-report.js.map +1 -0
- package/dist/core/frame-registry.d.ts +1 -0
- package/dist/core/frame-registry.d.ts.map +1 -0
- package/dist/core/frame-registry.js +546 -662
- package/dist/core/frame-registry.js.map +1 -0
- package/dist/core/index.d.ts +6 -2
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +13 -12
- package/dist/core/material-preprocess.d.ts +1 -0
- package/dist/core/material-preprocess.d.ts.map +1 -0
- package/dist/core/material-preprocess.js +131 -152
- package/dist/core/material-preprocess.js.map +1 -0
- package/dist/core/material.d.ts +23 -6
- package/dist/core/material.d.ts.map +1 -0
- package/dist/core/material.js +290 -317
- package/dist/core/material.js.map +1 -0
- package/dist/core/recompile-policy.d.ts +1 -0
- package/dist/core/recompile-policy.d.ts.map +1 -0
- package/dist/core/recompile-policy.js +18 -13
- package/dist/core/recompile-policy.js.map +1 -0
- package/dist/core/render-graph.d.ts +8 -3
- package/dist/core/render-graph.d.ts.map +1 -0
- package/dist/core/render-graph.js +77 -68
- package/dist/core/render-graph.js.map +1 -0
- package/dist/core/render-targets.d.ts +1 -0
- package/dist/core/render-targets.d.ts.map +1 -0
- package/dist/core/render-targets.js +52 -53
- package/dist/core/render-targets.js.map +1 -0
- package/dist/core/renderer.d.ts +1 -0
- package/dist/core/renderer.d.ts.map +1 -0
- package/dist/core/renderer.js +1337 -1081
- package/dist/core/renderer.js.map +1 -0
- package/dist/core/runtime-loop.d.ts +3 -2
- package/dist/core/runtime-loop.d.ts.map +1 -0
- package/dist/core/runtime-loop.js +353 -362
- package/dist/core/runtime-loop.js.map +1 -0
- package/dist/core/scheduler-helpers.d.ts +1 -0
- package/dist/core/scheduler-helpers.d.ts.map +1 -0
- package/dist/core/scheduler-helpers.js +52 -51
- package/dist/core/scheduler-helpers.js.map +1 -0
- package/dist/core/shader.d.ts +10 -1
- package/dist/core/shader.d.ts.map +1 -0
- package/dist/core/shader.js +109 -115
- package/dist/core/shader.js.map +1 -0
- package/dist/core/storage-buffers.d.ts +37 -0
- package/dist/core/storage-buffers.d.ts.map +1 -0
- package/dist/core/storage-buffers.js +95 -0
- package/dist/core/storage-buffers.js.map +1 -0
- package/dist/core/texture-loader.d.ts +1 -0
- package/dist/core/texture-loader.d.ts.map +1 -0
- package/dist/core/texture-loader.js +209 -273
- package/dist/core/texture-loader.js.map +1 -0
- package/dist/core/textures.d.ts +13 -0
- package/dist/core/textures.d.ts.map +1 -0
- package/dist/core/textures.js +111 -116
- package/dist/core/textures.js.map +1 -0
- package/dist/core/types.d.ts +147 -4
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +0 -4
- package/dist/core/uniforms.d.ts +1 -0
- package/dist/core/uniforms.d.ts.map +1 -0
- package/dist/core/uniforms.js +170 -191
- package/dist/core/uniforms.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -6
- package/dist/passes/BlitPass.d.ts +1 -0
- package/dist/passes/BlitPass.d.ts.map +1 -0
- package/dist/passes/BlitPass.js +23 -18
- package/dist/passes/BlitPass.js.map +1 -0
- package/dist/passes/ComputePass.d.ts +83 -0
- package/dist/passes/ComputePass.d.ts.map +1 -0
- package/dist/passes/ComputePass.js +92 -0
- package/dist/passes/ComputePass.js.map +1 -0
- package/dist/passes/CopyPass.d.ts +1 -0
- package/dist/passes/CopyPass.d.ts.map +1 -0
- package/dist/passes/CopyPass.js +58 -52
- package/dist/passes/CopyPass.js.map +1 -0
- package/dist/passes/FullscreenPass.d.ts +1 -0
- package/dist/passes/FullscreenPass.d.ts.map +1 -0
- package/dist/passes/FullscreenPass.js +127 -130
- package/dist/passes/FullscreenPass.js.map +1 -0
- package/dist/passes/PingPongComputePass.d.ts +104 -0
- package/dist/passes/PingPongComputePass.d.ts.map +1 -0
- package/dist/passes/PingPongComputePass.js +132 -0
- package/dist/passes/PingPongComputePass.js.map +1 -0
- package/dist/passes/ShaderPass.d.ts +1 -0
- package/dist/passes/ShaderPass.d.ts.map +1 -0
- package/dist/passes/ShaderPass.js +41 -37
- package/dist/passes/ShaderPass.js.map +1 -0
- package/dist/passes/index.d.ts +3 -0
- package/dist/passes/index.d.ts.map +1 -0
- package/dist/passes/index.js +6 -3
- package/dist/react/FragCanvas.d.ts +3 -2
- package/dist/react/FragCanvas.d.ts.map +1 -0
- package/dist/react/FragCanvas.js +234 -211
- package/dist/react/FragCanvas.js.map +1 -0
- package/dist/react/MotionGPUErrorOverlay.d.ts +1 -0
- package/dist/react/MotionGPUErrorOverlay.d.ts.map +1 -0
- package/dist/react/MotionGPUErrorOverlay.js +200 -14
- package/dist/react/MotionGPUErrorOverlay.js.map +1 -0
- package/dist/react/Portal.d.ts +1 -0
- package/dist/react/Portal.d.ts.map +1 -0
- package/dist/react/Portal.js +18 -21
- package/dist/react/Portal.js.map +1 -0
- package/dist/react/advanced.d.ts +1 -0
- package/dist/react/advanced.d.ts.map +1 -0
- package/dist/react/advanced.js +14 -6
- package/dist/react/frame-context.d.ts +1 -0
- package/dist/react/frame-context.d.ts.map +1 -0
- package/dist/react/frame-context.js +88 -94
- package/dist/react/frame-context.js.map +1 -0
- package/dist/react/index.d.ts +6 -2
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +12 -9
- package/dist/react/motiongpu-context.d.ts +1 -0
- package/dist/react/motiongpu-context.d.ts.map +1 -0
- package/dist/react/motiongpu-context.js +18 -15
- package/dist/react/motiongpu-context.js.map +1 -0
- package/dist/react/use-motiongpu-user-context.d.ts +1 -0
- package/dist/react/use-motiongpu-user-context.d.ts.map +1 -0
- package/dist/react/use-motiongpu-user-context.js +83 -82
- package/dist/react/use-motiongpu-user-context.js.map +1 -0
- package/dist/react/use-texture.d.ts +1 -0
- package/dist/react/use-texture.d.ts.map +1 -0
- package/dist/react/use-texture.js +132 -152
- package/dist/react/use-texture.js.map +1 -0
- package/dist/svelte/FragCanvas.svelte +2 -2
- package/dist/svelte/FragCanvas.svelte.d.ts +3 -2
- package/dist/svelte/FragCanvas.svelte.d.ts.map +1 -0
- package/dist/svelte/MotionGPUErrorOverlay.svelte +137 -7
- package/dist/svelte/MotionGPUErrorOverlay.svelte.d.ts +1 -0
- package/dist/svelte/MotionGPUErrorOverlay.svelte.d.ts.map +1 -0
- package/dist/svelte/Portal.svelte.d.ts +1 -0
- package/dist/svelte/Portal.svelte.d.ts.map +1 -0
- package/dist/svelte/advanced.d.ts +1 -0
- package/dist/svelte/advanced.d.ts.map +1 -0
- package/dist/svelte/advanced.js +13 -6
- package/dist/svelte/frame-context.d.ts +1 -0
- package/dist/svelte/frame-context.d.ts.map +1 -0
- package/dist/svelte/frame-context.js +27 -27
- package/dist/svelte/frame-context.js.map +1 -0
- package/dist/svelte/index.d.ts +6 -2
- package/dist/svelte/index.d.ts.map +1 -0
- package/dist/svelte/index.js +12 -9
- package/dist/svelte/motiongpu-context.d.ts +1 -0
- package/dist/svelte/motiongpu-context.d.ts.map +1 -0
- package/dist/svelte/motiongpu-context.js +24 -21
- package/dist/svelte/motiongpu-context.js.map +1 -0
- package/dist/svelte/use-motiongpu-user-context.d.ts +1 -0
- package/dist/svelte/use-motiongpu-user-context.d.ts.map +1 -0
- package/dist/svelte/use-motiongpu-user-context.js +69 -70
- package/dist/svelte/use-motiongpu-user-context.js.map +1 -0
- package/dist/svelte/use-texture.d.ts +1 -0
- package/dist/svelte/use-texture.d.ts.map +1 -0
- package/dist/svelte/use-texture.js +125 -147
- package/dist/svelte/use-texture.js.map +1 -0
- package/package.json +12 -7
- package/src/lib/advanced.ts +6 -0
- package/src/lib/core/advanced.ts +12 -0
- package/src/lib/core/compute-shader.ts +326 -0
- package/src/lib/core/current-value.ts +64 -0
- package/src/lib/core/error-diagnostics.ts +236 -0
- package/src/lib/core/error-report.ts +535 -0
- package/src/lib/core/frame-registry.ts +1190 -0
- package/src/lib/core/index.ts +94 -0
- package/src/lib/core/material-preprocess.ts +295 -0
- package/src/lib/core/material.ts +748 -0
- package/src/lib/core/recompile-policy.ts +31 -0
- package/src/lib/core/render-graph.ts +173 -0
- package/src/lib/core/render-targets.ts +107 -0
- package/src/lib/core/renderer.ts +2161 -0
- package/src/lib/core/runtime-loop.ts +537 -0
- package/src/lib/core/scheduler-helpers.ts +136 -0
- package/src/lib/core/shader.ts +301 -0
- package/src/lib/core/storage-buffers.ts +142 -0
- package/src/lib/core/texture-loader.ts +482 -0
- package/src/lib/core/textures.ts +257 -0
- package/src/lib/core/types.ts +743 -0
- package/src/lib/core/uniforms.ts +282 -0
- package/src/lib/index.ts +6 -0
- package/src/lib/passes/BlitPass.ts +54 -0
- package/src/lib/passes/ComputePass.ts +136 -0
- package/src/lib/passes/CopyPass.ts +80 -0
- package/src/lib/passes/FullscreenPass.ts +173 -0
- package/src/lib/passes/PingPongComputePass.ts +180 -0
- package/src/lib/passes/ShaderPass.ts +89 -0
- package/src/lib/passes/index.ts +9 -0
- package/src/lib/react/FragCanvas.tsx +345 -0
- package/src/lib/react/MotionGPUErrorOverlay.tsx +524 -0
- package/src/lib/react/Portal.tsx +34 -0
- package/src/lib/react/advanced.ts +36 -0
- package/src/lib/react/frame-context.ts +169 -0
- package/src/lib/react/index.ts +68 -0
- package/src/lib/react/motiongpu-context.ts +88 -0
- package/src/lib/react/use-motiongpu-user-context.ts +186 -0
- package/src/lib/react/use-texture.ts +233 -0
- package/src/lib/svelte/FragCanvas.svelte +249 -0
- package/src/lib/svelte/MotionGPUErrorOverlay.svelte +512 -0
- package/src/lib/svelte/Portal.svelte +31 -0
- package/src/lib/svelte/advanced.ts +32 -0
- package/src/lib/svelte/frame-context.ts +87 -0
- package/src/lib/svelte/index.ts +68 -0
- package/src/lib/svelte/motiongpu-context.ts +97 -0
- package/src/lib/svelte/use-motiongpu-user-context.ts +145 -0
- package/src/lib/svelte/use-texture.ts +232 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-texture.js","names":[],"sources":["../../src/lib/react/use-texture.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\nimport {\n\tcreateCurrentWritable as currentWritable,\n\ttype CurrentReadable\n} from '../core/current-value.js';\nimport {\n\tisAbortError,\n\tloadTexturesFromUrls,\n\ttype LoadedTexture,\n\ttype TextureLoadOptions\n} from '../core/texture-loader.js';\nimport { toMotionGPUErrorReport, type MotionGPUErrorReport } from '../core/error-report.js';\n\n/**\n * Reactive state returned by `useTexture`.\n */\nexport interface UseTextureResult {\n\t/**\n\t * Loaded textures or `null` when unavailable/failed.\n\t */\n\ttextures: CurrentReadable<LoadedTexture[] | null>;\n\t/**\n\t * `true` while an active load request is running.\n\t */\n\tloading: CurrentReadable<boolean>;\n\t/**\n\t * Last loading error.\n\t */\n\terror: CurrentReadable<Error | null>;\n\t/**\n\t * Last loading error normalized to MotionGPU diagnostics report shape.\n\t */\n\terrorReport: CurrentReadable<MotionGPUErrorReport | null>;\n\t/**\n\t * Reloads all textures using current URL input.\n\t */\n\treload: () => Promise<void>;\n}\n\n/**\n * Supported URL input variants for `useTexture`.\n */\nexport type TextureUrlInput = string[] | (() => string[]);\n\n/**\n * Normalizes unknown thrown values to an `Error` instance.\n */\nfunction toError(error: unknown): Error {\n\tif (error instanceof Error) {\n\t\treturn error;\n\t}\n\n\treturn new Error('Unknown texture loading error');\n}\n\n/**\n * Releases GPU-side resources for a list of loaded textures.\n */\nfunction disposeTextures(list: LoadedTexture[] | null): void {\n\tfor (const texture of list ?? []) {\n\t\ttexture.dispose();\n\t}\n}\n\ninterface MergedAbortSignal {\n\tsignal: AbortSignal;\n\tdispose: () => void;\n}\n\nfunction mergeAbortSignals(\n\tprimary: AbortSignal,\n\tsecondary: AbortSignal | undefined\n): MergedAbortSignal {\n\tif (!secondary) {\n\t\treturn {\n\t\t\tsignal: primary,\n\t\t\tdispose: () => {}\n\t\t};\n\t}\n\n\tif (typeof AbortSignal.any === 'function') {\n\t\treturn {\n\t\t\tsignal: AbortSignal.any([primary, secondary]),\n\t\t\tdispose: () => {}\n\t\t};\n\t}\n\n\tconst fallback = new AbortController();\n\tlet disposed = false;\n\tconst cleanup = (): void => {\n\t\tif (disposed) {\n\t\t\treturn;\n\t\t}\n\t\tdisposed = true;\n\t\tprimary.removeEventListener('abort', abort);\n\t\tsecondary.removeEventListener('abort', abort);\n\t};\n\tconst abort = (): void => fallback.abort();\n\n\tprimary.addEventListener('abort', abort, { once: true });\n\tsecondary.addEventListener('abort', abort, { once: true });\n\n\treturn {\n\t\tsignal: fallback.signal,\n\t\tdispose: cleanup\n\t};\n}\n\n/**\n * Loads textures from URLs and exposes reactive loading/error state.\n *\n * @param urlInput - URLs array or lazy URL provider.\n * @param options - Loader options passed to URL fetch/decode pipeline.\n * @returns Reactive texture loading state with reload support.\n */\nexport function useTexture(\n\turlInput: TextureUrlInput,\n\toptions: TextureLoadOptions = {}\n): UseTextureResult {\n\tconst texturesRef = useRef(currentWritable<LoadedTexture[] | null>(null));\n\tconst loadingRef = useRef(currentWritable(true));\n\tconst errorRef = useRef(currentWritable<Error | null>(null));\n\tconst errorReportRef = useRef(currentWritable<MotionGPUErrorReport | null>(null));\n\tconst activeControllerRef = useRef<AbortController | null>(null);\n\tconst runningLoadRef = useRef<Promise<void> | null>(null);\n\tconst reloadQueuedRef = useRef(false);\n\tconst requestVersionRef = useRef(0);\n\tconst disposedRef = useRef(false);\n\tconst optionsRef = useRef(options);\n\tconst urlInputRef = useRef(urlInput);\n\n\toptionsRef.current = options;\n\turlInputRef.current = urlInput;\n\n\tconst getUrls = useCallback((): string[] => {\n\t\tconst currentInput = urlInputRef.current;\n\t\treturn typeof currentInput === 'function' ? currentInput() : currentInput;\n\t}, []);\n\n\tconst executeLoad = useCallback(async (): Promise<void> => {\n\t\tif (disposedRef.current) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst version = ++requestVersionRef.current;\n\t\tconst controller = new AbortController();\n\t\tactiveControllerRef.current = controller;\n\t\tloadingRef.current.set(true);\n\t\terrorRef.current.set(null);\n\t\terrorReportRef.current.set(null);\n\n\t\tconst previous = texturesRef.current.current;\n\t\tconst mergedSignal = mergeAbortSignals(controller.signal, optionsRef.current.signal);\n\t\ttry {\n\t\t\tconst loaded = await loadTexturesFromUrls(getUrls(), {\n\t\t\t\t...optionsRef.current,\n\t\t\t\tsignal: mergedSignal.signal\n\t\t\t});\n\t\t\tif (disposedRef.current || version !== requestVersionRef.current) {\n\t\t\t\tdisposeTextures(loaded);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttexturesRef.current.set(loaded);\n\t\t\tdisposeTextures(previous);\n\t\t} catch (nextError) {\n\t\t\tif (disposedRef.current || version !== requestVersionRef.current) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (isAbortError(nextError)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdisposeTextures(previous);\n\t\t\ttexturesRef.current.set(null);\n\t\t\tconst normalizedError = toError(nextError);\n\t\t\terrorRef.current.set(normalizedError);\n\t\t\terrorReportRef.current.set(toMotionGPUErrorReport(normalizedError, 'initialization'));\n\t\t} finally {\n\t\t\tif (!disposedRef.current && version === requestVersionRef.current) {\n\t\t\t\tloadingRef.current.set(false);\n\t\t\t}\n\t\t\tif (activeControllerRef.current === controller) {\n\t\t\t\tactiveControllerRef.current = null;\n\t\t\t}\n\t\t\tmergedSignal.dispose();\n\t\t}\n\t}, [getUrls]);\n\n\tconst runLoadLoop = useCallback(async (): Promise<void> => {\n\t\tdo {\n\t\t\treloadQueuedRef.current = false;\n\t\t\tawait executeLoad();\n\t\t} while (reloadQueuedRef.current && !disposedRef.current);\n\t}, [executeLoad]);\n\n\tconst load = useCallback((): Promise<void> => {\n\t\tactiveControllerRef.current?.abort();\n\t\tif (runningLoadRef.current) {\n\t\t\treloadQueuedRef.current = true;\n\t\t\treturn runningLoadRef.current;\n\t\t}\n\n\t\tconst pending = runLoadLoop();\n\t\tconst trackedPending = pending.finally(() => {\n\t\t\tif (runningLoadRef.current === trackedPending) {\n\t\t\t\trunningLoadRef.current = null;\n\t\t\t}\n\t\t});\n\t\trunningLoadRef.current = trackedPending;\n\t\treturn trackedPending;\n\t}, [runLoadLoop]);\n\n\tuseEffect(() => {\n\t\tvoid load();\n\n\t\treturn () => {\n\t\t\tdisposedRef.current = true;\n\t\t\trequestVersionRef.current += 1;\n\t\t\tactiveControllerRef.current?.abort();\n\t\t\tdisposeTextures(texturesRef.current.current);\n\t\t};\n\t}, [load]);\n\n\treturn {\n\t\ttextures: texturesRef.current,\n\t\tloading: loadingRef.current,\n\t\terror: errorRef.current,\n\t\terrorReport: errorReportRef.current,\n\t\treload: load\n\t};\n}\n"],"mappings":"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"}
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
import MotionGPUErrorOverlay from './MotionGPUErrorOverlay.svelte';
|
|
8
8
|
import { createMotionGPURuntimeLoop } from '../core/runtime-loop';
|
|
9
9
|
import type {
|
|
10
|
+
AnyPass,
|
|
10
11
|
FrameInvalidationToken,
|
|
11
12
|
OutputColorSpace,
|
|
12
|
-
RenderPass,
|
|
13
13
|
RenderMode,
|
|
14
14
|
RenderTargetDefinitionMap
|
|
15
15
|
} from '../core/types';
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
interface Props {
|
|
20
20
|
material: FragMaterial;
|
|
21
21
|
renderTargets?: RenderTargetDefinitionMap;
|
|
22
|
-
passes?:
|
|
22
|
+
passes?: AnyPass[];
|
|
23
23
|
clearColor?: [number, number, number, number];
|
|
24
24
|
outputColorSpace?: OutputColorSpace;
|
|
25
25
|
renderMode?: RenderMode;
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import type { Snippet } from 'svelte';
|
|
3
3
|
import type { FragMaterial } from '../core/material';
|
|
4
4
|
import { type MotionGPUErrorReport } from '../core/error-report';
|
|
5
|
-
import type {
|
|
5
|
+
import type { AnyPass, OutputColorSpace, RenderMode, RenderTargetDefinitionMap } from '../core/types';
|
|
6
6
|
interface Props {
|
|
7
7
|
material: FragMaterial;
|
|
8
8
|
renderTargets?: RenderTargetDefinitionMap;
|
|
9
|
-
passes?:
|
|
9
|
+
passes?: AnyPass[];
|
|
10
10
|
clearColor?: [number, number, number, number];
|
|
11
11
|
outputColorSpace?: OutputColorSpace;
|
|
12
12
|
renderMode?: RenderMode;
|
|
@@ -27,3 +27,4 @@ interface Props {
|
|
|
27
27
|
declare const FragCanvas: import("svelte").Component<Props, {}, "">;
|
|
28
28
|
type FragCanvas = ReturnType<typeof FragCanvas>;
|
|
29
29
|
export default FragCanvas;
|
|
30
|
+
//# sourceMappingURL=FragCanvas.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FragCanvas.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/svelte/FragCanvas.svelte"],"names":[],"mappings":";AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGzF,OAAO,KAAK,EACV,OAAO,EAEP,gBAAgB,EAChB,UAAU,EACV,yBAAyB,EACzB,MAAM,eAAe,CAAC;AAKvB,UAAU,KAAK;IACd,QAAQ,EAAE,YAAY,CAAC;IACvB,aAAa,CAAC,EAAE,yBAAyB,CAAC;IAC1C,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAC1C,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACjD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,EAAE,KAAK,IAAI,CAAC;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAiNF,QAAA,MAAM,UAAU,2CAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
|
|
@@ -16,7 +16,87 @@
|
|
|
16
16
|
};
|
|
17
17
|
|
|
18
18
|
const shouldShowErrorMessage = (value: MotionGPUErrorReport): boolean => {
|
|
19
|
-
return
|
|
19
|
+
return resolveDisplayMessage(value).length > 0;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const resolveDisplayMessage = (value: MotionGPUErrorReport): string => {
|
|
23
|
+
const rawMessage = value.message.trim();
|
|
24
|
+
if (rawMessage.length === 0) {
|
|
25
|
+
return '';
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const normalizedMessage = normalizeErrorText(rawMessage);
|
|
29
|
+
const normalizedTitle = normalizeErrorText(value.title);
|
|
30
|
+
if (normalizedMessage === normalizedTitle) {
|
|
31
|
+
return '';
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const escapedTitle = value.title.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
35
|
+
const prefixPattern = new RegExp(`^${escapedTitle}\\s*[:\\-|]\\s*`, 'i');
|
|
36
|
+
const stripped = rawMessage.replace(prefixPattern, '').trim();
|
|
37
|
+
return stripped.length > 0 ? stripped : rawMessage;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const formatRuntimeContext = (context: MotionGPUErrorReport['context']): string => {
|
|
41
|
+
if (!context) {
|
|
42
|
+
return '';
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const indentBlock = (value: string, spaces = 2): string => {
|
|
46
|
+
const prefix = ' '.repeat(spaces);
|
|
47
|
+
return value
|
|
48
|
+
.split('\n')
|
|
49
|
+
.map((line) => `${prefix}${line}`)
|
|
50
|
+
.join('\n');
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const formatMaterialSignature = (value: string): string => {
|
|
54
|
+
const trimmed = value.trim();
|
|
55
|
+
if (trimmed.length === 0) {
|
|
56
|
+
return '<empty>';
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
return JSON.stringify(JSON.parse(trimmed), null, 2);
|
|
60
|
+
} catch {
|
|
61
|
+
return trimmed;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const lines: string[] = [];
|
|
66
|
+
if (context.materialSignature) {
|
|
67
|
+
lines.push('materialSignature:');
|
|
68
|
+
lines.push(indentBlock(formatMaterialSignature(context.materialSignature)));
|
|
69
|
+
}
|
|
70
|
+
if (context.passGraph) {
|
|
71
|
+
lines.push('passGraph:');
|
|
72
|
+
lines.push(` passCount: ${context.passGraph.passCount}`);
|
|
73
|
+
lines.push(` enabledPassCount: ${context.passGraph.enabledPassCount}`);
|
|
74
|
+
lines.push(' inputs:');
|
|
75
|
+
if (context.passGraph.inputs.length === 0) {
|
|
76
|
+
lines.push(' - <none>');
|
|
77
|
+
} else {
|
|
78
|
+
for (const input of context.passGraph.inputs) {
|
|
79
|
+
lines.push(` - ${input}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
lines.push(' outputs:');
|
|
83
|
+
if (context.passGraph.outputs.length === 0) {
|
|
84
|
+
lines.push(' - <none>');
|
|
85
|
+
} else {
|
|
86
|
+
for (const output of context.passGraph.outputs) {
|
|
87
|
+
lines.push(` - ${output}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
lines.push('activeRenderTargets:');
|
|
92
|
+
if (context.activeRenderTargets.length === 0) {
|
|
93
|
+
lines.push(' - <none>');
|
|
94
|
+
} else {
|
|
95
|
+
for (const target of context.activeRenderTargets) {
|
|
96
|
+
lines.push(` - ${target}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return lines.join('\n');
|
|
20
100
|
};
|
|
21
101
|
</script>
|
|
22
102
|
|
|
@@ -30,16 +110,28 @@
|
|
|
30
110
|
data-testid="motiongpu-error"
|
|
31
111
|
>
|
|
32
112
|
<header class="motiongpu-error-header">
|
|
33
|
-
<div class="motiongpu-error-
|
|
34
|
-
<
|
|
35
|
-
|
|
36
|
-
|
|
113
|
+
<div class="motiongpu-error-header-top">
|
|
114
|
+
<div class="motiongpu-error-badges">
|
|
115
|
+
<div class="motiongpu-error-badge-wrap">
|
|
116
|
+
<p class="motiongpu-error-badge motiongpu-error-badge-phase">
|
|
117
|
+
{report.phase}
|
|
118
|
+
</p>
|
|
119
|
+
</div>
|
|
120
|
+
<div class="motiongpu-error-badge-wrap">
|
|
121
|
+
<p class="motiongpu-error-badge motiongpu-error-badge-severity">
|
|
122
|
+
{report.severity}
|
|
123
|
+
</p>
|
|
124
|
+
</div>
|
|
125
|
+
</div>
|
|
37
126
|
</div>
|
|
38
127
|
<h2 class="motiongpu-error-title">{report.title}</h2>
|
|
128
|
+
<p class="motiongpu-error-recoverable">
|
|
129
|
+
Recoverable: <span>{report.recoverable ? 'yes' : 'no'}</span>
|
|
130
|
+
</p>
|
|
39
131
|
</header>
|
|
40
132
|
<div class="motiongpu-error-body">
|
|
41
133
|
{#if shouldShowErrorMessage(report)}
|
|
42
|
-
<p class="motiongpu-error-message">{report
|
|
134
|
+
<p class="motiongpu-error-message">{resolveDisplayMessage(report)}</p>
|
|
43
135
|
{/if}
|
|
44
136
|
<p class="motiongpu-error-hint">{report.hint}</p>
|
|
45
137
|
</div>
|
|
@@ -87,6 +179,12 @@
|
|
|
87
179
|
<pre>{report.stack.join('\n')}</pre>
|
|
88
180
|
</details>
|
|
89
181
|
{/if}
|
|
182
|
+
{#if report.context}
|
|
183
|
+
<details class="motiongpu-error-details">
|
|
184
|
+
<summary>Runtime context</summary>
|
|
185
|
+
<pre>{formatRuntimeContext(report.context)}</pre>
|
|
186
|
+
</details>
|
|
187
|
+
{/if}
|
|
90
188
|
</div>
|
|
91
189
|
</section>
|
|
92
190
|
</div>
|
|
@@ -162,6 +260,19 @@
|
|
|
162
260
|
border-bottom: 1px solid var(--motiongpu-color-border);
|
|
163
261
|
}
|
|
164
262
|
|
|
263
|
+
.motiongpu-error-header-top {
|
|
264
|
+
display: flex;
|
|
265
|
+
align-items: flex-start;
|
|
266
|
+
gap: 0.75rem;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
.motiongpu-error-badges {
|
|
270
|
+
display: inline-flex;
|
|
271
|
+
align-items: center;
|
|
272
|
+
gap: 0.4rem;
|
|
273
|
+
flex-wrap: wrap;
|
|
274
|
+
}
|
|
275
|
+
|
|
165
276
|
.motiongpu-error-badge-wrap {
|
|
166
277
|
display: inline-flex;
|
|
167
278
|
align-items: center;
|
|
@@ -173,7 +284,7 @@
|
|
|
173
284
|
background: var(--motiongpu-color-background-muted);
|
|
174
285
|
}
|
|
175
286
|
|
|
176
|
-
.motiongpu-error-
|
|
287
|
+
.motiongpu-error-badge {
|
|
177
288
|
display: inline-flex;
|
|
178
289
|
align-items: center;
|
|
179
290
|
margin: 0;
|
|
@@ -193,6 +304,20 @@
|
|
|
193
304
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.24);
|
|
194
305
|
}
|
|
195
306
|
|
|
307
|
+
.motiongpu-error-recoverable {
|
|
308
|
+
margin: 0;
|
|
309
|
+
font-size: 0.67rem;
|
|
310
|
+
line-height: 1.2;
|
|
311
|
+
letter-spacing: 0.06em;
|
|
312
|
+
text-transform: uppercase;
|
|
313
|
+
color: var(--motiongpu-color-foreground-muted);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
.motiongpu-error-recoverable span {
|
|
317
|
+
font-family: var(--motiongpu-font-mono);
|
|
318
|
+
color: var(--motiongpu-color-foreground);
|
|
319
|
+
}
|
|
320
|
+
|
|
196
321
|
.motiongpu-error-title {
|
|
197
322
|
margin: 0;
|
|
198
323
|
font-size: clamp(1.02rem, 1vw + 0.72rem, 1.32rem);
|
|
@@ -372,6 +497,11 @@
|
|
|
372
497
|
.motiongpu-error-title {
|
|
373
498
|
font-size: 1.02rem;
|
|
374
499
|
}
|
|
500
|
+
|
|
501
|
+
.motiongpu-error-header-top {
|
|
502
|
+
flex-direction: column;
|
|
503
|
+
align-items: flex-start;
|
|
504
|
+
}
|
|
375
505
|
}
|
|
376
506
|
|
|
377
507
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MotionGPUErrorOverlay.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/svelte/MotionGPUErrorOverlay.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAIhE,UAAU,KAAK;IACd,MAAM,EAAE,oBAAoB,CAAC;CAC7B;AAoLF,QAAA,MAAM,qBAAqB,2CAAwC,CAAC;AACpE,KAAK,qBAAqB,GAAG,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACtE,eAAe,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Portal.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/svelte/Portal.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGrC,UAAU,KAAK;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AA+BF,QAAA,MAAM,MAAM,2CAAwC,CAAC;AACrD,KAAK,MAAM,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC;AACxC,eAAe,MAAM,CAAC"}
|
|
@@ -9,3 +9,4 @@ export type { MotionGPUUserContext, MotionGPUUserNamespace } from './motiongpu-c
|
|
|
9
9
|
export type { FrameProfilingSnapshot, FrameKey, FrameTaskInvalidation, FrameTaskInvalidationToken, FrameRunTimings, FrameScheduleSnapshot, FrameStage, FrameStageCallback, FrameTimingStats, FrameTask } from '../core/frame-registry.js';
|
|
10
10
|
export type { SetMotionGPUUserContextOptions } from './use-motiongpu-user-context.js';
|
|
11
11
|
export type { RenderPassContext, RenderTarget, UniformLayout, UniformLayoutEntry } from '../core/types.js';
|
|
12
|
+
//# sourceMappingURL=advanced.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advanced.d.ts","sourceRoot":"","sources":["../../src/lib/svelte/advanced.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AACnG,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AACnG,YAAY,EACX,2BAA2B,EAC3B,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,YAAY,EACX,sBAAsB,EACtB,QAAQ,EACR,qBAAqB,EACrB,0BAA0B,EAC1B,eAAe,EACf,qBAAqB,EACrB,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AACtF,YAAY,EACX,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,MAAM,kBAAkB,CAAC"}
|
package/dist/svelte/advanced.js
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { defineMaterial } from "../core/material.js";
|
|
2
|
+
import { BlitPass } from "../passes/BlitPass.js";
|
|
3
|
+
import { CopyPass } from "../passes/CopyPass.js";
|
|
4
|
+
import { ShaderPass } from "../passes/ShaderPass.js";
|
|
5
|
+
import { ComputePass } from "../passes/ComputePass.js";
|
|
6
|
+
import { PingPongComputePass } from "../passes/PingPongComputePass.js";
|
|
7
|
+
import { applySchedulerPreset, captureSchedulerDebugSnapshot } from "../core/scheduler-helpers.js";
|
|
8
|
+
import { useMotionGPU } from "./motiongpu-context.js";
|
|
9
|
+
import { useFrame } from "./frame-context.js";
|
|
10
|
+
import { useTexture } from "./use-texture.js";
|
|
11
|
+
import { FragCanvas } from "./index.js";
|
|
12
|
+
import { setMotionGPUUserContext, useMotionGPUUserContext } from "./use-motiongpu-user-context.js";
|
|
13
|
+
export { BlitPass, ComputePass, CopyPass, FragCanvas, PingPongComputePass, ShaderPass, applySchedulerPreset, captureSchedulerDebugSnapshot, defineMaterial, setMotionGPUUserContext, useFrame, useMotionGPU, useMotionGPUUserContext, useTexture };
|
|
@@ -12,3 +12,4 @@ export declare function useFrame(callback: FrameCallback, options?: UseFrameOpti
|
|
|
12
12
|
* Registers a frame callback with an explicit task key.
|
|
13
13
|
*/
|
|
14
14
|
export declare function useFrame(key: FrameKey, callback: FrameCallback, options?: UseFrameOptions): UseFrameResult;
|
|
15
|
+
//# sourceMappingURL=frame-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame-context.d.ts","sourceRoot":"","sources":["../../src/lib/svelte/frame-context.ts"],"names":[],"mappings":"AACA,OAAO,EACN,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,MAAM,2BAA2B,CAAC;AAOnC,OAAO,EACN,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAElE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,cAAc,CAAC;AAE7F;;GAEG;AACH,wBAAgB,QAAQ,CACvB,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,eAAe,GACvB,cAAc,CAAC"}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { createFrameRegistry } from "../core/frame-registry.js";
|
|
2
|
+
import { getContext, onDestroy, setContext } from "svelte";
|
|
3
|
+
//#region src/lib/svelte/frame-context.ts
|
|
3
4
|
/**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export { createFrameRegistry };
|
|
5
|
+
* Svelte context key for the active frame registry.
|
|
6
|
+
*/
|
|
7
|
+
var FRAME_CONTEXT_KEY = Symbol("motiongpu.frame-context");
|
|
8
8
|
/**
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
* Provides a frame registry through Svelte context.
|
|
10
|
+
*/
|
|
11
|
+
function provideFrameRegistry(registry) {
|
|
12
|
+
setContext(FRAME_CONTEXT_KEY, registry);
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
start: registration.start,
|
|
29
|
-
stop: registration.stop,
|
|
30
|
-
started: registration.started
|
|
31
|
-
};
|
|
15
|
+
* Registers a callback in the active frame registry and auto-unsubscribes on destroy.
|
|
16
|
+
*/
|
|
17
|
+
function useFrame(keyOrCallback, callbackOrOptions, maybeOptions) {
|
|
18
|
+
const registry = getContext(FRAME_CONTEXT_KEY);
|
|
19
|
+
if (!registry) throw new Error("useFrame must be used inside <FragCanvas>");
|
|
20
|
+
const registration = typeof keyOrCallback === "function" ? registry.register(keyOrCallback, callbackOrOptions) : registry.register(keyOrCallback, callbackOrOptions, maybeOptions);
|
|
21
|
+
onDestroy(registration.unsubscribe);
|
|
22
|
+
return {
|
|
23
|
+
task: registration.task,
|
|
24
|
+
start: registration.start,
|
|
25
|
+
stop: registration.stop,
|
|
26
|
+
started: registration.started
|
|
27
|
+
};
|
|
32
28
|
}
|
|
29
|
+
//#endregion
|
|
30
|
+
export { createFrameRegistry, provideFrameRegistry, useFrame };
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=frame-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame-context.js","names":[],"sources":["../../src/lib/svelte/frame-context.ts"],"sourcesContent":["import { getContext, onDestroy, setContext } from 'svelte';\nimport {\n\tcreateFrameRegistry,\n\ttype FrameCallback,\n\ttype FrameKey,\n\ttype FrameProfilingSnapshot,\n\ttype FrameRegistry,\n\ttype FrameRunTimings,\n\ttype FrameScheduleSnapshot,\n\ttype FrameStage,\n\ttype FrameStageCallback,\n\ttype FrameTask,\n\ttype FrameTaskInvalidation,\n\ttype FrameTaskInvalidationToken,\n\ttype UseFrameOptions,\n\ttype UseFrameResult\n} from '../core/frame-registry.js';\n\n/**\n * Svelte context key for the active frame registry.\n */\nconst FRAME_CONTEXT_KEY = Symbol('motiongpu.frame-context');\n\nexport {\n\tcreateFrameRegistry,\n\ttype FrameCallback,\n\ttype FrameKey,\n\ttype FrameProfilingSnapshot,\n\ttype FrameRegistry,\n\ttype FrameRunTimings,\n\ttype FrameScheduleSnapshot,\n\ttype FrameStage,\n\ttype FrameStageCallback,\n\ttype FrameTask,\n\ttype FrameTaskInvalidation,\n\ttype FrameTaskInvalidationToken,\n\ttype UseFrameOptions,\n\ttype UseFrameResult\n};\n\n/**\n * Provides a frame registry through Svelte context.\n */\nexport function provideFrameRegistry(registry: FrameRegistry): void {\n\tsetContext(FRAME_CONTEXT_KEY, registry);\n}\n\n/**\n * Registers a frame callback using an auto-generated task key.\n */\nexport function useFrame(callback: FrameCallback, options?: UseFrameOptions): UseFrameResult;\n\n/**\n * Registers a frame callback with an explicit task key.\n */\nexport function useFrame(\n\tkey: FrameKey,\n\tcallback: FrameCallback,\n\toptions?: UseFrameOptions\n): UseFrameResult;\n\n/**\n * Registers a callback in the active frame registry and auto-unsubscribes on destroy.\n */\nexport function useFrame(\n\tkeyOrCallback: FrameKey | FrameCallback,\n\tcallbackOrOptions?: FrameCallback | UseFrameOptions,\n\tmaybeOptions?: UseFrameOptions\n): UseFrameResult {\n\tconst registry = getContext<FrameRegistry>(FRAME_CONTEXT_KEY);\n\tif (!registry) {\n\t\tthrow new Error('useFrame must be used inside <FragCanvas>');\n\t}\n\n\tconst registration =\n\t\ttypeof keyOrCallback === 'function'\n\t\t\t? registry.register(keyOrCallback, callbackOrOptions as UseFrameOptions | undefined)\n\t\t\t: registry.register(keyOrCallback, callbackOrOptions as FrameCallback, maybeOptions);\n\tonDestroy(registration.unsubscribe);\n\n\treturn {\n\t\ttask: registration.task,\n\t\tstart: registration.start,\n\t\tstop: registration.stop,\n\t\tstarted: registration.started\n\t};\n}\n"],"mappings":";;;;;;AAqBA,IAAM,oBAAoB,OAAO,0BAA0B;;;;AAsB3D,SAAgB,qBAAqB,UAA+B;AACnE,YAAW,mBAAmB,SAAS;;;;;AAoBxC,SAAgB,SACf,eACA,mBACA,cACiB;CACjB,MAAM,WAAW,WAA0B,kBAAkB;AAC7D,KAAI,CAAC,SACJ,OAAM,IAAI,MAAM,4CAA4C;CAG7D,MAAM,eACL,OAAO,kBAAkB,aACtB,SAAS,SAAS,eAAe,kBAAiD,GAClF,SAAS,SAAS,eAAe,mBAAoC,aAAa;AACtF,WAAU,aAAa,YAAY;AAEnC,QAAO;EACN,MAAM,aAAa;EACnB,OAAO,aAAa;EACpB,MAAM,aAAa;EACnB,SAAS,aAAa;EACtB"}
|
package/dist/svelte/index.d.ts
CHANGED
|
@@ -3,13 +3,17 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export { default as FragCanvas } from './FragCanvas.svelte';
|
|
5
5
|
export { defineMaterial } from '../core/material.js';
|
|
6
|
-
export { BlitPass, CopyPass, ShaderPass } from '../passes/index.js';
|
|
6
|
+
export { BlitPass, CopyPass, ShaderPass, ComputePass, PingPongComputePass } from '../passes/index.js';
|
|
7
7
|
export { useMotionGPU } from './motiongpu-context.js';
|
|
8
8
|
export { useFrame } from './frame-context.js';
|
|
9
9
|
export { useTexture } from './use-texture.js';
|
|
10
|
-
export type { FrameInvalidationToken, FrameState, OutputColorSpace, RenderPass, RenderPassContext, RenderPassFlags, RenderPassInputSlot, RenderPassOutputSlot, RenderMode, RenderTarget, RenderTargetDefinition, RenderTargetDefinitionMap, TextureData, TextureDefinition, TextureDefinitionMap, TextureUpdateMode, TextureMap, TextureSource, TextureValue, TypedUniform, UniformMat4Value, UniformMap, UniformType, UniformValue } from '../core/types.js';
|
|
10
|
+
export type { FrameInvalidationToken, FrameState, OutputColorSpace, AnyPass, ComputePassLike, RenderPass, RenderPassContext, RenderPassFlags, RenderPassInputSlot, RenderPassOutputSlot, RenderMode, RenderTarget, RenderTargetDefinition, RenderTargetDefinitionMap, TextureData, TextureDefinition, TextureDefinitionMap, TextureUpdateMode, TextureMap, TextureSource, TextureValue, TypedUniform, UniformMat4Value, UniformMap, UniformType, UniformValue } from '../core/types.js';
|
|
11
11
|
export type { LoadedTexture, TextureDecodeOptions, TextureLoadOptions } from '../core/texture-loader.js';
|
|
12
12
|
export type { FragMaterial, FragMaterialInput, MaterialIncludes, MaterialDefineValue, MaterialDefines, TypedMaterialDefineValue } from '../core/material.js';
|
|
13
13
|
export type { MotionGPUContext } from './motiongpu-context.js';
|
|
14
14
|
export type { UseFrameOptions, UseFrameResult } from './frame-context.js';
|
|
15
15
|
export type { TextureUrlInput, UseTextureResult } from './use-texture.js';
|
|
16
|
+
export type { StorageBufferAccess, StorageBufferDefinition, StorageBufferDefinitionMap, StorageBufferType, ComputePassContext } from '../core/types.js';
|
|
17
|
+
export type { ComputePassOptions, ComputeDispatchContext } from '../passes/ComputePass.js';
|
|
18
|
+
export type { PingPongComputePassOptions } from '../passes/PingPongComputePass.js';
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/svelte/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACN,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EACX,sBAAsB,EACtB,UAAU,EACV,gBAAgB,EAChB,OAAO,EACP,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,UAAU,EACV,YAAY,EACZ,sBAAsB,EACtB,yBAAyB,EACzB,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,YAAY,EACZ,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACX,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACX,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,wBAAwB,EACxB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC1E,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,YAAY,EACX,mBAAmB,EACnB,uBAAuB,EACvB,0BAA0B,EAC1B,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC3F,YAAY,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC"}
|
package/dist/svelte/index.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { defineMaterial } from "../core/material.js";
|
|
2
|
+
import { BlitPass } from "../passes/BlitPass.js";
|
|
3
|
+
import { CopyPass } from "../passes/CopyPass.js";
|
|
4
|
+
import { ShaderPass } from "../passes/ShaderPass.js";
|
|
5
|
+
import { ComputePass } from "../passes/ComputePass.js";
|
|
6
|
+
import { PingPongComputePass } from "../passes/PingPongComputePass.js";
|
|
7
|
+
import "../passes/index.js";
|
|
8
|
+
import { useMotionGPU } from "./motiongpu-context.js";
|
|
9
|
+
import { useFrame } from "./frame-context.js";
|
|
10
|
+
import { useTexture } from "./use-texture.js";
|
|
11
|
+
import FragCanvas from "./FragCanvas.svelte";
|
|
12
|
+
export { BlitPass, ComputePass, CopyPass, FragCanvas, PingPongComputePass, ShaderPass, defineMaterial, useFrame, useMotionGPU, useTexture };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motiongpu-context.d.ts","sourceRoot":"","sources":["../../src/lib/svelte/motiongpu-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,KAAK,EACX,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,kBAAkB,IAAI,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAOjG,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,eAAe,EAAE,qBAAqB,EAAE,CAAC;AAE/E;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,MAAM,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,eAAe,CAAC,MAAM,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC,CAAC;AAE5F;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC;;OAEG;IACH,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACtC;;OAEG;IACH,IAAI,EAAE,eAAe,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD;;OAEG;IACH,GAAG,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC7B;;OAEG;IACH,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAClC;;OAEG;IACH,UAAU,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IACxC;;OAEG;IACH,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACrC;;OAEG;IACH,IAAI,EAAE,oBAAoB,CAAC;IAC3B;;OAEG;IACH,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB;;OAEG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;OAEG;IACH,SAAS,EAAE,kBAAkB,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAEvE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,IAAI,gBAAgB,CAO/C"}
|
|
@@ -1,26 +1,29 @@
|
|
|
1
|
-
import { getContext, setContext } from
|
|
1
|
+
import { getContext, setContext } from "svelte";
|
|
2
|
+
//#region src/lib/svelte/motiongpu-context.ts
|
|
2
3
|
/**
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
* Svelte context key used to expose `FragCanvas` runtime state.
|
|
5
|
+
*/
|
|
6
|
+
var MOTIONGPU_CONTEXT_KEY = Symbol("motiongpu.context");
|
|
6
7
|
/**
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
* Registers the motiongpu context in the current Svelte component tree.
|
|
9
|
+
*
|
|
10
|
+
* @param context - Context payload to provide.
|
|
11
|
+
*/
|
|
12
|
+
function provideMotionGPUContext(context) {
|
|
13
|
+
setContext(MOTIONGPU_CONTEXT_KEY, context);
|
|
13
14
|
}
|
|
14
15
|
/**
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
return context;
|
|
16
|
+
* Returns the active motiongpu context.
|
|
17
|
+
*
|
|
18
|
+
* @returns Active context.
|
|
19
|
+
* @throws {Error} When called outside `<FragCanvas>`.
|
|
20
|
+
*/
|
|
21
|
+
function useMotionGPU() {
|
|
22
|
+
const context = getContext(MOTIONGPU_CONTEXT_KEY);
|
|
23
|
+
if (!context) throw new Error("useMotionGPU must be used inside <FragCanvas>");
|
|
24
|
+
return context;
|
|
26
25
|
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { provideMotionGPUContext, useMotionGPU };
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=motiongpu-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motiongpu-context.js","names":[],"sources":["../../src/lib/svelte/motiongpu-context.ts"],"sourcesContent":["import { getContext, setContext } from 'svelte';\nimport type { RenderMode } from '../core/types.js';\nimport type { CurrentReadable, CurrentWritable } from '../core/current-value.js';\nimport type {\n\tFrameProfilingSnapshot,\n\tFrameRunTimings,\n\tFrameScheduleSnapshot\n} from '../core/frame-registry.js';\nimport type { MotionGPUScheduler as CoreMotionGPUScheduler } from '../core/scheduler-helpers.js';\n\n/**\n * Svelte context key used to expose `FragCanvas` runtime state.\n */\nconst MOTIONGPU_CONTEXT_KEY = Symbol('motiongpu.context');\n\nexport type MotionGPUScheduler = CoreMotionGPUScheduler;\nexport type { FrameProfilingSnapshot, FrameRunTimings, FrameScheduleSnapshot };\n\n/**\n * Namespace identifier for user-owned context entries.\n */\nexport type MotionGPUUserNamespace = string | symbol;\n\n/**\n * Shared user context store exposed by `FragCanvas`.\n */\nexport type MotionGPUUserContext = CurrentWritable<Record<MotionGPUUserNamespace, unknown>>;\n\n/**\n * Public `FragCanvas` runtime context available to hooks and user components.\n */\nexport interface MotionGPUContext {\n\t/**\n\t * Underlying canvas element used by the renderer.\n\t */\n\tcanvas: HTMLCanvasElement | undefined;\n\t/**\n\t * Reactive canvas pixel size.\n\t */\n\tsize: CurrentReadable<{ width: number; height: number }>;\n\t/**\n\t * Device pixel ratio multiplier.\n\t */\n\tdpr: CurrentWritable<number>;\n\t/**\n\t * Max frame delta clamp passed to scheduled callbacks.\n\t */\n\tmaxDelta: CurrentWritable<number>;\n\t/**\n\t * Scheduler render mode (`always`, `on-demand`, `manual`).\n\t */\n\trenderMode: CurrentWritable<RenderMode>;\n\t/**\n\t * Global toggle for automatic rendering.\n\t */\n\tautoRender: CurrentWritable<boolean>;\n\t/**\n\t * Namespaced user context store shared within the canvas subtree.\n\t */\n\tuser: MotionGPUUserContext;\n\t/**\n\t * Marks current frame as invalidated.\n\t */\n\tinvalidate: () => void;\n\t/**\n\t * Requests one manual frame advance.\n\t */\n\tadvance: () => void;\n\t/**\n\t * Public scheduler API.\n\t */\n\tscheduler: MotionGPUScheduler;\n}\n\n/**\n * Registers the motiongpu context in the current Svelte component tree.\n *\n * @param context - Context payload to provide.\n */\nexport function provideMotionGPUContext(context: MotionGPUContext): void {\n\tsetContext(MOTIONGPU_CONTEXT_KEY, context);\n}\n\n/**\n * Returns the active motiongpu context.\n *\n * @returns Active context.\n * @throws {Error} When called outside `<FragCanvas>`.\n */\nexport function useMotionGPU(): MotionGPUContext {\n\tconst context = getContext<MotionGPUContext>(MOTIONGPU_CONTEXT_KEY);\n\tif (!context) {\n\t\tthrow new Error('useMotionGPU must be used inside <FragCanvas>');\n\t}\n\n\treturn context;\n}\n"],"mappings":";;;;;AAaA,IAAM,wBAAwB,OAAO,oBAAoB;;;;;;AAkEzD,SAAgB,wBAAwB,SAAiC;AACxE,YAAW,uBAAuB,QAAQ;;;;;;;;AAS3C,SAAgB,eAAiC;CAChD,MAAM,UAAU,WAA6B,sBAAsB;AACnE,KAAI,CAAC,QACJ,OAAM,IAAI,MAAM,gDAAgD;AAGjE,QAAO"}
|
|
@@ -41,3 +41,4 @@ export declare function useMotionGPUUserContext<UC extends UserContextStore = Us
|
|
|
41
41
|
*/
|
|
42
42
|
export declare function setMotionGPUUserContext<UCT = unknown>(namespace: MotionGPUUserNamespace, value: UCT | (() => UCT), options?: SetMotionGPUUserContextOptions): UCT | undefined;
|
|
43
43
|
export {};
|
|
44
|
+
//# sourceMappingURL=use-motiongpu-user-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-motiongpu-user-context.d.ts","sourceRoot":"","sources":["../../src/lib/svelte/use-motiongpu-user-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAgB,KAAK,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEnF;;GAEG;AACH,KAAK,gBAAgB,GAAG,MAAM,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;AAOhE;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC9C;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACxC;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;CACpC;AASD;;GAEG;AACH,wBAAgB,uBAAuB,CACtC,EAAE,SAAS,gBAAgB,GAAG,gBAAgB,KAC1C,eAAe,CAAC,EAAE,CAAC,CAAC;AAEzB;;GAEG;AACH,wBAAgB,uBAAuB,CACtC,EAAE,SAAS,gBAAgB,GAAG,gBAAgB,EAC9C,CAAC,SAAS,MAAM,EAAE,GAAG,sBAAsB,GAAG,MAAM,EAAE,GAAG,sBAAsB,EAC9E,SAAS,EAAE,CAAC,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;AAwCpD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,GAAG,OAAO,EACpD,SAAS,EAAE,sBAAsB,EACjC,KAAK,EAAE,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EACxB,OAAO,CAAC,EAAE,8BAA8B,GACtC,GAAG,GAAG,SAAS,CAuCjB"}
|