pub struct PreprocessPipelines {
pub direct_preprocess: PreprocessPipeline,
pub gpu_frustum_culling_preprocess: PreprocessPipeline,
pub early_gpu_occlusion_culling_preprocess: PreprocessPipeline,
pub late_gpu_occlusion_culling_preprocess: PreprocessPipeline,
pub gpu_frustum_culling_build_indexed_indirect_params: BuildIndirectParametersPipeline,
pub gpu_frustum_culling_build_non_indexed_indirect_params: BuildIndirectParametersPipeline,
pub early_phase: PreprocessPhasePipelines,
pub late_phase: PreprocessPhasePipelines,
pub main_phase: PreprocessPhasePipelines,
}Expand description
The compute shader pipelines for the GPU mesh preprocessing and indirect parameter building passes.
Fields§
§direct_preprocess: PreprocessPipelineThe pipeline used for CPU culling. This pipeline doesn’t populate indirect parameter metadata.
gpu_frustum_culling_preprocess: PreprocessPipelineThe pipeline used for mesh preprocessing when GPU frustum culling is in use, but occlusion culling isn’t.
This pipeline populates indirect parameter metadata.
early_gpu_occlusion_culling_preprocess: PreprocessPipelineThe pipeline used for the first phase of occlusion culling.
This pipeline culls, transforms meshes, and populates indirect parameter metadata.
late_gpu_occlusion_culling_preprocess: PreprocessPipelineThe pipeline used for the second phase of occlusion culling.
This pipeline culls, transforms meshes, and populates indirect parameter metadata.
gpu_frustum_culling_build_indexed_indirect_params: BuildIndirectParametersPipelineThe pipeline that builds indirect draw parameters for indexed meshes, when frustum culling is enabled but occlusion culling isn’t enabled.
gpu_frustum_culling_build_non_indexed_indirect_params: BuildIndirectParametersPipelineThe pipeline that builds indirect draw parameters for non-indexed meshes, when frustum culling is enabled but occlusion culling isn’t enabled.
early_phase: PreprocessPhasePipelinesCompute shader pipelines for the early prepass phase that draws meshes visible in the previous frame.
late_phase: PreprocessPhasePipelinesCompute shader pipelines for the late prepass phase that draws meshes that weren’t visible in the previous frame, but became visible this frame.
main_phase: PreprocessPhasePipelinesCompute shader pipelines for the main color phase.
Trait Implementations§
Source§impl FromWorld for PreprocessPipelines
impl FromWorld for PreprocessPipelines
Source§fn from_world(world: &mut World) -> PreprocessPipelines
fn from_world(world: &mut World) -> PreprocessPipelines
Self using data from the given World.impl Resource for PreprocessPipelines
Auto Trait Implementations§
impl Freeze for PreprocessPipelines
impl !RefUnwindSafe for PreprocessPipelines
impl Send for PreprocessPipelines
impl Sync for PreprocessPipelines
impl Unpin for PreprocessPipelines
impl !UnwindSafe for PreprocessPipelines
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> 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> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
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