FinalBlendPipeline

Struct FinalBlendPipeline 

Source
pub struct FinalBlendPipeline {
    pipeline: RenderPipeline,
    bind_group_layout: BindGroupLayout,
    sampler: Sampler,
    uniform_buffer: Buffer,
    bind_group: BindGroup,
    fallback_view: TextureView,
    display_texture: Texture,
    display_texture_view: TextureView,
}
Expand description

Owns the blend pipeline, its bind group, the per-frame uniform buffer, and the display target it writes into. Created once at renderer init and never reallocated; only the bind group is rebuilt when a secondary chain is added or removed.

Fields§

§pipeline: RenderPipeline§bind_group_layout: BindGroupLayout§sampler: Sampler§uniform_buffer: Buffer§bind_group: BindGroup§fallback_view: TextureView

1×1 fallback bound into the secondary slot when no secondary chain is active. The shader skips it via has_secondary == 0 but wgpu still requires a valid view at every binding.

§display_texture: Texture

Display target this pass writes into. The renderer exposes it via render_texture() so existing callers see the post-blend image.

§display_texture_view: TextureView

Implementations§

Source§

impl FinalBlendPipeline

Source

pub fn new( device: &Arc<Device>, config: &RenderConfig, primary_view: &TextureView, ) -> Result<Self>

Build the blend pipeline. primary_view is the initial primary chain’s final_texture_view; the bind group is configured for passthrough (secondary = fallback, progress = 0) at construction.

Source

pub fn display_texture_view(&self) -> &TextureView

The final display texture written by record_pass. Callers expose it as the renderer’s “presentable” output. Borrow the display texture view — needed by overlay passes (text, future HUD) that draw on top of the blended output.

Source

pub fn display_texture(&self) -> &Texture

Source

pub fn set_inputs( &mut self, device: &Arc<Device>, primary_view: &TextureView, secondary_view: Option<&TextureView>, )

Refresh the bind group with the current primary chain’s final_texture_view and, optionally, a secondary chain’s view. Call this whenever either chain’s textures get re-allocated (resize, transition start/end).

Source

pub fn update_progress(&self, queue: &Queue, progress: f32, has_secondary: bool)

Update the eased progress (0 = full secondary, 1 = full primary) and the has_secondary flag in one upload.

Source

pub fn resize(&mut self, device: &Arc<Device>, config: &RenderConfig)

Rebuild the display target at a new resolution. Must be followed by a set_inputs call to rebind the (also-resized) primary view.

Source

pub fn record_pass(&self, encoder: &mut CommandEncoder)

Record the blend pass into the supplied encoder. Output goes to the display texture; caller is responsible for the submit.

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
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

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

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

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