mirror of
https://github.com/libretro/RetroArch
synced 2025-02-25 21:41:03 +00:00
Add callback for setting single uniform parameter
This commit is contained in:
parent
ae218cf1a5
commit
1230edf1ee
@ -110,7 +110,7 @@ struct uniform_cg_data
|
|||||||
CGparameter loc;
|
CGparameter loc;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void cg_uniform_set_parameter(
|
static void gl_cg_set_uniform_parameter(
|
||||||
void *data,
|
void *data,
|
||||||
void *uniform_info_data,
|
void *uniform_info_data,
|
||||||
void *_shader_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;
|
uniform_data[3].loc = params->tex_size_f;
|
||||||
|
|
||||||
for (i = 0; i < 4; i++)
|
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)
|
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++)
|
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. */
|
/* Set orig texture. */
|
||||||
gl_cg_set_texture_info(cg_data, &cg_data->prg[cg_data->active_idx].orig, info);
|
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;
|
uniform_params[1].result.f.v0 = cg_data->shader->parameters[i].current;
|
||||||
|
|
||||||
for (j = 0; j < 2; j++)
|
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. */
|
/* 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;
|
uniform_params[1].result.f.v0 = tracker_info[i].value;
|
||||||
|
|
||||||
for (j = 0; j < 2; j++)
|
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_init,
|
||||||
gl_cg_deinit,
|
gl_cg_deinit,
|
||||||
gl_cg_set_params,
|
gl_cg_set_params,
|
||||||
|
gl_cg_set_uniform_parameter,
|
||||||
gl_cg_compile_program,
|
gl_cg_compile_program,
|
||||||
gl_cg_use,
|
gl_cg_use,
|
||||||
gl_cg_num,
|
gl_cg_num,
|
||||||
|
@ -1049,7 +1049,7 @@ error:
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void glsl_uniform_set_parameter(
|
static void gl_glsl_set_uniform_parameter(
|
||||||
void *data,
|
void *data,
|
||||||
void *uniform_info_data,
|
void *uniform_info_data,
|
||||||
void *shader_info_data,
|
void *shader_info_data,
|
||||||
@ -1194,7 +1194,7 @@ static void gl_glsl_set_params(void *data, void *shader_data,
|
|||||||
uniform_count++;
|
uniform_count++;
|
||||||
|
|
||||||
for (i = 0; i < uniform_count; i++)
|
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. */
|
/* Set lookup textures. */
|
||||||
for (i = 0; i < glsl->shader->luts; i++)
|
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.type = UNIFORM_1I;
|
||||||
lut_uniform.result.integer.v0 = texunit;
|
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++;
|
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.type = UNIFORM_1I;
|
||||||
orig_tex_uniform.result.integer.v0 = texunit;
|
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);
|
glBindTexture(GL_TEXTURE_2D, info->tex);
|
||||||
texunit++;
|
texunit++;
|
||||||
@ -1257,7 +1257,7 @@ static void gl_glsl_set_params(void *data, void *shader_data,
|
|||||||
orig_uniforms[1].enabled = true;
|
orig_uniforms[1].enabled = true;
|
||||||
|
|
||||||
for (j = 0; j < 2; j++)
|
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. */
|
/* Pass texture coordinates. */
|
||||||
if (uni->orig.tex_coord >= 0)
|
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.type = UNIFORM_1I;
|
||||||
feedback_texture_param.result.integer.v0 = texunit;
|
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);
|
glBindTexture(GL_TEXTURE_2D, feedback_info->tex);
|
||||||
texunit++;
|
texunit++;
|
||||||
@ -1308,7 +1308,7 @@ static void gl_glsl_set_params(void *data, void *shader_data,
|
|||||||
feedback_uniforms[1].enabled = true;
|
feedback_uniforms[1].enabled = true;
|
||||||
|
|
||||||
for (j = 0; j < 2; j++)
|
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. */
|
/* Pass texture coordinates. */
|
||||||
if (uni->feedback.tex_coord >= 0)
|
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;
|
fbo_tex_params[2].enabled = true;
|
||||||
|
|
||||||
for (j = 0; j < 3; j++)
|
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)
|
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;
|
prev_tex_params[2].enabled = true;
|
||||||
|
|
||||||
for (j = 0; j < 3; j++)
|
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. */
|
/* Pass texture coordinates. */
|
||||||
if (uni->prev[i].tex_coord >= 0)
|
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.type = UNIFORM_1F;
|
||||||
pragma_param.result.f.v0 = glsl->shader->parameters[i].current;
|
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. */
|
/* 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.type = UNIFORM_1F;
|
||||||
state_param.result.f.v0 = state_info[i].value;
|
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_init,
|
||||||
gl_glsl_deinit,
|
gl_glsl_deinit,
|
||||||
gl_glsl_set_params,
|
gl_glsl_set_params,
|
||||||
|
gl_glsl_set_uniform_parameter,
|
||||||
gl_glsl_compile_program,
|
gl_glsl_compile_program,
|
||||||
gl_glsl_use,
|
gl_glsl_use,
|
||||||
gl_glsl_num,
|
gl_glsl_num,
|
||||||
|
@ -571,6 +571,7 @@ const shader_backend_t hlsl_backend = {
|
|||||||
hlsl_init,
|
hlsl_init,
|
||||||
hlsl_deinit,
|
hlsl_deinit,
|
||||||
hlsl_set_params,
|
hlsl_set_params,
|
||||||
|
hlsl_uniform_set_parameter,
|
||||||
hlsl_use,
|
hlsl_use,
|
||||||
hlsl_num,
|
hlsl_num,
|
||||||
hlsl_filter_type,
|
hlsl_filter_type,
|
||||||
|
@ -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)
|
static bool shader_null_set_mvp(void *data, void *shader_data, const math_matrix_4x4 *mat)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_OPENGL
|
#ifdef HAVE_OPENGL
|
||||||
@ -166,6 +174,7 @@ const shader_backend_t shader_null_backend = {
|
|||||||
shader_null_init,
|
shader_null_init,
|
||||||
shader_null_deinit,
|
shader_null_deinit,
|
||||||
shader_null_set_params,
|
shader_null_set_params,
|
||||||
|
shader_null_set_uniform_parameter,
|
||||||
shader_null_compile_program,
|
shader_null_compile_program,
|
||||||
shader_null_use,
|
shader_null_use,
|
||||||
shader_null_num,
|
shader_null_num,
|
||||||
|
@ -163,6 +163,8 @@ typedef struct shader_backend
|
|||||||
const void *prev_info,
|
const void *prev_info,
|
||||||
const void *feedback_info,
|
const void *feedback_info,
|
||||||
const void *fbo_info, unsigned fbo_info_cnt);
|
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,
|
bool (*compile_program)(void *data, unsigned idx,
|
||||||
void *program_data, struct shader_program_info *program_info);
|
void *program_data, struct shader_program_info *program_info);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user