Skip to main content

DepthAttachment

Struct DepthAttachment 

Source
pub struct DepthAttachment { /* private fields */ }
Expand description

The engine’s depth attachment across frames: an owned texture when the caller supplies none, plus the caller’s pre-cleared statement.

Implementations§

Source§

impl DepthAttachment

Source

pub fn new() -> Self

An attachment owning nothing yet, clearing its depth every frame.

Source

pub fn set_pre_cleared(&mut self, pre_cleared: bool)

Records whether the attachment a caller supplies already holds the depth it wants tested against, in which case the frame loads it instead of clearing it.

Sticky across frames: a host compositing 2D over 3D does so every frame, so it states this once rather than per frame.

It is a statement about ordering, not about the buffer’s contents: it is true when the caller’s own pass ran first in the encoder and the frame must test against what that pass left, and false when the frame runs first and the caller’s pass loads the depth the frame establishes.

Source

pub fn is_pre_cleared(&self) -> bool

Whether a caller-supplied attachment is treated as pre-cleared.

Source

pub fn load_op(&self, caller_supplied: bool) -> LoadOp<f32>

The load operation this frame’s depth clear resolves to.

Only a caller-supplied attachment can be pre-cleared — an engine-owned one holds nothing but the previous frame’s depth, which is never what this frame wants to test against.

Source

pub fn owned(&self) -> Option<&DepthTexture>

The engine-owned attachment, if one has been allocated.

Source

pub fn owned_view(&self) -> Option<&TextureView>

The engine-owned attachment’s view, if one has been allocated.

Source

pub fn ensure( &mut self, device: &Device, width: u32, height: u32, ) -> &TextureView

Allocates the engine-owned attachment if there is none at this extent, and returns its view.

Source

pub fn discard(&mut self)

Drops the engine-owned attachment, keeping the pre-cleared statement.

Source

pub fn resize(&mut self, device: &Device, width: u32, height: u32)

Re-establishes the engine-owned attachment at a new extent.

Only reallocates when one was already owned: a renderer that has never needed a depth buffer should not start holding one because the surface changed size. Doing the work here rather than on the next frame keeps the reallocation off the frame path, where a resize storm would otherwise pay for it mid-encode.

Trait Implementations§

Source§

impl Debug for DepthAttachment

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for DepthAttachment

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T, S> SimdFrom<T, S> for T
where S: Simd,

Source§

fn simd_from(_simd: S, value: T) -> T

Source§

impl<F, T, S> SimdInto<T, S> for F
where T: SimdFrom<F, S>, S: Simd,

Source§

fn simd_into(self, simd: S) -> T

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,