Replaced glScissor and glViewport with gl_state functions

This commit is contained in:
korenkonder
2024-06-16 11:53:49 +03:00
parent d230255af6
commit 0ce40e326d
13 changed files with 135 additions and 59 deletions
+7 -9
View File
@@ -2289,7 +2289,7 @@ void EffectFogRing::draw() {
rctx->draw_state->set_fog_height(true);
RenderTexture& rt = rctx->render_manager->get_render_texture(8);
rt.Bind();
glViewport(0, 0,
gl_state_set_viewport(0, 0,
rt.color_texture->get_width_align_mip_level(),
rt.color_texture->get_height_align_mip_level());
glClearColor(density_offset, density_offset, density_offset, 1.0f);
@@ -3140,13 +3140,12 @@ void EffectRipple::draw() {
rt[(counter + 1) % 3]->Bind();
GLint v43[4];
glGetIntegerv(GL_VIEWPORT, v43);
gl_state_rect viewport_rect = gl_state_get_viewport();
int32_t width = rt[0]->GetWidth();
int32_t height = rt[0]->GetHeight();
glViewport(1, 1, width - 2, height - 2);
gl_state_set_viewport(1, 1, width - 2, height - 2);
draw_pass_set_camera();
glClear(GL_DEPTH_BUFFER_BIT);
@@ -3167,7 +3166,7 @@ void EffectRipple::draw() {
sub_1403B6ED0(rt[(counter + 2) % 3], rt[(counter + 1) % 3], rt[counter % 3], params);
glViewport(v43[0], v43[1], v43[2], v43[3]);
gl_state_set_viewport(viewport_rect);
sub_1403584A0(rt[(counter + 2) % 3]);
@@ -6575,9 +6574,8 @@ static void sub_1403B6F60(texture* a1, texture* a2, texture* a3, ripple_emit_par
int32_t width = a2->width;
int32_t height = a2->height;
GLint v43[4];
glGetIntegerv(GL_VIEWPORT, v43);
glViewport(1, 1, width - 2, height - 2);
gl_state_rect viewport_rect = gl_state_get_viewport();
gl_state_set_viewport(1, 1, width - 2, height - 2);
ripple_scene_shader_data ripple_scene = {};
ripple_scene.g_transform = {
@@ -6602,5 +6600,5 @@ static void sub_1403B6F60(texture* a1, texture* a2, texture* a3, ripple_emit_par
gl_state_active_bind_texture_2d(0, 0);
gl_state_bind_vertex_array(0);
glViewport(v43[0], v43[1], v43[2], v43[3]);
gl_state_set_viewport(viewport_rect);
}
+62
View File
@@ -335,9 +335,11 @@ void gl_state_get() {
glGetBooleanv(GL_MULTISAMPLE, &gl_state.multisample);
glGetBooleanv(GL_PRIMITIVE_RESTART, &gl_state.primitive_restart);
glGetIntegerv(GL_PRIMITIVE_RESTART_INDEX, (GLint*)&gl_state.primitive_restart_index);
glGetIntegerv(GL_SCISSOR_BOX, (GLint*)&gl_state.scissor_box);
glGetBooleanv(GL_SCISSOR_TEST, &gl_state.scissor_test);
glGetBooleanv(GL_STENCIL_TEST, &gl_state.stencil_test);
glGetIntegerv(GL_STENCIL_WRITEMASK, (GLint*)&gl_state.stencil_mask);
glGetIntegerv(GL_VIEWPORT, (GLint*)&gl_state.viewport);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
gl_state.polygon_front_face_mode = GL_FILL;
@@ -361,6 +363,28 @@ GLuint gl_state_get_program() {
return gl_state.program;
}
gl_state_rect gl_state_get_scissor() {
return gl_state.scissor_box;
}
void gl_state_get_scissor(GLint& x, GLint& y, GLsizei& width, GLsizei& height) {
x = gl_state.scissor_box.x;
y = gl_state.scissor_box.y;
width = gl_state.scissor_box.width;
height = gl_state.scissor_box.height;
}
gl_state_rect gl_state_get_viewport() {
return gl_state.viewport;
}
void gl_state_get_viewport(GLint& x, GLint& y, GLsizei& width, GLsizei& height) {
x = gl_state.viewport.x;
y = gl_state.viewport.y;
width = gl_state.viewport.width;
height = gl_state.viewport.height;
}
void gl_state_set_blend_func(GLenum src, GLenum dst, bool force) {
if (force || gl_state.blend_src_rgb != src || gl_state.blend_dst_rgb != dst
|| gl_state.blend_src_alpha != GL_ONE || gl_state.blend_dst_alpha != GL_ONE_MINUS_SRC_ALPHA) {
@@ -473,6 +497,25 @@ void gl_state_set_primitive_restart_index(GLuint index, bool force) {
}
}
void gl_state_set_scissor(const gl_state_rect& rect, bool force) {
if (force || gl_state.scissor_box.x != rect.x || gl_state.scissor_box.y != rect.y
|| gl_state.scissor_box.width != rect.width || gl_state.scissor_box.height != rect.height) {
glScissor(rect.x, rect.y, rect.width, rect.height);
gl_state.scissor_box = rect;
}
}
void gl_state_set_scissor(GLint x, GLint y, GLsizei width, GLsizei height, bool force) {
if (force || gl_state.scissor_box.x != x || gl_state.scissor_box.y != y
|| gl_state.scissor_box.width != width || gl_state.scissor_box.height != height) {
glScissor(x, y, width, height);
gl_state.scissor_box.x = x;
gl_state.scissor_box.y = y;
gl_state.scissor_box.width = width;
gl_state.scissor_box.height = height;
}
}
void gl_state_set_stencil_mask(GLuint mask, bool force) {
if (force || gl_state.stencil_mask != mask) {
glStencilMask(mask);
@@ -480,6 +523,25 @@ void gl_state_set_stencil_mask(GLuint mask, bool force) {
}
}
void gl_state_set_viewport(const gl_state_rect& rect, bool force) {
if (force || gl_state.viewport.x != rect.x || gl_state.viewport.y != rect.y
|| gl_state.viewport.width != rect.width || gl_state.viewport.height != rect.height) {
glScissor(rect.x, rect.y, rect.width, rect.height);
gl_state.viewport = rect;
}
}
void gl_state_set_viewport(GLint x, GLint y, GLsizei width, GLsizei height, bool force) {
if (force || gl_state.viewport.x != x || gl_state.viewport.y != y
|| gl_state.viewport.width != width || gl_state.viewport.height != height) {
glViewport(x, y, width, height);
gl_state.viewport.x = x;
gl_state.viewport.y = y;
gl_state.viewport.width = width;
gl_state.viewport.height = height;
}
}
void gl_state_use_program(GLuint program, bool force) {
if (force || gl_state.program != program) {
glUseProgram(program);
+17
View File
@@ -8,6 +8,13 @@
#include "../KKdLib/default.hpp"
#include <glad/glad.h>
struct gl_state_rect {
GLint x;
GLint y;
GLsizei width;
GLsizei height;
};
struct gl_state_struct {
GLint program;
GLenum active_texture;
@@ -46,9 +53,11 @@ struct gl_state_struct {
GLboolean multisample;
GLboolean primitive_restart;
GLuint primitive_restart_index;
gl_state_rect scissor_box;
GLboolean scissor_test;
GLboolean stencil_test;
GLuint stencil_mask;
gl_state_rect viewport;
};
extern gl_state_struct gl_state;
@@ -98,6 +107,10 @@ extern void gl_state_get();
extern void gl_state_get_all_gl_errors();
extern GLenum gl_state_get_error();
extern GLuint gl_state_get_program();
extern gl_state_rect gl_state_get_scissor();
extern void gl_state_get_scissor(GLint& x, GLint& y, GLsizei& width, GLsizei& height);
extern gl_state_rect gl_state_get_viewport();
extern void gl_state_get_viewport(GLint& x, GLint& y, GLsizei& width, GLsizei& height);
extern void gl_state_set_blend_func(GLenum src, GLenum dst, bool force = false);
extern void gl_state_set_blend_func_separate(GLenum src_rgb, GLenum dst_rgb,
GLenum src_alpha, GLenum dst_alpha, bool force = false);
@@ -111,7 +124,11 @@ extern void gl_state_set_depth_func(GLenum func, bool force = false);
extern void gl_state_set_depth_mask(GLboolean flag, bool force = false);
extern void gl_state_set_polygon_mode(GLenum face, GLenum mode, bool force = false);
extern void gl_state_set_primitive_restart_index(GLuint index, bool force = false);
extern void gl_state_set_scissor(const gl_state_rect& rect, bool force = false);
extern void gl_state_set_scissor(GLint x, GLint y, GLsizei width, GLsizei height, bool force = false);
extern void gl_state_set_stencil_mask(GLuint mask, bool force = false);
extern void gl_state_set_viewport(const gl_state_rect& rect, bool force = false);
extern void gl_state_set_viewport(GLint x, GLint y, GLsizei width, GLsizei height, bool force = false);
extern void gl_state_use_program(GLuint program, bool force = false);
template <size_t size>
+15 -15
View File
@@ -164,7 +164,7 @@ namespace rndr {
else
uniform_value[U_REDUCE] = 0;
glViewport(0, 0, t->width, t->height);
gl_state_set_viewport(0, 0, t->width, t->height);
gl_state_active_bind_texture_2d(0, taa_tex[2]->glid);
gl_state_bind_sampler(0, rctx->render_samplers[0]);
shaders_ft.set(SHADER_FT_REDUCE);
@@ -179,7 +179,7 @@ namespace rndr {
frame_texture_reset_capture();
rctx->screen_buffer.Bind();
glViewport(0, 0, rctx->sprite_width, rctx->sprite_height);
gl_state_set_viewport(0, 0, rctx->sprite_width, rctx->sprite_height);
if (ssaa) {
gl_state_active_bind_texture_2d(0, taa_tex[2]->glid);
gl_state_bind_sampler(0, rctx->render_samplers[0]);
@@ -236,7 +236,7 @@ namespace rndr {
}
else
rend_texture[0].Bind();
glViewport(0, 0, render_width[0], render_height[0]);
gl_state_set_viewport(0, 0, render_width[0], render_height[0]);
}
void Render::calc_exposure_chara_data(camera* cam) {
@@ -1323,7 +1323,7 @@ namespace rndr {
rend_texture[i].Bind();
gl_state_active_bind_texture_2d(0, rend_texture[i - 1].GetColorTex());
gl_state_bind_sampler(0, rctx->render_samplers[0]);
glViewport(0, 0, render_width[i], render_height[i]);
gl_state_set_viewport(0, 0, render_width[i], render_height[i]);
draw_quad(
render_post_width[i - 1], render_post_height[i - 1],
render_post_width_scale, render_post_height_scale,
@@ -1334,7 +1334,7 @@ namespace rndr {
shaders_ft.set(SHADER_FT_REDUCE);
int32_t downsample = max_def(downsample_count - 2, 0);
glViewport(0, 0, reduce_width[0], reduce_height[0]);
gl_state_set_viewport(0, 0, reduce_width[0], reduce_height[0]);
reduce_texture[0].Bind();
gl_state_active_bind_texture_2d(0, rend_texture[downsample].GetColorTex());
gl_state_bind_sampler(0, rctx->render_samplers[0]);
@@ -1360,7 +1360,7 @@ namespace rndr {
shaders_ft.set(SHADER_FT_REDUCE);
}
glViewport(0, 0, reduce_width[i], reduce_height[i]);
gl_state_set_viewport(0, 0, reduce_width[i], reduce_height[i]);
draw_quad(reduce_width[i - 1], reduce_height[i - 1],
1.0f, 1.0f, 0.0f, 0.0f, scale, 1.0f, 1.0f, 1.0f, 1.0f);
gl_state_active_bind_texture_2d(0, reduce_tex[i]->glid);
@@ -1624,7 +1624,7 @@ namespace rndr {
rctx->tone_map_ubo.WriteMemory(shader_data);
glViewport(0, 0, render_width[0], render_height[0]);
gl_state_set_viewport(0, 0, render_width[0], render_height[0]);
taa_buffer[2].Bind();
shaders_ft.set(SHADER_FT_TONEMAP);
rctx->tone_map_ubo.Bind(1);
@@ -1744,7 +1744,7 @@ namespace rndr {
exposure_measure.g_spot_coefficients[i * 8 + j] = chara_data->spot_coefficients[j];
rctx->exposure_measure_ubo.WriteMemory(exposure_measure);
glViewport(0, 0, 32, 1);
gl_state_set_viewport(0, 0, 32, 1);
downsample_texture.Bind();
uniform_value[U_EXPOSURE] = 1;
@@ -1766,7 +1766,7 @@ namespace rndr {
exposure_history_counter = (exposure_history_counter + 1) % 32;
}
glViewport(0, 0, 1, 1);
gl_state_set_viewport(0, 0, 1, 1);
exposure_texture.Bind();
uniform_value[U_EXPOSURE] = 2;
shaders_ft.set(SHADER_FT_EXPOSURE);
@@ -1829,7 +1829,7 @@ namespace rndr {
gl_state_active_bind_texture_2d(0, j.type == FRAME_TEXTURE_PRE_PP ? pre_pp_tex : post_pp_tex);
gl_state_bind_sampler(0, rctx_ptr->render_samplers[0]);
glViewport(0, 0, dst_tex->width, dst_tex->height);
gl_state_set_viewport(0, 0, dst_tex->width, dst_tex->height);
uniform_value[U_REDUCE] = 0;
shaders_ft.set(SHADER_FT_REDUCE);
draw_quad(dst_tex->width, dst_tex->height,
@@ -1933,7 +1933,7 @@ namespace rndr {
rctx_ptr->lens_ghost_vbo.UnmapMemory();
glViewport(0, 0, render_width[0], render_height[0]);
gl_state_set_viewport(0, 0, render_width[0], render_height[0]);
rend_texture[0].Bind();
gl_state_enable_blend();
gl_state_set_blend_func(GL_ONE, GL_ONE);
@@ -1984,7 +1984,7 @@ namespace rndr {
downsample_texture.Bind();
for (int32_t i = 1; i < 4; i++) {
glViewport(0, 0, reduce_width[i], reduce_height[i]);
gl_state_set_viewport(0, 0, reduce_width[i], reduce_height[i]);
gl_state_active_bind_texture_2d(0, reduce_tex[i]->glid);
gl_state_bind_sampler(0, rctx->render_samplers[2]);
draw_quad(reduce_width[i], reduce_height[i],
@@ -1993,7 +1993,7 @@ namespace rndr {
}
for (int32_t i = 1; i < 4; i++) {
glViewport(0, 0, reduce_width[i], reduce_height[i]);
gl_state_set_viewport(0, 0, reduce_width[i], reduce_height[i]);
gl_state_active_bind_texture_2d(0, reduce_tex[i]->glid);
gl_state_bind_sampler(0, rctx->render_samplers[2]);
draw_quad(reduce_width[i], reduce_height[i],
@@ -2004,7 +2004,7 @@ namespace rndr {
uniform_value[U_GAUSS] = 1;
shaders_ft.set(SHADER_FT_GAUSS);
glViewport(0, 0, reduce_width[0], reduce_height[0]);
gl_state_set_viewport(0, 0, reduce_width[0], reduce_height[0]);
gl_state_active_bind_texture_2d(0, reduce_tex[0]->glid);
gl_state_bind_sampler(0, rctx->render_samplers[2]);
draw_quad(reduce_width[0], reduce_height[0],
@@ -2014,7 +2014,7 @@ namespace rndr {
uniform_value[U_REDUCE] = 7;
shaders_ft.set(SHADER_FT_REDUCE);
glViewport(0, 0, reduce_width[0], reduce_height[0]);
gl_state_set_viewport(0, 0, reduce_width[0], reduce_height[0]);
reduce_texture[0].Bind();
gl_state_active_bind_texture_2d(0, downsample_texture.GetColorTex());
gl_state_active_bind_texture_2d(1, reduce_tex[1]->glid);
+1 -1
View File
@@ -127,7 +127,7 @@ bool light_proj::set() {
static const GLfloat depth_clear = 1.0f;
shadow_texture[0].Bind();
glViewport(0, 0, 2048, 512);
gl_state_set_viewport(0, 0, 2048, 512);
gl_state_enable_depth_test();
gl_state_set_depth_mask(GL_TRUE);
glClearBufferfv(GL_COLOR, 0, (float_t*)&color_clear);
+13 -13
View File
@@ -478,7 +478,7 @@ namespace rndr {
//}
//else {
// sss->textures[0].Bind();
// glViewport(0, 0, 640, 360);
// gl_state_set_viewport(0, 0, 640, 360);
//}
glClearColor(sss->param.x, sss->param.y, sss->param.z, 0.0f);
@@ -530,7 +530,7 @@ namespace rndr {
if (!sss->npr_contour) {
sss->textures[0].Bind();
glViewport(0, 0, 640, 360);
gl_state_set_viewport(0, 0, 640, 360);
filter_scene_shader_data filter_scene = {};
filter_scene.g_transform = { 1.0f, 1.0f, 0.0f, 0.0f };
@@ -641,7 +641,7 @@ namespace rndr {
|| rctx->disp_manager->get_obj_count(mdl::OBJ_TYPE_REFRACT_TRANSPARENT)
|| rctx->disp_manager->get_obj_count(mdl::OBJ_TYPE_REFRACT_TRANSLUCENT)) {
texture* refr_tex = refract_texture.color_texture;
glViewport(0, 0, refr_tex->width, refr_tex->height);
gl_state_set_viewport(0, 0, refr_tex->width, refr_tex->height);
draw_pass_set_camera();
@@ -1021,7 +1021,7 @@ namespace rndr {
gl_state_begin_event("pass_sprite");
rndr::Render* rend = render;
glViewport(0, 0, width, height);
gl_state_set_viewport(0, 0, width, height);
if (multisample && multisample_framebuffer) {
gl_state_bind_framebuffer(multisample_framebuffer);
@@ -1120,7 +1120,7 @@ void image_filter_scale(RenderTexture* dst, texture* src, const vec4& scale) {
render_context* rctx = rctx_ptr;
gl_state_begin_event("`anonymous-namespace'::Impl::apply_no_filter_sub");
glViewport(0, 0, dst->color_texture->width, dst->color_texture->height);
gl_state_set_viewport(0, 0, dst->color_texture->width, dst->color_texture->height);
dst->Bind();
@@ -1204,7 +1204,7 @@ static void draw_pass_shadow_begin_make_shadowmap(Shadow* shad, int32_t index, i
shad->curr_render_textures[0]->Bind();
shad->curr_render_textures[0]->SetViewport();
texture* tex = shad->curr_render_textures[0]->color_texture;
glScissor(0, 0, tex->width, tex->height);
gl_state_set_scissor(0, 0, tex->width, tex->height);
gl_state_enable_depth_test();
gl_state_enable_scissor_test();
glClearColor(1.0, 1.0, 1.0, 1.0);
@@ -1212,7 +1212,7 @@ static void draw_pass_shadow_begin_make_shadowmap(Shadow* shad, int32_t index, i
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
else if (shad->separate)
glClear(GL_COLOR_BUFFER_BIT);
glScissor(1, 1, tex->width - 2, tex->height - 2);
gl_state_set_scissor(1, 1, tex->width - 2, tex->height - 2);
float_t shadow_range = shad->get_shadow_range();
float_t offset;
@@ -1313,7 +1313,7 @@ static void draw_pass_shadow_filter(RenderTexture* a1, RenderTexture* a2,
rctx->filter_scene_ubo.Bind(0);
rctx->esm_filter_batch_ubo.Bind(1);
glViewport(0, 0, v7->width, v7->height);
gl_state_set_viewport(0, 0, v7->width, v7->height);
a2->Bind();
esm_filter_batch.g_params = { 1.0f / (float_t)v7->width, 0.0f, far_texel_offset, far_texel_offset };
@@ -1370,7 +1370,7 @@ static void draw_pass_shadow_esm_filter(RenderTexture* dst, RenderTexture* buf,
rctx->filter_scene_ubo.Bind(0);
rctx->esm_filter_batch_ubo.Bind(1);
glViewport(0, 0, dst_tex->width, dst_tex->height);
gl_state_set_viewport(0, 0, dst_tex->width, dst_tex->height);
buf->Bind();
esm_filter_batch.g_params = { 1.0f / (float_t)src_tex->width,
@@ -1437,7 +1437,7 @@ static void draw_pass_sss_contour(render_context* rctx, rndr::Render* rend) {
gl_state_enable_depth_test();
gl_state_set_depth_func(GL_ALWAYS);
gl_state_set_depth_mask(GL_TRUE);
glViewport(0, 0, rend->render_width[0], rend->render_height[0]);
gl_state_set_viewport(0, 0, rend->render_width[0], rend->render_height[0]);
gl_state_active_bind_texture_2d(0, rend->rend_texture[0].GetColorTex());
gl_state_bind_sampler(0, rctx->render_samplers[1]);
gl_state_active_bind_texture_2d(1, rend->rend_texture[0].GetDepthTex());
@@ -1548,7 +1548,7 @@ static void draw_pass_sss_filter(render_context* rctx, sss_data* sss) {
gl_state_active_texture(0);
if (sss->npr_contour) {
sss->textures[0].Bind();
glViewport(0, 0, 640, 360);
gl_state_set_viewport(0, 0, 640, 360);
rndr::Render* rend = &rctx->render;
uniform_value[U_REDUCE] = 0;
shaders_ft.set(SHADER_FT_REDUCE);
@@ -1558,7 +1558,7 @@ static void draw_pass_sss_filter(render_context* rctx, sss_data* sss) {
0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f);
}
sss->textures[2].Bind();
glViewport(0, 0, 320, 180);
gl_state_set_viewport(0, 0, 320, 180);
uniform_value[U_SSS_FILTER] = 0;
shaders_ft.set(SHADER_FT_SSS_FILT);
gl_state_bind_texture_2d(sss->textures[0].GetColorTex());
@@ -1577,7 +1577,7 @@ static void draw_pass_sss_filter(render_context* rctx, sss_data* sss) {
rctx->sss_filter_gaussian_coef_ubo.WriteMemory(shader_data);
sss->textures[1].Bind();
glViewport(0, 0, 320, 180);
gl_state_set_viewport(0, 0, 320, 180);
uniform_value[U_SSS_FILTER] = 3;
shaders_ft.set(SHADER_FT_SSS_FILT);
gl_state_bind_texture_2d(sss->textures[2].GetColorTex());
-1
View File
@@ -4,7 +4,6 @@
*/
#include "render_texture.hpp"
#include "gl_state.hpp"
#include "render_context.hpp"
#include "texture.hpp"
+2 -1
View File
@@ -6,6 +6,7 @@
#pragma once
#include "shared.hpp"
#include "gl_state.hpp"
#include "texture.hpp"
struct RenderTexture {
@@ -46,7 +47,7 @@ struct RenderTexture {
};
inline void SetViewport() {
glViewport(0, 0, GetWidth(), GetHeight());
gl_state_set_viewport(0, 0, GetWidth(), GetHeight());
};
};
+5 -5
View File
@@ -233,7 +233,7 @@ namespace renderer {
void DOF3::render_tiles(GLuint depth_texture, bool f2) {
gl_state_begin_event("renderer::DOF3::render_tiles");
gl_state_bind_framebuffer(fbo[0].buffer);
glViewport(0, 0, fbo[0].width, fbo[0].height);
gl_state_set_viewport(0, 0, fbo[0].width, fbo[0].height);
uniform_value[U_DOF_STAGE] = 0;
shaders_ft.set(SHADER_FT_DOF);
common_ubo.Bind(0);
@@ -242,7 +242,7 @@ namespace renderer {
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
gl_state_bind_framebuffer(fbo[1].buffer);
glViewport(0, 0, fbo[1].width, fbo[1].height);
gl_state_set_viewport(0, 0, fbo[1].width, fbo[1].height);
uniform_value[U_DOF_STAGE] = 1;
shaders_ft.set(SHADER_FT_DOF);
gl_state_active_bind_texture_2d(0, textures[0]);
@@ -255,7 +255,7 @@ namespace renderer {
void DOF3::downsample(GLuint color_texture, GLuint depth_texture, bool f2) {
gl_state_begin_event("renderer::DOF3::downsample");
gl_state_bind_framebuffer(fbo[2].buffer);
glViewport(0, 0, fbo[2].width, fbo[2].height);
gl_state_set_viewport(0, 0, fbo[2].width, fbo[2].height);
uniform_value[U_DOF_STAGE] = 2;
shaders_ft.set(SHADER_FT_DOF);
common_ubo.Bind(0);
@@ -272,7 +272,7 @@ namespace renderer {
void DOF3::apply_main_filter(bool f2) {
gl_state_begin_event("renderer::DOF3::apply_main_filter");
gl_state_bind_framebuffer(fbo[3].buffer);
glViewport(0, 0, fbo[3].width, fbo[3].height);
gl_state_set_viewport(0, 0, fbo[3].width, fbo[3].height);
uniform_value[U_DOF_STAGE] = 3;
shaders_ft.set(SHADER_FT_DOF);
common_ubo.Bind(0);
@@ -290,7 +290,7 @@ namespace renderer {
void DOF3::upsample(RenderTexture* rt, GLuint color_texture, GLuint depth_texture, bool f2) {
gl_state_begin_event("renderer::DOF3::upsample");
rctx_ptr->render_buffer.Bind();
glViewport(0, 0, width, height);
gl_state_set_viewport(0, 0, width, height);
uniform_value[U_DOF_STAGE] = 4;
shaders_ft.set(SHADER_FT_DOF);
common_ubo.Bind(0);
+1 -1
View File
@@ -65,7 +65,7 @@ namespace renderer {
GL_TEXTURE_2D, 0, 0, 0, 0, fbo.textures[0],
GL_TEXTURE_2D, 0, 0, 0, 0, fbo.width, fbo.height, 1);
gl_state_bind_framebuffer(fbo.buffer);
glViewport(0, 0, fbo.width, fbo.height);
gl_state_set_viewport(0, 0, fbo.width, fbo.height);
}
void Transparency::resize(GLuint color_texture, GLuint depth_texture, int32_t width, int32_t height) {
+6 -7
View File
@@ -774,8 +774,7 @@ namespace spr {
if (index == 2 && resolution_mode != RESOLUTION_MODE_MAX)
res_window_get()->resolution_mode = resolution_mode;
GLint v43[4];
glGetIntegerv(GL_VIEWPORT, v43);
gl_state_rect viewport_rect = gl_state_get_viewport();
for (int32_t i = 0; i < 2; i++) {
auto reqlist = this->reqlist[index][i];
@@ -815,15 +814,15 @@ namespace spr {
y_min = (int32_t)min.y;
x_max = (int32_t)(max.x - min.x);
y_max = (int32_t)(max.y - min.y);
glViewport(x_min, y_min, x_max, y_max);
gl_state_set_viewport(x_min, y_min, x_max, y_max);
}
else {
view_projection = vp;
x_min = v43[0];
y_min = v43[1];
x_max = v43[2];
y_max = v43[3];
x_min = viewport_rect.x;
y_min = viewport_rect.y;
x_max = viewport_rect.width;
y_max = viewport_rect.height;
}
float_t v23 = (float_t)x_max * 0.5f;
+4 -4
View File
@@ -306,7 +306,7 @@ int32_t app_main(const app_init_struct& ais) {
#if !(BAKE_PNG || BAKE_VIDEO)
glfwGetFramebufferSize(window, &width, &height);
#endif
glViewport(0, 0, width, height);
gl_state_set_viewport(0, 0, width, height);
gl_state_disable_blend();
gl_state_disable_depth_test();
gl_state_set_depth_mask(GL_FALSE);
@@ -373,7 +373,7 @@ bool render_data::load() {
#endif
gl_state_get_error();
glViewport(0, 0, width, height);
gl_state_set_viewport(0, 0, width, height);
return true;
}
@@ -1177,7 +1177,7 @@ static void render_context_disp(render_context* rctx) {
gl_state_set_stencil_mask(0x00);
gl_state_set_depth_mask(GL_FALSE);
glViewport(0, 0, internal_3d_res.x, internal_3d_res.y);
gl_state_set_viewport(0, 0, internal_3d_res.x, internal_3d_res.y);
cam->update();
@@ -1194,7 +1194,7 @@ static void render_context_disp(render_context* rctx) {
rctx->sprite_width, rctx->sprite_height, GL_COLOR_BUFFER_BIT, GL_LINEAR);
#endif
glViewport(0, 0, rctx->screen_width, rctx->screen_height);
gl_state_set_viewport(0, 0, rctx->screen_width, rctx->screen_height);
if (draw_imgui)
render_context_imgui(rctx);
+2 -2
View File
@@ -6169,7 +6169,7 @@ bool x_pv_game::ctrl() {
gl_state_bind_framebuffer(d3d_gl_fbo[next_idx]);
gl_state_active_bind_texture_2d(0, tex->glid);
glViewport(0, 0, width, height);
gl_state_set_viewport(0, 0, width, height);
uniform_value[U_REDUCE] = 0;
shaders_ft.set(SHADER_FT_REDUCE);
glBeginQuery(GL_SAMPLES_PASSED, d3d_query[next_idx]);
@@ -6202,7 +6202,7 @@ bool x_pv_game::ctrl() {
GLint swizzle_aaa1[] = { GL_ALPHA, GL_ALPHA, GL_ALPHA, GL_ONE };
glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_RGBA, swizzle_aaa1);
glViewport(0, 0, width, height);
gl_state_set_viewport(0, 0, width, height);
uniform_value[U_REDUCE] = 0;
shaders_ft.set(SHADER_FT_REDUCE);
glBeginQuery(GL_SAMPLES_PASSED, d3d_alpha_query[next_alpha_idx]);