Skip to content

Commit

Permalink
Add support for FinalViewportSize in GLSL
Browse files Browse the repository at this point in the history
  • Loading branch information
fishcu committed Nov 10, 2023
1 parent 5d58013 commit c9e6dbc
Showing 1 changed file with 17 additions and 7 deletions.
24 changes: 17 additions & 7 deletions gfx/drivers_shader/shader_glsl.c
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ struct shader_uniforms
int input_size;
int output_size;
int texture_size;
int final_vp_size;

int frame_count;
int frame_direction;
Expand Down Expand Up @@ -735,6 +736,7 @@ static void gl_glsl_find_uniforms(glsl_shader_data_t *glsl,
uni->input_size = gl_glsl_get_uniform(glsl, prog, "InputSize");
uni->output_size = gl_glsl_get_uniform(glsl, prog, "OutputSize");
uni->texture_size = gl_glsl_get_uniform(glsl, prog, "TextureSize");
uni->final_vp_size = gl_glsl_get_uniform(glsl, prog, "FinalViewportSize");

uni->frame_count = gl_glsl_get_uniform(glsl, prog, "FrameCount");
uni->frame_direction = gl_glsl_get_uniform(glsl, prog, "FrameDirection");
Expand Down Expand Up @@ -1267,8 +1269,11 @@ static void gl_glsl_set_params(void *dat, void *shader_data)
unsigned i;
GLfloat buffer[512];
struct glsl_attrib attribs[32];
float input_size[2], output_size[2], texture_size[2];
float input_size[2], output_size[2], texture_size[2], final_vp_size[2];
video_shader_ctx_params_t *params = (video_shader_ctx_params_t*)dat;
gl2_t *gl_data = (gl2_t*)params->data;
unsigned vp_width = gl_data->vp_out_width;
unsigned vp_height = gl_data->vp_out_height;
unsigned width = params->width;
unsigned height = params->height;
unsigned tex_width = params->tex_width;
Expand Down Expand Up @@ -1300,12 +1305,14 @@ static void gl_glsl_set_params(void *dat, void *shader_data)
if (glsl->prg[glsl->active_idx].id == 0)
return;

input_size [0] = (float)width;
input_size [1] = (float)height;
output_size[0] = (float)out_width;
output_size[1] = (float)out_height;
texture_size[0] = (float)tex_width;
texture_size[1] = (float)tex_height;
input_size [0] = (float)width;
input_size [1] = (float)height;
output_size[0] = (float)out_width;
output_size[1] = (float)out_height;
texture_size[0] = (float)tex_width;
texture_size[1] = (float)tex_height;
final_vp_size[0] = (float)vp_width;
final_vp_size[1] = (float)vp_height;

if (uni->input_size >= 0)
glUniform2fv(uni->input_size, 1, input_size);
Expand All @@ -1316,6 +1323,9 @@ static void gl_glsl_set_params(void *dat, void *shader_data)
if (uni->texture_size >= 0)
glUniform2fv(uni->texture_size, 1, texture_size);

if (uni->final_vp_size >= 0)
glUniform2fv(uni->final_vp_size, 1, final_vp_size);

if (uni->frame_count >= 0 && glsl->active_idx)
{
unsigned modulo = glsl->shader->pass[glsl->active_idx - 1].frame_count_mod;
Expand Down

0 comments on commit c9e6dbc

Please sign in to comment.