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, queue: &Queue, width: u32, height: u32) -> Self
pub fn new(device: &Device, queue: &Queue, 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 set_side_shades(&mut self, s: [i8; 6])
pub fn set_side_shades(&mut self, s: [i8; 6])
Set per-face side-shades for subsequent Self::render calls —
voxlap setsideshades(top, bot, left, right, up, down), each an
i8 stamped as u8 (matching the engine path). Lets the gate test
the GPU side-shade darkening.
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.