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: RendererResourcesA 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: UiRendererUser interface renderer.
debug_renderer: DebugRendererDebug renderer instance can be used for debugging purposes
screen_space_debug_renderer: DebugRendererScreen 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: TextureCacheTexture cache with GPU textures.
uniform_buffer_cache: UniformBufferCacheUniform 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: DynamicSurfaceCacheDynamic surface cache. See DynamicSurfaceCache docs for more info.
visibility_cache: VisibilityCacheVisibility cache based on occlusion query.
server: SharedGraphicsServerGraphics server.
Implementations§
Source§impl Renderer
impl Renderer
Sourcepub fn new(
server: Rc<dyn GraphicsServer>,
frame_size: (u32, u32),
resource_manager: &ResourceManager,
) -> Result<Self, EngineError>
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.
Sourcepub fn add_render_pass(&mut self, pass: Rc<RefCell<dyn SceneRenderPass>>)
pub fn add_render_pass(&mut self, pass: Rc<RefCell<dyn SceneRenderPass>>)
Adds a custom render pass.
Sourcepub fn remove_render_pass(&mut self, pass: Rc<RefCell<dyn SceneRenderPass>>)
pub fn remove_render_pass(&mut self, pass: Rc<RefCell<dyn SceneRenderPass>>)
Removes specified render pass.
Sourcepub fn render_passes(&self) -> &[Rc<RefCell<dyn SceneRenderPass>>]
pub fn render_passes(&self) -> &[Rc<RefCell<dyn SceneRenderPass>>]
Returns a slice with every registered render passes.
Sourcepub fn clear_render_passes(&mut self)
pub fn clear_render_passes(&mut self)
Removes all render passes from the renderer.
Sourcepub fn get_statistics(&self) -> Statistics
pub fn get_statistics(&self) -> Statistics
Returns statistics for last frame.
Sourcepub fn unload_texture(&mut self, texture: &TextureResource)
pub fn unload_texture(&mut self, texture: &TextureResource)
Unloads texture from GPU memory.
Sourcepub fn set_backbuffer_clear_color(&mut self, color: Color)
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.
Sourcepub fn graphics_server(&self) -> &dyn GraphicsServer
pub fn graphics_server(&self) -> &dyn GraphicsServer
Returns a reference to current graphics server.
Sourcepub fn get_frame_size(&self) -> (u32, u32)
pub fn get_frame_size(&self) -> (u32, u32)
Returns current (width, height) pair of back buffer size.
Sourcepub fn get_frame_bounds(&self) -> Vector2<f32>
pub fn get_frame_bounds(&self) -> Vector2<f32>
Returns current bounds of back buffer.
Sourcepub fn set_quality_settings(
&mut self,
settings: &QualitySettings,
) -> Result<(), FrameworkError>
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!
Sourcepub fn get_quality_settings(&self) -> QualitySettings
pub fn get_quality_settings(&self) -> QualitySettings
Returns current quality settings.
Sourcepub fn flush(&mut self)
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!
Sourcepub fn render_ui(
&mut self,
render_info: UiRenderInfo<'_>,
) -> Result<(), FrameworkError>
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.
Sourcepub fn update_caches(&mut self, resource_manager: &ResourceManager, dt: f32)
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.
Sourcepub fn render_scene(
&mut self,
scene_handle: Handle<Scene>,
scene: &Scene,
elapsed_time: f32,
dt: f32,
resource_manager: &ResourceManager,
) -> Result<&SceneRenderData, FrameworkError>
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§
impl !Freeze for Renderer
impl !RefUnwindSafe for Renderer
impl !Send for Renderer
impl !Sync for Renderer
impl Unpin for Renderer
impl !UnwindSafe for Renderer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&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 Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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 moreSource§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
Source§impl<T, U> ObjectOrVariant<T> for Uwhere
PhantomData<U>: ObjectOrVariantHelper<T, U>,
impl<T, U> ObjectOrVariant<T> for Uwhere
PhantomData<U>: ObjectOrVariantHelper<T, U>,
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.