Add callback for setting single uniform parameter

This commit is contained in:
twinaphex 2016-04-16 19:38:35 +02:00
parent ae218cf1a5
commit 1230edf1ee
5 changed files with 30 additions and 16 deletions

View File

@ -110,7 +110,7 @@ struct uniform_cg_data
CGparameter loc;
};
static void cg_uniform_set_parameter(
static void gl_cg_set_uniform_parameter(
void *data,
void *uniform_info_data,
void *_shader_info_data,
@ -326,7 +326,7 @@ static void gl_cg_set_texture_info(
uniform_data[3].loc = params->tex_size_f;
for (i = 0; i < 4; i++)
cg_uniform_set_parameter(cg_data, &uniform_params[i], NULL, &uniform_data[i]);
gl_cg_set_uniform_parameter(cg_data, &uniform_params[i], NULL, &uniform_data[i]);
if (params->coord)
{
@ -442,7 +442,7 @@ static void gl_cg_set_params(void *data, void *shader_data,
}
for (i = 0; i < uniform_count; i++)
cg_uniform_set_parameter(cg_data, &uniform_params[i], &cg_data->prg[i], &uniform_data[i]);
gl_cg_set_uniform_parameter(cg_data, &uniform_params[i], &cg_data->prg[i], &uniform_data[i]);
/* Set orig texture. */
gl_cg_set_texture_info(cg_data, &cg_data->prg[cg_data->active_idx].orig, info);
@ -506,7 +506,7 @@ static void gl_cg_set_params(void *data, void *shader_data,
uniform_params[1].result.f.v0 = cg_data->shader->parameters[i].current;
for (j = 0; j < 2; j++)
cg_uniform_set_parameter(cg_data, &uniform_params[j], &cg_data->prg[j], &pragma_cg_params[j]);
gl_cg_set_uniform_parameter(cg_data, &uniform_params[j], &cg_data->prg[j], &pragma_cg_params[j]);
}
/* Set state parameters. */
@ -541,7 +541,7 @@ static void gl_cg_set_params(void *data, void *shader_data,
uniform_params[1].result.f.v0 = tracker_info[i].value;
for (j = 0; j < 2; j++)
cg_uniform_set_parameter(cg_data, &uniform_params[j], &cg_data->prg[j], &pragma_cg_params[j]);
gl_cg_set_uniform_parameter(cg_data, &uniform_params[j], &cg_data->prg[j], &pragma_cg_params[j]);
}
}
}
@ -1282,6 +1282,7 @@ const shader_backend_t gl_cg_backend = {
gl_cg_init,
gl_cg_deinit,
gl_cg_set_params,
gl_cg_set_uniform_parameter,
gl_cg_compile_program,
gl_cg_use,
gl_cg_num,

View File

@ -1049,7 +1049,7 @@ error:
return NULL;
}
static void glsl_uniform_set_parameter(
static void gl_glsl_set_uniform_parameter(
void *data,
void *uniform_info_data,
void *shader_info_data,
@ -1194,7 +1194,7 @@ static void gl_glsl_set_params(void *data, void *shader_data,
uniform_count++;
for (i = 0; i < uniform_count; i++)
glsl_uniform_set_parameter(glsl, &uniform_params[i], NULL, NULL);
gl_glsl_set_uniform_parameter(glsl, &uniform_params[i], NULL, NULL);
/* Set lookup textures. */
for (i = 0; i < glsl->shader->luts; i++)
@ -1212,7 +1212,7 @@ static void gl_glsl_set_params(void *data, void *shader_data,
lut_uniform.type = UNIFORM_1I;
lut_uniform.result.integer.v0 = texunit;
glsl_uniform_set_parameter(glsl, &lut_uniform, NULL, NULL);
gl_glsl_set_uniform_parameter(glsl, &lut_uniform, NULL, NULL);
texunit++;
}
@ -1234,7 +1234,7 @@ static void gl_glsl_set_params(void *data, void *shader_data,
orig_tex_uniform.type = UNIFORM_1I;
orig_tex_uniform.result.integer.v0 = texunit;
glsl_uniform_set_parameter(glsl, &orig_tex_uniform, NULL, NULL);
gl_glsl_set_uniform_parameter(glsl, &orig_tex_uniform, NULL, NULL);
glBindTexture(GL_TEXTURE_2D, info->tex);
texunit++;
@ -1257,7 +1257,7 @@ static void gl_glsl_set_params(void *data, void *shader_data,
orig_uniforms[1].enabled = true;
for (j = 0; j < 2; j++)
glsl_uniform_set_parameter(glsl, &orig_uniforms[i], NULL, NULL);
gl_glsl_set_uniform_parameter(glsl, &orig_uniforms[i], NULL, NULL);
/* Pass texture coordinates. */
if (uni->orig.tex_coord >= 0)
@ -1285,7 +1285,7 @@ static void gl_glsl_set_params(void *data, void *shader_data,
feedback_texture_param.type = UNIFORM_1I;
feedback_texture_param.result.integer.v0 = texunit;
glsl_uniform_set_parameter(glsl, &feedback_texture_param, NULL, NULL);
gl_glsl_set_uniform_parameter(glsl, &feedback_texture_param, NULL, NULL);
glBindTexture(GL_TEXTURE_2D, feedback_info->tex);
texunit++;
@ -1308,7 +1308,7 @@ static void gl_glsl_set_params(void *data, void *shader_data,
feedback_uniforms[1].enabled = true;
for (j = 0; j < 2; j++)
glsl_uniform_set_parameter(glsl, &feedback_uniforms[i], NULL, NULL);
gl_glsl_set_uniform_parameter(glsl, &feedback_uniforms[i], NULL, NULL);
/* Pass texture coordinates. */
if (uni->feedback.tex_coord >= 0)
@ -1359,7 +1359,7 @@ static void gl_glsl_set_params(void *data, void *shader_data,
fbo_tex_params[2].enabled = true;
for (j = 0; j < 3; j++)
glsl_uniform_set_parameter(glsl, &fbo_tex_params[i], NULL, NULL);
gl_glsl_set_uniform_parameter(glsl, &fbo_tex_params[i], NULL, NULL);
if (uni->pass[i].tex_coord >= 0)
{
@ -1411,7 +1411,7 @@ static void gl_glsl_set_params(void *data, void *shader_data,
prev_tex_params[2].enabled = true;
for (j = 0; j < 3; j++)
glsl_uniform_set_parameter(glsl, &prev_tex_params[i], NULL, NULL);
gl_glsl_set_uniform_parameter(glsl, &prev_tex_params[i], NULL, NULL);
/* Pass texture coordinates. */
if (uni->prev[i].tex_coord >= 0)
@ -1448,7 +1448,7 @@ static void gl_glsl_set_params(void *data, void *shader_data,
pragma_param.type = UNIFORM_1F;
pragma_param.result.f.v0 = glsl->shader->parameters[i].current;
glsl_uniform_set_parameter(glsl, &pragma_param, NULL, NULL);
gl_glsl_set_uniform_parameter(glsl, &pragma_param, NULL, NULL);
}
/* Set state parameters. */
@ -1473,7 +1473,7 @@ static void gl_glsl_set_params(void *data, void *shader_data,
state_param.type = UNIFORM_1F;
state_param.result.f.v0 = state_info[i].value;
glsl_uniform_set_parameter(glsl, &state_param, NULL, NULL);
gl_glsl_set_uniform_parameter(glsl, &state_param, NULL, NULL);
}
}
}
@ -1714,6 +1714,7 @@ const shader_backend_t gl_glsl_backend = {
gl_glsl_init,
gl_glsl_deinit,
gl_glsl_set_params,
gl_glsl_set_uniform_parameter,
gl_glsl_compile_program,
gl_glsl_use,
gl_glsl_num,

View File

@ -571,6 +571,7 @@ const shader_backend_t hlsl_backend = {
hlsl_init,
hlsl_deinit,
hlsl_set_params,
hlsl_uniform_set_parameter,
hlsl_use,
hlsl_num,
hlsl_filter_type,

View File

@ -74,6 +74,14 @@ static void shader_null_set_params(void *data, void *shader_data,
{
}
static void shader_null_set_uniform_parameter(
void *data,
void *uniform_info_data,
void *shader_info_data,
void *uniform_data)
{
}
static bool shader_null_set_mvp(void *data, void *shader_data, const math_matrix_4x4 *mat)
{
#ifdef HAVE_OPENGL
@ -166,6 +174,7 @@ const shader_backend_t shader_null_backend = {
shader_null_init,
shader_null_deinit,
shader_null_set_params,
shader_null_set_uniform_parameter,
shader_null_compile_program,
shader_null_use,
shader_null_num,

View File

@ -163,6 +163,8 @@ typedef struct shader_backend
const void *prev_info,
const void *feedback_info,
const void *fbo_info, unsigned fbo_info_cnt);
void (*set_uniform_parameter)(void *data, void *uniform_info_data,
void *shader_info_data, void *uniform_data);
bool (*compile_program)(void *data, unsigned idx,
void *program_data, struct shader_program_info *program_info);