@photivra/engine 2.10.0 → 2.11.1
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/CHANGELOG.md +139 -1
- package/CITATION.cff +1 -1
- package/NODE_SUPPORT.md +21 -3
- package/README.md +6 -6
- package/SECURITY.md +1 -1
- package/dist/core/portable-math.d.ts +6 -0
- package/dist/core/portable-math.js +39 -0
- package/dist/core/portable-math.js.map +1 -1
- package/dist/core/version.d.ts +1 -1
- package/dist/core/version.js +1 -1
- package/dist/core/version.js.map +1 -1
- package/dist/facade/chart-material-layers.d.ts +115 -0
- package/dist/facade/chart-material-layers.js +224 -0
- package/dist/facade/chart-material-layers.js.map +1 -0
- package/dist/facade/chart-radiance-batch.d.ts +8 -2
- package/dist/facade/chart-radiance-batch.js +11 -4
- package/dist/facade/chart-radiance-batch.js.map +1 -1
- package/dist/facade/chart-scenes.d.ts +134 -0
- package/dist/facade/chart-scenes.js +32 -22
- package/dist/facade/chart-scenes.js.map +1 -1
- package/dist/facade/diffraction-provider.d.ts +8 -2
- package/dist/facade/diffraction-provider.js +71 -2
- package/dist/facade/diffraction-provider.js.map +1 -1
- package/dist/facade/display-view-gpu-session.d.ts +18 -0
- package/dist/facade/display-view-gpu-session.js +280 -0
- package/dist/facade/display-view-gpu-session.js.map +1 -0
- package/dist/facade/display-view-gpu.d.ts +146 -0
- package/dist/facade/display-view-gpu.js +59 -0
- package/dist/facade/display-view-gpu.js.map +1 -0
- package/dist/facade/display-view.d.ts +48 -1
- package/dist/facade/display-view.js +7 -7
- package/dist/facade/display-view.js.map +1 -1
- package/dist/facade/expected-signal-setup.d.ts +5 -0
- package/dist/facade/expected-signal-setup.js +16 -0
- package/dist/facade/expected-signal-setup.js.map +1 -1
- package/dist/facade/expected-signal.d.ts +48 -3
- package/dist/facade/expected-signal.js +8 -0
- package/dist/facade/expected-signal.js.map +1 -1
- package/dist/facade/scene-radiance.d.ts +4 -2
- package/dist/facade/scene-radiance.js +7 -4
- package/dist/facade/scene-radiance.js.map +1 -1
- package/dist/facade/simulate-capture.d.ts +32 -5
- package/dist/facade/simulate-capture.js +148 -24
- package/dist/facade/simulate-capture.js.map +1 -1
- package/dist/facade/simulate-display-view.d.ts +31 -3
- package/dist/facade/simulate-display-view.js +72 -12
- package/dist/facade/simulate-display-view.js.map +1 -1
- package/dist/gpu/chart-composite-gpu.d.ts +119 -0
- package/dist/gpu/chart-composite-gpu.js +572 -0
- package/dist/gpu/chart-composite-gpu.js.map +1 -0
- package/dist/gpu/chart-radiance-gpu.d.ts +6 -6
- package/dist/gpu/chart-radiance-gpu.js +9 -11
- package/dist/gpu/chart-radiance-gpu.js.map +1 -1
- package/dist/gpu/display-view-chart-material-module.d.ts +10 -0
- package/dist/gpu/display-view-chart-material-module.js +58 -0
- package/dist/gpu/display-view-chart-material-module.js.map +1 -0
- package/dist/gpu/display-view-composite-material-module.d.ts +68 -0
- package/dist/gpu/display-view-composite-material-module.js +248 -0
- package/dist/gpu/display-view-composite-material-module.js.map +1 -0
- package/dist/gpu/display-view-quality-gpu.d.ts +185 -0
- package/dist/gpu/display-view-quality-gpu.js +1000 -0
- package/dist/gpu/display-view-quality-gpu.js.map +1 -0
- package/dist/gpu/display-view-speed-gpu.d.ts +156 -0
- package/dist/gpu/display-view-speed-gpu.js +524 -0
- package/dist/gpu/display-view-speed-gpu.js.map +1 -0
- package/dist/gpu/image-kernel-accelerator.d.ts +23 -4
- package/dist/gpu/image-kernel-accelerator.js +58 -10
- package/dist/gpu/image-kernel-accelerator.js.map +1 -1
- package/dist/gpu/image-kernel-execution.d.ts +55 -3
- package/dist/gpu/image-kernel-execution.js.map +1 -1
- package/dist/gpu/sensor-stage-gpu.d.ts +11 -0
- package/dist/gpu/sensor-stage-gpu.js +42 -13
- package/dist/gpu/sensor-stage-gpu.js.map +1 -1
- package/dist/gpu/webgpu-runtime.d.ts +4 -2
- package/dist/gpu/webgpu-runtime.js +13 -4
- package/dist/gpu/webgpu-runtime.js.map +1 -1
- package/dist/gpu/webgpu-switch.d.ts +4 -0
- package/dist/gpu/webgpu-switch.js +29 -0
- package/dist/gpu/webgpu-switch.js.map +1 -0
- package/dist/gpu/wgsl-chart-composite-kernel.d.ts +52 -0
- package/dist/gpu/wgsl-chart-composite-kernel.js +515 -0
- package/dist/gpu/wgsl-chart-composite-kernel.js.map +1 -0
- package/dist/gpu/wgsl-chart-kernel.d.ts +11 -9
- package/dist/gpu/wgsl-chart-kernel.js +33 -27
- package/dist/gpu/wgsl-chart-kernel.js.map +1 -1
- package/dist/gpu/wgsl-display-view-quality-kernel.d.ts +95 -0
- package/dist/gpu/wgsl-display-view-quality-kernel.js +769 -0
- package/dist/gpu/wgsl-display-view-quality-kernel.js.map +1 -0
- package/dist/gpu/wgsl-display-view-speed-kernel.d.ts +75 -0
- package/dist/gpu/wgsl-display-view-speed-kernel.js +386 -0
- package/dist/gpu/wgsl-display-view-speed-kernel.js.map +1 -0
- package/dist/gpu/wgsl-sensor-kernel.d.ts +28 -9
- package/dist/gpu/wgsl-sensor-kernel.js +94 -50
- package/dist/gpu/wgsl-sensor-kernel.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/optics/defocus-disc-kernel.d.ts +61 -0
- package/dist/optics/defocus-disc-kernel.js +191 -0
- package/dist/optics/defocus-disc-kernel.js.map +1 -0
- package/docs/API_REFERENCE.md +45 -1
- package/docs/QUICK_START.md +102 -3
- package/docs/USAGE.md +52 -2
- package/docs/api/core-version.md +1 -1
- package/docs/api/exports.json +117 -2
- package/docs/api/facade-chart-material-layers.md +137 -0
- package/docs/api/facade-chart-radiance-batch.md +7 -2
- package/docs/api/facade-display-view-gpu.md +94 -0
- package/docs/api/facade-scene-radiance.md +3 -2
- package/docs/api/facade-simulate-capture.md +23 -6
- package/docs/api/facade-simulate-display-view.md +17 -2
- package/docs/api/gpu-image-kernel-accelerator.md +10 -3
- package/docs/api/gpu-image-kernel-execution.md +71 -4
- package/docs/api/gpu-webgpu-switch.md +23 -0
- package/package.json +3 -1
|
@@ -2,6 +2,58 @@
|
|
|
2
2
|
|
|
3
3
|
The package and root API versions are recorded once in [Navigation](../API_REFERENCE.md) · [Developer guide](https://github.com/Photivra/photivra/blob/main/docs/DEVELOPERS.md). Generated signatures retain independent schema/model versions. Only the exports listed here are root-package contracts; module-local helpers are not supported deep imports.
|
|
4
4
|
|
|
5
|
+
## ChartCompositeProbeComponent
|
|
6
|
+
|
|
7
|
+
A component of the composite chart kernel's double-float32 probe (see {@link ChartCompositeProbeRecord}). The first four are the
|
|
8
|
+
outputs of the probe before 2.11.0: `two-sum` is TwoSum's low part (`s.l`), `two-product` Dekker's TwoProduct low part (`m.l`),
|
|
9
|
+
`double-word-add` the double-word sum's low part (`a.l`), `double-word-multiply` the Dekker double-word product (`q.h`, `q.l`).
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
export type ChartCompositeProbeComponent = "two-sum" | "two-product" | "double-word-add" | "double-word-multiply" | "fma-two-product" | "fma-double-word-multiply";
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## ChartCompositeProbeMismatch
|
|
16
|
+
|
|
17
|
+
One probe output that differs from its expected value: the component, the probe input's index, and the float32 bits (hex).
|
|
18
|
+
|
|
19
|
+
```ts
|
|
20
|
+
export interface ChartCompositeProbeMismatch {
|
|
21
|
+
component: ChartCompositeProbeComponent;
|
|
22
|
+
input: number;
|
|
23
|
+
got: string;
|
|
24
|
+
want: string;
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## ChartCompositeProbeRecord
|
|
29
|
+
|
|
30
|
+
The composite chart kernel's device probe (docs/WEBGPU.md, "Scene radiance on the GPU"): how the device evaluated the kernel's
|
|
31
|
+
double-float32 building blocks, and which product path the kernel was compiled with. Diagnostic; it never changes a result.
|
|
32
|
+
|
|
33
|
+
- `deviceClass`: `exact` (the written order, round to nearest); `contracted` (only the Dekker product paths differ, consistent
|
|
34
|
+
with a multiply and an add fused into one rounding); `reassociated` (a sum path differs and every differing sum low part is
|
|
35
|
+
zero, the value an algebraic simplification of (a + b) − a to b gives); `other` (anything else, such as a sum path that differs
|
|
36
|
+
with non-zero low parts, as a rounding not to nearest gives, or a non-finite output).
|
|
37
|
+
- `productPath`: `dekker` when the Dekker path passes, else `fma` when the fma path passes (which needs a fused `fma`), else null
|
|
38
|
+
(the device is refused for composite charts, the 2.3 elements and material-layers scenes).
|
|
39
|
+
- `fmaFused`: whether every fma TwoProduct low part was exact (a fused `fma`; WGSL also allows an unfused one).
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
export interface ChartCompositeProbeRecord {
|
|
43
|
+
deviceClass: "exact" | "contracted" | "reassociated" | "other";
|
|
44
|
+
productPath: "dekker" | "fma" | null;
|
|
45
|
+
fmaFused: boolean;
|
|
46
|
+
/** Probe inputs, each checked on every component. */
|
|
47
|
+
inputs: number;
|
|
48
|
+
/** Differing outputs per component. */
|
|
49
|
+
mismatchCounts: Readonly<Record<ChartCompositeProbeComponent, number>>;
|
|
50
|
+
/** The indices of the probe inputs (`PROBE_INPUTS`) whose output differs, per component. */
|
|
51
|
+
mismatchedInputs: Readonly<Record<ChartCompositeProbeComponent, readonly number[]>>;
|
|
52
|
+
/** The first differing outputs (at most eight), in component order. */
|
|
53
|
+
mismatches: readonly ChartCompositeProbeMismatch[];
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
5
57
|
## composeRelativeErrorBounds
|
|
6
58
|
|
|
7
59
|
Composes two `relative-to-reference` bounds through a pipeline `second ∘ first`, where the second
|
|
@@ -17,6 +69,20 @@ export function composeRelativeErrorBounds(first: ImageKernelRelativeErrorBound,
|
|
|
17
69
|
|
|
18
70
|
This call is synchronous; any supplied provider must follow its explicit synchronous contract.
|
|
19
71
|
|
|
72
|
+
## ImageKernelAdapterDescription
|
|
73
|
+
|
|
74
|
+
#481: the WebGPU adapter a device came from, as `GPUAdapter.info` describes it (W3C WebGPU, `GPUAdapterInfo`): each field
|
|
75
|
+
is the browser's string, or empty when the browser withholds it. Diagnostic only; it never changes a result.
|
|
76
|
+
|
|
77
|
+
```ts
|
|
78
|
+
export interface ImageKernelAdapterDescription {
|
|
79
|
+
vendor: string;
|
|
80
|
+
architecture: string;
|
|
81
|
+
device: string;
|
|
82
|
+
description: string;
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
20
86
|
## ImageKernelBackend
|
|
21
87
|
|
|
22
88
|
Requested or actual execution backend.
|
|
@@ -92,19 +158,20 @@ export class ImageKernelExecutionError extends Error {
|
|
|
92
158
|
|
|
93
159
|
## ImageKernelFailureReason
|
|
94
160
|
|
|
95
|
-
Failure classes reported by {@link ImageKernelExecutionError}.
|
|
161
|
+
Failure classes reported by {@link ImageKernelExecutionError}. `conformance-failed` (#481): a device failed the display view's
|
|
162
|
+
run-time self-check with `gpu: "require"`.
|
|
96
163
|
|
|
97
164
|
```ts
|
|
98
165
|
export type ImageKernelFailureReason = ImageKernelFallbackReason | "device-lost" | "out-of-memory" | "gpu-validation" |
|
|
99
|
-
"aborted" | "disposed" | "busy" | "unsupported-on-backend" | "unsupported-float32-domain" | "indeterminate-float32-classification";
|
|
166
|
+
"aborted" | "disposed" | "busy" | "unsupported-on-backend" | "unsupported-float32-domain" | "indeterminate-float32-classification" | "conformance-failed";
|
|
100
167
|
```
|
|
101
168
|
|
|
102
169
|
## ImageKernelFallbackReason
|
|
103
170
|
|
|
104
|
-
Why a requested
|
|
171
|
+
Why a requested `webgpu-f32` backend ran the CPU reference instead. `webgpu-disabled`: `setWebGpuEnabled(false)` in this realm.
|
|
105
172
|
|
|
106
173
|
```ts
|
|
107
|
-
export type ImageKernelFallbackReason = "webgpu-unavailable" | "adapter-unavailable" | "device-request-failed" |
|
|
174
|
+
export type ImageKernelFallbackReason = "webgpu-unavailable" | "webgpu-disabled" | "adapter-unavailable" | "device-request-failed" |
|
|
108
175
|
"insufficient-limits" | "unsupported-platform-endianness";
|
|
109
176
|
```
|
|
110
177
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# gpu/webgpu-switch.ts public contracts
|
|
2
|
+
|
|
3
|
+
The package and root API versions are recorded once in [Navigation](../API_REFERENCE.md) · [Developer guide](https://github.com/Photivra/photivra/blob/main/docs/DEVELOPERS.md). Generated signatures retain independent schema/model versions. Only the exports listed here are root-package contracts; module-local helpers are not supported deep imports.
|
|
4
|
+
|
|
5
|
+
## getWebGpuEnabled
|
|
6
|
+
|
|
7
|
+
Whether this realm may use WebGPU when a caller asks for it.
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
export function getWebGpuEnabled(): boolean;
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
This call is synchronous; any supplied provider must follow its explicit synchronous contract.
|
|
14
|
+
|
|
15
|
+
## setWebGpuEnabled
|
|
16
|
+
|
|
17
|
+
Turns WebGPU on (`true`, the default) or off (`false`) for this realm. Anything but a boolean is refused.
|
|
18
|
+
|
|
19
|
+
```ts
|
|
20
|
+
export function setWebGpuEnabled(enabled: boolean): void;
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
This call is synchronous; any supplied provider must follow its explicit synchronous contract.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@photivra/engine",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.11.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Scientific TypeScript engine for camera optics, exposure, focus, motion, sensor sampling, diffraction, and digital imaging calculations.",
|
|
6
6
|
"type": "module",
|
|
@@ -88,6 +88,8 @@
|
|
|
88
88
|
"bench:webgpu": "vitest run --config vitest.webgpu-timing.config.ts",
|
|
89
89
|
"test:webgpu:hardware": "node scripts/run-webgpu-hardware.mjs test",
|
|
90
90
|
"bench:webgpu:hardware": "node scripts/run-webgpu-hardware.mjs bench",
|
|
91
|
+
"accept:gpu": "node scripts/accept-display-view-gpu.mjs --gpu",
|
|
92
|
+
"accept:gpu:hardware": "node scripts/accept-display-view-gpu.mjs --gpu --hardware",
|
|
91
93
|
"check:browser-surface": "node scripts/check-browser-surface.mjs",
|
|
92
94
|
"check:licenses": "node scripts/check-license-policy.mjs",
|
|
93
95
|
"check:license-headers": "node scripts/check-license-headers.mjs",
|