refactor: move renderer gl/dx files to private section
Some checks reported errors
continuous-integration/drone/push Build was killed
Some checks reported errors
continuous-integration/drone/push Build was killed
This commit is contained in:
parent
65f0d3bb73
commit
d83e269432
26 changed files with 67 additions and 56 deletions
|
@ -4,12 +4,13 @@
|
||||||
#include <renderer/blender.hpp>
|
#include <renderer/blender.hpp>
|
||||||
#include <renderer/buffers.hpp>
|
#include <renderer/buffers.hpp>
|
||||||
#include <renderer/framebuffer.hpp>
|
#include <renderer/framebuffer.hpp>
|
||||||
|
#include <renderer/programs/quad.hpp>
|
||||||
|
#include <renderer/programs/texture.hpp>
|
||||||
|
#include <renderer/programs/tinted_texture.hpp>
|
||||||
#include <renderer/render_command.hpp>
|
#include <renderer/render_command.hpp>
|
||||||
#include <renderer/renderer.hpp>
|
#include <renderer/renderer.hpp>
|
||||||
#include <renderer/shader.hpp>
|
#include <renderer/shader.hpp>
|
||||||
#include <renderer/texture.hpp>
|
#include <renderer/texture.hpp>
|
||||||
#include <span>
|
|
||||||
#include <utility>
|
|
||||||
|
|
||||||
namespace lt {
|
namespace lt {
|
||||||
|
|
||||||
|
@ -21,20 +22,26 @@ Renderer::Renderer(
|
||||||
CreateInfo create_info
|
CreateInfo create_info
|
||||||
)
|
)
|
||||||
: m_quad_renderer(
|
: m_quad_renderer(
|
||||||
|
create_scope<QuadRendererProgram>(
|
||||||
LT_MAX_QUAD_RENDERER_VERTICES,
|
LT_MAX_QUAD_RENDERER_VERTICES,
|
||||||
shared_context,
|
shared_context,
|
||||||
std::move(create_info.quad_renderer_shader)
|
std::move(create_info.quad_renderer_shader)
|
||||||
)
|
)
|
||||||
|
)
|
||||||
, m_texture_renderer(
|
, m_texture_renderer(
|
||||||
|
create_scope<TextureRendererProgram>(
|
||||||
LT_MAX_TEXTURE_RENDERER_VERTICES,
|
LT_MAX_TEXTURE_RENDERER_VERTICES,
|
||||||
shared_context,
|
shared_context,
|
||||||
std::move(create_info.texture_renderer_shader)
|
std::move(create_info.texture_renderer_shader)
|
||||||
)
|
)
|
||||||
|
)
|
||||||
, m_tinted_texture_renderer(
|
, m_tinted_texture_renderer(
|
||||||
|
create_scope<TintedTextureRendererProgram>(
|
||||||
LT_MAX_TINTED_TEXTURE_RENDERER_VERTICES,
|
LT_MAX_TINTED_TEXTURE_RENDERER_VERTICES,
|
||||||
shared_context,
|
shared_context,
|
||||||
std::move(create_info.tinted_texture_renderer_shader)
|
std::move(create_info.tinted_texture_renderer_shader)
|
||||||
)
|
)
|
||||||
|
)
|
||||||
, m_view_projection_buffer(nullptr)
|
, m_view_projection_buffer(nullptr)
|
||||||
, m_render_command(nullptr)
|
, m_render_command(nullptr)
|
||||||
, m_blender(nullptr)
|
, m_blender(nullptr)
|
||||||
|
@ -55,6 +62,10 @@ Renderer::Renderer(
|
||||||
m_blender->enable(BlendFactor::SRC_ALPHA, BlendFactor::INVERSE_SRC_ALPHA);
|
m_blender->enable(BlendFactor::SRC_ALPHA, BlendFactor::INVERSE_SRC_ALPHA);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Renderer::~Renderer() // NOLINT
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
auto Renderer::create(
|
auto Renderer::create(
|
||||||
GLFWwindow *windowHandle,
|
GLFWwindow *windowHandle,
|
||||||
Ref<SharedContext> sharedContext,
|
Ref<SharedContext> sharedContext,
|
||||||
|
@ -114,7 +125,7 @@ void Renderer::draw_quad_impl(
|
||||||
//==================== DRAW_QUAD_TINT ====================//
|
//==================== DRAW_QUAD_TINT ====================//
|
||||||
void Renderer::draw_quad_impl(const math::mat4 &transform, const math::vec4 &tint)
|
void Renderer::draw_quad_impl(const math::mat4 &transform, const math::vec4 &tint)
|
||||||
{
|
{
|
||||||
auto map = std::span<QuadRendererProgram::QuadVertexData> { m_quad_renderer.get_map_current(),
|
auto map = std::span<QuadRendererProgram::QuadVertexData> { m_quad_renderer->get_map_current(),
|
||||||
4 };
|
4 };
|
||||||
|
|
||||||
// top left
|
// top left
|
||||||
|
@ -134,7 +145,7 @@ void Renderer::draw_quad_impl(const math::mat4 &transform, const math::vec4 &tin
|
||||||
map[3].tint = tint;
|
map[3].tint = tint;
|
||||||
|
|
||||||
// advance
|
// advance
|
||||||
if (!m_quad_renderer.advance())
|
if (!m_quad_renderer->advance())
|
||||||
{
|
{
|
||||||
log_wrn("Exceeded LT_MAX_QUAD_RENDERER_VERTICES: {}", LT_MAX_QUAD_RENDERER_VERTICES);
|
log_wrn("Exceeded LT_MAX_QUAD_RENDERER_VERTICES: {}", LT_MAX_QUAD_RENDERER_VERTICES);
|
||||||
flush_scene();
|
flush_scene();
|
||||||
|
@ -147,7 +158,7 @@ void Renderer::draw_quad_impl(const math::mat4 &transform, const Ref<Texture> &t
|
||||||
|
|
||||||
texture->bind();
|
texture->bind();
|
||||||
auto map = std::span<TextureRendererProgram::TextureVertexData> {
|
auto map = std::span<TextureRendererProgram::TextureVertexData> {
|
||||||
m_texture_renderer.get_map_current(),
|
m_texture_renderer->get_map_current(),
|
||||||
4
|
4
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -168,7 +179,7 @@ void Renderer::draw_quad_impl(const math::mat4 &transform, const Ref<Texture> &t
|
||||||
map[3].texcoord = { 0.0f, 1.0f };
|
map[3].texcoord = { 0.0f, 1.0f };
|
||||||
|
|
||||||
// advance
|
// advance
|
||||||
if (!m_texture_renderer.advance())
|
if (!m_texture_renderer->advance())
|
||||||
{
|
{
|
||||||
log_wrn("Exceeded LT_MAX_TEXTURE_RENDERER_VERTICES: {}", LT_MAX_TEXTURE_RENDERER_VERTICES);
|
log_wrn("Exceeded LT_MAX_TEXTURE_RENDERER_VERTICES: {}", LT_MAX_TEXTURE_RENDERER_VERTICES);
|
||||||
flush_scene();
|
flush_scene();
|
||||||
|
@ -185,7 +196,7 @@ void Renderer::draw_quad_impl(
|
||||||
|
|
||||||
texture->bind();
|
texture->bind();
|
||||||
auto map = std::span<TintedTextureRendererProgram::TintedTextureVertexData> {
|
auto map = std::span<TintedTextureRendererProgram::TintedTextureVertexData> {
|
||||||
m_tinted_texture_renderer.get_map_current(),
|
m_tinted_texture_renderer->get_map_current(),
|
||||||
4
|
4
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -209,7 +220,7 @@ void Renderer::draw_quad_impl(
|
||||||
map[3].tint = tint;
|
map[3].tint = tint;
|
||||||
map[3].texcoord = { 0.0f, 1.0f };
|
map[3].texcoord = { 0.0f, 1.0f };
|
||||||
|
|
||||||
if (!m_tinted_texture_renderer.advance())
|
if (!m_tinted_texture_renderer->advance())
|
||||||
{
|
{
|
||||||
log_wrn("Exceeded LT_MAX_TEXTURE_RENDERER_VERTICES: {}", LT_MAX_TEXTURE_RENDERER_VERTICES);
|
log_wrn("Exceeded LT_MAX_TEXTURE_RENDERER_VERTICES: {}", LT_MAX_TEXTURE_RENDERER_VERTICES);
|
||||||
flush_scene();
|
flush_scene();
|
||||||
|
@ -256,66 +267,66 @@ void Renderer::begin_scene_impl(
|
||||||
m_view_projection_buffer->un_map();
|
m_view_projection_buffer->un_map();
|
||||||
|
|
||||||
// map renderers
|
// map renderers
|
||||||
m_quad_renderer.map();
|
m_quad_renderer->map();
|
||||||
m_texture_renderer.map();
|
m_texture_renderer->map();
|
||||||
m_tinted_texture_renderer.map();
|
m_tinted_texture_renderer->map();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::flush_scene()
|
void Renderer::flush_scene()
|
||||||
{
|
{
|
||||||
/* tinted texture renderer */
|
/* tinted texture renderer */
|
||||||
m_tinted_texture_renderer.un_map();
|
m_tinted_texture_renderer->un_map();
|
||||||
if (m_tinted_texture_renderer.get_quad_count())
|
if (m_tinted_texture_renderer->get_quad_count())
|
||||||
{
|
{
|
||||||
m_tinted_texture_renderer.bind();
|
m_tinted_texture_renderer->bind();
|
||||||
m_render_command->draw_indexed(m_tinted_texture_renderer.get_quad_count() * 6u);
|
m_render_command->draw_indexed(m_tinted_texture_renderer->get_quad_count() * 6u);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* quad renderer */
|
/* quad renderer */
|
||||||
m_quad_renderer.un_map();
|
m_quad_renderer->un_map();
|
||||||
if (m_quad_renderer.get_quad_count())
|
if (m_quad_renderer->get_quad_count())
|
||||||
{
|
{
|
||||||
m_quad_renderer.bind();
|
m_quad_renderer->bind();
|
||||||
m_render_command->draw_indexed(m_quad_renderer.get_quad_count() * 6u);
|
m_render_command->draw_indexed(m_quad_renderer->get_quad_count() * 6u);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* texture renderer */
|
/* texture renderer */
|
||||||
m_texture_renderer.un_map();
|
m_texture_renderer->un_map();
|
||||||
if (m_texture_renderer.get_quad_count())
|
if (m_texture_renderer->get_quad_count())
|
||||||
{
|
{
|
||||||
m_texture_renderer.bind();
|
m_texture_renderer->bind();
|
||||||
m_render_command->draw_indexed(m_texture_renderer.get_quad_count() * 6u);
|
m_render_command->draw_indexed(m_texture_renderer->get_quad_count() * 6u);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_quad_renderer.map();
|
m_quad_renderer->map();
|
||||||
m_texture_renderer.map();
|
m_texture_renderer->map();
|
||||||
m_tinted_texture_renderer.map();
|
m_tinted_texture_renderer->map();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::end_scene_impl()
|
void Renderer::end_scene_impl()
|
||||||
{
|
{
|
||||||
/* tinted texture renderer */
|
/* tinted texture renderer */
|
||||||
m_tinted_texture_renderer.un_map();
|
m_tinted_texture_renderer->un_map();
|
||||||
if (m_tinted_texture_renderer.get_quad_count())
|
if (m_tinted_texture_renderer->get_quad_count())
|
||||||
{
|
{
|
||||||
m_tinted_texture_renderer.bind();
|
m_tinted_texture_renderer->bind();
|
||||||
m_render_command->draw_indexed(m_tinted_texture_renderer.get_quad_count() * 6u);
|
m_render_command->draw_indexed(m_tinted_texture_renderer->get_quad_count() * 6u);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* quad renderer */
|
/* quad renderer */
|
||||||
m_quad_renderer.un_map();
|
m_quad_renderer->un_map();
|
||||||
if (m_quad_renderer.get_quad_count())
|
if (m_quad_renderer->get_quad_count())
|
||||||
{
|
{
|
||||||
m_quad_renderer.bind();
|
m_quad_renderer->bind();
|
||||||
m_render_command->draw_indexed(m_quad_renderer.get_quad_count() * 6u);
|
m_render_command->draw_indexed(m_quad_renderer->get_quad_count() * 6u);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* texture renderer */
|
/* texture renderer */
|
||||||
m_texture_renderer.un_map();
|
m_texture_renderer->un_map();
|
||||||
if (m_texture_renderer.get_quad_count())
|
if (m_texture_renderer->get_quad_count())
|
||||||
{
|
{
|
||||||
m_texture_renderer.bind();
|
m_texture_renderer->bind();
|
||||||
m_render_command->draw_indexed(m_texture_renderer.get_quad_count() * 6u);
|
m_render_command->draw_indexed(m_texture_renderer->get_quad_count() * 6u);
|
||||||
}
|
}
|
||||||
|
|
||||||
// reset frame buffer
|
// reset frame buffer
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
//
|
|
||||||
#include <math/mat4.hpp>
|
#include <math/mat4.hpp>
|
||||||
#include <math/vec3.hpp>
|
#include <math/vec3.hpp>
|
||||||
#include <math/vec4.hpp>
|
#include <math/vec4.hpp>
|
||||||
|
@ -8,11 +7,6 @@
|
||||||
#include <renderer/buffers.hpp>
|
#include <renderer/buffers.hpp>
|
||||||
#include <renderer/render_command.hpp>
|
#include <renderer/render_command.hpp>
|
||||||
#include <renderer/renderer.hpp>
|
#include <renderer/renderer.hpp>
|
||||||
///
|
|
||||||
|
|
||||||
#include <renderer/programs/quad.hpp>
|
|
||||||
#include <renderer/programs/texture.hpp>
|
|
||||||
#include <renderer/programs/tinted_texture.hpp>
|
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
#define LT_MAX_QUAD_RENDERER_VERTICES (1028u * 4u)
|
#define LT_MAX_QUAD_RENDERER_VERTICES (1028u * 4u)
|
||||||
|
@ -32,6 +26,10 @@ class Camera;
|
||||||
class WindowResizedEvent;
|
class WindowResizedEvent;
|
||||||
class Shader;
|
class Shader;
|
||||||
|
|
||||||
|
class TintedTextureRendererProgram;
|
||||||
|
class QuadRendererProgram;
|
||||||
|
class TextureRendererProgram;
|
||||||
|
|
||||||
class Renderer
|
class Renderer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -107,6 +105,8 @@ public:
|
||||||
s_context->end_scene_impl();
|
s_context->end_scene_impl();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
~Renderer();
|
||||||
|
|
||||||
void on_window_resize(const WindowResizedEvent &event);
|
void on_window_resize(const WindowResizedEvent &event);
|
||||||
|
|
||||||
void begin_frame();
|
void begin_frame();
|
||||||
|
@ -116,11 +116,11 @@ public:
|
||||||
private:
|
private:
|
||||||
static Renderer *s_context;
|
static Renderer *s_context;
|
||||||
|
|
||||||
QuadRendererProgram m_quad_renderer;
|
Scope<QuadRendererProgram> m_quad_renderer;
|
||||||
|
|
||||||
TextureRendererProgram m_texture_renderer;
|
Scope<TextureRendererProgram> m_texture_renderer;
|
||||||
|
|
||||||
TintedTextureRendererProgram m_tinted_texture_renderer;
|
Scope<TintedTextureRendererProgram> m_tinted_texture_renderer;
|
||||||
|
|
||||||
Scope<ConstantBuffer> m_view_projection_buffer;
|
Scope<ConstantBuffer> m_view_projection_buffer;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue