mirror of
https://github.com/korenkonder/ReDIVA.git
synced 2026-10-06 05:38:02 +03:00
Replaced glScissor and glViewport with gl_state functions
This commit is contained in:
+7
-9
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
@@ -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
@@ -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());
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
*/
|
||||
|
||||
#include "render_texture.hpp"
|
||||
#include "gl_state.hpp"
|
||||
#include "render_context.hpp"
|
||||
#include "texture.hpp"
|
||||
|
||||
|
||||
@@ -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());
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
@@ -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
@@ -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);
|
||||
|
||||
@@ -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]);
|
||||
|
||||
Reference in New Issue
Block a user