Ui, Render & Plot
Retained interfaces, rendering, presentation, and plotting.
oa
Types
8 members
Axis-aligned bounding box. Donor: oa::Aabb in oacpp/source/cpp/include/oa/render/fnMesh.h.
Source31 members
Semantic camera value. Composes a Transform (placement) with lens parameters (projection shape). get_view_matrix derives from the transform’s position and forward direction. get_projection_matrix uses the lens parameters with Vulkan clip-space conventions (reversed-Y, depth [0, 1]). Donor: oa::Camera / oa::FnCamera.
5 members
Solid-color material for UI elements and debug geometry. Zero texture bindings; lighting is disabled. Matches the flat_color Slang shader variant.
Source5 members
Full Standard Surface PBR material. Parameterized on Autodesk Standard Surface / OpenPBR. Maps losslessly to glTF 2.0 pbrMetallicRoughness + KHR_materials_ior, KHR_materials_clearcoat, KHR_materials_sheen, and KHR_materials_subsurface_scattering. Arnold and Cycles standard_surface import is a natural correspondence. Texture channel packing (ORM convention): orm_texture R = ambient occlusion, G = roughness, B = metalness. normal_texture stores tangent-space XY as BC5 SNORM; Z is reconstructed as sqrt(saturate(1 - dot(n.xy, n.xy))). All color values are linear at this API boundary.
5 members
Packed RGBA8 texture value reusable by Render, Presenter, Image, and UI. Two backings are currently admitted: Buffer-backed: uploaded from host bytes or a Matrix; supports read_rgba8. Render-target-backed: a non-owning alias of a Renderer slot’s color image; valid only while the originating RenderFrame is live. Readback uses RenderFrame::consume_readback, not read_rgba8.
Source5 members
Opaque index into the owning Scene’s texture registry. A handle is valid only within the Scene that issued it. Zero is reserved and will be rejected by validate_scene.
Source5 members
Textured unlit material for image and video display. One optional base-color texture; no lighting computation. Matches the unlit Slang shader variant.
SourceEnums
Semantic material value — CPU-side only, no GPU handles. Three tiers correspond to distinct shader pipelines: Material::FlatColor — flat_color shader, UI and debug. Material::Unlit — unlit shader, image/video display. Material::Standard — standard_surface shader, full PBR.
FlatColor(FlatColorMaterial) · Unlit(UnlitMaterial) · Standard(StandardSurfaceMaterial)
Functions
Deep-copy a packed Texture into independent device storage. This is the currently admitted whole-surface FnTexture::blit equivalent. Rectangle and scaled blits remain unavailable because the C++ donor also rejects them rather than silently selecting different sampling semantics. Errors Returns an error when the device copy cannot be recorded.
Return an independent packed Texture filled with one RGBA8 clear color. The result has the source extent but does not alias source storage. This is Rust’s immutable-value spelling of the C++ donor’s in-place clear. Errors Returns an error for non-finite or out-of-range color components, exhausted texture identity, or failed device allocation/upload.
Compile visible scene instances into one deterministic indexed mesh snapshot.
Compile visible scene nodes into a merged MeshData and one SceneDrawPacket per visible node that contributes geometry. The returned mesh has world-space positions and normals; each packet records the index range within the merged buffer that belongs to that node. Draw order is deterministic (depth-first scene-node order).
Recompute and store the tight axis-aligned bounding box for mesh. Clears bounds_dirty. Empty meshes produce an all-zero Aabb. Donor: oa::FnMesh::computeBounds.
Create a 3D axis-aligned cube (12 triangles, 24 vertices, size × size × size). Each face has its own four vertices with an outward normal and per-face UVs. size must be finite and positive. Donor: oa::FnMesh::createCube. Errors Returns an error for non-finite or non-positive size.
Create a fullscreen NDC quad (2 triangles, 4 vertices) in [-1, 1] XY with top-origin image UVs. Used for post-processing passes. Donor: oa::FnMesh::createFullscreenQuad.
Create a centered quad (2 triangles, 4 vertices) with top-origin image UVs. UV V=0 is the source-image top and world +Y is the quad top. For image/video viewing, pass the pixel dimensions (e.g. 1920, 1080). width and height must be finite and positive. Donor: oa::FnMesh::createQuad. Errors Returns an error for non-finite or non-positive dimensions.
Flip all vertex UVs vertically (V ← 1 − V). Used to convert explicitly bottom-origin source content to top-origin. Never fails. Donor: oa::FnMesh::flipUvsY.
Read and save one packed RGBA8 Texture using its path extension. Supported extensions are .jpg, .jpeg, .png, .webp, .bmp, and .tga. This is an explicit blocking readback and filesystem boundary. Errors Returns an error for unsupported paths, failed device observation, codec failure, or filesystem failure.
Scale all vertex positions and normals. Zero or non-finite scale components fail without modifying the mesh. Donor: oa::FnMesh::scale. Errors Returns an error when any scale component is zero or non-finite.
Convert one packed RGBA8 HWC image into an independent Texture value. The operation retains the texture/image semantic distinction and performs a device-side deep copy. Other image layouts, channel orders, and scalar representations require an explicit image conversion before this boundary. Errors Returns an error unless image is an unbatched U8 HWC RGBA image or its device copy cannot be recorded.
Upload one exact packed row-major RGBA8 host image as a Texture. Errors Returns an error for zero or overflowing dimensions, a mismatched byte count, exhausted semantic identity, or device allocation/upload failure.
Apply an affine matrix to all vertex positions and normals. The mesh is left unchanged when matrix is non-finite, singular, or produces non-finite vertex positions. On success, bounds_dirty is set. Donor: oa::FnMesh::transform. Errors Returns an error when matrix is non-finite, singular (no normal matrix), or produces non-finite vertex positions.
Translate all vertex positions in-place. Always succeeds; bounds are marked dirty. Donor: oa::FnMesh::translate.
Validate one scene without retaining or uploading it.
Types
8 members
Axis-aligned bounding box. Donor: oa::Aabb in oacpp/source/cpp/include/oa/render/fnMesh.h.
Source31 members
Semantic camera value. Composes a Transform (placement) with lens parameters (projection shape). get_view_matrix derives from the transform’s position and forward direction. get_projection_matrix uses the lens parameters with Vulkan clip-space conventions (reversed-Y, depth [0, 1]). Donor: oa::Camera / oa::FnCamera.
5 members
Solid-color material for UI elements and debug geometry. Zero texture bindings; lighting is disabled. Matches the flat_color Slang shader variant.
Source4 members
Indexed triangle-list mesh snapshot. bounds and bounds_dirty mirror the OA donor fields. Constructed values from mesh::create_* have up-to-date bounds; directly assembled MeshData values start with bounds_dirty = true and bounds = Aabb::default().
Source7 members
Generation-safe lease for one submitted headless target.
Source13 members
Engine-borrowing headless render-to-texture session. Admits multiple frame sources through the same slot-ring lifecycle. submit_frame returns a RenderFrame carrying the color Texture and exact producer Event.
Source4 members
Configuration for one headless Renderer target ring.
Source4 members
Caller-owned CPU semantic scene snapshot.
Source3 members
Per-node draw range produced by compile_scene_packets. index_start and index_count are byte-aligned offsets into the merged index buffer returned alongside this packet.
Source3 members
One hierarchy node that optionally instances a mesh. local_transform is the donor oa::Transform localTransform — a TRS semantic value, not a raw matrix. material overrides the renderer’s default material for this node. None falls back to FlatColor { color: [0.8, 0.8, 0.8, 1.0] } at draw time.
Source5 members
Full Standard Surface PBR material. Parameterized on Autodesk Standard Surface / OpenPBR. Maps losslessly to glTF 2.0 pbrMetallicRoughness + KHR_materials_ior, KHR_materials_clearcoat, KHR_materials_sheen, and KHR_materials_subsurface_scattering. Arnold and Cycles standard_surface import is a natural correspondence. Texture channel packing (ORM convention): orm_texture R = ambient occlusion, G = roughness, B = metalness. normal_texture stores tangent-space XY as BC5 SNORM; Z is reconstructed as sqrt(saturate(1 - dot(n.xy, n.xy))). All color values are linear at this API boundary.
5 members
Packed RGBA8 texture value reusable by Render, Presenter, Image, and UI. Two backings are currently admitted: Buffer-backed: uploaded from host bytes or a Matrix; supports read_rgba8. Render-target-backed: a non-owning alias of a Renderer slot’s color image; valid only while the originating RenderFrame is live. Readback uses RenderFrame::consume_readback, not read_rgba8.
Source5 members
Opaque index into the owning Scene’s texture registry. A handle is valid only within the Scene that issued it. Zero is reserved and will be rejected by validate_scene.
Source5 members
Textured unlit material for image and video display. One optional base-color texture; no lighting computation. Matches the unlit Slang shader variant.
SourceEnums
Semantic material value — CPU-side only, no GPU handles. Three tiers correspond to distinct shader pipelines: Material::FlatColor — flat_color shader, UI and debug. Material::Unlit — unlit shader, image/video display. Material::Standard — standard_surface shader, full PBR.
FlatColor(FlatColorMaterial) · Unlit(UnlitMaterial) · Standard(StandardSurfaceMaterial)
oa
Types
9 members
Node-graph canvas navigation and coordinate mapping. Caller-owned; passed to crate::ui::Ui::node_canvas_grid to render the background grid. Coordinate transforms are provided for callers that need to project node world positions into screen pixels. Donor: oa::NodeCanvas.
3 members
Caller-owned view state for a node-graph canvas. Donor: oa::NodeCanvasState.
Source8 members
Axis-aligned pixel rectangle in physical screen coordinates.
Source3 members
1 members
72 members
GPU-retained UI compositor. Borrows one Engine for its lifetime; must be closed explicitly before the engine or any resource it references is released.
Initialise the UI layer. Creates pipelines and the compose image. width and height should match the presentation surface extent.
11 members
3 members
Stable per-frame pointer and modifier snapshot. Donor: oa/ui/event.h.
Source3 members
Layout descriptor passed to begin_panel.
Source0 members
Modifier key bitmask (matches donor UiModifier* constants).
Source4 members
Theme colors and metrics used by all widgets.
Source3 members
Return value from crate::ui::Ui::tab_bar. Donor: oa::UiTabBarResult.
Source4 members
A single tab entry passed to crate::ui::Ui::tab_bar. Donor: oa::UiTabItem.
Source4 members
Configuration for one crate::ui::Ui::tree_row call. Donor: oa::UiTreeRowConfig.
Source3 members
Return value from crate::ui::Ui::tree_row. Donor: oa::UiTreeRowResult.
Source12 members
3 members
6 members
Non-owning live GPU producer attached to the Viewer lifecycle. Donor: oa::ViewerLiveSource.
SourceEnums
Sans = 0 · Mono = 1 · SansSemibold = 2
Discriminant for UiEvent. Donor: UiEventType.
None · MouseMove · MouseDown · MouseUp · MouseScroll · KeyDown · KeyUp · KeyChar · WindowResize · WindowClose · WindowFocus · WindowBlur · Pinch · TextEditing · MouseEnter · MouseLeave
Platform-neutral keyboard key identifier (SDL3 scancode values).
Unknown = 0 · A = 4 · B = 5 · C = 6 · D = 7 · E = 8 · F = 9 · G = 10 · H = 11 · I = 12 · J = 13 · K = 14 · L = 15 · M = 16 · N = 17 · O = 18 · P = 19 · Q = 20 · R = 21 · S = 22 · T = 23 · U = 24 · V = 25 · W = 26 · X = 27 · Y = 28 · Z = 29 · Num1 = 30 · Num2 = 31 · Num3 = 32 · Num4 = 33 · Num5 = 34 · Num6 = 35 · Num7 = 36 · Num8 = 37 · Num9 = 38 · Num0 = 39 · Return = 40 · Escape = 41 · Backspace = 42 · Tab = 43 · Space = 44 · Minus = 45 · Equals = 46 · Comma = 54 · Period = 55 · Slash = 56 · F1 = 58 · F2 = 59 · F3 = 60 · F4 = 61 · F5 = 62 · F6 = 63 · F7 = 64 · F8 = 65 · F9 = 66 · F10 = 67 · F11 = 68 · F12 = 69 · Home = 74 · Delete = 76 · End = 77 · Right = 79 · Left = 80 · Down = 81 · Up = 82 · KpEnter = 88 · Kp1 = 89 · Kp2 = 90 · Kp3 = 91 · Kp4 = 92 · Kp5 = 93 · Kp6 = 94 · Kp7 = 95 · Kp8 = 96 · Kp9 = 97 · Kp0 = 98
Classified scroll gesture — maps to donor UiScrollGesture.
None · MouseWheel · TouchpadPan · PinchScroll
Constants & Variables
Types
21 members
14 members
Grid figure container. Created without an Engine; the Engine is supplied only at sink time.
Source3 members
Top-level figure configuration. Donor: oa::plot::FigureConfig.
Source3 members
Dense row-major heatmap style. Donor: oa::plot::HeatmapStyle.
SourceEnums
Types
Types
4 members
Pixel rect returned by Figure::cell_rect. Donor: oa::plot::Figure::Rect.
Source14 members
Grid figure container. Created without an Engine; the Engine is supplied only at sink time.
Source3 members
Top-level figure configuration. Donor: oa::plot::FigureConfig.
SourceEnums
Functions
Classify an SDL3 wheel event into a UiScrollGesture. Heuristic: integer_x/y non-zero → discrete wheel; ctrl held → pinch fallback; otherwise smooth trackpad pan.
Types
9 members
Node-graph canvas navigation and coordinate mapping. Caller-owned; passed to crate::ui::Ui::node_canvas_grid to render the background grid. Coordinate transforms are provided for callers that need to project node world positions into screen pixels. Donor: oa::NodeCanvas.
3 members
Caller-owned view state for a node-graph canvas. Donor: oa::NodeCanvasState.
Source8 members
Axis-aligned pixel rectangle in physical screen coordinates.
Source3 members
1 members
72 members
GPU-retained UI compositor. Borrows one Engine for its lifetime; must be closed explicitly before the engine or any resource it references is released.
Initialise the UI layer. Creates pipelines and the compose image. width and height should match the presentation surface extent.
3 members
Opaque accessibility snapshot — a flat list of node descriptors. Donor: oa::Ui::accessibilitySnapshot return.
Source11 members
3 members
Configuration for a regular axis-aligned background grid. Donor: oa::UiGridConfig.
Source3 members
Configuration for a Ui-level inline heatmap. Donor: oa::UiHeatmapConfig.
Source3 members
Stable per-frame pointer and modifier snapshot. Donor: oa/ui/event.h.
Source3 members
Layout descriptor passed to begin_panel.
Source0 members
Modifier key bitmask (matches donor UiModifier* constants).
Source3 members
Configuration for a floating popup overlay. Donor: oa::UiPopupConfig.
Source3 members
Return value from crate::ui::Ui::property_row. Donor: oa::UiPropertyRegion.
Source3 members
Configuration for a labeled property row. Donor: oa::UiPropertyRowConfig.
Source3 members
Configuration for a scrollable panel. Donor: oa::UiScrollConfig.
Source3 members
Return value from crate::ui::Ui::begin_scroll_panel. Donor: oa::UiScrollRegion.
Source3 members
Configuration for a two-pane split view. Donor: oa::UiSplitConfig.
Source3 members
Return value from crate::ui::Ui::split_pane. Donor: oa::UiSplitRegion.
Source4 members
Theme colors and metrics used by all widgets.
Source3 members
Return value from crate::ui::Ui::tab_bar. Donor: oa::UiTabBarResult.
Source4 members
A single tab entry passed to crate::ui::Ui::tab_bar. Donor: oa::UiTabItem.
Source4 members
Configuration for one crate::ui::Ui::tree_row call. Donor: oa::UiTreeRowConfig.
Source3 members
Return value from crate::ui::Ui::tree_row. Donor: oa::UiTreeRowResult.
Source4 members
Half-open row range produced by crate::ui::Ui::virtual_rows. Donor: oa::UiVirtualRange.
SourceEnums
Sans = 0 · Mono = 1 · SansSemibold = 2
Accessibility role for a widget. Donor: oa::UiAccessibilityRole.
Button · Checkbox · Slider · TextField · ComboBox · MenuItem · Tab · TreeItem · Splitter · Timeline
Discriminant for UiEvent. Donor: UiEventType.
None · MouseMove · MouseDown · MouseUp · MouseScroll · KeyDown · KeyUp · KeyChar · WindowResize · WindowClose · WindowFocus · WindowBlur · Pinch · TextEditing · MouseEnter · MouseLeave
Named icon for icon-button widgets. Donor: oa::UiIcon.
Previous · Next · Play · Pause · Menu · Minimize · Maximize · Restore · Close · Fullscreen · ExitFullscreen · Volume · Muted · Settings
Platform-neutral keyboard key identifier (SDL3 scancode values).
Unknown = 0 · A = 4 · B = 5 · C = 6 · D = 7 · E = 8 · F = 9 · G = 10 · H = 11 · I = 12 · J = 13 · K = 14 · L = 15 · M = 16 · N = 17 · O = 18 · P = 19 · Q = 20 · R = 21 · S = 22 · T = 23 · U = 24 · V = 25 · W = 26 · X = 27 · Y = 28 · Z = 29 · Num1 = 30 · Num2 = 31 · Num3 = 32 · Num4 = 33 · Num5 = 34 · Num6 = 35 · Num7 = 36 · Num8 = 37 · Num9 = 38 · Num0 = 39 · Return = 40 · Escape = 41 · Backspace = 42 · Tab = 43 · Space = 44 · Minus = 45 · Equals = 46 · Comma = 54 · Period = 55 · Slash = 56 · F1 = 58 · F2 = 59 · F3 = 60 · F4 = 61 · F5 = 62 · F6 = 63 · F7 = 64 · F8 = 65 · F9 = 66 · F10 = 67 · F11 = 68 · F12 = 69 · Home = 74 · Delete = 76 · End = 77 · Right = 79 · Left = 80 · Down = 81 · Up = 82 · KpEnter = 88 · Kp1 = 89 · Kp2 = 90 · Kp3 = 91 · Kp4 = 92 · Kp5 = 93 · Kp6 = 94 · Kp7 = 95 · Kp8 = 96 · Kp9 = 97 · Kp0 = 98
Classified scroll gesture — maps to donor UiScrollGesture.
None · MouseWheel · TouchpadPan · PinchScroll
Constants & Variables
Functions
Convert one SDL3 event into a UiEvent. pixel_scale_x / pixel_scale_y convert logical SDL coordinates to physical pixels. Obtain them with window_pixel_scale before calling this. Returns None for SDL events that have no UI representation (timers, audio device changes, etc.).
Compute logical→physical pixel scale for one window. Returns (scale_x, scale_y). Both default to 1.0 when the window is zero-size or the query fails.
Functions
Classify an SDL3 wheel event into a UiScrollGesture. Heuristic: integer_x/y non-zero → discrete wheel; ctrl held → pinch fallback; otherwise smooth trackpad pan.
Types
9 members
Node-graph canvas navigation and coordinate mapping. Caller-owned; passed to crate::ui::Ui::node_canvas_grid to render the background grid. Coordinate transforms are provided for callers that need to project node world positions into screen pixels. Donor: oa::NodeCanvas.
3 members
Caller-owned view state for a node-graph canvas. Donor: oa::NodeCanvasState.
Source8 members
Axis-aligned pixel rectangle in physical screen coordinates.
Source3 members
Opaque accessibility snapshot — a flat list of node descriptors. Donor: oa::Ui::accessibilitySnapshot return.
Source11 members
3 members
Configuration for a regular axis-aligned background grid. Donor: oa::UiGridConfig.
Source3 members
Configuration for a Ui-level inline heatmap. Donor: oa::UiHeatmapConfig.
Source3 members
Stable per-frame pointer and modifier snapshot. Donor: oa/ui/event.h.
Source3 members
Layout descriptor passed to begin_panel.
Source0 members
Modifier key bitmask (matches donor UiModifier* constants).
Source3 members
Configuration for a floating popup overlay. Donor: oa::UiPopupConfig.
Source3 members
Return value from crate::ui::Ui::property_row. Donor: oa::UiPropertyRegion.
Source3 members
Configuration for a labeled property row. Donor: oa::UiPropertyRowConfig.
Source3 members
Configuration for a scrollable panel. Donor: oa::UiScrollConfig.
Source3 members
Return value from crate::ui::Ui::begin_scroll_panel. Donor: oa::UiScrollRegion.
Source3 members
Configuration for a two-pane split view. Donor: oa::UiSplitConfig.
Source3 members
Return value from crate::ui::Ui::split_pane. Donor: oa::UiSplitRegion.
Source4 members
Theme colors and metrics used by all widgets.
Source3 members
Return value from crate::ui::Ui::tab_bar. Donor: oa::UiTabBarResult.
Source4 members
A single tab entry passed to crate::ui::Ui::tab_bar. Donor: oa::UiTabItem.
Source4 members
Configuration for one crate::ui::Ui::tree_row call. Donor: oa::UiTreeRowConfig.
Source3 members
Return value from crate::ui::Ui::tree_row. Donor: oa::UiTreeRowResult.
Source4 members
Half-open row range produced by crate::ui::Ui::virtual_rows. Donor: oa::UiVirtualRange.
SourceEnums
Accessibility role for a widget. Donor: oa::UiAccessibilityRole.
Button · Checkbox · Slider · TextField · ComboBox · MenuItem · Tab · TreeItem · Splitter · Timeline
Discriminant for UiEvent. Donor: UiEventType.
None · MouseMove · MouseDown · MouseUp · MouseScroll · KeyDown · KeyUp · KeyChar · WindowResize · WindowClose · WindowFocus · WindowBlur · Pinch · TextEditing · MouseEnter · MouseLeave
Named icon for icon-button widgets. Donor: oa::UiIcon.
Previous · Next · Play · Pause · Menu · Minimize · Maximize · Restore · Close · Fullscreen · ExitFullscreen · Volume · Muted · Settings
Platform-neutral keyboard key identifier (SDL3 scancode values).
Unknown = 0 · A = 4 · B = 5 · C = 6 · D = 7 · E = 8 · F = 9 · G = 10 · H = 11 · I = 12 · J = 13 · K = 14 · L = 15 · M = 16 · N = 17 · O = 18 · P = 19 · Q = 20 · R = 21 · S = 22 · T = 23 · U = 24 · V = 25 · W = 26 · X = 27 · Y = 28 · Z = 29 · Num1 = 30 · Num2 = 31 · Num3 = 32 · Num4 = 33 · Num5 = 34 · Num6 = 35 · Num7 = 36 · Num8 = 37 · Num9 = 38 · Num0 = 39 · Return = 40 · Escape = 41 · Backspace = 42 · Tab = 43 · Space = 44 · Minus = 45 · Equals = 46 · Comma = 54 · Period = 55 · Slash = 56 · F1 = 58 · F2 = 59 · F3 = 60 · F4 = 61 · F5 = 62 · F6 = 63 · F7 = 64 · F8 = 65 · F9 = 66 · F10 = 67 · F11 = 68 · F12 = 69 · Home = 74 · Delete = 76 · End = 77 · Right = 79 · Left = 80 · Down = 81 · Up = 82 · KpEnter = 88 · Kp1 = 89 · Kp2 = 90 · Kp3 = 91 · Kp4 = 92 · Kp5 = 93 · Kp6 = 94 · Kp7 = 95 · Kp8 = 96 · Kp9 = 97 · Kp0 = 98
Classified scroll gesture — maps to donor UiScrollGesture.
None · MouseWheel · TouchpadPan · PinchScroll
Constants & Variables
Types
12 members
3 members
6 members
Non-owning live GPU producer attached to the Viewer lifecycle. Donor: oa::ViewerLiveSource.
Source