Skip to content

fix: restore mandatory quiver CI integration - #13

Merged
mtao merged 14 commits into
mainfrom
fix/ci-integration
Aug 22, 2026
Merged

fix: restore mandatory quiver CI integration#13
mtao merged 14 commits into
mainfrom
fix/ci-integration

Conversation

@mtao

@mtao mtao commented Aug 21, 2026

Copy link
Copy Markdown
Owner

Summary

  • integrate the completed MeshData/image feature line that is compatible with current quiver attribute APIs
  • retain the final scalar-typed BoundingBox and BVH implementations
  • remove the obsolete non-quiver BoundingBox branch now that quiver is mandatory
  • force Conan's Meson configure step to use GCC 15 instead of the runner's unversioned GCC 13

Verification

  • full visualization build succeeds locally with GCC 15
  • all 8 Meson test suites pass
  • remote Conan, system-package, and docs checks must pass before merge

mtao added 14 commits March 27, 2026 22:03
…te discovery

Replace MeshData's internal data buffers with a shared_ptr<quiver::MeshBase>.
All attributes from the mesh are now enumerable via DiscoveredAttribute and
assignable to visualization roles (positions, normals, scalar field) through
RoleBinding with automatic double-to-float conversion via CachedAttribute.

- MeshData holds shared_ptr<MeshBase>, discovers all attributes on set_mesh()
- RoleBinding provides raw_data() + component_count for GPU upload
- OBJ and MSH loading goes through quiver::io::read_mesh() pipeline
- VulkanMeshDrawable syncs from role bindings instead of raw arrays
- MeshBuffers supports variable component counts (1D/2D/3D positions)
- MeshPipelineManager generates correct VkFormat for component count
- ImGui mesh_controls_panel shows attribute selector combos per role
- Qt mesh_controls_widget has full attribute binding UI with filtering
- BVHData creates quiver::Mesh<1> edge meshes from role bindings
- All tests rewritten with quiver::Mesh<2> objects (65/65 passing)
…te discovery

Replace MeshData's internal data buffers with a shared_ptr<quiver::MeshBase>.
All attributes from the mesh are now enumerable via DiscoveredAttribute and
assignable to visualization roles (positions, normals, scalar field) through
RoleBinding with automatic double-to-float conversion via CachedAttribute.

- MeshData holds shared_ptr<MeshBase>, discovers all attributes on set_mesh()
- RoleBinding provides raw_data() + component_count for GPU upload
- OBJ and MSH loading goes through quiver::io::read_mesh() pipeline
- VulkanMeshDrawable syncs from role bindings instead of raw arrays
- MeshBuffers supports variable component counts (1D/2D/3D positions)
- MeshPipelineManager generates correct VkFormat for component count
- ImGui mesh_controls_panel shows attribute selector combos per role
- Qt mesh_controls_widget has full attribute binding UI with filtering
- BVHData creates quiver::Mesh<1> edge meshes from role bindings
- All tests rewritten with quiver::Mesh<2> objects (65/65 passing)
Add VulkanTexture (RAII GPU texture with full/partial upload),
ImageData (CPU pixel buffer scene graph feature with dirty tracking),
ImagePipelineManager (descriptor sets, UBOs, fullscreen triangle pipeline),
VulkanImageDrawable (per-frame sync from ImageData to GPU texture),
ImageScene (orthographic 2D viewer with pan/zoom/fit-to-window),
image shaders (fullscreen triangle + HDR tone mapping fragment shader),
ImGui image controls panel (exposure/gamma/channel/zoom/pan),
PPM I/O (P6 binary reader/writer, RGB->RGBA expansion),
image_viewer_glfw standalone tool (CLI11, scroll-zoom, middle-drag pan),
and unit tests for ImageData and PPM I/O (15 new test cases).

This lays the foundation for ART ray tracer live preview and
the MultiscreenManga comic reader port.
- BoundingBox<T, Dim> now backed by quiver's AABB<T, Dim> (T first,
  no default), matching quiver's feature/kdop-scalar-type branch
- Add per-axis accessors: min(axis), max(axis), range(axis)
- Add convenience names: width(), height(), depth()
- Add 4-arg constructor (x_min, y_min, x_max, y_max) for Dim==2
- Replace ImageData::DirtyRegion struct with BoundingBox<uint32_t, 2>
- Update BVHData to use BVH<double, 3, K> (explicit scalar type)
- Unify bounding_box.hpp (remove #if BALSA_HAS_QUIVER split)
- Point quiver.wrap to feature/kdop-scalar-type (revert after merge)
…' into feature/image-infrastructure

# Conflicts:
#	visualization/src/scene_graph/BVHData.cpp
#	visualization/tests/test_scene_graph.cpp
feat: add image/texture infrastructure for visualization
…' into fix/ci-integration

# Conflicts:
#	geometry/include/balsa/geometry/BoundingBox.hpp
#	geometry/include/balsa/geometry/bounding_box.hpp
#	visualization/src/scene_graph/BVHData.cpp
@mtao
mtao merged commit 13178ed into main Aug 22, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant