Scene Spec
This directory defines the scene layer as a consumer of DRP2, not as a backend runtime.
The scene layer should remain pure high-level logic:
- build and own user-facing visualization state;
- derive rendering work from that state;
- emit DRP2 through a runtime-facing contract;
- stay independent from Vulkan, swapchain, and windowing internals.
Status
- Status: active specification with multiple implementation slices in
src/scene. - Implementation priority: prove the declared v0.4 surface for RC1, especially release examples, WebGPU/WASM experimental scope, Python binding, API/status labeling, and v0.3 visible parity.
- Primary constraint: do not let scene design leak backend details into its public API.
Current source implementation is intentionally smaller than this spec. It includes scene, figure, panel, retained visual, capability, diagnostic, frame-plan, DRP2 emission, controller, sampled-field, scale/colormap, colorbar, annotation, scale-bar, query, selection, graph-technique, app/offscreen, and GLFW paths. Public headers also declare broader interaction, readout, selection, material, technique, and visual-family behavior that is not fully rendered or semantically complete yet. Treat broader sections of this spec as design pressure and direction, not as a claim that all families and interactions are already implemented.
Start Here
- AUTHORITY.md: DRP2 boundary, normative invariants, status vocabulary, and source-of-truth order.
- READING_ORDER.md: recommended reading sequence and topic index.
- core/README.md: foundational ownership, object model, runtime boundary, and use cases.
- api/README.md: public API profile, public header surface, and implementation bridge.
- semantics/README.md: user-visible scene semantics and cross-family behavior.
- pipeline/README.md: resource, transform, invalidation, frame-plan, and lifecycle contracts.
- implementation/FRAME_ARTIFACT_REFACTOR_PLAN.md: active scene emission artifact refactor plan.
Directory Layout
The scene spec is split by kind of authority:
- core: foundational ownership, object model, runtime boundary, and use cases.
- api: public API profile, public header surface, and implementation bridge.
- semantics: user-visible scene semantics and cross-family behavior.
- pipeline: resource, transform, invalidation, frame-plan, and lifecycle contracts.
- interaction: controllers, picking, selection, callbacks, and animation.
- visuals: per-family data contracts.
- validation: validation, adaptation, diagnostics, and deferred items.
- integration: host UI, threading, high-DPI, and custom visuals.
- export: image export semantics and the current vector-export scope decision.
- dashboards: v0.5+ dashboard and dense multi-panel pressure notes.
- slices: implementation-ready work packets for mature spec areas.
- headers: implementation-facing draft C header sketches.
- implementation: concise notes for active implementation wiring.
- proposals: active, promoted, future, and historical proposal notes.
- decisions: historical ADR-style decision records.
- composites: semantic objects that lower to coordinated visuals.
- examples: worked examples and API-shape pressure tests.
- ROADMAP.md: compact backlog distilled from former agent queues.
Guiding Principles
- Keep pushing scene semantics and producer contracts.
- Avoid freezing backend-shaped details too early.
- Let DRP2 and runtime work continue underneath without leaking upward.
- Keep semantic/domain coordinates authoritative in F64; visual render attributes are lowered to GPU-facing F32 unless their family contract says otherwise.
Deferred items by milestone are tracked in validation/DEFERRED_TRACKER.md.