mirror of
https://github.com/libretro/RetroArch
synced 2025-03-25 16:44:01 +00:00
First stab at getting snow shader to work
This commit is contained in:
parent
a2c69ec254
commit
20c1ef83d6
@ -964,6 +964,17 @@ static void *gl_glsl_init(void *data, const char *path)
|
|||||||
&shader_prog_info);
|
&shader_prog_info);
|
||||||
gl_glsl_find_uniforms(glsl, 0, glsl->prg[VIDEO_SHADER_MENU_SEC].id,
|
gl_glsl_find_uniforms(glsl, 0, glsl->prg[VIDEO_SHADER_MENU_SEC].id,
|
||||||
&glsl->uniforms[VIDEO_SHADER_MENU_SEC]);
|
&glsl->uniforms[VIDEO_SHADER_MENU_SEC]);
|
||||||
|
|
||||||
|
shader_prog_info.vertex = glsl_core ? stock_vertex_xmb_snow : stock_vertex_xmb_snow_legacy;
|
||||||
|
shader_prog_info.fragment = stock_fragment_xmb_snow;
|
||||||
|
|
||||||
|
gl_glsl_compile_program(
|
||||||
|
glsl,
|
||||||
|
VIDEO_SHADER_MENU_3,
|
||||||
|
&glsl->prg[VIDEO_SHADER_MENU_3],
|
||||||
|
&shader_prog_info);
|
||||||
|
gl_glsl_find_uniforms(glsl, 0, glsl->prg[VIDEO_SHADER_MENU_3].id,
|
||||||
|
&glsl->uniforms[VIDEO_SHADER_MENU_3]);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
gl_glsl_reset_attrib(glsl);
|
gl_glsl_reset_attrib(glsl);
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
#define VIDEO_SHADER_STOCK_BLEND (GFX_MAX_SHADERS - 1)
|
#define VIDEO_SHADER_STOCK_BLEND (GFX_MAX_SHADERS - 1)
|
||||||
#define VIDEO_SHADER_MENU (GFX_MAX_SHADERS - 2)
|
#define VIDEO_SHADER_MENU (GFX_MAX_SHADERS - 2)
|
||||||
#define VIDEO_SHADER_MENU_SEC (GFX_MAX_SHADERS - 3)
|
#define VIDEO_SHADER_MENU_SEC (GFX_MAX_SHADERS - 3)
|
||||||
|
#define VIDEO_SHADER_MENU_3 (GFX_MAX_SHADERS - 4)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -2278,9 +2278,18 @@ static void xmb_draw_bg(
|
|||||||
menu_display_draw_gradient(&draw);
|
menu_display_draw_gradient(&draw);
|
||||||
|
|
||||||
draw.pipeline.id = VIDEO_SHADER_MENU_SEC;
|
draw.pipeline.id = VIDEO_SHADER_MENU_SEC;
|
||||||
if (settings->menu.xmb.shader_pipeline == XMB_SHADER_PIPELINE_RIBBON ||
|
|
||||||
settings->menu.xmb.shader_pipeline == XMB_SHADER_PIPELINE_SNOW)
|
switch (settings->menu.xmb.shader_pipeline)
|
||||||
draw.pipeline.id = VIDEO_SHADER_MENU;
|
{
|
||||||
|
case XMB_SHADER_PIPELINE_RIBBON:
|
||||||
|
draw.pipeline.id = VIDEO_SHADER_MENU;
|
||||||
|
break;
|
||||||
|
case XMB_SHADER_PIPELINE_SNOW:
|
||||||
|
draw.pipeline.id = VIDEO_SHADER_MENU_3;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
menu_display_draw_pipeline(&draw);
|
menu_display_draw_pipeline(&draw);
|
||||||
}
|
}
|
||||||
@ -2807,41 +2816,28 @@ static void xmb_init_ribbon(xmb_handle_t * xmb)
|
|||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
video_coord_array_t *ca = menu_display_get_coords_array();
|
video_coord_array_t *ca = menu_display_get_coords_array();
|
||||||
|
|
||||||
|
vertices_total = XMB_RIBBON_VERTICES;
|
||||||
|
|
||||||
if (settings->menu.xmb.shader_pipeline == XMB_SHADER_PIPELINE_SNOW)
|
if (settings->menu.xmb.shader_pipeline == XMB_SHADER_PIPELINE_SNOW)
|
||||||
{
|
dummy = (float*)calloc(4 * 4, sizeof(float));
|
||||||
vertices_total = 4;
|
|
||||||
ribbon_verts = (float*)calloc(2 * vertices_total, sizeof(float));
|
|
||||||
|
|
||||||
ribbon_verts[0] = -1.0f;
|
|
||||||
ribbon_verts[1] = -1.0f;
|
|
||||||
ribbon_verts[2] = 1.0f;
|
|
||||||
ribbon_verts[3] = -1.0f;
|
|
||||||
ribbon_verts[4] = -1.0f;
|
|
||||||
ribbon_verts[5] = 1.0f;
|
|
||||||
ribbon_verts[6] = 1.0f;
|
|
||||||
ribbon_verts[7] = 1.0f;
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
dummy = (float*)calloc(4 * vertices_total, sizeof(float));
|
||||||
vertices_total = XMB_RIBBON_VERTICES;
|
|
||||||
ribbon_verts = (float*)calloc(2 * vertices_total, sizeof(float));
|
|
||||||
|
|
||||||
/* Set up vertices */
|
ribbon_verts = (float*)calloc(2 * vertices_total, sizeof(float));
|
||||||
for (r = 0; r < XMB_RIBBON_ROWS - 1; r++)
|
|
||||||
|
|
||||||
|
/* Set up vertices */
|
||||||
|
for (r = 0; r < XMB_RIBBON_ROWS - 1; r++)
|
||||||
|
{
|
||||||
|
for (c = 0; c < XMB_RIBBON_COLS; c++)
|
||||||
{
|
{
|
||||||
for (c = 0; c < XMB_RIBBON_COLS; c++)
|
col = r % 2 ? XMB_RIBBON_COLS - c - 1 : c;
|
||||||
{
|
xmb_ribbon_set_vertex(ribbon_verts, i, r, col);
|
||||||
col = r % 2 ? XMB_RIBBON_COLS - c - 1 : c;
|
xmb_ribbon_set_vertex(ribbon_verts, i + 2, r + 1, col);
|
||||||
xmb_ribbon_set_vertex(ribbon_verts, i, r, col);
|
i += 4;
|
||||||
xmb_ribbon_set_vertex(ribbon_verts, i + 2, r + 1, col);
|
|
||||||
i += 4;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dummy = (float*)calloc(4 * vertices_total, sizeof(float));
|
|
||||||
|
|
||||||
coords.color = dummy;
|
coords.color = dummy;
|
||||||
coords.vertex = ribbon_verts;
|
coords.vertex = ribbon_verts;
|
||||||
coords.tex_coord = dummy;
|
coords.tex_coord = dummy;
|
||||||
|
@ -204,6 +204,7 @@ static void menu_display_d3d_draw_pipeline(void *data)
|
|||||||
{
|
{
|
||||||
case VIDEO_SHADER_MENU:
|
case VIDEO_SHADER_MENU:
|
||||||
case VIDEO_SHADER_MENU_SEC:
|
case VIDEO_SHADER_MENU_SEC:
|
||||||
|
case VIDEO_SHADER_MENU_3:
|
||||||
shader_info.data = NULL;
|
shader_info.data = NULL;
|
||||||
shader_info.idx = draw->pipeline.id;
|
shader_info.idx = draw->pipeline.id;
|
||||||
shader_info.set_active = true;
|
shader_info.set_active = true;
|
||||||
|
@ -170,6 +170,7 @@ static void menu_display_gl_draw_pipeline(void *data)
|
|||||||
{
|
{
|
||||||
case VIDEO_SHADER_MENU:
|
case VIDEO_SHADER_MENU:
|
||||||
case VIDEO_SHADER_MENU_SEC:
|
case VIDEO_SHADER_MENU_SEC:
|
||||||
|
case VIDEO_SHADER_MENU_3:
|
||||||
{
|
{
|
||||||
static float t = 0;
|
static float t = 0;
|
||||||
video_shader_ctx_info_t shader_info;
|
video_shader_ctx_info_t shader_info;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user