@@ -78,9 +78,9 @@ public: | |||||
m_fbo->Bind(); | m_fbo->Bind(); | ||||
{ | { | ||||
RenderContext rc(scene.get_renderer()); | render_context rc(scene.get_renderer()); | ||||
rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | rc.clear_color(vec4(0.f, 0.f, 0.f, 1.f)); | ||||
rc.SetClearDepth(1.f); | rc.clear_depth(1.f); | ||||
scene.get_renderer()->Clear(ClearMask::Color | ClearMask::Depth); | scene.get_renderer()->Clear(ClearMask::Color | ClearMask::Depth); | ||||
} | } | ||||
@@ -92,8 +92,8 @@ public: | |||||
} | } | ||||
/* FIXME: we should just disable depth test in the shader */ | /* FIXME: we should just disable depth test in the shader */ | ||||
RenderContext rc(scene.get_renderer()); | render_context rc(scene.get_renderer()); | ||||
rc.SetDepthFunc(DepthFunc::Disabled); | rc.depth_func(DepthFunc::Disabled); | ||||
/* FIXME: this no longer works because we don’t restore the | /* FIXME: this no longer works because we don’t restore the | ||||
* actually bound framebuffer. */ | * actually bound framebuffer. */ | ||||
@@ -146,9 +146,9 @@ public: | |||||
m_fbos.last().m1->Bind(); | m_fbos.last().m1->Bind(); | ||||
{ | { | ||||
RenderContext rc(scene.get_renderer()); | render_context rc(scene.get_renderer()); | ||||
rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | rc.clear_color(vec4(0.f, 0.f, 0.f, 1.f)); | ||||
rc.SetClearDepth(1.f); | rc.clear_depth(1.f); | ||||
scene.get_renderer()->Clear(ClearMask::Color | ClearMask::Depth); | scene.get_renderer()->Clear(ClearMask::Color | ClearMask::Depth); | ||||
} | } | ||||
m_fbos.last().m1->Unbind(); | m_fbos.last().m1->Unbind(); | ||||
@@ -157,9 +157,9 @@ public: | |||||
temp_buffer = std::make_shared<Framebuffer>(Video::GetSize()); | temp_buffer = std::make_shared<Framebuffer>(Video::GetSize()); | ||||
temp_buffer->Bind(); | temp_buffer->Bind(); | ||||
{ | { | ||||
RenderContext rc(scene.get_renderer()); | render_context rc(scene.get_renderer()); | ||||
rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | rc.clear_color(vec4(0.f, 0.f, 0.f, 1.f)); | ||||
rc.SetClearDepth(1.f); | rc.clear_depth(1.f); | ||||
scene.get_renderer()->Clear(ClearMask::Color | ClearMask::Depth); | scene.get_renderer()->Clear(ClearMask::Color | ClearMask::Depth); | ||||
} | } | ||||
temp_buffer->Unbind(); | temp_buffer->Unbind(); | ||||
@@ -221,9 +221,9 @@ public: | |||||
temp_buffer->Bind(); | temp_buffer->Bind(); | ||||
{ | { | ||||
RenderContext rc(scene.get_renderer()); | render_context rc(scene.get_renderer()); | ||||
rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | rc.clear_color(vec4(0.f, 0.f, 0.f, 1.f)); | ||||
rc.SetClearDepth(1.f); | rc.clear_depth(1.f); | ||||
scene.get_renderer()->Clear(ClearMask::Color | ClearMask::Depth); | scene.get_renderer()->Clear(ClearMask::Color | ClearMask::Depth); | ||||
} | } | ||||
temp_buffer->Unbind(); | temp_buffer->Unbind(); | ||||
@@ -251,9 +251,9 @@ public: | |||||
m_fbos[f].m1->Bind(); | m_fbos[f].m1->Bind(); | ||||
{ | { | ||||
RenderContext rc(scene.get_renderer()); | render_context rc(scene.get_renderer()); | ||||
rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | rc.clear_color(vec4(0.f, 0.f, 0.f, 1.f)); | ||||
rc.SetClearDepth(1.f); | rc.clear_depth(1.f); | ||||
scene.get_renderer()->Clear(ClearMask::Color | ClearMask::Depth); | scene.get_renderer()->Clear(ClearMask::Color | ClearMask::Depth); | ||||
} | } | ||||
m_fbos[f].m1->Unbind(); | m_fbos[f].m1->Unbind(); | ||||
@@ -304,9 +304,9 @@ public: | |||||
//m_timer = 1.0f; | //m_timer = 1.0f; | ||||
m_fbos[m_cur_fbo].m1->Bind(); | m_fbos[m_cur_fbo].m1->Bind(); | ||||
{ | { | ||||
RenderContext rc(scene.get_renderer()); | render_context rc(scene.get_renderer()); | ||||
rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | rc.clear_color(vec4(0.f, 0.f, 0.f, 1.f)); | ||||
rc.SetClearDepth(1.f); | rc.clear_depth(1.f); | ||||
scene.get_renderer()->Clear(ClearMask::Color | ClearMask::Depth); | scene.get_renderer()->Clear(ClearMask::Color | ClearMask::Depth); | ||||
} | } | ||||
m_fbos[m_cur_fbo].m1->Unbind(); | m_fbos[m_cur_fbo].m1->Unbind(); | ||||
@@ -47,7 +47,7 @@ private: | |||||
class RenderContextData | class RenderContextData | ||||
{ | { | ||||
friend class RenderContext; | friend class render_context; | ||||
private: | private: | ||||
tracked_var<ibox2> m_viewport; | tracked_var<ibox2> m_viewport; | ||||
@@ -66,16 +66,16 @@ private: | |||||
}; | }; | ||||
/* | /* | ||||
* Public RenderContext class | * Public render_context class | ||||
*/ | */ | ||||
RenderContext::RenderContext(std::shared_ptr<Renderer> renderer) | render_context::render_context(std::shared_ptr<Renderer> renderer) | ||||
: m_renderer(renderer), | : m_renderer(renderer), | ||||
m_data(std::make_unique<RenderContextData>()) | m_data(std::make_unique<RenderContextData>()) | ||||
{ | { | ||||
} | } | ||||
RenderContext::~RenderContext() | render_context::~render_context() | ||||
{ | { | ||||
if (m_data->m_viewport.is_dirty()) | if (m_data->m_viewport.is_dirty()) | ||||
m_renderer->SetViewport(m_data->m_viewport.get()); | m_renderer->SetViewport(m_data->m_viewport.get()); | ||||
@@ -110,7 +110,7 @@ RenderContext::~RenderContext() | |||||
m_renderer->SetScissorMode(m_data->m_scissor_mode.get()); | m_renderer->SetScissorMode(m_data->m_scissor_mode.get()); | ||||
} | } | ||||
void RenderContext::SetViewport(ibox2 viewport) | void render_context::viewport(ibox2 viewport) | ||||
{ | { | ||||
if (!m_data->m_viewport.is_dirty()) | if (!m_data->m_viewport.is_dirty()) | ||||
m_data->m_viewport.set(m_renderer->GetViewport()); | m_data->m_viewport.set(m_renderer->GetViewport()); | ||||
@@ -118,12 +118,12 @@ void RenderContext::SetViewport(ibox2 viewport) | |||||
m_renderer->SetViewport(viewport); | m_renderer->SetViewport(viewport); | ||||
} | } | ||||
ibox2 RenderContext::GetViewport() | ibox2 render_context::viewport() | ||||
{ | { | ||||
return m_renderer->GetViewport(); | return m_renderer->GetViewport(); | ||||
} | } | ||||
void RenderContext::SetClearColor(vec4 color) | void render_context::clear_color(vec4 color) | ||||
{ | { | ||||
if (!m_data->m_clear_color.is_dirty()) | if (!m_data->m_clear_color.is_dirty()) | ||||
m_data->m_clear_color.set(m_renderer->GetClearColor()); | m_data->m_clear_color.set(m_renderer->GetClearColor()); | ||||
@@ -131,12 +131,12 @@ void RenderContext::SetClearColor(vec4 color) | |||||
m_renderer->SetClearColor(color); | m_renderer->SetClearColor(color); | ||||
} | } | ||||
vec4 RenderContext::GetClearColor() | vec4 render_context::clear_color() | ||||
{ | { | ||||
return m_renderer->GetClearColor(); | return m_renderer->GetClearColor(); | ||||
} | } | ||||
void RenderContext::SetClearDepth(float depth) | void render_context::clear_depth(float depth) | ||||
{ | { | ||||
if (!m_data->m_clear_depth.is_dirty()) | if (!m_data->m_clear_depth.is_dirty()) | ||||
m_data->m_clear_depth.set(m_renderer->GetClearDepth()); | m_data->m_clear_depth.set(m_renderer->GetClearDepth()); | ||||
@@ -144,12 +144,12 @@ void RenderContext::SetClearDepth(float depth) | |||||
m_renderer->SetClearDepth(depth); | m_renderer->SetClearDepth(depth); | ||||
} | } | ||||
float RenderContext::GetClearDepth() | float render_context::clear_depth() | ||||
{ | { | ||||
return m_renderer->GetClearDepth(); | return m_renderer->GetClearDepth(); | ||||
} | } | ||||
void RenderContext::SetAlphaFunc(AlphaFunc func, float alpha) | void render_context::alpha_func(AlphaFunc func, float alpha) | ||||
{ | { | ||||
if (!m_data->m_alpha_func.is_dirty()) | if (!m_data->m_alpha_func.is_dirty()) | ||||
m_data->m_alpha_func.set(m_renderer->GetAlphaFunc()); | m_data->m_alpha_func.set(m_renderer->GetAlphaFunc()); | ||||
@@ -159,17 +159,17 @@ void RenderContext::SetAlphaFunc(AlphaFunc func, float alpha) | |||||
m_renderer->SetAlphaFunc(func, alpha); | m_renderer->SetAlphaFunc(func, alpha); | ||||
} | } | ||||
AlphaFunc RenderContext::GetAlphaFunc() | AlphaFunc render_context::alpha_func() | ||||
{ | { | ||||
return m_renderer->GetAlphaFunc(); | return m_renderer->GetAlphaFunc(); | ||||
} | } | ||||
float RenderContext::GetAlphaValue() | float render_context::alpha_value() | ||||
{ | { | ||||
return m_renderer->GetAlphaValue(); | return m_renderer->GetAlphaValue(); | ||||
} | } | ||||
void RenderContext::SetBlendEquation(BlendEquation rgb, BlendEquation alpha) | void render_context::blend_equation(BlendEquation rgb, BlendEquation alpha) | ||||
{ | { | ||||
if (!m_data->m_blend_rgb.is_dirty()) | if (!m_data->m_blend_rgb.is_dirty()) | ||||
m_data->m_blend_rgb.set(m_renderer->GetBlendEquationRgb()); | m_data->m_blend_rgb.set(m_renderer->GetBlendEquationRgb()); | ||||
@@ -179,17 +179,17 @@ void RenderContext::SetBlendEquation(BlendEquation rgb, BlendEquation alpha) | |||||
m_renderer->SetBlendEquation(rgb, alpha); | m_renderer->SetBlendEquation(rgb, alpha); | ||||
} | } | ||||
BlendEquation RenderContext::GetBlendEquationRgb() | BlendEquation render_context::blend_equation_rgb() | ||||
{ | { | ||||
return m_renderer->GetBlendEquationRgb(); | return m_renderer->GetBlendEquationRgb(); | ||||
} | } | ||||
BlendEquation RenderContext::GetBlendEquationAlpha() | BlendEquation render_context::blend_equation_alpha() | ||||
{ | { | ||||
return m_renderer->GetBlendEquationAlpha(); | return m_renderer->GetBlendEquationAlpha(); | ||||
} | } | ||||
void RenderContext::SetBlendFunc(BlendFunc src, BlendFunc dst) | void render_context::blend_func(BlendFunc src, BlendFunc dst) | ||||
{ | { | ||||
if (!m_data->m_blend_src.is_dirty()) | if (!m_data->m_blend_src.is_dirty()) | ||||
m_data->m_blend_src.set(m_renderer->GetBlendFuncSrc()); | m_data->m_blend_src.set(m_renderer->GetBlendFuncSrc()); | ||||
@@ -199,17 +199,17 @@ void RenderContext::SetBlendFunc(BlendFunc src, BlendFunc dst) | |||||
m_renderer->SetBlendFunc(src, dst); | m_renderer->SetBlendFunc(src, dst); | ||||
} | } | ||||
BlendFunc RenderContext::GetBlendFuncSrc() | BlendFunc render_context::blend_func_src() | ||||
{ | { | ||||
return m_renderer->GetBlendFuncSrc(); | return m_renderer->GetBlendFuncSrc(); | ||||
} | } | ||||
BlendFunc RenderContext::GetBlendFuncDst() | BlendFunc render_context::blend_func_dst() | ||||
{ | { | ||||
return m_renderer->GetBlendFuncDst(); | return m_renderer->GetBlendFuncDst(); | ||||
} | } | ||||
void RenderContext::SetDepthFunc(DepthFunc func) | void render_context::depth_func(DepthFunc func) | ||||
{ | { | ||||
if (!m_data->m_depth_func.is_dirty()) | if (!m_data->m_depth_func.is_dirty()) | ||||
m_data->m_depth_func.set(m_renderer->GetDepthFunc()); | m_data->m_depth_func.set(m_renderer->GetDepthFunc()); | ||||
@@ -217,12 +217,12 @@ void RenderContext::SetDepthFunc(DepthFunc func) | |||||
m_renderer->SetDepthFunc(func); | m_renderer->SetDepthFunc(func); | ||||
} | } | ||||
DepthFunc RenderContext::GetDepthFunc() | DepthFunc render_context::depth_func() | ||||
{ | { | ||||
return m_renderer->GetDepthFunc(); | return m_renderer->GetDepthFunc(); | ||||
} | } | ||||
void RenderContext::SetDepthMask(DepthMask mask) | void render_context::depth_mask(DepthMask mask) | ||||
{ | { | ||||
if (!m_data->m_depth_mask.is_dirty()) | if (!m_data->m_depth_mask.is_dirty()) | ||||
m_data->m_depth_mask.set(m_renderer->GetDepthMask()); | m_data->m_depth_mask.set(m_renderer->GetDepthMask()); | ||||
@@ -230,12 +230,12 @@ void RenderContext::SetDepthMask(DepthMask mask) | |||||
m_renderer->SetDepthMask(mask); | m_renderer->SetDepthMask(mask); | ||||
} | } | ||||
DepthMask RenderContext::GetDepthMask() | DepthMask render_context::depth_mask() | ||||
{ | { | ||||
return m_renderer->GetDepthMask(); | return m_renderer->GetDepthMask(); | ||||
} | } | ||||
void RenderContext::SetCullMode(CullMode mode) | void render_context::cull_mode(CullMode mode) | ||||
{ | { | ||||
if (!m_data->m_cull_mode.is_dirty()) | if (!m_data->m_cull_mode.is_dirty()) | ||||
m_data->m_cull_mode.set(m_renderer->GetCullMode()); | m_data->m_cull_mode.set(m_renderer->GetCullMode()); | ||||
@@ -243,12 +243,12 @@ void RenderContext::SetCullMode(CullMode mode) | |||||
m_renderer->SetCullMode(mode); | m_renderer->SetCullMode(mode); | ||||
} | } | ||||
CullMode RenderContext::GetCullMode() | CullMode render_context::cull_mode() | ||||
{ | { | ||||
return m_renderer->GetCullMode(); | return m_renderer->GetCullMode(); | ||||
} | } | ||||
void RenderContext::SetPolygonMode(PolygonMode mode) | void render_context::polygon_mode(PolygonMode mode) | ||||
{ | { | ||||
if (!m_data->m_polygon_mode.is_dirty()) | if (!m_data->m_polygon_mode.is_dirty()) | ||||
m_data->m_polygon_mode.set(m_renderer->GetPolygonMode()); | m_data->m_polygon_mode.set(m_renderer->GetPolygonMode()); | ||||
@@ -256,12 +256,12 @@ void RenderContext::SetPolygonMode(PolygonMode mode) | |||||
m_renderer->SetPolygonMode(mode); | m_renderer->SetPolygonMode(mode); | ||||
} | } | ||||
PolygonMode RenderContext::GetPolygonMode() | PolygonMode render_context::polygon_mode() | ||||
{ | { | ||||
return m_renderer->GetPolygonMode(); | return m_renderer->GetPolygonMode(); | ||||
} | } | ||||
void RenderContext::SetScissorMode(ScissorMode mode) | void render_context::scissor_mode(ScissorMode mode) | ||||
{ | { | ||||
if (!m_data->m_scissor_mode.is_dirty()) | if (!m_data->m_scissor_mode.is_dirty()) | ||||
m_data->m_scissor_mode.set(m_renderer->GetScissorMode()); | m_data->m_scissor_mode.set(m_renderer->GetScissorMode()); | ||||
@@ -269,7 +269,7 @@ void RenderContext::SetScissorMode(ScissorMode mode) | |||||
m_renderer->SetScissorMode(mode); | m_renderer->SetScissorMode(mode); | ||||
} | } | ||||
void RenderContext::SetScissorRect(vec4 rect) | void render_context::scissor_rect(vec4 rect) | ||||
{ | { | ||||
if (!m_data->m_scissor_rect.is_dirty()) | if (!m_data->m_scissor_rect.is_dirty()) | ||||
m_data->m_scissor_rect.set(m_renderer->GetScissorRect()); | m_data->m_scissor_rect.set(m_renderer->GetScissorRect()); | ||||
@@ -277,12 +277,12 @@ void RenderContext::SetScissorRect(vec4 rect) | |||||
m_renderer->SetScissorRect(rect); | m_renderer->SetScissorRect(rect); | ||||
} | } | ||||
ScissorMode RenderContext::GetScissorMode() | ScissorMode render_context::scissor_mode() | ||||
{ | { | ||||
return m_renderer->GetScissorMode(); | return m_renderer->GetScissorMode(); | ||||
} | } | ||||
vec4 RenderContext::GetScissorRect() | vec4 render_context::scissor_rect() | ||||
{ | { | ||||
return m_renderer->GetScissorRect(); | return m_renderer->GetScissorRect(); | ||||
} | } | ||||
@@ -26,40 +26,40 @@ namespace lol | |||||
class RenderContextData; | class RenderContextData; | ||||
class RenderContext | class render_context | ||||
{ | { | ||||
public: | public: | ||||
RenderContext(std::shared_ptr<Renderer> renderer); | render_context(std::shared_ptr<Renderer> renderer); | ||||
~RenderContext(); | ~render_context(); | ||||
void SetViewport(ibox2 viewport); | void viewport(ibox2 viewport); | ||||
void SetClearColor(vec4 color); | void clear_color(vec4 color); | ||||
void SetClearDepth(float depth); | void clear_depth(float depth); | ||||
void SetAlphaFunc(AlphaFunc func, float alpha); | void alpha_func(AlphaFunc func, float alpha); | ||||
void SetBlendEquation(BlendEquation rgb, BlendEquation alpha); | void blend_equation(BlendEquation rgb, BlendEquation alpha); | ||||
void SetBlendFunc(BlendFunc src, BlendFunc dst); | void blend_func(BlendFunc src, BlendFunc dst); | ||||
void SetDepthFunc(DepthFunc func); | void depth_func(DepthFunc func); | ||||
void SetDepthMask(DepthMask mask); | void depth_mask(DepthMask mask); | ||||
void SetCullMode(CullMode mode); | void cull_mode(CullMode mode); | ||||
void SetPolygonMode(PolygonMode mode); | void polygon_mode(PolygonMode mode); | ||||
void SetScissorMode(ScissorMode mode); | void scissor_mode(ScissorMode mode); | ||||
void SetScissorRect(vec4 rect); | void scissor_rect(vec4 rect); | ||||
ibox2 GetViewport(); | ibox2 viewport(); | ||||
vec4 GetClearColor(); | vec4 clear_color(); | ||||
float GetClearDepth(); | float clear_depth(); | ||||
AlphaFunc GetAlphaFunc(); | AlphaFunc alpha_func(); | ||||
float GetAlphaValue(); | float alpha_value(); | ||||
BlendEquation GetBlendEquationRgb(); | BlendEquation blend_equation_rgb(); | ||||
BlendEquation GetBlendEquationAlpha(); | BlendEquation blend_equation_alpha(); | ||||
BlendFunc GetBlendFuncSrc(); | BlendFunc blend_func_src(); | ||||
BlendFunc GetBlendFuncDst(); | BlendFunc blend_func_dst(); | ||||
DepthFunc GetDepthFunc(); | DepthFunc depth_func(); | ||||
DepthMask GetDepthMask(); | DepthMask depth_mask(); | ||||
CullMode GetCullMode(); | CullMode cull_mode(); | ||||
PolygonMode GetPolygonMode(); | PolygonMode polygon_mode(); | ||||
ScissorMode GetScissorMode(); | ScissorMode scissor_mode(); | ||||
vec4 GetScissorRect(); | vec4 scissor_rect(); | ||||
private: | private: | ||||
std::shared_ptr<Renderer> m_renderer; | std::shared_ptr<Renderer> m_renderer; | ||||
@@ -361,10 +361,10 @@ void LolImGui::RenderDrawListsMethod(ImDrawData* draw_data) | |||||
if (!m_shader) | if (!m_shader) | ||||
return; | return; | ||||
RenderContext rc(Scene::GetScene(0).get_renderer()); | render_context rc(Scene::GetScene(0).get_renderer()); | ||||
rc.SetCullMode(CullMode::Disabled); | rc.cull_mode(CullMode::Disabled); | ||||
rc.SetDepthFunc(DepthFunc::Disabled); | rc.depth_func(DepthFunc::Disabled); | ||||
rc.SetScissorMode(ScissorMode::Enabled); | rc.scissor_mode(ScissorMode::Enabled); | ||||
m_shader->Bind(); | m_shader->Bind(); | ||||
@@ -407,7 +407,7 @@ void LolImGui::RenderDrawListsMethod(ImDrawData* draw_data) | |||||
m_shader->SetUniform(m_texture, texture->GetTextureUniform(), 0); | m_shader->SetUniform(m_texture, texture->GetTextureUniform(), 0); | ||||
} | } | ||||
rc.SetScissorRect(command.ClipRect); | rc.scissor_rect(command.ClipRect); | ||||
#ifdef SHOW_IMGUI_DEBUG | #ifdef SHOW_IMGUI_DEBUG | ||||
//----------------------------------------------------------------- | //----------------------------------------------------------------- | ||||
@@ -143,7 +143,7 @@ private: | |||||
SceneDisplay* m_display = nullptr; | SceneDisplay* m_display = nullptr; | ||||
/** Render buffers: where to render to. */ | /** Render buffers: where to render to. */ | ||||
Framebuffer *m_renderbuffer[4]; | std::shared_ptr<Framebuffer> m_renderbuffer[4]; | ||||
struct postprocess | struct postprocess | ||||
{ | { | ||||
@@ -210,10 +210,8 @@ Scene::Scene(ivec2 size) | |||||
data(std::make_unique<SceneData>()), | data(std::make_unique<SceneData>()), | ||||
m_renderer(std::make_shared<Renderer>(size)) | m_renderer(std::make_shared<Renderer>(size)) | ||||
{ | { | ||||
data->m_renderbuffer[0] = new Framebuffer(m_size); | for (int i = 0; i < 4; ++i) | ||||
data->m_renderbuffer[1] = new Framebuffer(m_size); | data->m_renderbuffer[i] = std::make_shared<Framebuffer>(m_size); | ||||
data->m_renderbuffer[2] = new Framebuffer(m_size); | |||||
data->m_renderbuffer[3] = new Framebuffer(m_size); | |||||
data->m_pp.m_shader[0] = Shader::Create(LOLFX_RESOURCE_NAME(gpu_blit)); | data->m_pp.m_shader[0] = Shader::Create(LOLFX_RESOURCE_NAME(gpu_blit)); | ||||
data->m_pp.m_shader[1] = Shader::Create(LOLFX_RESOURCE_NAME(gpu_postprocess)); | data->m_pp.m_shader[1] = Shader::Create(LOLFX_RESOURCE_NAME(gpu_postprocess)); | ||||
data->m_pp.m_coord[0] = data->m_pp.m_shader[0]->GetAttribLocation(VertexUsage::Position, 0); | data->m_pp.m_coord[0] = data->m_pp.m_shader[0]->GetAttribLocation(VertexUsage::Position, 0); | ||||
@@ -579,14 +577,8 @@ void Scene::pre_render(float) | |||||
if (m_size != m_wanted_size) | if (m_size != m_wanted_size) | ||||
{ | { | ||||
m_size = m_wanted_size; | m_size = m_wanted_size; | ||||
delete data->m_renderbuffer[0]; | for (int i = 0; i < 4; ++i) | ||||
delete data->m_renderbuffer[1]; | data->m_renderbuffer[i] = std::make_shared<Framebuffer>(m_size); | ||||
delete data->m_renderbuffer[2]; | |||||
delete data->m_renderbuffer[3]; | |||||
data->m_renderbuffer[0] = new Framebuffer(m_size); | |||||
data->m_renderbuffer[1] = new Framebuffer(m_size); | |||||
data->m_renderbuffer[2] = new Framebuffer(m_size); | |||||
data->m_renderbuffer[3] = new Framebuffer(m_size); | |||||
mat4 proj = mat4::ortho(0.f, (float)m_size.x, 0.f, (float)m_size.y, -1000.f, 1000.f); | mat4 proj = mat4::ortho(0.f, (float)m_size.x, 0.f, (float)m_size.y, -1000.f, 1000.f); | ||||
data->m_default_cam->SetProjection(proj); | data->m_default_cam->SetProjection(proj); | ||||
@@ -599,11 +591,11 @@ void Scene::pre_render(float) | |||||
} | } | ||||
{ | { | ||||
RenderContext rc(m_renderer); | render_context rc(m_renderer); | ||||
if (do_pp) | if (do_pp) | ||||
{ | { | ||||
rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | rc.clear_color(vec4(0.f, 0.f, 0.f, 1.f)); | ||||
rc.SetClearDepth(1.f); | rc.clear_depth(1.f); | ||||
} | } | ||||
m_renderer->Clear(ClearMask::Color | ClearMask::Depth); | m_renderer->Clear(ClearMask::Color | ClearMask::Depth); | ||||
@@ -633,9 +625,9 @@ void Scene::post_render(float) | |||||
data->m_renderbuffer[3]->Bind(); | data->m_renderbuffer[3]->Bind(); | ||||
RenderContext rc(m_renderer); | render_context rc(m_renderer); | ||||
rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | rc.clear_color(vec4(0.f, 0.f, 0.f, 1.f)); | ||||
rc.SetClearDepth(1.f); | rc.clear_depth(1.f); | ||||
m_renderer->Clear(ClearMask::Color | ClearMask::Depth); | m_renderer->Clear(ClearMask::Color | ClearMask::Depth); | ||||
/* Execute post process */ | /* Execute post process */ | ||||
@@ -657,9 +649,9 @@ void Scene::post_render(float) | |||||
data->m_pp.m_shader[0]->Bind(); | data->m_pp.m_shader[0]->Bind(); | ||||
RenderContext rc(m_renderer); | render_context rc(m_renderer); | ||||
rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | rc.clear_color(vec4(0.f, 0.f, 0.f, 1.f)); | ||||
rc.SetClearDepth(1.f); | rc.clear_depth(1.f); | ||||
m_renderer->Clear(ClearMask::Color | ClearMask::Depth); | m_renderer->Clear(ClearMask::Color | ClearMask::Depth); | ||||
/* Blit final image to screen */ | /* Blit final image to screen */ | ||||
@@ -687,9 +679,9 @@ void Scene::render_primitives() | |||||
ASSERT(!!data, "Trying to access a non-ready scene"); | ASSERT(!!data, "Trying to access a non-ready scene"); | ||||
/* FIXME: Temp fix for mesh having no render context*/ | /* FIXME: Temp fix for mesh having no render context*/ | ||||
RenderContext rc(m_renderer); | render_context rc(m_renderer); | ||||
rc.SetCullMode(CullMode::Clockwise); | rc.cull_mode(CullMode::Clockwise); | ||||
rc.SetDepthFunc(DepthFunc::LessOrEqual); | rc.depth_func(DepthFunc::LessOrEqual); | ||||
/* new scenegraph */ | /* new scenegraph */ | ||||
for (uintptr_t key : keys(data->m_prim_renderers)) | for (uintptr_t key : keys(data->m_prim_renderers)) | ||||
@@ -708,7 +700,7 @@ void Scene::render_tiles() // XXX: rename to Blit() | |||||
{ | { | ||||
ASSERT(!!data, "Trying to access a non-ready scene"); | ASSERT(!!data, "Trying to access a non-ready scene"); | ||||
RenderContext rc(m_renderer); | render_context rc(m_renderer); | ||||
/* Early test if nothing needs to be rendered */ | /* Early test if nothing needs to be rendered */ | ||||
if (!data->m_tile_api.m_tiles.count() && !data->m_tile_api.m_palettes.count()) | if (!data->m_tile_api.m_tiles.count() && !data->m_tile_api.m_palettes.count()) | ||||
@@ -716,12 +708,12 @@ void Scene::render_tiles() // XXX: rename to Blit() | |||||
/* FIXME: we disable culling for now because we don’t have a reliable | /* FIXME: we disable culling for now because we don’t have a reliable | ||||
* way to know which side is facing the camera. */ | * way to know which side is facing the camera. */ | ||||
rc.SetCullMode(CullMode::Disabled); | rc.cull_mode(CullMode::Disabled); | ||||
rc.SetDepthFunc(DepthFunc::LessOrEqual); | rc.depth_func(DepthFunc::LessOrEqual); | ||||
rc.SetBlendFunc(BlendFunc::SrcAlpha, BlendFunc::OneMinusSrcAlpha); | rc.blend_func(BlendFunc::SrcAlpha, BlendFunc::OneMinusSrcAlpha); | ||||
rc.SetBlendEquation(BlendEquation::Add, BlendEquation::Max); | rc.blend_equation(BlendEquation::Add, BlendEquation::Max); | ||||
rc.SetAlphaFunc(AlphaFunc::GreaterOrEqual, 0.01f); | rc.alpha_func(AlphaFunc::GreaterOrEqual, 0.01f); | ||||
#if (defined LOL_USE_GLEW || defined HAVE_GL_2X) && !defined HAVE_GLES_2X | #if (defined LOL_USE_GLEW || defined HAVE_GL_2X) && !defined HAVE_GLES_2X | ||||
glEnable(GL_TEXTURE_2D); | glEnable(GL_TEXTURE_2D); | ||||
@@ -832,15 +824,15 @@ void Scene::render_lines(float seconds) | |||||
{ | { | ||||
ASSERT(!!data, "Trying to access a non-ready scene"); | ASSERT(!!data, "Trying to access a non-ready scene"); | ||||
RenderContext rc(m_renderer); | render_context rc(m_renderer); | ||||
if (!data->m_line_api.m_lines.count()) | if (!data->m_line_api.m_lines.count()) | ||||
return; | return; | ||||
rc.SetDepthFunc(DepthFunc::LessOrEqual); | rc.depth_func(DepthFunc::LessOrEqual); | ||||
rc.SetBlendFunc(BlendFunc::SrcAlpha, BlendFunc::OneMinusSrcAlpha); | rc.blend_func(BlendFunc::SrcAlpha, BlendFunc::OneMinusSrcAlpha); | ||||
rc.SetBlendEquation(BlendEquation::Add, BlendEquation::Max); | rc.blend_equation(BlendEquation::Add, BlendEquation::Max); | ||||
rc.SetAlphaFunc(AlphaFunc::GreaterOrEqual, 0.01f); | rc.alpha_func(AlphaFunc::GreaterOrEqual, 0.01f); | ||||
int linecount = (int)data->m_line_api.m_lines.count(); | int linecount = (int)data->m_line_api.m_lines.count(); | ||||