v0.3 Visible Parity¶
This audit classifies visible v0.3-era capabilities for the v0.4 release candidate. It does not
promise source or ABI compatibility with v0.3. The active v0.4 API is the C scene/app path, the
Python import datoviz as dvz path with NumPy array uploads, and the exact-call datoviz.raw
binding for exact C calls. High-level Python plotting belongs above Datoviz in GSP/VisPy2.
Status values:
fixed: covered by the v0.4 scene/app surface, examples, tests, or public docs.experimental: active v0.4 surface, but not required as a v0.3 visible parity blocker.deferred: intentionally not part of the v0.4 release surface.external/GSP: owned by GSP, VisPy2, Matplotlib, or an application layer above Datoviz.
| Visible capability | Disposition | v0.4 route | Notes |
|---|---|---|---|
| Retained scene, figure, panel, and visual workflow | fixed | dvz_scene(), dvz_figure(), panels, retained visuals |
The API is redesigned; parity is behavioral, not source-compatible. |
| Native GLFW/app presentation | fixed | App/view runtime and examples/c/runtime/app_glfw.c |
Datoviz-owned presentation remains in the runtime foundation. |
| Offscreen rendering and PNG/screenshot capture | fixed | DvzView/canvas capture and examples/c/runtime/offscreen_capture.c |
v0.4 capture contract is sRGB RGBA8. Linear f16/f32 scientific readback is deferred. |
| Frame callbacks and timer animation | fixed | callback/timer examples and portable scenario frame callbacks | Browser/WASM support is limited to the promoted experimental subset. |
| Multi-panel figures, linked panels, and panel backgrounds | fixed | panel grid/multi/link/background examples | Dense dashboards and high-level layout authoring remain above the core renderer. |
| Panzoom controller | fixed | dvz_panzoom() and panzoom examples |
Native path is supported; WebGPU follows the promoted live-route subset. |
| Arcball, fly, and turntable controllers | fixed | controller examples | Native path is release-facing; browser parity is experimental. |
| 2D axes, ticks, labels, and plot-like scientific composition | fixed | axes, axis-label, scientific-plotting, and linked-panel examples | Scene-managed nonlinear/geographic transforms are deferred; CPU pre-projection is the supported pattern. |
| Text blocks and annotations | fixed | semantic text, glyph lowering, annotation/readout examples | Complex shaping, glyph/text picking, and broader world/data placement remain deferred. |
| Color maps, scales, colorbars, and categorical legends | fixed | sampled-field, colorbar, colormap-scale, and legend examples | First release slice is active; richer shared layout and query payloads remain follow-up work. |
| Scale bars, guide lines/spans, overlays, and readouts | fixed | scale-bar, guide, overlay, and probe-label examples | These are v0.4 semantic/composite routes, not restored v0.3 helper APIs. |
| Point visual | fixed | dvz_point() and point examples |
RGBA8 and continuous-scale scalar color are active. Scalar-to-diameter mapping, shifts, and richer selection styling are deferred. |
| Pixel visual | fixed | dvz_pixel() and pixel examples |
RGBA8 and continuous-scale scalar color are active. Data-space pixel sizing is deferred. |
| Marker visual and marker symbols | fixed | dvz_marker() plus built-in symbol ids |
Built-in code-SDF vocabulary covers the v0.3 marker set plus target; exact SDF picking and atlas variants remain deferred. |
| Primitive/basic visual | fixed | dvz_primitive() |
v0.3 basic is renamed and narrowed as a low-level primitive family. |
| Segment and path visuals | fixed | dvz_segment(), dvz_path(), path join/curve examples |
Dashes, arrow caps, closed-path API, and richer path/span picking are deferred. |
| Vector visual | fixed | dvz_vector() and wind/vector examples |
Independent head dimensions and scalar styling are deferred. |
| Image visual and 2D sampled fields | fixed | dvz_image(), DvzSampledField, image probe examples |
Tiled/LOD image policy and richer probe payloads are deferred. |
| Mesh, textured mesh, material mesh, and OBJ loading | fixed | dvz_mesh(), material/textured mesh examples, OBJ loading |
Face/region picking, full PBR, and a broader public geometry-resource API remain deferred. |
| Sphere visual | fixed | dvz_sphere() and sphere examples |
Texture variants and per-item PBR are deferred. |
| Volume visual and 3D sampled fields | fixed | dvz_volume(), volume, volume-occlusion, and brain-volume examples |
Slice/MIP/composite paths are active. Isosurfaces, MPR, categorical label volumes, and DVR/MIP ray-hit picking are deferred. |
| Picking, selection, image probing, and readback | fixed | unified query API, picking/selection/probe examples | First broad item/sample paths are active. Rich mesh face, text/glyph, path/span, and volume ray identities are deferred. |
| Retained data updates, partial updates, transforms, and visibility | fixed | update, partial-update, transform, and visibility examples | Broader span/group source APIs remain future work unless a family documents support. |
| Raster video export | fixed | app capture API and native video-export example | CPU-readback capture is release-facing when an encoder is available; external-memory/NVENC capture remains advanced and platform-specific. |
| Scene compute and compute-to-render particles | experimental | experimental compute+graphics slice | Active as a v0.4 feature, not a v0.3 visible parity requirement. |
| WebGPU/WASM browser rendering | experimental | experimental WebGPU subset | The browser route is promoted for selected examples but is not native Vulkan parity. |
| DRP2/DVZR command streams, fixtures, and replay | experimental | advanced/unstable contributor surface | Useful for runtime authors; not a v0.3 user-facing parity requirement. |
| Error bars, box plots, statistical plotting helpers, and high-level trace APIs | external/GSP | compose from primitives or use GSP/VisPy2 | Datoviz may expose low-level visuals/composites, but statistical plotting policy belongs above the renderer. |
| Old object-oriented Python plotting API | external/GSP | GSP/VisPy2 | Datoviz v0.4 does not recreate the v0.3 Python API. |
| Publication-quality PDF/SVG/vector export | external/GSP | GSP/Matplotlib | Datoviz owns interactive GPU rendering and raster capture. |
| Notebook, dashboard, napari, and application workflows | external/GSP | GSP/VisPy2/application integrations | Datoviz should provide backend and hosting capabilities, not high-level workflow APIs. |
| Custom visual/render shader replacement and hot reload | deferred | future custom visual/provider route | Built-in shader ABI is internal for v0.4. |
| Scene-managed nonlinear/geographic coordinate transforms | deferred | CPU pre-projection before upload | The renderer accepts ordinary uploaded positions; domain transforms belong in a future scene/GSP layer. |
For implementation-level gaps by family, see Visual families. The
implementation-facing scene API snapshot lives in spec/scene/api/API_IMPLEMENTATION_READINESS.md.