mirror of
https://github.com/libretro/RetroArch
synced 2025-04-15 14:42:27 +00:00
Add way to switch back and forth between shader pipeline
This commit is contained in:
parent
b00202a83d
commit
8cb66dd021
@ -513,7 +513,7 @@ static unsigned xmb_alpha_factor = 75;
|
||||
static unsigned xmb_theme = 0;
|
||||
static unsigned xmb_gradient = 0;
|
||||
static bool xmb_shadows_enable = false;
|
||||
static bool xmb_ribbon_enable = false;
|
||||
static unsigned xmb_ribbon_enable = 0;
|
||||
|
||||
static bool show_advanced_settings = true;
|
||||
static const uint32_t menu_entry_normal_color = 0xffffffff;
|
||||
|
@ -1548,7 +1548,7 @@ static bool config_load_file(const char *path, bool set_defaults)
|
||||
CONFIG_GET_INT_BASE(conf, settings, menu.xmb_theme, "xmb_theme");
|
||||
CONFIG_GET_INT_BASE(conf, settings, menu.xmb_gradient, "xmb_gradient");
|
||||
CONFIG_GET_BOOL_BASE(conf, settings, menu.xmb_shadows_enable, "xmb_shadows_enable");
|
||||
CONFIG_GET_BOOL_BASE(conf, settings, menu.xmb_ribbon_enable, "xmb_ribbon_enable");
|
||||
CONFIG_GET_INT_BASE(conf, settings, menu.xmb_ribbon_enable, "xmb_ribbon_enable");
|
||||
config_get_path(conf, "xmb_font", settings->menu.xmb_font, sizeof(settings->menu.xmb_font));
|
||||
#endif
|
||||
config_get_array(conf, "video_context_driver", settings->video.context_driver, sizeof(settings->video.context_driver));
|
||||
@ -2782,7 +2782,7 @@ bool config_save_file(const char *path)
|
||||
config_set_int(conf, "xmb_theme", settings->menu.xmb_theme);
|
||||
config_set_int(conf, "xmb_gradient", settings->menu.xmb_gradient);
|
||||
config_set_bool(conf, "xmb_shadows_enable", settings->menu.xmb_shadows_enable);
|
||||
config_set_bool(conf, "xmb_ribbon_enable", settings->menu.xmb_ribbon_enable);
|
||||
config_set_int(conf, "xmb_ribbon_enable", settings->menu.xmb_ribbon_enable);
|
||||
config_set_path(conf, "xmb_font",
|
||||
!string_is_empty(settings->menu.xmb_font) ? settings->menu.xmb_font : "");
|
||||
config_set_path(conf, "rgui_browser_directory",
|
||||
|
@ -169,7 +169,7 @@ typedef struct settings
|
||||
unsigned xmb_theme;
|
||||
unsigned xmb_gradient;
|
||||
bool xmb_shadows_enable;
|
||||
bool xmb_ribbon_enable;
|
||||
unsigned xmb_ribbon_enable;
|
||||
char xmb_font[PATH_MAX_LENGTH];
|
||||
bool throttle_framerate;
|
||||
bool linear_filter;
|
||||
|
@ -1169,6 +1169,14 @@ static void *gl_cg_init(void *data, const char *path)
|
||||
&cg_data->prg[VIDEO_SHADER_MENU],
|
||||
&shader_prog_info);
|
||||
|
||||
shader_prog_info.combined = stock_xmb_simple;
|
||||
|
||||
gl_cg_compile_program(
|
||||
cg_data,
|
||||
VIDEO_SHADER_MENU_SEC,
|
||||
&cg_data->prg[VIDEO_SHADER_MENU_SEC],
|
||||
&shader_prog_info);
|
||||
|
||||
return cg_data;
|
||||
|
||||
error:
|
||||
|
@ -912,6 +912,15 @@ static void *gl_glsl_init(void *data, const char *path)
|
||||
&glsl->prg[VIDEO_SHADER_MENU],
|
||||
&shader_prog_info);
|
||||
|
||||
shader_prog_info.vertex = stock_vertex_xmb_simple;
|
||||
shader_prog_info.fragment = stock_fragment_xmb_simple;
|
||||
|
||||
gl_glsl_compile_program(
|
||||
glsl,
|
||||
VIDEO_SHADER_MENU_SEC,
|
||||
&glsl->prg[VIDEO_SHADER_MENU_SEC],
|
||||
&shader_prog_info);
|
||||
|
||||
gl_glsl_reset_attrib(glsl);
|
||||
|
||||
for (i = 0; i < GFX_MAX_SHADERS; i++)
|
||||
|
@ -35,6 +35,7 @@
|
||||
|
||||
#define VIDEO_SHADER_STOCK_BLEND (GFX_MAX_SHADERS - 1)
|
||||
#define VIDEO_SHADER_MENU (GFX_MAX_SHADERS - 2)
|
||||
#define VIDEO_SHADER_MENU_SEC (GFX_MAX_SHADERS - 3)
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -27,7 +27,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef GFX_MAX_SHADERS
|
||||
#define GFX_MAX_SHADERS 25
|
||||
#define GFX_MAX_SHADERS 26
|
||||
#endif
|
||||
|
||||
#ifndef GFX_MAX_TEXTURES
|
||||
|
@ -166,6 +166,37 @@ static void menu_action_setting_disp_set_label_filter(
|
||||
settings->video.softfilter_plugin, len);
|
||||
}
|
||||
|
||||
static void menu_action_setting_disp_set_label_pipeline(
|
||||
file_list_t* list,
|
||||
unsigned *w, unsigned type, unsigned i,
|
||||
const char *label,
|
||||
char *s, size_t len,
|
||||
const char *entry_label,
|
||||
const char *path,
|
||||
char *s2, size_t len2)
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
*s = '\0';
|
||||
*w = 19;
|
||||
|
||||
switch (settings->menu.xmb_ribbon_enable)
|
||||
{
|
||||
case 0:
|
||||
snprintf(s, len, "%s", "Off");
|
||||
break;
|
||||
case 1:
|
||||
snprintf(s, len, "%s", "Ribbon (simplified)");
|
||||
break;
|
||||
case 2:
|
||||
snprintf(s, len, "%s", "Ribbon");
|
||||
break;
|
||||
}
|
||||
|
||||
strlcpy(s2, path, len2);
|
||||
|
||||
}
|
||||
|
||||
static void menu_action_setting_disp_set_label_shader_num_passes(
|
||||
file_list_t* list,
|
||||
unsigned *w, unsigned type, unsigned i,
|
||||
@ -1286,6 +1317,10 @@ static int menu_cbs_init_bind_get_string_representation_compare_label(
|
||||
BIND_ACTION_GET_VALUE(cbs,
|
||||
menu_action_setting_disp_set_label_shader_num_passes);
|
||||
break;
|
||||
case MENU_LABEL_XMB_RIBBON_ENABLE:
|
||||
BIND_ACTION_GET_VALUE(cbs,
|
||||
menu_action_setting_disp_set_label_pipeline);
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_SHADER_PASS:
|
||||
BIND_ACTION_GET_VALUE(cbs,
|
||||
menu_action_setting_disp_set_label_shader_pass);
|
||||
|
@ -1902,7 +1902,7 @@ static void xmb_draw_bg(
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_BEGIN, NULL);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_VIEWPORT, NULL);
|
||||
|
||||
if (settings->menu.xmb_ribbon_enable)
|
||||
if (settings->menu.xmb_ribbon_enable > 0)
|
||||
{
|
||||
draw.color = xmb_gradient_ident();
|
||||
|
||||
|
@ -547,9 +547,12 @@ bool menu_display_ctl(enum menu_display_ctl_state state, void *data)
|
||||
|
||||
#if defined(HAVE_GLSL) || defined(HAVE_CG) || defined(HAVE_HLSL)
|
||||
shader_info.data = NULL;
|
||||
shader_info.idx = VIDEO_SHADER_MENU;
|
||||
shader_info.idx = VIDEO_SHADER_MENU_SEC;
|
||||
shader_info.set_active = true;
|
||||
|
||||
if (settings->menu.xmb_ribbon_enable == 2)
|
||||
shader_info.idx = VIDEO_SHADER_MENU;
|
||||
|
||||
video_shader_driver_ctl(SHADER_CTL_USE, &shader_info);
|
||||
|
||||
t += 0.01;
|
||||
|
@ -5889,19 +5889,18 @@ static bool setting_append_list(
|
||||
general_write_handler,
|
||||
general_read_handler);
|
||||
|
||||
CONFIG_BOOL(
|
||||
CONFIG_UINT(
|
||||
list, list_info,
|
||||
&settings->menu.xmb_ribbon_enable,
|
||||
menu_hash_to_str(MENU_LABEL_XMB_RIBBON_ENABLE),
|
||||
menu_hash_to_str(MENU_LABEL_VALUE_XMB_RIBBON_ENABLE),
|
||||
xmb_ribbon_enable,
|
||||
menu_hash_to_str(MENU_VALUE_OFF),
|
||||
menu_hash_to_str(MENU_VALUE_ON),
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler);
|
||||
menu_settings_list_current_add_range(list, list_info, 0, 2, 1, true, true);
|
||||
|
||||
CONFIG_UINT(
|
||||
list, list_info,
|
||||
|
Loading…
x
Reference in New Issue
Block a user