static bool gl_cg_load_plain(void *data, const char *path) { cg_shader_data_t *cg_data = (cg_shader_data_t*)data; if (!gl_cg_load_stock(cg_data)) return false; cg_data->shader = (struct video_shader*)calloc(1, sizeof(*cg_data->shader)); if (!cg_data->shader) return false; cg_data->shader->passes = 1; if (path) { RARCH_LOG("Loading Cg file: %s\n", path); strlcpy(cg_data->shader->pass[0].source.path, path, sizeof(cg_data->shader->pass[0].source.path)); if (!gl_cg_load_program(data, 1, path, true)) return false; } else { RARCH_LOG("Loading stock Cg file.\n"); cg_data->prg[1] = cg_data->prg[0]; } video_shader_resolve_parameters(NULL, cg_data->shader); return true; }
static bool gl_cg_load_plain(void *data, const char *path) { cg_shader_data_t *cg = (cg_shader_data_t*)data; if (!gl_cg_load_stock(cg)) return false; cg->shader = (struct video_shader*) calloc(1, sizeof(*cg->shader)); if (!cg->shader) return false; cg->shader->passes = 1; if (path) { struct shader_program_info program_info; program_info.combined = path; program_info.is_file = true; RARCH_LOG("Loading Cg file: %s\n", path); strlcpy(cg->shader->pass[0].source.path, path, sizeof(cg->shader->pass[0].source.path)); if (!gl_cg_compile_program(data, 1, &cg->prg[1], &program_info)) return false; } else { RARCH_LOG("Loading stock Cg file.\n"); cg->prg[1] = cg->prg[0]; } video_shader_resolve_parameters(NULL, cg->shader); return true; }
static bool gl_cg_load_preset(void *data, const char *path) { unsigned i; config_file_t *conf = NULL; cg_shader_data_t *cg_data = (cg_shader_data_t*)data; if (!gl_cg_load_stock(cg_data)) return false; RARCH_LOG("Loading Cg meta-shader: %s\n", path); conf = config_file_new(path); if (!conf) { RARCH_ERR("Failed to load preset.\n"); return false; } cg_data->shader = (struct video_shader*)calloc(1, sizeof(*cg_data->shader)); if (!cg_data->shader) { config_file_free(conf); return false; } if (!video_shader_read_conf_cgp(conf, cg_data->shader)) { RARCH_ERR("Failed to parse CGP file.\n"); config_file_free(conf); return false; } video_shader_resolve_relative(cg_data->shader, path); video_shader_resolve_parameters(conf, cg_data->shader); config_file_free(conf); if (cg_data->shader->passes > GFX_MAX_SHADERS - 3) { RARCH_WARN("Too many shaders ... Capping shader amount to %d.\n", GFX_MAX_SHADERS - 3); cg_data->shader->passes = GFX_MAX_SHADERS - 3; } for (i = 0; i < cg_data->shader->passes; i++) if (*cg_data->shader->pass[i].alias) snprintf(cg_data->cg_alias_define[i], sizeof(cg_data->cg_alias_define[i]), "-D%s_ALIAS", cg_data->shader->pass[i].alias); for (i = 0; i < cg_data->shader->passes; i++) { if (!gl_cg_load_shader(cg_data, i)) { RARCH_ERR("Failed to load shaders ...\n"); return false; } } if (!gl_load_luts(cg_data->shader, cg_data->lut_textures)) { RARCH_ERR("Failed to load lookup textures ...\n"); return false; } if (!gl_cg_load_imports(cg_data)) { RARCH_ERR("Failed to load imports ...\n"); return false; } return true; }