Skip to main content

Renderer

Struct Renderer 

Source
pub struct Renderer {
    pub renderer_resources: RendererResources,
    pub ui_renderer: UiRenderer,
    pub debug_renderer: DebugRenderer,
    pub screen_space_debug_renderer: DebugRenderer,
    pub scene_data_map: FxHashMap<Handle<Scene>, SceneRenderData>,
    pub texture_cache: TextureCache,
    pub uniform_buffer_cache: UniformBufferCache,
    pub ui_frame_buffers: FxHashMap<u64, GpuFrameBuffer>,
    pub dynamic_surface_cache: DynamicSurfaceCache,
    pub visibility_cache: VisibilityCache,
    pub server: SharedGraphicsServer,
    /* private fields */
}
Expand description

See module docs.

Fields§

§renderer_resources: RendererResources

A set of textures of certain kinds that could be used as a stub in cases when you don’t have your own texture of this kind.

§ui_renderer: UiRenderer

User interface renderer.

§debug_renderer: DebugRenderer

Debug renderer instance can be used for debugging purposes

§screen_space_debug_renderer: DebugRenderer

Screen space debug renderer instance can be used for debugging purposes to draw lines directly on screen. It is useful to debug some rendering algorithms.

§scene_data_map: FxHashMap<Handle<Scene>, SceneRenderData>

A set of associated data for each scene that was rendered.

§texture_cache: TextureCache

Texture cache with GPU textures.

§uniform_buffer_cache: UniformBufferCache

Uniform buffer cache.

§ui_frame_buffers: FxHashMap<u64, GpuFrameBuffer>

TextureId -> FrameBuffer mapping. This mapping is used for temporal frame buffers like ones used to render UI instances.

§dynamic_surface_cache: DynamicSurfaceCache

Dynamic surface cache. See DynamicSurfaceCache docs for more info.

§visibility_cache: VisibilityCache

Visibility cache based on occlusion query.

§server: SharedGraphicsServer

Graphics server.

Implementations§

Source§

impl Renderer

Source

pub fn new( server: Rc<dyn GraphicsServer>, frame_size: (u32, u32), resource_manager: &ResourceManager, ) -> Result<Self, EngineError>

Creates a new renderer with the given graphics server.

Source

pub fn add_render_pass(&mut self, pass: Rc<RefCell<dyn SceneRenderPass>>)

Adds a custom render pass.

Source

pub fn remove_render_pass(&mut self, pass: Rc<RefCell<dyn SceneRenderPass>>)

Removes specified render pass.

Source

pub fn render_passes(&self) -> &[Rc<RefCell<dyn SceneRenderPass>>]

Returns a slice with every registered render passes.

Source

pub fn clear_render_passes(&mut self)

Removes all render passes from the renderer.

Source

pub fn get_statistics(&self) -> Statistics

Returns statistics for last frame.

Source

pub fn unload_texture(&mut self, texture: &TextureResource)

Unloads texture from GPU memory.

Source

pub fn set_backbuffer_clear_color(&mut self, color: Color)

Sets color which will be used to fill screen when there is nothing to render.

Source

pub fn graphics_server(&self) -> &dyn GraphicsServer

Returns a reference to current graphics server.

Source

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

Returns current (width, height) pair of back buffer size.

Source

pub fn get_frame_bounds(&self) -> Vector2<f32>

Returns current bounds of back buffer.

Source

pub fn set_quality_settings( &mut self, settings: &QualitySettings, ) -> Result<(), FrameworkError>

Sets new quality settings for renderer. Never call this method in a loop, otherwise you may get significant lags. Always check if current quality setting differs from new!

Source

pub fn get_quality_settings(&self) -> QualitySettings

Returns current quality settings.

Source

pub fn flush(&mut self)

Removes all cached GPU data, forces renderer to re-upload data to GPU. Do not call this method until you absolutely need! It may cause significant performance lag!

Source

pub fn render_ui( &mut self, render_info: UiRenderInfo<'_>, ) -> Result<(), FrameworkError>

Renders the given UI into specified render target. This method is especially useful if you need to have off-screen UIs. This method will render the specified UI to the given render target. If the render target is not specified (set to None), the UI will be rendered directly on screen. Keep in mind that ideally, the resolution of the render target should match the screen size of the UI. Otherwise, the rendered image will have some sort of aliasing issues.

Source

pub fn update_caches(&mut self, resource_manager: &ResourceManager, dt: f32)

Update caches - this will remove timed out resources.

Normally, this is called from Engine::update(). You should only call this manually if you don’t use that method.

Source

pub fn render_scene( &mut self, scene_handle: Handle<Scene>, scene: &Scene, elapsed_time: f32, dt: f32, resource_manager: &ResourceManager, ) -> Result<&SceneRenderData, FrameworkError>

Unconditionally renders a scene and returns a reference to a RenderDataContainer instance that contains rendered data (including intermediate data, such as G-Buffer content, etc.).

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

Source§

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

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

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

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

Source§

fn into_sample(self) -> T

Source§

impl<T, U> ObjectOrVariant<T> for U

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

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

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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