@vibesdotdev/runnable 0.0.0-stage → 1.0.0-rc.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/LICENSE +18 -0
- package/README.md +4 -2
- package/dist/artifact-data.d.ts +8 -0
- package/dist/artifact-data.d.ts.map +1 -0
- package/dist/artifact-data.js +12 -0
- package/dist/artifact-data.js.map +1 -0
- package/dist/change-source.d.ts +54 -0
- package/dist/change-source.d.ts.map +1 -0
- package/dist/change-source.js +37 -0
- package/dist/change-source.js.map +1 -0
- package/dist/client/client.d.ts +1002 -0
- package/dist/client/client.d.ts.map +1 -0
- package/dist/client/client.js +148 -0
- package/dist/client/client.js.map +1 -0
- package/dist/client/execution/failure.d.ts +3 -0
- package/dist/client/execution/failure.d.ts.map +1 -0
- package/dist/client/execution/failure.js +20 -0
- package/dist/client/execution/failure.js.map +1 -0
- package/dist/client/execution/finalize.d.ts +81 -0
- package/dist/client/execution/finalize.d.ts.map +1 -0
- package/dist/client/execution/finalize.js +71 -0
- package/dist/client/execution/finalize.js.map +1 -0
- package/dist/client/execution/memo.d.ts +25 -0
- package/dist/client/execution/memo.d.ts.map +1 -0
- package/dist/client/execution/memo.js +56 -0
- package/dist/client/execution/memo.js.map +1 -0
- package/dist/client/execution/native-admission.d.ts +7 -0
- package/dist/client/execution/native-admission.d.ts.map +1 -0
- package/dist/client/execution/native-admission.js +22 -0
- package/dist/client/execution/native-admission.js.map +1 -0
- package/dist/client/execution/prepare-input.d.ts +19 -0
- package/dist/client/execution/prepare-input.d.ts.map +1 -0
- package/dist/client/execution/prepare-input.js +27 -0
- package/dist/client/execution/prepare-input.js.map +1 -0
- package/dist/client/execution/prepare-record.d.ts +271 -0
- package/dist/client/execution/prepare-record.d.ts.map +1 -0
- package/dist/client/execution/prepare-record.js +115 -0
- package/dist/client/execution/prepare-record.js.map +1 -0
- package/dist/client/execution/produce.d.ts +44 -0
- package/dist/client/execution/produce.d.ts.map +1 -0
- package/dist/client/execution/produce.js +78 -0
- package/dist/client/execution/produce.js.map +1 -0
- package/dist/client/execution/recorded.d.ts +28 -0
- package/dist/client/execution/recorded.d.ts.map +1 -0
- package/dist/client/execution/recorded.js +74 -0
- package/dist/client/execution/recorded.js.map +1 -0
- package/dist/client/execution/selection.d.ts +19 -0
- package/dist/client/execution/selection.d.ts.map +1 -0
- package/dist/client/execution/selection.js +38 -0
- package/dist/client/execution/selection.js.map +1 -0
- package/dist/client/native/completion.d.ts +19 -0
- package/dist/client/native/completion.d.ts.map +1 -0
- package/dist/client/native/completion.js +158 -0
- package/dist/client/native/completion.js.map +1 -0
- package/dist/client/native/controls.d.ts +18 -0
- package/dist/client/native/controls.d.ts.map +1 -0
- package/dist/client/native/controls.js +69 -0
- package/dist/client/native/controls.js.map +1 -0
- package/dist/client/native/owner.d.ts +36 -0
- package/dist/client/native/owner.d.ts.map +1 -0
- package/dist/client/native/owner.js +111 -0
- package/dist/client/native/owner.js.map +1 -0
- package/dist/client/native/supervision.d.ts +12 -0
- package/dist/client/native/supervision.d.ts.map +1 -0
- package/dist/client/native/supervision.js +56 -0
- package/dist/client/native/supervision.js.map +1 -0
- package/dist/client/records/authority.d.ts +20 -0
- package/dist/client/records/authority.d.ts.map +1 -0
- package/dist/client/records/authority.js +186 -0
- package/dist/client/records/authority.js.map +1 -0
- package/dist/client/records/identity.d.ts +4 -0
- package/dist/client/records/identity.d.ts.map +1 -0
- package/dist/client/records/identity.js +7 -0
- package/dist/client/records/identity.js.map +1 -0
- package/dist/client/records/input-admission.d.ts +5 -0
- package/dist/client/records/input-admission.d.ts.map +1 -0
- package/dist/client/records/input-admission.js +26 -0
- package/dist/client/records/input-admission.js.map +1 -0
- package/dist/client/records/owner.d.ts +254 -0
- package/dist/client/records/owner.d.ts.map +1 -0
- package/dist/client/records/owner.js +127 -0
- package/dist/client/records/owner.js.map +1 -0
- package/dist/client/records/query.d.ts +11 -0
- package/dist/client/records/query.d.ts.map +1 -0
- package/dist/client/records/query.js +60 -0
- package/dist/client/records/query.js.map +1 -0
- package/dist/client/records/recording.d.ts +9 -0
- package/dist/client/records/recording.d.ts.map +1 -0
- package/dist/client/records/recording.js +160 -0
- package/dist/client/records/recording.js.map +1 -0
- package/dist/client/resolve.d.ts +10 -0
- package/dist/client/resolve.d.ts.map +1 -0
- package/dist/client/resolve.js +33 -0
- package/dist/client/resolve.js.map +1 -0
- package/dist/client/tracking/artifact-data.d.ts +8 -0
- package/dist/client/tracking/artifact-data.d.ts.map +1 -0
- package/dist/client/tracking/artifact-data.js +12 -0
- package/dist/client/tracking/artifact-data.js.map +1 -0
- package/dist/client/tracking/client.d.ts +20 -0
- package/dist/client/tracking/client.d.ts.map +1 -0
- package/dist/client/tracking/client.js +187 -0
- package/dist/client/tracking/client.js.map +1 -0
- package/dist/client/tracking/panel-bindings.d.ts +8 -0
- package/dist/client/tracking/panel-bindings.d.ts.map +1 -0
- package/dist/client/tracking/panel-bindings.js +81 -0
- package/dist/client/tracking/panel-bindings.js.map +1 -0
- package/dist/client/tracking/panels.d.ts +62 -0
- package/dist/client/tracking/panels.d.ts.map +1 -0
- package/dist/client/tracking/panels.js +56 -0
- package/dist/client/tracking/panels.js.map +1 -0
- package/dist/client/tracking/projection.d.ts +17 -0
- package/dist/client/tracking/projection.d.ts.map +1 -0
- package/dist/client/tracking/projection.js +100 -0
- package/dist/client/tracking/projection.js.map +1 -0
- package/dist/client/tracking/watch.d.ts +10 -0
- package/dist/client/tracking/watch.d.ts.map +1 -0
- package/dist/client/tracking/watch.js +128 -0
- package/dist/client/tracking/watch.js.map +1 -0
- package/dist/client/transport.d.ts +14 -0
- package/dist/client/transport.d.ts.map +1 -0
- package/dist/client/transport.js +52 -0
- package/dist/client/transport.js.map +1 -0
- package/dist/client.d.ts +460 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +1181 -0
- package/dist/client.js.map +1 -0
- package/dist/context.d.ts +14 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +98 -0
- package/dist/context.js.map +1 -0
- package/dist/docs/runnable.context.docs.descriptor.d.ts +4 -0
- package/dist/docs/runnable.context.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/runnable.context.docs.descriptor.js +419 -0
- package/dist/docs/runnable.context.docs.descriptor.js.map +1 -0
- package/dist/docs/runnable.graphs.docs.descriptor.d.ts +4 -0
- package/dist/docs/runnable.graphs.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/runnable.graphs.docs.descriptor.js +51 -0
- package/dist/docs/runnable.graphs.docs.descriptor.js.map +1 -0
- package/dist/docs/runnable.nodes.docs.descriptor.d.ts +4 -0
- package/dist/docs/runnable.nodes.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/runnable.nodes.docs.descriptor.js +327 -0
- package/dist/docs/runnable.nodes.docs.descriptor.js.map +1 -0
- package/dist/event-broker.d.ts +54 -0
- package/dist/event-broker.d.ts.map +1 -0
- package/dist/event-broker.js +157 -0
- package/dist/event-broker.js.map +1 -0
- package/dist/events.d.ts +16 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +144 -0
- package/dist/events.js.map +1 -0
- package/dist/execution.contract.d.ts +10 -0
- package/dist/execution.contract.d.ts.map +1 -0
- package/dist/execution.contract.js +30 -0
- package/dist/execution.contract.js.map +1 -0
- package/dist/execution.d.ts +24 -0
- package/dist/execution.d.ts.map +1 -0
- package/dist/execution.js +172 -0
- package/dist/execution.js.map +1 -0
- package/dist/execution.telemetry.descriptor.d.ts +4 -0
- package/dist/execution.telemetry.descriptor.d.ts.map +1 -0
- package/dist/execution.telemetry.descriptor.js +6 -0
- package/dist/execution.telemetry.descriptor.js.map +1 -0
- package/dist/host.d.ts +95 -0
- package/dist/host.d.ts.map +1 -0
- package/dist/host.js +12 -0
- package/dist/host.js.map +1 -0
- package/dist/identity.d.ts +3 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +6 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/input-admission.d.ts +5 -0
- package/dist/input-admission.d.ts.map +1 -0
- package/dist/input-admission.js +43 -0
- package/dist/input-admission.js.map +1 -0
- package/dist/invocation.d.ts +17 -0
- package/dist/invocation.d.ts.map +1 -0
- package/dist/invocation.js +32 -0
- package/dist/invocation.js.map +1 -0
- package/dist/issues.d.ts +4 -0
- package/dist/issues.d.ts.map +1 -0
- package/dist/issues.js +5 -0
- package/dist/issues.js.map +1 -0
- package/dist/json-field.d.ts +4 -0
- package/dist/json-field.d.ts.map +1 -0
- package/dist/json-field.js +16 -0
- package/dist/json-field.js.map +1 -0
- package/dist/kinds/config.d.ts +3 -0
- package/dist/kinds/config.d.ts.map +1 -0
- package/dist/kinds/config.js +14 -0
- package/dist/kinds/config.js.map +1 -0
- package/dist/kinds/ingest-mapping.d.ts +3 -0
- package/dist/kinds/ingest-mapping.d.ts.map +1 -0
- package/dist/kinds/ingest-mapping.js +30 -0
- package/dist/kinds/ingest-mapping.js.map +1 -0
- package/dist/kinds/result.d.ts +3 -0
- package/dist/kinds/result.d.ts.map +1 -0
- package/dist/kinds/result.js +14 -0
- package/dist/kinds/result.js.map +1 -0
- package/dist/kinds/runnable.d.ts +3 -0
- package/dist/kinds/runnable.d.ts.map +1 -0
- package/dist/kinds/runnable.js +19 -0
- package/dist/kinds/runnable.js.map +1 -0
- package/dist/kinds/telemetry.d.ts +3 -0
- package/dist/kinds/telemetry.d.ts.map +1 -0
- package/dist/kinds/telemetry.js +14 -0
- package/dist/kinds/telemetry.js.map +1 -0
- package/dist/kinds/type.d.ts +3 -0
- package/dist/kinds/type.d.ts.map +1 -0
- package/dist/kinds/type.js +14 -0
- package/dist/kinds/type.js.map +1 -0
- package/dist/kinds/visualization.d.ts +3 -0
- package/dist/kinds/visualization.d.ts.map +1 -0
- package/dist/kinds/visualization.js +14 -0
- package/dist/kinds/visualization.js.map +1 -0
- package/dist/metrics/runnable.metrics.descriptor.d.ts +16 -0
- package/dist/metrics/runnable.metrics.descriptor.d.ts.map +1 -0
- package/dist/metrics/runnable.metrics.descriptor.js +16 -0
- package/dist/metrics/runnable.metrics.descriptor.js.map +1 -0
- package/dist/metrics/runnable.metrics.impl.d.ts +13 -0
- package/dist/metrics/runnable.metrics.impl.d.ts.map +1 -0
- package/dist/metrics/runnable.metrics.impl.js +60 -0
- package/dist/metrics/runnable.metrics.impl.js.map +1 -0
- package/dist/panels.d.ts +31 -0
- package/dist/panels.d.ts.map +1 -0
- package/dist/panels.js +58 -0
- package/dist/panels.js.map +1 -0
- package/dist/plugin.d.ts +3 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +71 -0
- package/dist/plugin.js.map +1 -0
- package/dist/projection.d.ts +26 -0
- package/dist/projection.d.ts.map +1 -0
- package/dist/projection.js +100 -0
- package/dist/projection.js.map +1 -0
- package/dist/recording.d.ts +9 -0
- package/dist/recording.d.ts.map +1 -0
- package/dist/recording.js +121 -0
- package/dist/recording.js.map +1 -0
- package/dist/records/authority.d.ts +20 -0
- package/dist/records/authority.d.ts.map +1 -0
- package/dist/records/authority.js +142 -0
- package/dist/records/authority.js.map +1 -0
- package/dist/records/query.d.ts +11 -0
- package/dist/records/query.d.ts.map +1 -0
- package/dist/records/query.js +60 -0
- package/dist/records/query.js.map +1 -0
- package/dist/runnable.cloud.plugin.d.ts +3 -0
- package/dist/runnable.cloud.plugin.d.ts.map +1 -0
- package/dist/runnable.cloud.plugin.js +3 -0
- package/dist/runnable.cloud.plugin.js.map +1 -0
- package/dist/runnable.consumer.plugin.d.ts +15 -0
- package/dist/runnable.consumer.plugin.d.ts.map +1 -0
- package/dist/runnable.consumer.plugin.js +15 -0
- package/dist/runnable.consumer.plugin.js.map +1 -0
- package/dist/runnable.plugin.d.ts +3 -0
- package/dist/runnable.plugin.d.ts.map +1 -0
- package/dist/runnable.plugin.js +3 -0
- package/dist/runnable.plugin.js.map +1 -0
- package/dist/runner.d.ts +13 -0
- package/dist/runner.d.ts.map +1 -0
- package/dist/runner.js +151 -0
- package/dist/runner.js.map +1 -0
- package/dist/runtime/change-source.d.ts +39 -0
- package/dist/runtime/change-source.d.ts.map +1 -0
- package/dist/runtime/change-source.js +36 -0
- package/dist/runtime/change-source.js.map +1 -0
- package/dist/runtime/event-broker.d.ts +41 -0
- package/dist/runtime/event-broker.d.ts.map +1 -0
- package/dist/runtime/event-broker.js +157 -0
- package/dist/runtime/event-broker.js.map +1 -0
- package/dist/runtime/events.d.ts +16 -0
- package/dist/runtime/events.d.ts.map +1 -0
- package/dist/runtime/events.js +144 -0
- package/dist/runtime/events.js.map +1 -0
- package/dist/runtime/execution/contract.d.ts +10 -0
- package/dist/runtime/execution/contract.d.ts.map +1 -0
- package/dist/runtime/execution/contract.js +30 -0
- package/dist/runtime/execution/contract.js.map +1 -0
- package/dist/runtime/execution/exit.d.ts +5 -0
- package/dist/runtime/execution/exit.d.ts.map +1 -0
- package/dist/runtime/execution/exit.js +39 -0
- package/dist/runtime/execution/exit.js.map +1 -0
- package/dist/runtime/execution/index.d.ts +23 -0
- package/dist/runtime/execution/index.d.ts.map +1 -0
- package/dist/runtime/execution/index.js +136 -0
- package/dist/runtime/execution/index.js.map +1 -0
- package/dist/runtime/host.d.ts +60 -0
- package/dist/runtime/host.d.ts.map +1 -0
- package/dist/runtime/host.js +13 -0
- package/dist/runtime/host.js.map +1 -0
- package/dist/runtime/invocation.d.ts +10 -0
- package/dist/runtime/invocation.d.ts.map +1 -0
- package/dist/runtime/invocation.js +27 -0
- package/dist/runtime/invocation.js.map +1 -0
- package/dist/runtime/plugins/plugin.d.ts +3 -0
- package/dist/runtime/plugins/plugin.d.ts.map +1 -0
- package/dist/runtime/plugins/plugin.js +69 -0
- package/dist/runtime/plugins/plugin.js.map +1 -0
- package/dist/runtime/plugins/runnable.cloud.plugin.d.ts +3 -0
- package/dist/runtime/plugins/runnable.cloud.plugin.d.ts.map +1 -0
- package/dist/runtime/plugins/runnable.cloud.plugin.js +3 -0
- package/dist/runtime/plugins/runnable.cloud.plugin.js.map +1 -0
- package/dist/runtime/plugins/runnable.consumer.plugin.d.ts +15 -0
- package/dist/runtime/plugins/runnable.consumer.plugin.d.ts.map +1 -0
- package/dist/runtime/plugins/runnable.consumer.plugin.js +15 -0
- package/dist/runtime/plugins/runnable.consumer.plugin.js.map +1 -0
- package/dist/runtime/plugins/runnable.metrics.plugin.d.ts +4 -0
- package/dist/runtime/plugins/runnable.metrics.plugin.d.ts.map +1 -0
- package/dist/runtime/plugins/runnable.metrics.plugin.js +13 -0
- package/dist/runtime/plugins/runnable.metrics.plugin.js.map +1 -0
- package/dist/runtime/plugins/runnable.plugin.d.ts +3 -0
- package/dist/runtime/plugins/runnable.plugin.d.ts.map +1 -0
- package/dist/runtime/plugins/runnable.plugin.js +3 -0
- package/dist/runtime/plugins/runnable.plugin.js.map +1 -0
- package/dist/runtime/runner.d.ts +13 -0
- package/dist/runtime/runner.d.ts.map +1 -0
- package/dist/runtime/runner.js +154 -0
- package/dist/runtime/runner.js.map +1 -0
- package/dist/runtime/state/index.d.ts +4 -0
- package/dist/runtime/state/index.d.ts.map +1 -0
- package/dist/runtime/state/index.js +4 -0
- package/dist/runtime/state/index.js.map +1 -0
- package/dist/runtime/state/manager.d.ts +20 -0
- package/dist/runtime/state/manager.d.ts.map +1 -0
- package/dist/runtime/state/manager.js +135 -0
- package/dist/runtime/state/manager.js.map +1 -0
- package/dist/runtime/state/snapshot.d.ts +10 -0
- package/dist/runtime/state/snapshot.d.ts.map +1 -0
- package/dist/runtime/state/snapshot.js +59 -0
- package/dist/runtime/state/snapshot.js.map +1 -0
- package/dist/runtime/state/time-series.d.ts +36 -0
- package/dist/runtime/state/time-series.d.ts.map +1 -0
- package/dist/runtime/state/time-series.js +151 -0
- package/dist/runtime/state/time-series.js.map +1 -0
- package/dist/schemas/context.d.ts +64 -0
- package/dist/schemas/context.d.ts.map +1 -0
- package/dist/schemas/context.js +37 -0
- package/dist/schemas/context.js.map +1 -0
- package/dist/schemas/contracts/events.d.ts +33 -0
- package/dist/schemas/contracts/events.d.ts.map +1 -0
- package/dist/schemas/contracts/events.js +5 -0
- package/dist/schemas/contracts/events.js.map +1 -0
- package/dist/schemas/contracts/execution.d.ts +211 -0
- package/dist/schemas/contracts/execution.d.ts.map +1 -0
- package/dist/schemas/contracts/execution.js +40 -0
- package/dist/schemas/contracts/execution.js.map +1 -0
- package/dist/schemas/contracts/host.d.ts +37 -0
- package/dist/schemas/contracts/host.d.ts.map +1 -0
- package/dist/schemas/contracts/host.js +2 -0
- package/dist/schemas/contracts/host.js.map +1 -0
- package/dist/schemas/contracts/index.d.ts +77 -0
- package/dist/schemas/contracts/index.d.ts.map +1 -0
- package/dist/schemas/contracts/index.js +28 -0
- package/dist/schemas/contracts/index.js.map +1 -0
- package/dist/schemas/contracts/invocation.d.ts +9 -0
- package/dist/schemas/contracts/invocation.d.ts.map +1 -0
- package/dist/schemas/contracts/invocation.js +8 -0
- package/dist/schemas/contracts/invocation.js.map +1 -0
- package/dist/schemas/contracts/runner.d.ts +61 -0
- package/dist/schemas/contracts/runner.d.ts.map +1 -0
- package/dist/schemas/contracts/runner.js +3 -0
- package/dist/schemas/contracts/runner.js.map +1 -0
- package/dist/schemas/contracts/state.d.ts +147 -0
- package/dist/schemas/contracts/state.d.ts.map +1 -0
- package/dist/schemas/contracts/state.js +16 -0
- package/dist/schemas/contracts/state.js.map +1 -0
- package/dist/schemas/contracts/storage.d.ts +229 -0
- package/dist/schemas/contracts/storage.d.ts.map +1 -0
- package/dist/schemas/contracts/storage.js +39 -0
- package/dist/schemas/contracts/storage.js.map +1 -0
- package/dist/schemas/contracts/test-scenario.d.ts +60 -0
- package/dist/schemas/contracts/test-scenario.d.ts.map +1 -0
- package/dist/schemas/contracts/test-scenario.js +2 -0
- package/dist/schemas/contracts/test-scenario.js.map +1 -0
- package/dist/schemas/contracts/watch.d.ts +49 -0
- package/dist/schemas/contracts/watch.d.ts.map +1 -0
- package/dist/schemas/contracts/watch.js +2 -0
- package/dist/schemas/contracts/watch.js.map +1 -0
- package/dist/schemas/contracts.d.ts +192 -0
- package/dist/schemas/contracts.d.ts.map +1 -0
- package/dist/schemas/contracts.js +38 -0
- package/dist/schemas/contracts.js.map +1 -0
- package/dist/schemas/description.d.ts +68 -0
- package/dist/schemas/description.d.ts.map +1 -0
- package/dist/schemas/description.js +12 -0
- package/dist/schemas/description.js.map +1 -0
- package/dist/schemas/descriptors.d.ts +429 -0
- package/dist/schemas/descriptors.d.ts.map +1 -0
- package/dist/schemas/descriptors.js +125 -0
- package/dist/schemas/descriptors.js.map +1 -0
- package/dist/schemas/events.d.ts +359 -0
- package/dist/schemas/events.d.ts.map +1 -0
- package/dist/schemas/events.js +109 -0
- package/dist/schemas/events.js.map +1 -0
- package/dist/schemas/index.d.ts +12 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +12 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/issues.d.ts +142 -0
- package/dist/schemas/issues.d.ts.map +1 -0
- package/dist/schemas/issues.js +44 -0
- package/dist/schemas/issues.js.map +1 -0
- package/dist/schemas/outcome.d.ts +111 -0
- package/dist/schemas/outcome.d.ts.map +1 -0
- package/dist/schemas/outcome.js +32 -0
- package/dist/schemas/outcome.js.map +1 -0
- package/dist/schemas/panels.d.ts +164 -0
- package/dist/schemas/panels.d.ts.map +1 -0
- package/dist/schemas/panels.js +25 -0
- package/dist/schemas/panels.js.map +1 -0
- package/dist/schemas/projection.d.ts +301 -0
- package/dist/schemas/projection.d.ts.map +1 -0
- package/dist/schemas/projection.js +64 -0
- package/dist/schemas/projection.js.map +1 -0
- package/dist/schemas/runs.d.ts +2427 -0
- package/dist/schemas/runs.d.ts.map +1 -0
- package/dist/schemas/runs.js +163 -0
- package/dist/schemas/runs.js.map +1 -0
- package/dist/schemas/writes.d.ts +103 -0
- package/dist/schemas/writes.d.ts.map +1 -0
- package/dist/schemas/writes.js +28 -0
- package/dist/schemas/writes.js.map +1 -0
- package/dist/state.d.ts +175 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +356 -0
- package/dist/state.js.map +1 -0
- package/dist/storage/context-sql.d.ts +9 -0
- package/dist/storage/context-sql.d.ts.map +1 -0
- package/dist/storage/context-sql.js +77 -0
- package/dist/storage/context-sql.js.map +1 -0
- package/dist/storage/local/catalog.d.ts +62 -0
- package/dist/storage/local/catalog.d.ts.map +1 -0
- package/dist/storage/local/catalog.js +88 -0
- package/dist/storage/local/catalog.js.map +1 -0
- package/dist/storage/local/descriptors.d.ts +8 -0
- package/dist/storage/local/descriptors.d.ts.map +1 -0
- package/dist/storage/local/descriptors.js +32 -0
- package/dist/storage/local/descriptors.js.map +1 -0
- package/dist/storage/local/host.d.ts +5 -0
- package/dist/storage/local/host.d.ts.map +1 -0
- package/dist/storage/local/host.js +100 -0
- package/dist/storage/local/host.js.map +1 -0
- package/dist/storage/local/index.d.ts +4 -0
- package/dist/storage/local/index.d.ts.map +1 -0
- package/dist/storage/local/index.js +22 -0
- package/dist/storage/local/index.js.map +1 -0
- package/dist/storage/local/refusal.d.ts +2 -0
- package/dist/storage/local/refusal.d.ts.map +1 -0
- package/dist/storage/local/refusal.js +7 -0
- package/dist/storage/local/refusal.js.map +1 -0
- package/dist/storage/local/state-host.d.ts +5 -0
- package/dist/storage/local/state-host.d.ts.map +1 -0
- package/dist/storage/local/state-host.js +149 -0
- package/dist/storage/local/state-host.js.map +1 -0
- package/dist/storage/local/telemetry.d.ts +19 -0
- package/dist/storage/local/telemetry.d.ts.map +1 -0
- package/dist/storage/local/telemetry.js +52 -0
- package/dist/storage/local/telemetry.js.map +1 -0
- package/dist/storage/local.d.ts +3 -0
- package/dist/storage/local.d.ts.map +1 -0
- package/dist/storage/local.js +408 -0
- package/dist/storage/local.js.map +1 -0
- package/dist/storage/plugin.d.ts +7 -0
- package/dist/storage/plugin.d.ts.map +1 -0
- package/dist/storage/plugin.js +116 -0
- package/dist/storage/plugin.js.map +1 -0
- package/dist/storage/records.d.ts +8 -0
- package/dist/storage/records.d.ts.map +1 -0
- package/dist/storage/records.js +68 -0
- package/dist/storage/records.js.map +1 -0
- package/dist/svelte/components/ArtifactList.svelte +198 -0
- package/dist/svelte/components/ArtifactList.svelte.d.ts +10 -0
- package/dist/svelte/components/ArtifactList.svelte.d.ts.map +1 -0
- package/dist/svelte/components/ArtifactPreview.svelte +19 -0
- package/dist/svelte/components/ArtifactPreview.svelte.d.ts +8 -0
- package/dist/svelte/components/ArtifactPreview.svelte.d.ts.map +1 -0
- package/dist/svelte/components/FleetRuns.svelte +50 -0
- package/dist/svelte/components/FleetRuns.svelte.d.ts +8 -0
- package/dist/svelte/components/FleetRuns.svelte.d.ts.map +1 -0
- package/dist/svelte/components/LogViewer.svelte +98 -0
- package/dist/svelte/components/LogViewer.svelte.d.ts +13 -0
- package/dist/svelte/components/LogViewer.svelte.d.ts.map +1 -0
- package/dist/svelte/components/MetricCard.svelte +176 -0
- package/dist/svelte/components/MetricCard.svelte.d.ts +5 -0
- package/dist/svelte/components/MetricCard.svelte.d.ts.map +1 -0
- package/dist/svelte/components/RunActivity.svelte +32 -0
- package/dist/svelte/components/RunActivity.svelte.d.ts +13 -0
- package/dist/svelte/components/RunActivity.svelte.d.ts.map +1 -0
- package/dist/svelte/components/RunBrowser.svelte +86 -0
- package/dist/svelte/components/RunBrowser.svelte.d.ts +13 -0
- package/dist/svelte/components/RunBrowser.svelte.d.ts.map +1 -0
- package/dist/svelte/components/RunComparison.svelte +76 -0
- package/dist/svelte/components/RunComparison.svelte.d.ts +12 -0
- package/dist/svelte/components/RunComparison.svelte.d.ts.map +1 -0
- package/dist/svelte/components/RunContext.svelte +29 -0
- package/dist/svelte/components/RunContext.svelte.d.ts +10 -0
- package/dist/svelte/components/RunContext.svelte.d.ts.map +1 -0
- package/dist/svelte/components/RunEvidence.svelte +30 -0
- package/dist/svelte/components/RunEvidence.svelte.d.ts +8 -0
- package/dist/svelte/components/RunEvidence.svelte.d.ts.map +1 -0
- package/dist/svelte/components/RunIssues.svelte +114 -0
- package/dist/svelte/components/RunIssues.svelte.d.ts +12 -0
- package/dist/svelte/components/RunIssues.svelte.d.ts.map +1 -0
- package/dist/svelte/components/RunObservation.svelte +32 -0
- package/dist/svelte/components/RunObservation.svelte.d.ts +12 -0
- package/dist/svelte/components/RunObservation.svelte.d.ts.map +1 -0
- package/dist/svelte/components/RunOutcomeBadge.svelte +11 -0
- package/dist/svelte/components/RunOutcomeBadge.svelte.d.ts +8 -0
- package/dist/svelte/components/RunOutcomeBadge.svelte.d.ts.map +1 -0
- package/dist/svelte/components/RunPanels.svelte +64 -0
- package/dist/svelte/components/RunPanels.svelte.d.ts +15 -0
- package/dist/svelte/components/RunPanels.svelte.d.ts.map +1 -0
- package/dist/svelte/components/RunStatusBadge.svelte +38 -0
- package/dist/svelte/components/RunStatusBadge.svelte.d.ts +9 -0
- package/dist/svelte/components/RunStatusBadge.svelte.d.ts.map +1 -0
- package/dist/svelte/components/RunSummary.svelte +42 -0
- package/dist/svelte/components/RunSummary.svelte.d.ts +11 -0
- package/dist/svelte/components/RunSummary.svelte.d.ts.map +1 -0
- package/dist/svelte/components/RunsView.svelte +162 -0
- package/dist/svelte/components/RunsView.svelte.d.ts +17 -0
- package/dist/svelte/components/RunsView.svelte.d.ts.map +1 -0
- package/dist/svelte/components/TypePicker.svelte +337 -0
- package/dist/svelte/components/TypePicker.svelte.d.ts +12 -0
- package/dist/svelte/components/TypePicker.svelte.d.ts.map +1 -0
- package/dist/svelte/components/records/RunDetail.svelte +214 -0
- package/dist/svelte/components/records/RunDetail.svelte.d.ts +20 -0
- package/dist/svelte/components/records/RunDetail.svelte.d.ts.map +1 -0
- package/dist/svelte/components/records/RunList.svelte +190 -0
- package/dist/svelte/components/records/RunList.svelte.d.ts +14 -0
- package/dist/svelte/components/records/RunList.svelte.d.ts.map +1 -0
- package/dist/svelte/components/records/RunTree.svelte +186 -0
- package/dist/svelte/components/records/RunTree.svelte.d.ts +5 -0
- package/dist/svelte/components/records/RunTree.svelte.d.ts.map +1 -0
- package/dist/svelte/components/records/tree-navigation.d.ts +3 -0
- package/dist/svelte/components/records/tree-navigation.d.ts.map +1 -0
- package/dist/svelte/components/records/tree-navigation.js +29 -0
- package/dist/svelte/components/records/tree-projection.d.ts +16 -0
- package/dist/svelte/components/records/tree-projection.d.ts.map +1 -0
- package/dist/svelte/components/records/tree-projection.js +134 -0
- package/dist/svelte/index.d.ts +27 -0
- package/dist/svelte/index.d.ts.map +1 -0
- package/dist/svelte/index.js +22 -0
- package/dist/svelte/lib/artifact-blob.d.ts +2 -0
- package/dist/svelte/lib/artifact-blob.d.ts.map +1 -0
- package/dist/svelte/lib/artifact-blob.js +1 -0
- package/dist/svelte/lib/run-investigation.d.ts +17 -0
- package/dist/svelte/lib/run-investigation.d.ts.map +1 -0
- package/dist/svelte/lib/run-investigation.js +44 -0
- package/dist/svelte/lib/run-issues.d.ts +34 -0
- package/dist/svelte/lib/run-issues.d.ts.map +1 -0
- package/dist/svelte/lib/run-issues.js +59 -0
- package/dist/svelte/lib/run-presentation.d.ts +16 -0
- package/dist/svelte/lib/run-presentation.d.ts.map +1 -0
- package/dist/svelte/lib/run-presentation.js +69 -0
- package/dist/svelte/lib/run-tree.d.ts +22 -0
- package/dist/svelte/lib/run-tree.d.ts.map +1 -0
- package/dist/svelte/lib/run-tree.js +93 -0
- package/dist/svelte/lib/status.d.ts +19 -0
- package/dist/svelte/lib/status.d.ts.map +1 -0
- package/dist/svelte/lib/status.js +122 -0
- package/dist/svelte/query-form.d.ts +50 -0
- package/dist/svelte/query-form.d.ts.map +1 -0
- package/dist/svelte/query-form.js +19 -0
- package/dist/svelte/runs/data.svelte.d.ts +678 -0
- package/dist/svelte/runs/data.svelte.d.ts.map +1 -0
- package/dist/svelte/runs/data.svelte.js +28 -0
- package/dist/svelte/runs/opening.d.ts +8 -0
- package/dist/svelte/runs/opening.d.ts.map +1 -0
- package/dist/svelte/runs/opening.js +110 -0
- package/dist/svelte/runs/query.d.ts +3 -0
- package/dist/svelte/runs/query.d.ts.map +1 -0
- package/dist/svelte/runs/query.js +16 -0
- package/dist/svelte/runs/selection.d.ts +3 -0
- package/dist/svelte/runs/selection.d.ts.map +1 -0
- package/dist/svelte/runs/selection.js +42 -0
- package/dist/svelte/runs/shutdown.d.ts +9 -0
- package/dist/svelte/runs/shutdown.d.ts.map +1 -0
- package/dist/svelte/runs/shutdown.js +104 -0
- package/dist/svelte/runs.store.svelte.d.ts +427 -0
- package/dist/svelte/runs.store.svelte.d.ts.map +1 -0
- package/dist/svelte/runs.store.svelte.js +90 -0
- package/dist/svelte/styles.css +16 -0
- package/dist/svelte/types.d.ts +29 -0
- package/dist/svelte/types.d.ts.map +1 -0
- package/dist/svelte/types.js +1 -0
- package/dist/svelte/viz/DescriptorPanel.svelte +104 -0
- package/dist/svelte/viz/DescriptorPanel.svelte.d.ts +18 -0
- package/dist/svelte/viz/DescriptorPanel.svelte.d.ts.map +1 -0
- package/dist/svelte/viz/crystal/Crystal3D.svelte +137 -0
- package/dist/svelte/viz/crystal/Crystal3D.svelte.d.ts +12 -0
- package/dist/svelte/viz/crystal/Crystal3D.svelte.d.ts.map +1 -0
- package/dist/svelte/viz/crystal/Crystal3DControls.svelte +253 -0
- package/dist/svelte/viz/crystal/Crystal3DControls.svelte.d.ts +18 -0
- package/dist/svelte/viz/crystal/Crystal3DControls.svelte.d.ts.map +1 -0
- package/dist/svelte/viz/crystal/Crystal3DRenderer.svelte +941 -0
- package/dist/svelte/viz/crystal/Crystal3DRenderer.svelte.d.ts +16 -0
- package/dist/svelte/viz/crystal/Crystal3DRenderer.svelte.d.ts.map +1 -0
- package/dist/svelte/viz/crystal/Crystal3DStats.svelte +110 -0
- package/dist/svelte/viz/crystal/Crystal3DStats.svelte.d.ts +12 -0
- package/dist/svelte/viz/crystal/Crystal3DStats.svelte.d.ts.map +1 -0
- package/dist/svelte/viz/crystal/LatticePanel.svelte +230 -0
- package/dist/svelte/viz/crystal/LatticePanel.svelte.d.ts +13 -0
- package/dist/svelte/viz/crystal/LatticePanel.svelte.d.ts.map +1 -0
- package/dist/svelte/viz/crystal/index.d.ts +8 -0
- package/dist/svelte/viz/crystal/index.d.ts.map +1 -0
- package/dist/svelte/viz/crystal/index.js +6 -0
- package/dist/svelte/viz/crystal/types.d.ts +59 -0
- package/dist/svelte/viz/crystal/types.d.ts.map +1 -0
- package/dist/svelte/viz/crystal/types.js +27 -0
- package/dist/svelte/viz/index.d.ts +18 -0
- package/dist/svelte/viz/index.d.ts.map +1 -0
- package/dist/svelte/viz/index.js +16 -0
- package/dist/svelte/viz/mfd/MFDArcGauge.svelte +59 -0
- package/dist/svelte/viz/mfd/MFDArcGauge.svelte.d.ts +21 -0
- package/dist/svelte/viz/mfd/MFDArcGauge.svelte.d.ts.map +1 -0
- package/dist/svelte/viz/mfd/MFDBarMeter.svelte +58 -0
- package/dist/svelte/viz/mfd/MFDBarMeter.svelte.d.ts +21 -0
- package/dist/svelte/viz/mfd/MFDBarMeter.svelte.d.ts.map +1 -0
- package/dist/svelte/viz/mfd/MFDHexMatrix.svelte +58 -0
- package/dist/svelte/viz/mfd/MFDHexMatrix.svelte.d.ts +21 -0
- package/dist/svelte/viz/mfd/MFDHexMatrix.svelte.d.ts.map +1 -0
- package/dist/svelte/viz/mfd/MFDPanel.svelte +372 -0
- package/dist/svelte/viz/mfd/MFDPanel.svelte.d.ts +19 -0
- package/dist/svelte/viz/mfd/MFDPanel.svelte.d.ts.map +1 -0
- package/dist/svelte/viz/mfd/MFDScope.svelte +59 -0
- package/dist/svelte/viz/mfd/MFDScope.svelte.d.ts +21 -0
- package/dist/svelte/viz/mfd/MFDScope.svelte.d.ts.map +1 -0
- package/dist/svelte/viz/mfd/MFDStatusGrid.svelte +65 -0
- package/dist/svelte/viz/mfd/MFDStatusGrid.svelte.d.ts +25 -0
- package/dist/svelte/viz/mfd/MFDStatusGrid.svelte.d.ts.map +1 -0
- package/dist/svelte/viz/mfd/grid.d.ts +37 -0
- package/dist/svelte/viz/mfd/grid.d.ts.map +1 -0
- package/dist/svelte/viz/mfd/grid.js +51 -0
- package/dist/svelte/viz/mfd/palette.d.ts +22 -0
- package/dist/svelte/viz/mfd/palette.d.ts.map +1 -0
- package/dist/svelte/viz/mfd/palette.js +105 -0
- package/dist/svelte/viz/mfd/pipeline/store.svelte.d.ts +42 -0
- package/dist/svelte/viz/mfd/pipeline/store.svelte.d.ts.map +1 -0
- package/dist/svelte/viz/mfd/pipeline/store.svelte.js +115 -0
- package/dist/svelte/viz/mfd/renderer/context.d.ts +47 -0
- package/dist/svelte/viz/mfd/renderer/context.d.ts.map +1 -0
- package/dist/svelte/viz/mfd/renderer/context.js +272 -0
- package/dist/svelte/viz/mfd/renderer/pipeline.d.ts +32 -0
- package/dist/svelte/viz/mfd/renderer/pipeline.d.ts.map +1 -0
- package/dist/svelte/viz/mfd/renderer/pipeline.js +188 -0
- package/dist/svelte/viz/mfd/renderer/shaders.d.ts +35 -0
- package/dist/svelte/viz/mfd/renderer/shaders.d.ts.map +1 -0
- package/dist/svelte/viz/mfd/renderer/shaders.js +837 -0
- package/dist/svelte/viz/mfd/types.d.ts +88 -0
- package/dist/svelte/viz/mfd/types.d.ts.map +1 -0
- package/dist/svelte/viz/mfd/types.js +31 -0
- package/dist/svelte/viz/registry.d.ts +36 -0
- package/dist/svelte/viz/registry.d.ts.map +1 -0
- package/dist/svelte/viz/registry.js +74 -0
- package/dist/test-scenario/test-scenario-emitter.d.ts +35 -0
- package/dist/test-scenario/test-scenario-emitter.d.ts.map +1 -0
- package/dist/test-scenario/test-scenario-emitter.js +64 -0
- package/dist/test-scenario/test-scenario-emitter.js.map +1 -0
- package/dist/test-scenario/test-scenario.plugin.d.ts +11 -0
- package/dist/test-scenario/test-scenario.plugin.d.ts.map +1 -0
- package/dist/test-scenario/test-scenario.plugin.js +19 -0
- package/dist/test-scenario/test-scenario.plugin.js.map +1 -0
- package/dist/test-scenario/test-scenario.type.descriptor.d.ts +12 -0
- package/dist/test-scenario/test-scenario.type.descriptor.d.ts.map +1 -0
- package/dist/test-scenario/test-scenario.type.descriptor.js +21 -0
- package/dist/test-scenario/test-scenario.type.descriptor.js.map +1 -0
- package/dist/watch.d.ts +13 -0
- package/dist/watch.d.ts.map +1 -0
- package/dist/watch.js +127 -0
- package/dist/watch.js.map +1 -0
- package/package.json +355 -4
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
// ═══════════════════════════════════════════════════════════════
|
|
2
|
+
// NERV MFD — Global WebGL2 Rendering Context
|
|
3
|
+
//
|
|
4
|
+
// Single canvas, single GL context. All MFD panels render as scissored
|
|
5
|
+
// viewports into this one surface. CRT post-processing is applied globally.
|
|
6
|
+
// ═══════════════════════════════════════════════════════════════
|
|
7
|
+
import { MAX_DATA_SIZE, CRT_DEFAULTS } from '../types';
|
|
8
|
+
import { linkProgram, QUAD_VERT, CRT_FRAG, MODULE_SHADERS, getUniforms } from './shaders';
|
|
9
|
+
const COMMON_UNIFORMS = [
|
|
10
|
+
'u_time',
|
|
11
|
+
'u_resolution',
|
|
12
|
+
'u_color',
|
|
13
|
+
'u_accent',
|
|
14
|
+
'u_dim',
|
|
15
|
+
'u_grid',
|
|
16
|
+
'u_glow',
|
|
17
|
+
'u_warning',
|
|
18
|
+
'u_intensity',
|
|
19
|
+
'u_params',
|
|
20
|
+
'u_dataCount',
|
|
21
|
+
'u_data'
|
|
22
|
+
];
|
|
23
|
+
const CRT_UNIFORMS = [
|
|
24
|
+
'u_scene',
|
|
25
|
+
'u_resolution',
|
|
26
|
+
'u_time',
|
|
27
|
+
'u_scanlineIntensity',
|
|
28
|
+
'u_scanlineCount',
|
|
29
|
+
'u_barrelDistortion',
|
|
30
|
+
'u_chromaticAberration',
|
|
31
|
+
'u_bloom',
|
|
32
|
+
'u_noise',
|
|
33
|
+
'u_vignette',
|
|
34
|
+
'u_flicker'
|
|
35
|
+
];
|
|
36
|
+
export class GLContext {
|
|
37
|
+
canvas;
|
|
38
|
+
gl;
|
|
39
|
+
dpr;
|
|
40
|
+
programs = new Map();
|
|
41
|
+
crtProgram = null;
|
|
42
|
+
quadVAO;
|
|
43
|
+
sceneFBO;
|
|
44
|
+
sceneTexture;
|
|
45
|
+
/**
|
|
46
|
+
* True once the canvas has been sized to non-zero dimensions AND
|
|
47
|
+
* the scene FBO has been allocated at that size. Render frame hooks
|
|
48
|
+
* short-circuit when this is false so they don't spam the console
|
|
49
|
+
* with GL_INVALID_FRAMEBUFFER_OPERATION when the canvas is in a
|
|
50
|
+
* zero-sized container (collapsed panel, hidden tab, pre-layout).
|
|
51
|
+
*/
|
|
52
|
+
hasValidSize = false;
|
|
53
|
+
crt = { ...CRT_DEFAULTS };
|
|
54
|
+
constructor(canvas, gl) {
|
|
55
|
+
this.canvas = canvas;
|
|
56
|
+
this.gl = gl;
|
|
57
|
+
this.dpr = Math.min(window.devicePixelRatio, 2);
|
|
58
|
+
const verts = new Float32Array([-1, -1, 1, -1, -1, 1, -1, 1, 1, -1, 1, 1]);
|
|
59
|
+
this.quadVAO = gl.createVertexArray();
|
|
60
|
+
const vbo = gl.createBuffer();
|
|
61
|
+
gl.bindVertexArray(this.quadVAO);
|
|
62
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, vbo);
|
|
63
|
+
gl.bufferData(gl.ARRAY_BUFFER, verts, gl.STATIC_DRAW);
|
|
64
|
+
gl.enableVertexAttribArray(0);
|
|
65
|
+
gl.vertexAttribPointer(0, 2, gl.FLOAT, false, 0, 0);
|
|
66
|
+
gl.bindVertexArray(null);
|
|
67
|
+
this.sceneTexture = gl.createTexture();
|
|
68
|
+
this.sceneFBO = gl.createFramebuffer();
|
|
69
|
+
this._initFBO();
|
|
70
|
+
gl.enable(gl.BLEND);
|
|
71
|
+
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
|
|
72
|
+
gl.enable(gl.SCISSOR_TEST);
|
|
73
|
+
gl.getExtension('EXT_color_buffer_float');
|
|
74
|
+
gl.getExtension('OES_texture_float_linear');
|
|
75
|
+
}
|
|
76
|
+
static create(container) {
|
|
77
|
+
const canvas = document.createElement('canvas');
|
|
78
|
+
canvas.style.cssText = `
|
|
79
|
+
position: absolute; inset: 0; width: 100%; height: 100%;
|
|
80
|
+
pointer-events: none; z-index: 5;
|
|
81
|
+
`;
|
|
82
|
+
container.appendChild(canvas);
|
|
83
|
+
const gl = canvas.getContext('webgl2', {
|
|
84
|
+
alpha: true,
|
|
85
|
+
antialias: false,
|
|
86
|
+
premultipliedAlpha: false,
|
|
87
|
+
preserveDrawingBuffer: false,
|
|
88
|
+
powerPreference: 'high-performance'
|
|
89
|
+
});
|
|
90
|
+
if (!gl)
|
|
91
|
+
throw new Error('WebGL2 not available');
|
|
92
|
+
const ctx = new GLContext(canvas, gl);
|
|
93
|
+
ctx.resize();
|
|
94
|
+
ctx._compileCRT();
|
|
95
|
+
return ctx;
|
|
96
|
+
}
|
|
97
|
+
resize() {
|
|
98
|
+
// Use the canvas container dimensions, not window dimensions.
|
|
99
|
+
// The canvas is position:absolute inside its container.
|
|
100
|
+
const parent = this.canvas.parentElement;
|
|
101
|
+
const w = parent ? parent.offsetWidth : window.innerWidth;
|
|
102
|
+
const h = parent ? parent.offsetHeight : window.innerHeight;
|
|
103
|
+
this.dpr = Math.min(window.devicePixelRatio, 2);
|
|
104
|
+
const pw = Math.round(w * this.dpr);
|
|
105
|
+
const ph = Math.round(h * this.dpr);
|
|
106
|
+
// If the container hasn't been laid out yet (hidden tab, collapsed
|
|
107
|
+
// panel, pre-mount) the computed size is 0. Leave `hasValidSize`
|
|
108
|
+
// false so frame hooks skip gl.clear() until the next resize()
|
|
109
|
+
// call finds a real size. A future ResizeObserver tick from the
|
|
110
|
+
// pipeline will re-invoke us once layout settles.
|
|
111
|
+
if (pw <= 0 || ph <= 0) {
|
|
112
|
+
this.hasValidSize = false;
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
if (this.canvas.width !== pw || this.canvas.height !== ph) {
|
|
116
|
+
this.canvas.width = pw;
|
|
117
|
+
this.canvas.height = ph;
|
|
118
|
+
this._initFBO();
|
|
119
|
+
}
|
|
120
|
+
this.hasValidSize = true;
|
|
121
|
+
}
|
|
122
|
+
/** True when the canvas + FBO are sized for rendering. */
|
|
123
|
+
get ready() {
|
|
124
|
+
return this.hasValidSize;
|
|
125
|
+
}
|
|
126
|
+
_initFBO() {
|
|
127
|
+
const gl = this.gl;
|
|
128
|
+
const w = this.canvas.width;
|
|
129
|
+
const h = this.canvas.height;
|
|
130
|
+
gl.bindTexture(gl.TEXTURE_2D, this.sceneTexture);
|
|
131
|
+
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA16F, w, h, 0, gl.RGBA, gl.HALF_FLOAT, null);
|
|
132
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
|
|
133
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
|
|
134
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
135
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
136
|
+
gl.bindFramebuffer(gl.FRAMEBUFFER, this.sceneFBO);
|
|
137
|
+
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.sceneTexture, 0);
|
|
138
|
+
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
|
|
139
|
+
}
|
|
140
|
+
_compileCRT() {
|
|
141
|
+
const prog = linkProgram(this.gl, QUAD_VERT, CRT_FRAG);
|
|
142
|
+
this.crtProgram = { program: prog, uniforms: getUniforms(this.gl, prog, CRT_UNIFORMS) };
|
|
143
|
+
}
|
|
144
|
+
getModuleProgram(moduleType) {
|
|
145
|
+
let cp = this.programs.get(moduleType);
|
|
146
|
+
if (cp)
|
|
147
|
+
return cp;
|
|
148
|
+
const fragSrc = MODULE_SHADERS[moduleType];
|
|
149
|
+
if (!fragSrc)
|
|
150
|
+
throw new Error(`Unknown module type: ${moduleType}`);
|
|
151
|
+
const prog = linkProgram(this.gl, QUAD_VERT, fragSrc);
|
|
152
|
+
const uniforms = getUniforms(this.gl, prog, COMMON_UNIFORMS);
|
|
153
|
+
cp = { program: prog, uniforms };
|
|
154
|
+
this.programs.set(moduleType, cp);
|
|
155
|
+
return cp;
|
|
156
|
+
}
|
|
157
|
+
createDataTexture(width = MAX_DATA_SIZE) {
|
|
158
|
+
const gl = this.gl;
|
|
159
|
+
const tex = gl.createTexture();
|
|
160
|
+
gl.bindTexture(gl.TEXTURE_2D, tex);
|
|
161
|
+
gl.texImage2D(gl.TEXTURE_2D, 0, gl.R32F, width, 1, 0, gl.RED, gl.FLOAT, null);
|
|
162
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
|
|
163
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
|
|
164
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
165
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
166
|
+
return tex;
|
|
167
|
+
}
|
|
168
|
+
createDataTexture2D(width, height) {
|
|
169
|
+
const gl = this.gl;
|
|
170
|
+
const tex = gl.createTexture();
|
|
171
|
+
gl.bindTexture(gl.TEXTURE_2D, tex);
|
|
172
|
+
gl.texImage2D(gl.TEXTURE_2D, 0, gl.R32F, width, height, 0, gl.RED, gl.FLOAT, null);
|
|
173
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
|
|
174
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
|
|
175
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
176
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
177
|
+
return tex;
|
|
178
|
+
}
|
|
179
|
+
updateDataTexture(tex, data) {
|
|
180
|
+
const gl = this.gl;
|
|
181
|
+
gl.bindTexture(gl.TEXTURE_2D, tex);
|
|
182
|
+
gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, data.length, 1, gl.RED, gl.FLOAT, data);
|
|
183
|
+
}
|
|
184
|
+
updateDataTexture2D(tex, data, width, height) {
|
|
185
|
+
const gl = this.gl;
|
|
186
|
+
gl.bindTexture(gl.TEXTURE_2D, tex);
|
|
187
|
+
gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, width, height, gl.RED, gl.FLOAT, data);
|
|
188
|
+
}
|
|
189
|
+
beginFrame() {
|
|
190
|
+
// Skip entirely when the canvas has no valid size — the scene
|
|
191
|
+
// FBO's color attachment is 0×0 and gl.clear() would throw
|
|
192
|
+
// GL_INVALID_FRAMEBUFFER_OPERATION on every frame.
|
|
193
|
+
if (!this.hasValidSize)
|
|
194
|
+
return;
|
|
195
|
+
const gl = this.gl;
|
|
196
|
+
gl.bindFramebuffer(gl.FRAMEBUFFER, this.sceneFBO);
|
|
197
|
+
gl.viewport(0, 0, this.canvas.width, this.canvas.height);
|
|
198
|
+
gl.scissor(0, 0, this.canvas.width, this.canvas.height);
|
|
199
|
+
gl.clearColor(0, 0, 0, 0);
|
|
200
|
+
gl.clear(gl.COLOR_BUFFER_BIT);
|
|
201
|
+
}
|
|
202
|
+
renderPanel(moduleType, viewport, time, color, accent, dim, grid, glow, warning, intensity, params, dataTexture, dataCount) {
|
|
203
|
+
const gl = this.gl;
|
|
204
|
+
const { program, uniforms } = this.getModuleProgram(moduleType);
|
|
205
|
+
const x = Math.round(viewport.x);
|
|
206
|
+
const y = Math.round(viewport.y);
|
|
207
|
+
const w = Math.round(viewport.width);
|
|
208
|
+
const h = Math.round(viewport.height);
|
|
209
|
+
gl.viewport(x, y, w, h);
|
|
210
|
+
gl.scissor(x, y, w, h);
|
|
211
|
+
gl.useProgram(program);
|
|
212
|
+
const u = (name) => uniforms.get(name) ?? null;
|
|
213
|
+
gl.uniform1f(u('u_time'), time);
|
|
214
|
+
gl.uniform2f(u('u_resolution'), w, h);
|
|
215
|
+
gl.uniform3f(u('u_color'), color[0], color[1], color[2]);
|
|
216
|
+
gl.uniform3f(u('u_accent'), accent[0], accent[1], accent[2]);
|
|
217
|
+
gl.uniform3f(u('u_dim'), dim[0], dim[1], dim[2]);
|
|
218
|
+
gl.uniform3f(u('u_grid'), grid[0], grid[1], grid[2]);
|
|
219
|
+
gl.uniform3f(u('u_glow'), glow[0], glow[1], glow[2]);
|
|
220
|
+
gl.uniform3f(u('u_warning'), warning[0], warning[1], warning[2]);
|
|
221
|
+
gl.uniform1f(u('u_intensity'), intensity);
|
|
222
|
+
gl.uniform4fv(u('u_params'), params);
|
|
223
|
+
gl.uniform1f(u('u_dataCount'), dataCount);
|
|
224
|
+
gl.activeTexture(gl.TEXTURE0);
|
|
225
|
+
gl.bindTexture(gl.TEXTURE_2D, dataTexture);
|
|
226
|
+
gl.uniform1i(u('u_data'), 0);
|
|
227
|
+
gl.bindVertexArray(this.quadVAO);
|
|
228
|
+
gl.drawArrays(gl.TRIANGLES, 0, 6);
|
|
229
|
+
gl.bindVertexArray(null);
|
|
230
|
+
}
|
|
231
|
+
endFrame(time) {
|
|
232
|
+
// Paired guard with beginFrame(): when the canvas is 0-sized the
|
|
233
|
+
// default framebuffer clear would throw too.
|
|
234
|
+
if (!this.hasValidSize)
|
|
235
|
+
return;
|
|
236
|
+
const gl = this.gl;
|
|
237
|
+
const crt = this.crt;
|
|
238
|
+
const cp = this.crtProgram;
|
|
239
|
+
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
|
|
240
|
+
gl.viewport(0, 0, this.canvas.width, this.canvas.height);
|
|
241
|
+
gl.scissor(0, 0, this.canvas.width, this.canvas.height);
|
|
242
|
+
gl.clearColor(0, 0, 0, 0);
|
|
243
|
+
gl.clear(gl.COLOR_BUFFER_BIT);
|
|
244
|
+
gl.useProgram(cp.program);
|
|
245
|
+
const u = (name) => cp.uniforms.get(name) ?? null;
|
|
246
|
+
gl.activeTexture(gl.TEXTURE0);
|
|
247
|
+
gl.bindTexture(gl.TEXTURE_2D, this.sceneTexture);
|
|
248
|
+
gl.uniform1i(u('u_scene'), 0);
|
|
249
|
+
gl.uniform2f(u('u_resolution'), this.canvas.width, this.canvas.height);
|
|
250
|
+
gl.uniform1f(u('u_time'), time);
|
|
251
|
+
gl.uniform1f(u('u_scanlineIntensity'), crt.scanlineIntensity);
|
|
252
|
+
gl.uniform1f(u('u_scanlineCount'), crt.scanlineCount);
|
|
253
|
+
gl.uniform1f(u('u_barrelDistortion'), crt.barrelDistortion);
|
|
254
|
+
gl.uniform1f(u('u_chromaticAberration'), crt.chromaticAberration);
|
|
255
|
+
gl.uniform1f(u('u_bloom'), crt.bloom);
|
|
256
|
+
gl.uniform1f(u('u_noise'), crt.noise);
|
|
257
|
+
gl.uniform1f(u('u_vignette'), crt.vignette);
|
|
258
|
+
gl.uniform1f(u('u_flicker'), crt.flickerAmount);
|
|
259
|
+
gl.bindVertexArray(this.quadVAO);
|
|
260
|
+
gl.drawArrays(gl.TRIANGLES, 0, 6);
|
|
261
|
+
gl.bindVertexArray(null);
|
|
262
|
+
}
|
|
263
|
+
destroy() {
|
|
264
|
+
const gl = this.gl;
|
|
265
|
+
this.programs.forEach((cp) => gl.deleteProgram(cp.program));
|
|
266
|
+
if (this.crtProgram)
|
|
267
|
+
gl.deleteProgram(this.crtProgram.program);
|
|
268
|
+
gl.deleteFramebuffer(this.sceneFBO);
|
|
269
|
+
gl.deleteTexture(this.sceneTexture);
|
|
270
|
+
this.canvas.remove();
|
|
271
|
+
}
|
|
272
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { PanelState, MFDModuleType, MFDSize, PaletteName } from '../types';
|
|
2
|
+
import { GLContext } from './context';
|
|
3
|
+
export declare class RenderPipeline {
|
|
4
|
+
private ctx;
|
|
5
|
+
private panels;
|
|
6
|
+
private dataCounts;
|
|
7
|
+
private rafId;
|
|
8
|
+
private startTime;
|
|
9
|
+
private running;
|
|
10
|
+
private observers;
|
|
11
|
+
private elements;
|
|
12
|
+
private _onResize;
|
|
13
|
+
private _onScroll;
|
|
14
|
+
constructor(ctx: GLContext);
|
|
15
|
+
register(id: string, moduleType: MFDModuleType, size: MFDSize, palette?: PaletteName): PanelState;
|
|
16
|
+
unregister(id: string): void;
|
|
17
|
+
bindElement(id: string, el: HTMLElement): void;
|
|
18
|
+
setData(id: string, data: Float32Array | number[]): void;
|
|
19
|
+
setParams(id: string, params: [number, number, number, number]): void;
|
|
20
|
+
setPalette(id: string, palette: PaletteName): void;
|
|
21
|
+
setIntensity(id: string, intensity: number): void;
|
|
22
|
+
setEnabled(id: string, enabled: boolean): void;
|
|
23
|
+
start(): void;
|
|
24
|
+
stop(): void;
|
|
25
|
+
getPanel(id: string): PanelState | undefined;
|
|
26
|
+
getPanelIds(): string[];
|
|
27
|
+
private _frame;
|
|
28
|
+
private _updateViewport;
|
|
29
|
+
updateAllViewports(): void;
|
|
30
|
+
destroy(): void;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../../src/svelte/viz/mfd/renderer/pipeline.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAIhF,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,qBAAa,cAAc;IAC1B,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,QAAQ,CAAkC;IAElD,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,SAAS,CAAa;gBAElB,GAAG,EAAE,SAAS;IAa1B,QAAQ,CACP,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,EACzB,IAAI,EAAE,OAAO,EACb,OAAO,GAAE,WAAwB,GAC/B,UAAU;IAqCb,UAAU,CAAC,EAAE,EAAE,MAAM;IAerB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW;IAQvC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,MAAM,EAAE;IAmBjD,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAM9D,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW;IAK3C,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAK1C,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAKvC,KAAK;IAOL,IAAI;IAQJ,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAI5C,WAAW,IAAI,MAAM,EAAE;IAIvB,OAAO,CAAC,MAAM,CA2BZ;IAEF,OAAO,CAAC,eAAe;IASvB,kBAAkB;IAIlB,OAAO;CAcP"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
// ═══════════════════════════════════════════════════════════════
|
|
2
|
+
// NERV MFD — Render Pipeline
|
|
3
|
+
//
|
|
4
|
+
// Orchestrates the frame loop: iterates all registered panels, renders each
|
|
5
|
+
// via the global GLContext, applies CRT post-process, manages data textures.
|
|
6
|
+
// ═══════════════════════════════════════════════════════════════
|
|
7
|
+
import { MAX_DATA_SIZE, HISTORY_DEPTH } from '../types';
|
|
8
|
+
import { getPalette } from '../palette';
|
|
9
|
+
import { panelViewport } from '../grid';
|
|
10
|
+
export class RenderPipeline {
|
|
11
|
+
ctx;
|
|
12
|
+
panels = new Map();
|
|
13
|
+
dataCounts = new Map();
|
|
14
|
+
rafId = 0;
|
|
15
|
+
startTime = 0;
|
|
16
|
+
running = false;
|
|
17
|
+
observers = new Map();
|
|
18
|
+
elements = new Map();
|
|
19
|
+
_onResize;
|
|
20
|
+
_onScroll;
|
|
21
|
+
constructor(ctx) {
|
|
22
|
+
this.ctx = ctx;
|
|
23
|
+
this.startTime = performance.now() / 1000;
|
|
24
|
+
this._onResize = () => {
|
|
25
|
+
this.ctx.resize();
|
|
26
|
+
this.updateAllViewports();
|
|
27
|
+
};
|
|
28
|
+
window.addEventListener('resize', this._onResize);
|
|
29
|
+
this._onScroll = () => this.updateAllViewports();
|
|
30
|
+
window.addEventListener('scroll', this._onScroll, true);
|
|
31
|
+
}
|
|
32
|
+
register(id, moduleType, size, palette = 'phosphor') {
|
|
33
|
+
const existing = this.panels.get(id);
|
|
34
|
+
if (existing) {
|
|
35
|
+
if (existing._dataTexture)
|
|
36
|
+
this.ctx.gl.deleteTexture(existing._dataTexture);
|
|
37
|
+
}
|
|
38
|
+
this.ctx.getModuleProgram(moduleType);
|
|
39
|
+
const needsHistory = moduleType === 'waterfall' || moduleType === 'hex-matrix';
|
|
40
|
+
const histW = needsHistory ? MAX_DATA_SIZE : 0;
|
|
41
|
+
const histH = needsHistory ? HISTORY_DEPTH : 0;
|
|
42
|
+
const panel = {
|
|
43
|
+
id,
|
|
44
|
+
moduleType,
|
|
45
|
+
size,
|
|
46
|
+
viewport: { x: 0, y: 0, width: 1, height: 1 },
|
|
47
|
+
palette,
|
|
48
|
+
intensity: 1.0,
|
|
49
|
+
speed: 1.0,
|
|
50
|
+
data: new Float32Array(MAX_DATA_SIZE),
|
|
51
|
+
params: new Float32Array(4),
|
|
52
|
+
enabled: true,
|
|
53
|
+
_dataTexture: needsHistory
|
|
54
|
+
? this.ctx.createDataTexture2D(histW, histH)
|
|
55
|
+
: this.ctx.createDataTexture(),
|
|
56
|
+
_history: needsHistory ? new Float32Array(histW * histH) : null,
|
|
57
|
+
_historyWidth: histW,
|
|
58
|
+
_historyHeight: histH,
|
|
59
|
+
_historyRow: 0
|
|
60
|
+
};
|
|
61
|
+
this.panels.set(id, panel);
|
|
62
|
+
this.dataCounts.set(id, 0);
|
|
63
|
+
return panel;
|
|
64
|
+
}
|
|
65
|
+
unregister(id) {
|
|
66
|
+
const panel = this.panels.get(id);
|
|
67
|
+
if (panel?._dataTexture) {
|
|
68
|
+
this.ctx.gl.deleteTexture(panel._dataTexture);
|
|
69
|
+
}
|
|
70
|
+
this.panels.delete(id);
|
|
71
|
+
this.dataCounts.delete(id);
|
|
72
|
+
const obs = this.observers.get(id);
|
|
73
|
+
if (obs) {
|
|
74
|
+
obs.disconnect();
|
|
75
|
+
this.observers.delete(id);
|
|
76
|
+
}
|
|
77
|
+
this.elements.delete(id);
|
|
78
|
+
}
|
|
79
|
+
bindElement(id, el) {
|
|
80
|
+
this.elements.set(id, el);
|
|
81
|
+
const obs = new ResizeObserver(() => this._updateViewport(id));
|
|
82
|
+
obs.observe(el);
|
|
83
|
+
this.observers.set(id, obs);
|
|
84
|
+
this._updateViewport(id);
|
|
85
|
+
}
|
|
86
|
+
setData(id, data) {
|
|
87
|
+
const panel = this.panels.get(id);
|
|
88
|
+
if (!panel)
|
|
89
|
+
return;
|
|
90
|
+
const src = data instanceof Float32Array ? data : new Float32Array(data);
|
|
91
|
+
this.dataCounts.set(id, Math.min(src.length, MAX_DATA_SIZE));
|
|
92
|
+
if (panel._history) {
|
|
93
|
+
const w = panel._historyWidth;
|
|
94
|
+
const row = panel._historyRow;
|
|
95
|
+
panel._history.set(src.subarray(0, Math.min(src.length, w)), row * w);
|
|
96
|
+
panel._historyRow = (row + 1) % panel._historyHeight;
|
|
97
|
+
this.ctx.updateDataTexture2D(panel._dataTexture, panel._history, w, panel._historyHeight);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
panel.data.fill(0);
|
|
101
|
+
panel.data.set(src.subarray(0, Math.min(src.length, MAX_DATA_SIZE)));
|
|
102
|
+
this.ctx.updateDataTexture(panel._dataTexture, panel.data);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
setParams(id, params) {
|
|
106
|
+
const panel = this.panels.get(id);
|
|
107
|
+
if (!panel)
|
|
108
|
+
return;
|
|
109
|
+
panel.params.set(params);
|
|
110
|
+
}
|
|
111
|
+
setPalette(id, palette) {
|
|
112
|
+
const panel = this.panels.get(id);
|
|
113
|
+
if (panel)
|
|
114
|
+
panel.palette = palette;
|
|
115
|
+
}
|
|
116
|
+
setIntensity(id, intensity) {
|
|
117
|
+
const panel = this.panels.get(id);
|
|
118
|
+
if (panel)
|
|
119
|
+
panel.intensity = intensity;
|
|
120
|
+
}
|
|
121
|
+
setEnabled(id, enabled) {
|
|
122
|
+
const panel = this.panels.get(id);
|
|
123
|
+
if (panel)
|
|
124
|
+
panel.enabled = enabled;
|
|
125
|
+
}
|
|
126
|
+
start() {
|
|
127
|
+
if (this.running)
|
|
128
|
+
return;
|
|
129
|
+
this.running = true;
|
|
130
|
+
this.startTime = performance.now() / 1000;
|
|
131
|
+
this._frame();
|
|
132
|
+
}
|
|
133
|
+
stop() {
|
|
134
|
+
this.running = false;
|
|
135
|
+
if (this.rafId) {
|
|
136
|
+
cancelAnimationFrame(this.rafId);
|
|
137
|
+
this.rafId = 0;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
getPanel(id) {
|
|
141
|
+
return this.panels.get(id);
|
|
142
|
+
}
|
|
143
|
+
getPanelIds() {
|
|
144
|
+
return Array.from(this.panels.keys());
|
|
145
|
+
}
|
|
146
|
+
_frame = () => {
|
|
147
|
+
if (!this.running)
|
|
148
|
+
return;
|
|
149
|
+
const time = performance.now() / 1000 - this.startTime;
|
|
150
|
+
this.ctx.beginFrame();
|
|
151
|
+
for (const panel of this.panels.values()) {
|
|
152
|
+
if (!panel.enabled || panel.viewport.width < 1 || panel.viewport.height < 1)
|
|
153
|
+
continue;
|
|
154
|
+
const pal = getPalette(panel.palette);
|
|
155
|
+
this.ctx.renderPanel(panel.moduleType, panel.viewport, time * panel.speed, pal.primary, pal.accent, pal.dim, pal.grid, pal.glow, pal.warning, panel.intensity, panel.params, panel._dataTexture, this.dataCounts.get(panel.id) ?? 0);
|
|
156
|
+
}
|
|
157
|
+
this.ctx.endFrame(time);
|
|
158
|
+
this.rafId = requestAnimationFrame(this._frame);
|
|
159
|
+
};
|
|
160
|
+
_updateViewport(id) {
|
|
161
|
+
const el = this.elements.get(id);
|
|
162
|
+
const panel = this.panels.get(id);
|
|
163
|
+
if (!el || !panel)
|
|
164
|
+
return;
|
|
165
|
+
const rect = el.getBoundingClientRect();
|
|
166
|
+
const canvas = this.ctx.canvas.getBoundingClientRect();
|
|
167
|
+
panel.viewport = panelViewport(rect, canvas.height, this.ctx.dpr, canvas);
|
|
168
|
+
}
|
|
169
|
+
updateAllViewports() {
|
|
170
|
+
for (const id of this.elements.keys())
|
|
171
|
+
this._updateViewport(id);
|
|
172
|
+
}
|
|
173
|
+
destroy() {
|
|
174
|
+
this.stop();
|
|
175
|
+
window.removeEventListener('resize', this._onResize);
|
|
176
|
+
window.removeEventListener('scroll', this._onScroll, true);
|
|
177
|
+
this.observers.forEach((obs) => obs.disconnect());
|
|
178
|
+
this.observers.clear();
|
|
179
|
+
this.elements.clear();
|
|
180
|
+
for (const panel of this.panels.values()) {
|
|
181
|
+
if (panel._dataTexture)
|
|
182
|
+
this.ctx.gl.deleteTexture(panel._dataTexture);
|
|
183
|
+
}
|
|
184
|
+
this.panels.clear();
|
|
185
|
+
this.dataCounts.clear();
|
|
186
|
+
this.ctx.destroy();
|
|
187
|
+
}
|
|
188
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export declare function compileShader(gl: WebGL2RenderingContext, type: number, source: string): WebGLShader;
|
|
2
|
+
export declare function linkProgram(gl: WebGL2RenderingContext, vertSrc: string, fragSrc: string): WebGLProgram;
|
|
3
|
+
export declare function getUniforms(gl: WebGL2RenderingContext, program: WebGLProgram, names: string[]): Map<string, WebGLUniformLocation | null>;
|
|
4
|
+
export declare const QUAD_VERT = "#version 300 es\nprecision highp float;\nin vec2 a_position;\nout vec2 v_uv;\nvoid main() {\n v_uv = a_position * 0.5 + 0.5;\n gl_Position = vec4(a_position, 0.0, 1.0);\n}\n";
|
|
5
|
+
export declare const FRAG_COMMON = "#version 300 es\nprecision highp float;\n\nin vec2 v_uv;\nout vec4 fragColor;\n\nuniform float u_time;\nuniform vec2 u_resolution;\nuniform vec3 u_color;\nuniform vec3 u_accent;\nuniform vec3 u_dim;\nuniform vec3 u_grid;\nuniform vec3 u_glow;\nuniform vec3 u_warning;\nuniform float u_intensity;\nuniform vec4 u_params;\nuniform float u_dataCount;\nuniform sampler2D u_data;\n\n#define PI 3.14159265359\n#define TAU 6.28318530718\n\nfloat pulse(float x, float center, float width) {\n float hw = width * 0.5;\n return smoothstep(center - hw, center, x) - smoothstep(center, center + hw, x);\n}\n\nfloat sdCircle(vec2 p, float r) {\n return length(p) - r;\n}\n\nfloat sdBox(vec2 p, vec2 b) {\n vec2 d = abs(p) - b;\n return length(max(d, 0.0)) + min(max(d.x, d.y), 0.0);\n}\n\nfloat sdRoundBox(vec2 p, vec2 b, float r) {\n vec2 d = abs(p) - b + r;\n return length(max(d, 0.0)) + min(max(d.x, d.y), 0.0) - r;\n}\n\nfloat sdSegment(vec2 p, vec2 a, vec2 b) {\n vec2 pa = p - a, ba = b - a;\n float h = clamp(dot(pa, ba) / dot(ba, ba), 0.0, 1.0);\n return length(pa - ba * h);\n}\n\nfloat sdArc(vec2 p, float angle, float aperture, float ra, float rb) {\n float ca = cos(angle), sa = sin(angle);\n p = mat2(ca, sa, -sa, ca) * p;\n p.x = abs(p.x);\n float an = aperture;\n vec2 scb = vec2(sin(an), cos(an));\n float k = (scb.y * p.x > scb.x * p.y) ? dot(p, scb) : length(p);\n return sqrt(max(dot(p, p) + ra * ra - 2.0 * ra * k, 0.0)) - rb;\n}\n\nfloat hash(vec2 p) {\n return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453);\n}\n\nfloat noise(vec2 p) {\n vec2 i = floor(p);\n vec2 f = fract(p);\n f = f * f * (3.0 - 2.0 * f);\n return mix(\n mix(hash(i), hash(i + vec2(1, 0)), f.x),\n mix(hash(i + vec2(0, 1)), hash(i + vec2(1, 1)), f.x),\n f.y\n );\n}\n\nfloat sampleData(float x) {\n return texture(u_data, vec2(x, 0.5)).r;\n}\n\nfloat sampleScope(float x) {\n float index = clamp(x, 0.0, 1.0) * max(u_dataCount - 1.0, 0.0);\n return texture(u_data, vec2((index + 0.5) / float(textureSize(u_data, 0).x), 0.5)).r;\n}\n\nfloat sampleData2D(vec2 uv) {\n return texture(u_data, uv).r;\n}\n\nfloat gridLines(vec2 uv, float spacing, float thickness) {\n vec2 g = abs(fract(uv * spacing) - 0.5);\n float d = min(g.x, g.y);\n return 1.0 - smoothstep(0.0, thickness, d);\n}\n\nvec3 glow(float d, vec3 color, float intensity, float radius) {\n return color * intensity * exp(-abs(d) / radius);\n}\n";
|
|
6
|
+
export declare const CRT_FRAG = "#version 300 es\nprecision highp float;\n\nin vec2 v_uv;\nout vec4 fragColor;\n\nuniform sampler2D u_scene;\nuniform vec2 u_resolution;\nuniform float u_time;\nuniform float u_scanlineIntensity;\nuniform float u_scanlineCount;\nuniform float u_barrelDistortion;\nuniform float u_chromaticAberration;\nuniform float u_bloom;\nuniform float u_noise;\nuniform float u_vignette;\nuniform float u_flicker;\n\nfloat hash(vec2 p) {\n return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453);\n}\n\nvec2 distort(vec2 uv, float k) {\n vec2 c = uv - 0.5;\n float r2 = dot(c, c);\n return uv + c * r2 * k;\n}\n\nvoid main() {\n vec2 uv = v_uv;\n\n vec2 duv = distort(uv, u_barrelDistortion);\n\n float sceneAlpha = texture(u_scene, duv).a;\n\n if (sceneAlpha < 0.005) {\n fragColor = vec4(0.0);\n return;\n }\n\n float ca = u_chromaticAberration;\n float r = texture(u_scene, distort(uv, u_barrelDistortion + ca)).r;\n float g = texture(u_scene, duv).g;\n float b = texture(u_scene, distort(uv, u_barrelDistortion - ca)).b;\n vec3 color = vec3(r, g, b);\n\n vec3 bloom = vec3(0.0);\n float bloomAlpha = 0.0;\n float bw = 3.0 / u_resolution.x;\n float bh = 3.0 / u_resolution.y;\n for (int x = -2; x <= 2; x++) {\n for (int y = -2; y <= 2; y++) {\n vec4 s = texture(u_scene, duv + vec2(float(x) * bw, float(y) * bh));\n bloom += s.rgb;\n bloomAlpha += s.a;\n }\n }\n bloom /= 25.0;\n bloomAlpha /= 25.0;\n color += bloom * u_bloom;\n sceneAlpha = max(sceneAlpha, bloomAlpha * u_bloom);\n\n float scanline = sin(duv.y * u_scanlineCount * 3.14159) * 0.5 + 0.5;\n color *= 1.0 - u_scanlineIntensity * (1.0 - scanline);\n\n float px = fract(gl_FragCoord.x / 3.0);\n vec3 mask = vec3(\n smoothstep(0.0, 0.33, px) - smoothstep(0.33, 0.66, px),\n smoothstep(0.33, 0.66, px) - smoothstep(0.66, 1.0, px),\n smoothstep(0.66, 1.0, px)\n );\n color *= mix(vec3(1.0), mask * 1.5 + 0.5, 0.12);\n\n float n = hash(uv * u_resolution + u_time * 1000.0) * u_noise;\n color += n * sceneAlpha;\n\n vec2 vc = uv - 0.5;\n float vig = 1.0 - dot(vc, vc) * u_vignette * 2.5;\n color *= vig;\n\n float flicker = 1.0 - u_flicker * sin(u_time * 8.3) * sin(u_time * 11.7);\n color *= flicker;\n\n if (duv.x < 0.0 || duv.x > 1.0 || duv.y < 0.0 || duv.y > 1.0) {\n fragColor = vec4(0.0);\n return;\n }\n\n fragColor = vec4(color, sceneAlpha);\n}\n";
|
|
7
|
+
export declare const SCOPE_FRAG: string;
|
|
8
|
+
export declare const MULTI_LINE_SCOPE_FRAG: string;
|
|
9
|
+
export declare const ARC_GAUGE_FRAG: string;
|
|
10
|
+
export declare const BAR_METER_FRAG: string;
|
|
11
|
+
export declare const RADAR_FRAG: string;
|
|
12
|
+
export declare const HEX_MATRIX_FRAG: string;
|
|
13
|
+
export declare const WATERFALL_FRAG: string;
|
|
14
|
+
export declare const TOPO_FRAG: string;
|
|
15
|
+
export declare const VECTOR_SCOPE_FRAG: string;
|
|
16
|
+
export declare const PROGRESS_RING_FRAG: string;
|
|
17
|
+
export declare const DIGITAL_READOUT_FRAG: string;
|
|
18
|
+
export declare const STATUS_GRID_FRAG: string;
|
|
19
|
+
export declare const TOGGLE_FRAG: string;
|
|
20
|
+
export declare const MODULE_SHADERS: {
|
|
21
|
+
scope: string;
|
|
22
|
+
'multi-line-scope': string;
|
|
23
|
+
'arc-gauge': string;
|
|
24
|
+
'bar-meter': string;
|
|
25
|
+
radar: string;
|
|
26
|
+
'hex-matrix': string;
|
|
27
|
+
waterfall: string;
|
|
28
|
+
topo: string;
|
|
29
|
+
'vector-scope': string;
|
|
30
|
+
'progress-ring': string;
|
|
31
|
+
'digital-readout': string;
|
|
32
|
+
'status-grid': string;
|
|
33
|
+
toggle: string;
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=shaders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shaders.d.ts","sourceRoot":"","sources":["../../../../../src/svelte/viz/mfd/renderer/shaders.ts"],"names":[],"mappings":"AAIA,wBAAgB,aAAa,CAC5B,EAAE,EAAE,sBAAsB,EAC1B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACZ,WAAW,CAUb;AAED,wBAAgB,WAAW,CAC1B,EAAE,EAAE,sBAAsB,EAC1B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACb,YAAY,CAgBd;AAED,wBAAgB,WAAW,CAC1B,EAAE,EAAE,sBAAsB,EAC1B,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,MAAM,EAAE,GACb,GAAG,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC,CAM1C;AAID,eAAO,MAAM,SAAS,oLAQrB,CAAC;AAEF,eAAO,MAAM,WAAW,u7EA8FvB,CAAC;AAIF,eAAO,MAAM,QAAQ,k4EA0FpB,CAAC;AAIF,eAAO,MAAM,UAAU,QAgEtB,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAoEjC,CAAC;AAEF,eAAO,MAAM,cAAc,QAwD1B,CAAC;AAEF,eAAO,MAAM,cAAc,QAyC1B,CAAC;AAEF,eAAO,MAAM,UAAU,QAgDtB,CAAC;AAEF,eAAO,MAAM,eAAe,QA+C3B,CAAC;AAEF,eAAO,MAAM,cAAc,QAgC1B,CAAC;AAEF,eAAO,MAAM,SAAS,QA+BrB,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAuC7B,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAkC9B,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAkDhC,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAqC5B,CAAC;AAEF,eAAO,MAAM,WAAW,QAuCvB,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;CAc1B,CAAC"}
|