Skip to content

OrdinaryLight v0.6.0

Choose a tag to compare

@mscf mscf released this 12 Sep 18:56
· 24 commits to main since this release

OrdinaryLight 0.6.0

Add public persistent AABB acceleration resources for applications that need
independent static/dynamic or chunk updates before native GI.

  • VulkanAabbBlas: leased GPU bounds, reusable build/refit operations and aligned persistent scratch.
  • VulkanTlas and VulkanBlasInstance: independently owned BLAS instances, stable custom indices and explicit resource lifetime rules.
  • buffer_copy_operation: GPU-to-GPU updates over validated explicit byte ranges, composable before acceleration builds without readbacks or CPU waits.
  • Preserve build-range FFI storage through deferred recording and garbage collection.
  • Reject premature destruction while borrowers exist and retire pending GPU uses before destruction.

The APIs consume application-owned GPU buffers and export acceleration resources
for VulkanRuntime.import_scene; no dummy triangle scene or private descriptor
overrides are needed. Refits retain Vulkan's fixed-count/layout/active-state
constraints. A range copy does not make an entire BLAS refit partial; partition
geometry into independent BLASes to bound acceleration work. See
docs/public_acceleration.md for usage and synchronization.

Verified with direct GPU ray queries, static BLAS preservation, GPU range updates,
instance identities, deferred build recording, lifetime guards, and vxl8r's
512×512×13 domain. Moving the central object updated 36 of 832 slot chunks;
unchanged frames skipped acceleration updates. vxl8r also uses OrdinaryShade's
new compare-and-exchange intrinsic for exact visible-face averaging. This is
chunked dense resident storage, not yet a fully sparse voxel allocator.

Requires OrdinaryShade 0.1.0a7. Install the matching GitHub wheel assets together.