pub struct FrameParams<'a> {
pub settings: &'a OpticastSettings,
pub sky_color: u32,
pub sky: Option<&'a Sky>,
pub fog_color: u32,
pub fog_max_scan_dist: i32,
pub treat_z_max_as_air: bool,
pub gpu_mip_scan_dist: f32,
pub gpu_max_outer_steps: u32,
pub gpu_fov_y_rad: f32,
pub sprite_lighting: Option<&'a SpriteLighting<'a>>,
pub side_shades: [i8; 6],
}Expand description
Per-frame inputs both backends consume. The host builds the
OpticastSettings (it owns scan distance etc.); the facade does
everything else (pool config, sky fill, render, present).
Fields§
§settings: &'a OpticastSettingsCPU opticast settings (scan distance, mip ladder, framebuffer geometry). Ignored by the GPU backend.
sky_color: u32Packed engine sky colour: the CPU sky-miss fill + skycast, and the clear colour if no scene renders.
sky: Option<&'a Sky>Optional sky panorama for the CPU rasterizer’s sky sampling.
fog_color: u32CPU fog: packed colour + max scan distance (voxels). 0 scan
distance disables CPU fog.
fog_max_scan_dist: i32§treat_z_max_as_air: boolCPU: treat z=255 as air (avoids the S1.X bedrock path for out-of-bounds cameras).
gpu_mip_scan_dist: f32GPU scene-grid LOD scan distance (world units); see GPU.11.1. Ignored by the CPU backend.
gpu_max_outer_steps: u32GPU outer-DDA step budget (chunks). Ignored by the CPU backend.
gpu_fov_y_rad: f32GPU vertical field of view (radians). Ignored by the CPU
backend (it derives projection from OpticastSettings).
sprite_lighting: Option<&'a SpriteLighting<'a>>CPU sprite shading (built by the host from its engine). Required
for the CPU backend to draw sprites; ignored by the GPU backend
(its sprite pass shades from the uploaded model colours). None
skips CPU sprite drawing.
side_shades: [i8; 6]Per-face directional shading for the voxel grids — voxlap’s
setsideshades(top, bot, left, right, up, down), the grid-scan
analogue of sprite_lighting. Each
entry darkens the faces pointing that way; the host typically
passes its engine’s side_shades(). The default [0; 6] keeps
sideshademode off (no per-side shading), so existing hosts and
the oracle goldens are unaffected. Applied each frame by both
backends: the CPU rasteriser via gcsub, and the GPU scene-DDA
pass by darkening a hit voxel’s brightness by the hit face’s
shade (the face taken from the DDA’s last-stepped axis).
Auto Trait Implementations§
impl<'a> Freeze for FrameParams<'a>
impl<'a> RefUnwindSafe for FrameParams<'a>
impl<'a> Send for FrameParams<'a>
impl<'a> Sync for FrameParams<'a>
impl<'a> Unpin for FrameParams<'a>
impl<'a> UnsafeUnpin for FrameParams<'a>
impl<'a> UnwindSafe for FrameParams<'a>
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.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more