pub struct RenderOptions {
pub backend: BackendPreference,
pub gpu: GpuRendererSettings,
pub clear_sky: u32,
pub gpu_mip_scan_dist: f32,
pub gpu_chunk_upload_budget: u32,
pub gpu_clip_upload_budget: u32,
pub cpu_max_grid_vsid: u32,
pub cpu_render_threads: usize,
}Expand description
Construction-time options for SceneRenderer::new.
Fields§
§backend: BackendPreferenceWhich backend to build (QE.7b — replaces want_gpu: bool;
migrate want_gpu: true → BackendPreference::PreferGpu,
false → BackendPreference::Cpu).
gpu: GpuRendererSettingsSettings forwarded to roxlap_gpu::GpuRenderer when the GPU
backend is selected.
clear_sky: u32Packed 0x00RRGGBB (alpha ignored) the empty/clear frame fills
with until a scene render lands. Also the CPU sky-miss colour
default if a frame supplies none.
gpu_mip_scan_dist: f32GPU scene-grid LOD scan distance in world units (GPU.11.1):
rays farther than this from the camera sample coarser chunk
mips. QE.2a — construction-time here (was a per-frame
FrameParams field); the ROXLAP_GPU_MIP_SCAN_DIST env var
still overrides it as a user-side escape hatch. Ignored by the
CPU backend (its mip ladder comes from
OpticastSettings::mip_scan_dist).
gpu_chunk_upload_budget: u32GPU per-frame dirty-chunk install budget (QE.2c — was env-only
ROXLAP_GPU_CHUNK_BUDGET, which still overrides). Each chunk
install issues several queue.write_buffer calls; a big batch
can exhaust the device staging pool (seen as egui-wgpu panics on
Mesa/NVK while flying fast). Small budget = bounded per-frame
writes, more terrain pop-in when moving quickly. 0 =
unbounded.
gpu_clip_upload_budget: u32GPU frames-per-staging-flush while registering a flipbook clip
(QE.2c — was env-only ROXLAP_GPU_CLIP_BUDGET, which still
overrides). 0 = unbounded.
cpu_max_grid_vsid: u32ignored — the DDA renderer replaced the strip-parallel opticast and needs no scratch-pool pre-sizing
Unused. Sized the strip-parallel opticast’s per-frame scratch pool; the per-pixel DDA renderer that replaced it needs no pre-sizing, so the value is ignored.
cpu_render_threads: usizeignored — the DDA renderer parallelises over the rayon pool; bound it with RAYON_NUM_THREADS
Unused. Set the strip-parallel opticast’s thread count; the DDA
renderer parallelises internally over the rayon pool (bound it
with RAYON_NUM_THREADS if needed), so the value is ignored.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for RenderOptions
impl RefUnwindSafe for RenderOptions
impl Send for RenderOptions
impl Sync for RenderOptions
impl Unpin for RenderOptions
impl UnsafeUnpin for RenderOptions
impl UnwindSafe for RenderOptions
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