mirror of
https://github.com/libretro/RetroArch
synced 2025-02-10 21:40:22 +00:00
Lots of PREV frames in Cg.
This commit is contained in:
parent
48e8472f9c
commit
816ef095ed
@ -95,6 +95,7 @@ struct cg_fbo_params
|
|||||||
#define MAX_SHADERS 16
|
#define MAX_SHADERS 16
|
||||||
#define MAX_TEXTURES 8
|
#define MAX_TEXTURES 8
|
||||||
#define MAX_VARIABLES 64
|
#define MAX_VARIABLES 64
|
||||||
|
#define PREV_TEXTURES 8
|
||||||
|
|
||||||
struct cg_program
|
struct cg_program
|
||||||
{
|
{
|
||||||
@ -114,7 +115,7 @@ struct cg_program
|
|||||||
|
|
||||||
struct cg_fbo_params fbo[MAX_SHADERS];
|
struct cg_fbo_params fbo[MAX_SHADERS];
|
||||||
struct cg_fbo_params orig;
|
struct cg_fbo_params orig;
|
||||||
struct cg_fbo_params prev;
|
struct cg_fbo_params prev[PREV_TEXTURES];
|
||||||
};
|
};
|
||||||
|
|
||||||
#define FILTER_UNSPEC 0
|
#define FILTER_UNSPEC 0
|
||||||
@ -190,22 +191,26 @@ void gl_cg_set_params(unsigned width, unsigned height,
|
|||||||
cgGLEnableClientState(prg[active_index].orig.coord);
|
cgGLEnableClientState(prg[active_index].orig.coord);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set prev texture
|
// Set prev textures.
|
||||||
param = prg[active_index].prev.tex;
|
for (unsigned i = 0; i < PREV_TEXTURES - 1; i++)
|
||||||
if (param)
|
|
||||||
{
|
{
|
||||||
cgGLSetTextureParameter(param, prev_info->tex);
|
param = prg[active_index].prev[i].tex;
|
||||||
cgGLEnableTextureParameter(param);
|
if (param)
|
||||||
}
|
{
|
||||||
|
cgGLSetTextureParameter(param, prev_info[i].tex);
|
||||||
|
cgGLEnableTextureParameter(param);
|
||||||
|
}
|
||||||
|
|
||||||
set_param_2f(prg[active_index].prev.vid_size_v, prev_info->input_size[0], prev_info->input_size[1]);
|
set_param_2f(prg[active_index].prev[i].vid_size_v, prev_info[i].input_size[0], prev_info[i].input_size[1]);
|
||||||
set_param_2f(prg[active_index].prev.vid_size_f, prev_info->input_size[0], prev_info->input_size[1]);
|
set_param_2f(prg[active_index].prev[i].vid_size_f, prev_info[i].input_size[0], prev_info[i].input_size[1]);
|
||||||
set_param_2f(prg[active_index].prev.tex_size_v, prev_info->tex_size[0], prev_info->tex_size[1]);
|
set_param_2f(prg[active_index].prev[i].tex_size_v, prev_info[i].tex_size[0], prev_info[i].tex_size[1]);
|
||||||
set_param_2f(prg[active_index].prev.tex_size_f, prev_info->tex_size[0], prev_info->tex_size[1]);
|
set_param_2f(prg[active_index].prev[i].tex_size_f, prev_info[i].tex_size[0], prev_info[i].tex_size[1]);
|
||||||
if (prg[active_index].prev.coord)
|
|
||||||
{
|
if (prg[active_index].prev[i].coord)
|
||||||
cgGLSetParameterPointer(prg[active_index].prev.coord, 2, GL_FLOAT, 0, prev_info->coord);
|
{
|
||||||
cgGLEnableClientState(prg[active_index].prev.coord);
|
cgGLSetParameterPointer(prg[active_index].prev[i].coord, 2, GL_FLOAT, 0, prev_info[i].coord);
|
||||||
|
cgGLEnableClientState(prg[active_index].prev[i].coord);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set lookup textures.
|
// Set lookup textures.
|
||||||
@ -985,12 +990,36 @@ bool gl_cg_init(const char *path)
|
|||||||
prg[i].orig.tex_size_f = cgGetNamedParameter(prg[i].fprg, "ORIG.texture_size");
|
prg[i].orig.tex_size_f = cgGetNamedParameter(prg[i].fprg, "ORIG.texture_size");
|
||||||
prg[i].orig.coord = cgGetNamedParameter(prg[i].vprg, "ORIG.tex_coord");
|
prg[i].orig.coord = cgGetNamedParameter(prg[i].vprg, "ORIG.tex_coord");
|
||||||
|
|
||||||
prg[i].prev.tex = cgGetNamedParameter(prg[i].fprg, "PREV.texture");
|
for (unsigned j = 0; j < PREV_TEXTURES - 1; j++)
|
||||||
prg[i].prev.vid_size_v = cgGetNamedParameter(prg[i].vprg, "PREV.video_size");
|
{
|
||||||
prg[i].prev.vid_size_f = cgGetNamedParameter(prg[i].fprg, "PREV.video_size");
|
if (j == 0)
|
||||||
prg[i].prev.tex_size_v = cgGetNamedParameter(prg[i].vprg, "PREV.texture_size");
|
{
|
||||||
prg[i].prev.tex_size_f = cgGetNamedParameter(prg[i].fprg, "PREV.texture_size");
|
prg[i].prev[0].tex = cgGetNamedParameter(prg[i].fprg, "PREV.texture");
|
||||||
prg[i].prev.coord = cgGetNamedParameter(prg[i].vprg, "PREV.tex_coord");
|
prg[i].prev[0].vid_size_v = cgGetNamedParameter(prg[i].vprg, "PREV.video_size");
|
||||||
|
prg[i].prev[0].vid_size_f = cgGetNamedParameter(prg[i].fprg, "PREV.video_size");
|
||||||
|
prg[i].prev[0].tex_size_v = cgGetNamedParameter(prg[i].vprg, "PREV.texture_size");
|
||||||
|
prg[i].prev[0].tex_size_f = cgGetNamedParameter(prg[i].fprg, "PREV.texture_size");
|
||||||
|
prg[i].prev[0].coord = cgGetNamedParameter(prg[i].vprg, "PREV.tex_coord");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char attr_buf[64];
|
||||||
|
|
||||||
|
snprintf(attr_buf, sizeof(attr_buf), "PREV%u.texture", j);
|
||||||
|
prg[i].prev[j].tex = cgGetNamedParameter(prg[i].fprg, attr_buf);
|
||||||
|
|
||||||
|
snprintf(attr_buf, sizeof(attr_buf), "PREV%u.video_size", j);
|
||||||
|
prg[i].prev[j].vid_size_v = cgGetNamedParameter(prg[i].vprg, attr_buf);
|
||||||
|
prg[i].prev[j].vid_size_f = cgGetNamedParameter(prg[i].fprg, attr_buf);
|
||||||
|
|
||||||
|
snprintf(attr_buf, sizeof(attr_buf), "PREV%u.texture_size", j);
|
||||||
|
prg[i].prev[j].tex_size_v = cgGetNamedParameter(prg[i].vprg, attr_buf);
|
||||||
|
prg[i].prev[j].tex_size_f = cgGetNamedParameter(prg[i].fprg, attr_buf);
|
||||||
|
|
||||||
|
snprintf(attr_buf, sizeof(attr_buf), "PREV%u.tex_coord", j);
|
||||||
|
prg[i].prev[j].coord = cgGetNamedParameter(prg[i].vprg, attr_buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (unsigned j = 0; j < i - 1; j++)
|
for (unsigned j = 0; j < i - 1; j++)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user