Module prepass

Source
Expand description

Run a prepass before the main pass to generate depth, normals, and/or motion vectors textures, sometimes called a thin g-buffer. These textures are useful for various screen-space effects and reducing overdraw in the main pass.

The prepass only runs for opaque meshes or meshes with an alpha mask. Transparent meshes are ignored.

To enable the prepass, you need to add a prepass component to a crate::prelude::Camera3d.

DepthPrepass NormalPrepass MotionVectorPrepass

The textures are automatically added to the default mesh view bindings. You can also get the raw textures by querying the ViewPrepassTextures component on any camera with a prepass component.

The depth prepass will always run and generate the depth buffer as a side effect, but it won’t copy it to a separate texture unless the DepthPrepass is activated. This means that if any prepass component is present it will always create a depth buffer that will be used by the main pass.

When using the default mesh view bindings you should be able to use prepass_depth(), prepass_normal(), and prepass_motion_vector() to load the related textures. These functions are defined in bevy_pbr::prepass_utils. See the shader_prepass example that shows how to use them.

The prepass runs for each Material. You can control if the prepass should run per-material by setting the prepass_enabled flag on the MaterialPlugin.

Currently only works for 3D.

Modules§

node

Structs§

AlphaMask3dPrepass
Alpha mask phase of the 3D prepass.
DeferredPrepass
If added to a crate::prelude::Camera3d then deferred materials will be rendered to the deferred gbuffer texture and will be available to subsequent passes. Note the default deferred lighting plugin also requires DepthPrepass to work correctly.
DepthPrepass
If added to a crate::prelude::Camera3d then depth values will be copied to a separate texture available to the main pass.
MotionVectorPrepass
If added to a crate::prelude::Camera3d then screen space motion vectors will be copied to a separate texture available to the main pass.
NormalPrepass
If added to a crate::prelude::Camera3d then vertex world normals will be copied to a separate texture available to the main pass. Normals will have normal map textures already applied.
Opaque3dPrepass
Opaque phase of the 3D prepass.
OpaqueNoLightmap3dBinKey
The data used to bin each opaque 3D object in the prepass and deferred pass.
PreviousViewData
PreviousViewUniformOffset
PreviousViewUniforms
ViewPrepassTextures
Textures that are written to by the prepass.

Constants§

MOTION_VECTOR_PREPASS_FORMAT
NORMAL_PREPASS_FORMAT

Functions§

prepass_target_descriptors