Loading...
Searching...
No Matches
hellfire::Renderer Class Reference

#include <Renderer.h>

Collaboration diagram for hellfire::Renderer:

Public Member Functions

 Renderer ()
 
 ~Renderer ()=default
 
void init ()
 
void render (Scene &scene, const Entity *camera_override)
 
void render_frame (Scene &scene, CameraComponent &camera)
 
void reset_framebuffer_data ()
 
void clear_draw_list ()
 
void begin_frame ()
 
void end_frame ()
 
Shaderget_fallback_shader () const
 
void create_main_framebuffer (uint32_t width, uint32_t height)
 
void set_render_to_framebuffer (bool enable)
 
uint32_t get_main_output_texture () const
 
uint32_t get_object_id_texture () const
 
void resize_main_framebuffer (uint32_t width, uint32_t height)
 
void set_fallback_shader (Shader &fallback_shader)
 
Shaderget_shader_for_material (const std::shared_ptr< Material > &material)
 
uint32_t compile_material_shader (std::shared_ptr< Material > material)
 
ShaderManagerget_shader_manager ()
 
ShaderRegistryget_shader_registry ()
 
ShadowSettingsget_shadow_settings ()
 

Private Types

enum  RendererFboId : uint32_t { SCREEN_TEXTURE_1 = 0 , SCREEN_TEXTURE_2 = 1 , SHADOW_MAP = 3 }
 

Private Member Functions

void collect_render_commands_recursive (EntityID entity_id, const glm::vec3 &camera_pos)
 
void ensure_shadow_map (Entity *light_entity, const LightComponent &light)
 
void store_lights_in_context (const std::vector< Entity * > &light_entities, CameraComponent &camera)
 
void collect_lights_from_scene (Scene &scene, CameraComponent &camera)
 
void collect_geometry_from_scene (Scene &scene, const glm::vec3 camera_pos)
 
void execute_main_pass (Scene &scene, CameraComponent &camera)
 
glm::mat4 calculate_light_view_proj (Entity *light_entity, LightComponent *light, const CameraComponent &camera)
 
void draw_shadow_geometry (const glm::mat4 &light_view_proj)
 
void execute_shadow_passes (Scene &scene, CameraComponent &camera)
 
void execute_geometry_pass (const glm::mat4 &view, const glm::mat4 &proj)
 
void execute_skybox_pass (Scene *scene, const glm::mat4 &view, const glm::mat4 &projection, CameraComponent *camera_comp) const
 
void execute_transparency_pass (const glm::mat4 &view, const glm::mat4 &proj)
 
void draw_render_command (const RenderCommand &cmd, const glm::mat4 &view, const glm::mat4 &projection)
 
void draw_instanced_command (const InstancedRenderCommand &cmd, const glm::mat4 &view, const glm::mat4 &projection)
 

Private Attributes

ShaderManager shader_manager_
 
ShaderRegistry shader_registry_
 
Shaderfallback_shader_
 
uint32_t fallback_program_
 
std::unique_ptr< OGLRendererContextcontext_
 
Scenescene_
 
std::unique_ptr< Framebufferscene_framebuffers_ [2]
 
int current_fb_index_ = 0
 
bool render_to_framebuffer_
 
uint32_t framebuffer_width_
 
uint32_t framebuffer_height_
 
std::vector< RenderCommandopaque_objects_
 
std::vector< RenderCommandtransparent_objects_
 
std::vector< InstancedRenderCommandopaque_instanced_objects_
 
std::vector< InstancedRenderCommandtransparent_instanced_objects_
 
std::unordered_map< Entity *, ShadowMapDatashadow_maps_
 
ShadowSettings shadow_settings_
 
SkyboxRenderer skybox_renderer_
 
std::shared_ptr< Materialshadow_material_
 

Detailed Description

Definition at line 61 of file Renderer.h.

Member Enumeration Documentation

◆ RendererFboId

enum hellfire::Renderer::RendererFboId : uint32_t
private
Enumerator
SCREEN_TEXTURE_1 
SCREEN_TEXTURE_2 
SHADOW_MAP 

Definition at line 107 of file Renderer.h.

Constructor & Destructor Documentation

◆ Renderer()

hellfire::Renderer::Renderer ( )

Definition at line 19 of file Renderer.cpp.

◆ ~Renderer()

hellfire::Renderer::~Renderer ( )
default

Member Function Documentation

◆ begin_frame()

void hellfire::Renderer::begin_frame ( )

Definition at line 80 of file Renderer.cpp.

◆ calculate_light_view_proj()

glm::mat4 hellfire::Renderer::calculate_light_view_proj ( Entity light_entity,
LightComponent light,
const CameraComponent camera 
)
private

Definition at line 422 of file Renderer.cpp.

◆ clear_draw_list()

void hellfire::Renderer::clear_draw_list ( )

Definition at line 73 of file Renderer.cpp.

◆ collect_geometry_from_scene()

void hellfire::Renderer::collect_geometry_from_scene ( Scene scene,
const glm::vec3  camera_pos 
)
private

Definition at line 140 of file Renderer.cpp.

◆ collect_lights_from_scene()

void hellfire::Renderer::collect_lights_from_scene ( Scene scene,
CameraComponent camera 
)
private

Definition at line 312 of file Renderer.cpp.

◆ collect_render_commands_recursive()

void hellfire::Renderer::collect_render_commands_recursive ( EntityID  entity_id,
const glm::vec3 &  camera_pos 
)
private

Definition at line 146 of file Renderer.cpp.

◆ compile_material_shader()

uint32_t hellfire::Renderer::compile_material_shader ( std::shared_ptr< Material material)

Definition at line 646 of file Renderer.cpp.

◆ create_main_framebuffer()

void hellfire::Renderer::create_main_framebuffer ( uint32_t  width,
uint32_t  height 
)

Definition at line 528 of file Renderer.cpp.

◆ draw_instanced_command()

void hellfire::Renderer::draw_instanced_command ( const InstancedRenderCommand cmd,
const glm::mat4 &  view,
const glm::mat4 &  projection 
)
private

Definition at line 268 of file Renderer.cpp.

◆ draw_render_command()

void hellfire::Renderer::draw_render_command ( const RenderCommand cmd,
const glm::mat4 &  view,
const glm::mat4 &  projection 
)
private

Definition at line 221 of file Renderer.cpp.

◆ draw_shadow_geometry()

void hellfire::Renderer::draw_shadow_geometry ( const glm::mat4 &  light_view_proj)
private

Definition at line 399 of file Renderer.cpp.

◆ end_frame()

void hellfire::Renderer::end_frame ( )

Definition at line 90 of file Renderer.cpp.

◆ ensure_shadow_map()

void hellfire::Renderer::ensure_shadow_map ( Entity light_entity,
const LightComponent light 
)
private

Definition at line 200 of file Renderer.cpp.

◆ execute_geometry_pass()

void hellfire::Renderer::execute_geometry_pass ( const glm::mat4 &  view,
const glm::mat4 &  proj 
)
private

Definition at line 453 of file Renderer.cpp.

◆ execute_main_pass()

void hellfire::Renderer::execute_main_pass ( Scene scene,
CameraComponent camera 
)
private

Definition at line 323 of file Renderer.cpp.

◆ execute_shadow_passes()

void hellfire::Renderer::execute_shadow_passes ( Scene scene,
CameraComponent camera 
)
private

Definition at line 343 of file Renderer.cpp.

◆ execute_skybox_pass()

void hellfire::Renderer::execute_skybox_pass ( Scene scene,
const glm::mat4 &  view,
const glm::mat4 &  projection,
CameraComponent camera_comp 
) const
private

Definition at line 300 of file Renderer.cpp.

◆ execute_transparency_pass()

void hellfire::Renderer::execute_transparency_pass ( const glm::mat4 &  view,
const glm::mat4 &  proj 
)
private

Definition at line 481 of file Renderer.cpp.

◆ get_fallback_shader()

Shader * hellfire::Renderer::get_fallback_shader ( ) const
inline

Definition at line 81 of file Renderer.h.

◆ get_main_output_texture()

uint32_t hellfire::Renderer::get_main_output_texture ( ) const

Definition at line 565 of file Renderer.cpp.

◆ get_object_id_texture()

uint32_t hellfire::Renderer::get_object_id_texture ( ) const

Definition at line 573 of file Renderer.cpp.

◆ get_shader_for_material()

Shader & hellfire::Renderer::get_shader_for_material ( const std::shared_ptr< Material > &  material)

Definition at line 619 of file Renderer.cpp.

◆ get_shader_manager()

ShaderManager & hellfire::Renderer::get_shader_manager ( )
inline

Definition at line 102 of file Renderer.h.

◆ get_shader_registry()

ShaderRegistry & hellfire::Renderer::get_shader_registry ( )
inline

Definition at line 103 of file Renderer.h.

◆ get_shadow_settings()

ShadowSettings & hellfire::Renderer::get_shadow_settings ( )
inline

Definition at line 104 of file Renderer.h.

◆ init()

void hellfire::Renderer::init ( )

Definition at line 26 of file Renderer.cpp.

◆ render()

void hellfire::Renderer::render ( Scene scene,
const Entity camera_override = nullptr 
)

Definition at line 47 of file Renderer.cpp.

◆ render_frame()

void hellfire::Renderer::render_frame ( Scene scene,
CameraComponent camera 
)

Definition at line 581 of file Renderer.cpp.

◆ reset_framebuffer_data()

void hellfire::Renderer::reset_framebuffer_data ( )

Definition at line 68 of file Renderer.cpp.

◆ resize_main_framebuffer()

void hellfire::Renderer::resize_main_framebuffer ( uint32_t  width,
uint32_t  height 
)

Definition at line 553 of file Renderer.cpp.

◆ set_fallback_shader()

void hellfire::Renderer::set_fallback_shader ( Shader fallback_shader)

Definition at line 611 of file Renderer.cpp.

◆ set_render_to_framebuffer()

void hellfire::Renderer::set_render_to_framebuffer ( bool  enable)
inline

Definition at line 88 of file Renderer.h.

◆ store_lights_in_context()

void hellfire::Renderer::store_lights_in_context ( const std::vector< Entity * > &  light_entities,
CameraComponent camera 
)
private

Definition at line 94 of file Renderer.cpp.

Member Data Documentation

◆ context_

std::unique_ptr<OGLRendererContext> hellfire::Renderer::context_
private

Definition at line 118 of file Renderer.h.

◆ current_fb_index_

int hellfire::Renderer::current_fb_index_ = 0
private

Definition at line 122 of file Renderer.h.

◆ fallback_program_

uint32_t hellfire::Renderer::fallback_program_
private

Definition at line 117 of file Renderer.h.

◆ fallback_shader_

Shader* hellfire::Renderer::fallback_shader_
private

Definition at line 116 of file Renderer.h.

◆ framebuffer_height_

uint32_t hellfire::Renderer::framebuffer_height_
private

Definition at line 126 of file Renderer.h.

◆ framebuffer_width_

uint32_t hellfire::Renderer::framebuffer_width_
private

Definition at line 125 of file Renderer.h.

◆ opaque_instanced_objects_

std::vector<InstancedRenderCommand> hellfire::Renderer::opaque_instanced_objects_
private

Definition at line 131 of file Renderer.h.

◆ opaque_objects_

std::vector<RenderCommand> hellfire::Renderer::opaque_objects_
private

Definition at line 129 of file Renderer.h.

◆ render_to_framebuffer_

bool hellfire::Renderer::render_to_framebuffer_
private

Definition at line 124 of file Renderer.h.

◆ scene_

Scene* hellfire::Renderer::scene_
private

Definition at line 119 of file Renderer.h.

◆ scene_framebuffers_

std::unique_ptr<Framebuffer> hellfire::Renderer::scene_framebuffers_[2]
private

Definition at line 121 of file Renderer.h.

◆ shader_manager_

ShaderManager hellfire::Renderer::shader_manager_
private

Definition at line 113 of file Renderer.h.

◆ shader_registry_

ShaderRegistry hellfire::Renderer::shader_registry_
private

Definition at line 114 of file Renderer.h.

◆ shadow_maps_

std::unordered_map<Entity *, ShadowMapData> hellfire::Renderer::shadow_maps_
private

Definition at line 133 of file Renderer.h.

◆ shadow_material_

std::shared_ptr<Material> hellfire::Renderer::shadow_material_
private

Definition at line 137 of file Renderer.h.

◆ shadow_settings_

ShadowSettings hellfire::Renderer::shadow_settings_
private

Definition at line 134 of file Renderer.h.

◆ skybox_renderer_

SkyboxRenderer hellfire::Renderer::skybox_renderer_
private

Definition at line 136 of file Renderer.h.

◆ transparent_instanced_objects_

std::vector<InstancedRenderCommand> hellfire::Renderer::transparent_instanced_objects_
private

Definition at line 132 of file Renderer.h.

◆ transparent_objects_

std::vector<RenderCommand> hellfire::Renderer::transparent_objects_
private

Definition at line 130 of file Renderer.h.


The documentation for this class was generated from the following files: