Skip to main content

Pipeline

Struct Pipeline 

Source
pub struct Pipeline {
    pub width: u32,
    pub height: u32,
    pub stats: FrameStats,
    pub svogi: CascadedSvogi,
    pub fog: VolumetricFogPipeline,
    pub raw_window_events: Vec<WindowEvent>,
    /* private fields */
}
Expand description

The main render pipeline.

Created once by ProofEngine::new() and kept alive for the duration of the game. Owns the window, OpenGL context, shader programs, font atlas, glyph VAO, and the post-processing pipeline.

Fields§

§width: u32§height: u32§stats: FrameStats§svogi: CascadedSvogi§fog: VolumetricFogPipeline§raw_window_events: Vec<WindowEvent>

Raw winit WindowEvents collected during poll_events, drained by consumers.

Implementations§

Source§

impl Pipeline

Source

pub fn init(config: &EngineConfig) -> Self

Initialize window, OpenGL 3.3 Core context, shader programs, font atlas, and PostFxPipeline.

Source

pub fn set_density_entities( &mut self, entities: &[GpuDensityEntityData], budget: u32, )

Hand over this frame’s GPU density entities and the particle budget each is drawn with. They are drawn into the scene after the glyph pass, so they bloom and grade with everything else.

Source

pub fn update_render_config(&mut self, config: &RenderConfig)

Update the render config used by the PostFx pipeline this frame. Call from ProofEngine::run() whenever the config changes.

Source

pub fn poll_events(&mut self, input: &mut InputState) -> bool

Poll window events and update InputState. Returns false on quit.

Source

pub fn render(&mut self, scene: &Scene, camera: &ProofCamera)

Collect all visible glyphs + particles from the scene, upload to the GPU, and execute the full multi-pass rendering pipeline.

Source

pub fn render_frame( &mut self, scene: &Scene, camera: &ProofCamera, ui: Option<&UiLayer>, fx: &ScreenFx, )

Render the scene, the UI layer’s world pass, and post-processing.

With ui given, its world-pass commands are painted into the HDR scene buffer after the 3D glyphs and before post-processing, so they bloom, grade and shake with the scene; its HUD-pass commands are built here and painted by render_ui afterwards. fx supplies the frame’s shockwaves, flash and light-shaft source.

Source

pub fn render_ui(&mut self, ui: &UiLayer)

Paint a screen-space UI layer on top of the finished frame.

Runs after post-processing and writes straight to the default framebuffer, so panels and text are not smeared by bloom, chromatic aberration or grain — a HUD has to stay readable.

Call once per frame, after render, before swap.

Source

pub fn swap(&mut self) -> bool

Swap back buffer to screen. Returns false on window close.

Source

pub fn gl(&self) -> &Context

Get a reference to the raw glow OpenGL context. Used by egui-glow to render UI on top of the scene.

Source

pub fn window(&self) -> &Window

Get the window reference (for egui-winit event processing).

Source

pub fn render_size(&self) -> (u32, u32)

The framebuffer size the viewport is actually set to.

This is what screen-space passes must project against. On a scaled display it can differ from the window’s logical size, and projecting against the wrong one magnifies the whole UI.

Source

pub fn read_frame(&self) -> (u32, u32, Vec<u8>)

Read the frame that is currently on screen back off the GPU.

Returns (width, height, rgba) with the bottom row first, which is how OpenGL stores it. Call this after everything for the frame has been drawn and before the buffers are swapped, or the read comes back empty.

Source

pub fn window_size(&self) -> (u32, u32)

Get the current window size.

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> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<S> FromSample<S> for S

Source§

fn from_sample_(s: S) -> S

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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, U> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

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

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more