pub struct DownsampleDepthNode { /* private fields */ }
Expand description
The nodes that produce a hierarchical Z-buffer, also known as a depth pyramid.
This runs the single-pass downsampling (SPD) shader with the min filter in order to generate a series of mipmaps for the Z buffer. The resulting hierarchical Z-buffer can be used for occlusion culling.
There are two instances of this node. The early downsample depth pass is the first hierarchical Z-buffer stage, which runs after the early prepass and before the late prepass. It prepares the Z-buffer for the bounding box tests that the late mesh preprocessing stage will perform. The late downsample depth pass runs at the end of the main phase. It prepares the Z-buffer for the occlusion culling that the early mesh preprocessing phase of the next frame will perform.
This node won’t do anything if occlusion culling isn’t on.
Trait Implementations§
Source§impl FromWorld for DownsampleDepthNode
impl FromWorld for DownsampleDepthNode
Source§fn from_world(world: &mut World) -> Self
fn from_world(world: &mut World) -> Self
Self
using data from the given World
.Source§impl Node for DownsampleDepthNode
impl Node for DownsampleDepthNode
Source§fn update(&mut self, world: &mut World)
fn update(&mut self, world: &mut World)
World
prior to the run method.Source§fn run<'w>(
&self,
render_graph_context: &mut RenderGraphContext<'_>,
render_context: &mut RenderContext<'w>,
world: &'w World,
) -> Result<(), NodeRunError>
fn run<'w>( &self, render_graph_context: &mut RenderGraphContext<'_>, render_context: &mut RenderContext<'w>, world: &'w World, ) -> Result<(), NodeRunError>
RenderGraphContext
.Auto Trait Implementations§
impl Freeze for DownsampleDepthNode
impl !RefUnwindSafe for DownsampleDepthNode
impl Send for DownsampleDepthNode
impl Sync for DownsampleDepthNode
impl Unpin for DownsampleDepthNode
impl !UnwindSafe for DownsampleDepthNode
Blanket Implementations§
Source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
Source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.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>
, which can then be
downcast
into Box<dyn 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>
, which 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> DowncastSend for T
impl<T> DowncastSend 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