(Shaders) Refactors

This commit is contained in:
twinaphex 2016-04-13 19:58:40 +02:00
parent 29495d4973
commit f28c0475b5
2 changed files with 16 additions and 14 deletions

View File

@ -609,7 +609,7 @@ static void gl_cg_deinit(void *data)
listing_##type = strdup(list); \ listing_##type = strdup(list); \
} }
static bool gl_cg_load_program(void *data, unsigned idx, static bool gl_cg_compile_program(void *data, unsigned idx,
const char *prog, bool path_is_file) const char *prog, bool path_is_file)
{ {
const char *argv[2 + GFX_MAX_SHADERS]; const char *argv[2 + GFX_MAX_SHADERS];
@ -722,7 +722,7 @@ static void gl_cg_set_program_base_attrib(void *data, unsigned i)
static bool gl_cg_load_stock(void *data) static bool gl_cg_load_stock(void *data)
{ {
if (!gl_cg_load_program(data, 0, stock_cg_gl_program, false)) if (!gl_cg_compile_program(data, 0, stock_cg_gl_program, false))
{ {
RARCH_ERR("Failed to compile passthrough shader, is something wrong with your environment?\n"); RARCH_ERR("Failed to compile passthrough shader, is something wrong with your environment?\n");
return false; return false;
@ -750,7 +750,7 @@ static bool gl_cg_load_plain(void *data, const char *path)
RARCH_LOG("Loading Cg file: %s\n", path); RARCH_LOG("Loading Cg file: %s\n", path);
strlcpy(cg_data->shader->pass[0].source.path, path, strlcpy(cg_data->shader->pass[0].source.path, path,
sizeof(cg_data->shader->pass[0].source.path)); sizeof(cg_data->shader->pass[0].source.path));
if (!gl_cg_load_program(data, 1, path, true)) if (!gl_cg_compile_program(data, 1, path, true))
return false; return false;
} }
else else
@ -834,7 +834,7 @@ static bool gl_cg_load_shader(void *data, unsigned i)
RARCH_LOG("Loading Cg shader: \"%s\".\n", RARCH_LOG("Loading Cg shader: \"%s\".\n",
cg_data->shader->pass[i].source.path); cg_data->shader->pass[i].source.path);
if (!gl_cg_load_program(data, i + 1, if (!gl_cg_compile_program(cg_data, i + 1,
cg_data->shader->pass[i].source.path, true)) cg_data->shader->pass[i].source.path, true))
return false; return false;

View File

@ -420,8 +420,9 @@ static bool gl_glsl_link_program(GLuint prog)
} }
static GLuint gl_glsl_compile_program(glsl_shader_data_t *glsl, static GLuint gl_glsl_compile_program(glsl_shader_data_t *glsl,
unsigned idx,
const char *vertex, const char *vertex,
const char *fragment, unsigned i) const char *fragment)
{ {
GLuint vert = 0; GLuint vert = 0;
GLuint frag = 0; GLuint frag = 0;
@ -438,7 +439,7 @@ static GLuint gl_glsl_compile_program(glsl_shader_data_t *glsl,
glsl, glsl,
vert, "#define VERTEX\n#define PARAMETER_UNIFORM\n", vertex)) vert, "#define VERTEX\n#define PARAMETER_UNIFORM\n", vertex))
{ {
RARCH_ERR("Failed to compile vertex shader #%u\n", i); RARCH_ERR("Failed to compile vertex shader #%u\n", idx);
goto error; goto error;
} }
@ -452,7 +453,7 @@ static GLuint gl_glsl_compile_program(glsl_shader_data_t *glsl,
if (!gl_glsl_compile_shader(glsl, frag, if (!gl_glsl_compile_shader(glsl, frag,
"#define FRAGMENT\n#define PARAMETER_UNIFORM\n", fragment)) "#define FRAGMENT\n#define PARAMETER_UNIFORM\n", fragment))
{ {
RARCH_ERR("Failed to compile fragment shader #%u\n", i); RARCH_ERR("Failed to compile fragment shader #%u\n", idx);
goto error; goto error;
} }
@ -481,7 +482,7 @@ static GLuint gl_glsl_compile_program(glsl_shader_data_t *glsl,
return prog; return prog;
error: error:
RARCH_ERR("Failed to link program #%u.\n", i); RARCH_ERR("Failed to link program #%u.\n", idx);
return 0; return 0;
} }
@ -543,7 +544,7 @@ static bool gl_glsl_compile_programs(
vertex = pass->source.string.vertex; vertex = pass->source.string.vertex;
fragment = pass->source.string.fragment; fragment = pass->source.string.fragment;
gl_prog[i] = gl_glsl_compile_program(glsl, vertex, fragment, i); gl_prog[i] = gl_glsl_compile_program(glsl, i, vertex, fragment);
if (!gl_prog[i]) if (!gl_prog[i])
{ {
@ -917,7 +918,7 @@ static void *gl_glsl_init(void *data, const char *path)
} }
} }
if (!(glsl->gl_program[0] = gl_glsl_compile_program(glsl, stock_vertex, stock_fragment, 0))) if (!(glsl->gl_program[0] = gl_glsl_compile_program(glsl, 0, stock_vertex, stock_fragment)))
{ {
RARCH_ERR("GLSL stock programs failed to compile.\n"); RARCH_ERR("GLSL stock programs failed to compile.\n");
goto error; goto error;
@ -971,11 +972,12 @@ static void *gl_glsl_init(void *data, const char *path)
{ {
glsl->gl_program[GL_SHADER_STOCK_BLEND] = gl_glsl_compile_program( glsl->gl_program[GL_SHADER_STOCK_BLEND] = gl_glsl_compile_program(
glsl, glsl,
GL_SHADER_STOCK_BLEND,
glsl_core ? glsl_core ?
stock_vertex_core_blend : stock_vertex_modern_blend, stock_vertex_core_blend : stock_vertex_modern_blend,
glsl_core ? glsl_core ?
stock_fragment_core_blend : stock_fragment_modern_blend, stock_fragment_core_blend : stock_fragment_modern_blend
GL_SHADER_STOCK_BLEND); );
gl_glsl_find_uniforms(glsl, 0, glsl->gl_program[GL_SHADER_STOCK_BLEND], gl_glsl_find_uniforms(glsl, 0, glsl->gl_program[GL_SHADER_STOCK_BLEND],
&glsl->uniforms[GL_SHADER_STOCK_BLEND]); &glsl->uniforms[GL_SHADER_STOCK_BLEND]);
} }
@ -987,9 +989,9 @@ static void *gl_glsl_init(void *data, const char *path)
glsl->gl_program[GL_SHADER_STOCK_XMB] = gl_glsl_compile_program( glsl->gl_program[GL_SHADER_STOCK_XMB] = gl_glsl_compile_program(
glsl, glsl,
GL_SHADER_STOCK_XMB,
stock_vertex_xmb, stock_vertex_xmb,
stock_fragment_xmb, stock_fragment_xmb);
GL_SHADER_STOCK_XMB);
gl_glsl_reset_attrib(glsl); gl_glsl_reset_attrib(glsl);