pub struct HeadlessSceneRenderer { /* private fields */ }Expand description
GPU.11 — headless scene-DDA renderer for tests + offline visual
gates. Owns the scene_dda.wgsl compute pipeline with no surface
and no blit pass; renders a GpuSceneResident to an in-memory
RGBA framebuffer via texture readback. The per-substage visual
gate (render reference scenes, diff PPMs) and the GPU.11.1 mip
render-diff both ride on this.
Implementations§
Source§impl HeadlessSceneRenderer
impl HeadlessSceneRenderer
Sourcepub fn new(device: &Device, width: u32, height: u32) -> Self
pub fn new(device: &Device, width: u32, height: u32) -> Self
Build the compute pipeline + output/readback resources for a
width × height framebuffer. Validates scene_dda.wgsl and
the scene::GridStaticMeta std430 layout at pipeline /
bind-group time.
Sourcepub fn render(
&self,
device: &Device,
queue: &Queue,
scene: &GpuSceneResident,
cameras: &[Camera],
fov_y_rad: f32,
max_outer_steps: u32,
mip_scan_dist: f32,
) -> Vec<u32>
pub fn render( &self, device: &Device, queue: &Queue, scene: &GpuSceneResident, cameras: &[Camera], fov_y_rad: f32, max_outer_steps: u32, mip_scan_dist: f32, ) -> Vec<u32>
Render scene from cameras (one per grid) and read the
framebuffer back as width*height packed 0xAABBGGRR pixels
(R in the low byte). Fog is disabled. mip_scan_dist drives
the GPU.11.1 scene-grid LOD (0 = always mip-0). Blocks on
readback.
§Panics
If cameras.len() != scene.grid_count.
Auto Trait Implementations§
impl !Freeze for HeadlessSceneRenderer
impl !RefUnwindSafe for HeadlessSceneRenderer
impl !UnwindSafe for HeadlessSceneRenderer
impl Send for HeadlessSceneRenderer
impl Sync for HeadlessSceneRenderer
impl Unpin for HeadlessSceneRenderer
impl UnsafeUnpin for HeadlessSceneRenderer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.