#[non_exhaustive]pub enum Feature {
Capture,
SkyPanorama,
CarveActiveSprite,
TranslucentSpriteMaterials,
TranslucentTerrain,
FreePickDepth,
}Expand description
A backend-dependent capability, probed via
SceneRenderer::supports (QE.7a). Every method below the parity
line degrades to a silent no-op on the unsupporting backend; this
enum turns the tribal knowledge into a queryable answer.
| Feature | CPU | GPU |
|---|---|---|
Capture | ✅ | ✅ native (❌ wasm — WebGPU can’t block) |
SkyPanorama | ❌ (use FrameParams::sky) | ✅ |
CarveActiveSprite | ❌ | ✅ |
TranslucentSpriteMaterials | ✅ | ✅ (TV.3) |
TranslucentTerrain | ✅ | ✅ (TV.6) |
FreePickDepth | ✅ | ❌ (blocking readback) |
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Capture
SceneRenderer::request_capture / take_capture produce
frames.
SkyPanorama
SceneRenderer::set_sky_panorama uploads a sampled sky (the
CPU backend samples FrameParams::sky instead).
CarveActiveSprite
TranslucentSpriteMaterials
Per-voxel / per-instance sprite materials composite translucently (an unsupporting backend renders them opaque).
TranslucentTerrain
SceneRenderer::set_terrain_materials terrain translucency
composites (an unsupporting backend renders terrain opaque).
FreePickDepth
SceneRenderer::pick_depth is cheap enough for per-frame use
(an in-memory read). Unsupporting = it works but blocks on
a device readback — hotkey-grade, not reticle-grade.
Trait Implementations§
impl Copy for Feature
impl Eq for Feature
impl StructuralPartialEq for Feature
Auto Trait Implementations§
impl Freeze for Feature
impl RefUnwindSafe for Feature
impl Send for Feature
impl Sync for Feature
impl Unpin for Feature
impl UnsafeUnpin for Feature
impl UnwindSafe for Feature
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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