Skip to main content

EngineShaders

Struct EngineShaders 

Source
pub struct EngineShaders {
    pub image_sampler: bool,
    pub strip: ShaderId,
    pub strip_classes: [ShaderId; 7],
    pub strip_layout: PipelineLayout,
    pub atlas_strip: ShaderId,
    pub atlas_layout: PipelineLayout,
    pub clear: ShaderId,
    pub copy: ShaderId,
    pub filter: ShaderId,
}
Expand description

The engine’s compiled shader modules, by id, and the one explicit layout every strip pipeline is built against.

Registered once at start-up into the ShaderLibrary a PipelineCache is built over; a RenderPipelineDesc then names its program by id rather than by source.

Fields§

§image_sampler: bool

Whether the strip programs are the image-sampler family (see the module doc’s The program family).

§strip: ShaderId

The whole sparse-strip rasterizer — the PaintClass::Uber program, shared by all six strip states.

§strip_classes: [ShaderId; 7]

The strip program’s specialisations, one per PaintClass::SPECIALISED entry, in that order.

§strip_layout: PipelineLayout

The explicit layout every strip pipeline, of every class, is built against (crate::gpu::bindings::strip_pipeline_layout).

§atlas_strip: ShaderId

The program the atlas-layer pass draws with: Self::strip in the manual family, the manual family’s Uber program in the sampler one.

§atlas_layout: PipelineLayout

The layout the atlas-layer pass is built against: Self::strip_layout in the manual family, the manual family’s layout in the sampler one.

§clear: ShaderId

Region and fullscreen clears.

§copy: ShaderId

Rectangular region copies.

§filter: ShaderId

One pass of a layer filter’s sequence.

Implementations§

Source§

impl EngineShaders

Source

pub fn register(library: &mut ShaderLibrary, device: &Device) -> Self

Self::register_family for the family the process configuration names (FRUST_ENGINE_IMAGE_SAMPLER, crate::config::image_sampler_enabled).

Source

pub fn register_family( library: &mut ShaderLibrary, device: &Device, image_sampler: bool, ) -> Self

Compiles the strip program of the family image_sampler names — its Uber program and every class specialisation — and the clear, copy and filter modules into library, returning their ids beside a freshly created strip layout of that family.

The sampler family also compiles the manual family’s Uber program and layout, which its atlas-layer pass draws with (see the module doc’s The program family): one more module and one more layout, nothing else.

Insertion is idempotent per name, so calling this twice against the same library returns the same ids without recompiling (the layout is a new object each call — a desc compares layouts by identity, so keep one EngineShaders per cache).

Source

pub fn strip_class(&self, class: PaintClass) -> ShaderId

The registered id of the strip program specialised for class.

Trait Implementations§

Source§

impl Clone for EngineShaders

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for EngineShaders

Source§

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

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

impl Eq for EngineShaders

Source§

impl PartialEq for EngineShaders

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for EngineShaders

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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,