void rarch_load_shader(unsigned slot, const char *path) { #if defined(HAVE_HLSL) hlsl_load_shader(slot, path); #elif defined(HAVE_CG) && defined(HAVE_OPENGL) gl_cg_load_shader(slot, path); #else RARCH_WARN("Shader support is not implemented for this build.\n"); #endif #if defined(HAVE_HLSL) || defined(HAVE_CG) if (g_console.info_msg_enable) rarch_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); #endif }
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; }