mirror of
https://github.com/libretro/RetroArch
synced 2025-02-28 12:40:23 +00:00
Added snow shader hooks - doesn't work yet though - shader driver
system is very limited in terms of how we can set custom menu shaders - will require a rethink
This commit is contained in:
parent
23aa03fcdd
commit
a2c69ec254
@ -1,6 +1,6 @@
|
|||||||
#include "shaders_common.h"
|
#include "shaders_common.h"
|
||||||
|
|
||||||
static const char *stock_vertex_xmb_simple_legacy = GLSL(
|
static const char *stock_vertex_xmb_snow_legacy = GLSL(
|
||||||
attribute vec3 VertexCoord;
|
attribute vec3 VertexCoord;
|
||||||
uniform float time;
|
uniform float time;
|
||||||
float iqhash( float n )
|
float iqhash( float n )
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "shaders_common.h"
|
#include "shaders_common.h"
|
||||||
|
|
||||||
static const char *stock_vertex_xmb_simple_modern = GLSL(
|
static const char *stock_vertex_xmb_snow = GLSL(
|
||||||
in vec3 VertexCoord;
|
in vec3 VertexCoord;
|
||||||
uniform float time;
|
uniform float time;
|
||||||
|
|
||||||
@ -24,10 +24,6 @@ static const char *stock_vertex_xmb_simple_modern = GLSL(
|
|||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec3 v = vec3(VertexCoord.x, 0.0, VertexCoord.y);
|
vec3 v = vec3(VertexCoord.x, 0.0, VertexCoord.y);
|
||||||
//vec3 v2 = v;
|
|
||||||
//v2.x = v2.x + time/2.0;
|
|
||||||
//v2.z = v.z * 3.0;
|
|
||||||
//v.y = -cos((v.x+v.z/3.0+time)*2.0)/10.0 - noise(v2.xyz)/4.0;
|
|
||||||
gl_Position = vec4(v, 1.0);
|
gl_Position = vec4(v, 1.0);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "shaders_common.h"
|
#include "shaders_common.h"
|
||||||
|
|
||||||
static const char *stock_xmb_simple = CG(
|
static const char *stock_xmb_snow = CG(
|
||||||
struct input
|
struct input
|
||||||
{
|
{
|
||||||
float time;
|
float time;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "shaders_common.h"
|
#include "shaders_common.h"
|
||||||
|
|
||||||
static const char *stock_fragment_xmb_simple = GLSL(
|
static const char *stock_fragment_xmb_snow = GLSL(
|
||||||
uniform float time;
|
uniform float time;
|
||||||
vec2 res = vec2(1920*3, 1080*3);
|
vec2 res = vec2(1920*3, 1080*3);
|
||||||
|
|
||||||
|
@ -41,6 +41,7 @@
|
|||||||
|
|
||||||
#ifdef HAVE_SHADERPIPELINE
|
#ifdef HAVE_SHADERPIPELINE
|
||||||
#include "../drivers/gl_shaders/pipeline_xmb_ribbon_simple.cg.h"
|
#include "../drivers/gl_shaders/pipeline_xmb_ribbon_simple.cg.h"
|
||||||
|
#include "../drivers/gl_shaders/pipeline_snow.cg.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "../include/Cg/cg.h"
|
#include "../include/Cg/cg.h"
|
||||||
|
@ -121,8 +121,11 @@ static const char *glsl_prefixes[] = {
|
|||||||
#ifdef HAVE_SHADERPIPELINE
|
#ifdef HAVE_SHADERPIPELINE
|
||||||
#include "../drivers/gl_shaders/legacy_pipeline_xmb_ribbon_simple.glsl.vert.h"
|
#include "../drivers/gl_shaders/legacy_pipeline_xmb_ribbon_simple.glsl.vert.h"
|
||||||
#include "../drivers/gl_shaders/modern_pipeline_xmb_ribbon_simple.glsl.vert.h"
|
#include "../drivers/gl_shaders/modern_pipeline_xmb_ribbon_simple.glsl.vert.h"
|
||||||
|
#include "../drivers/gl_shaders/modern_pipeline_snow.glsl.vert.h"
|
||||||
#include "../drivers/gl_shaders/pipeline_xmb_ribbon_simple.glsl.frag.h"
|
#include "../drivers/gl_shaders/pipeline_xmb_ribbon_simple.glsl.frag.h"
|
||||||
|
#include "../drivers/gl_shaders/pipeline_snow.glsl.frag.h"
|
||||||
#if !defined(HAVE_OPENGLES)
|
#if !defined(HAVE_OPENGLES)
|
||||||
|
#include "../drivers/gl_shaders/legacy_pipeline_snow.glsl.vert.h"
|
||||||
#include "../drivers/gl_shaders/legacy_pipeline_xmb_ribbon.glsl.vert.h"
|
#include "../drivers/gl_shaders/legacy_pipeline_xmb_ribbon.glsl.vert.h"
|
||||||
#include "../drivers/gl_shaders/modern_pipeline_xmb_ribbon.glsl.vert.h"
|
#include "../drivers/gl_shaders/modern_pipeline_xmb_ribbon.glsl.vert.h"
|
||||||
#include "../drivers/gl_shaders/pipeline_xmb_ribbon.glsl.frag.h"
|
#include "../drivers/gl_shaders/pipeline_xmb_ribbon.glsl.frag.h"
|
||||||
|
@ -1190,6 +1190,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON,
|
|||||||
"Ribbon")
|
"Ribbon")
|
||||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON_SIMPLIFIED,
|
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON_SIMPLIFIED,
|
||||||
"Ribbon (simplified)")
|
"Ribbon (simplified)")
|
||||||
|
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SNOW,
|
||||||
|
"Snow")
|
||||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHOW_ADVANCED_SETTINGS,
|
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHOW_ADVANCED_SETTINGS,
|
||||||
"Show Advanced Settings")
|
"Show Advanced Settings")
|
||||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHOW_HIDDEN_FILES,
|
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHOW_HIDDEN_FILES,
|
||||||
|
@ -225,6 +225,11 @@ static void menu_action_setting_disp_set_label_pipeline(
|
|||||||
msg_hash_to_str(
|
msg_hash_to_str(
|
||||||
MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON), len);
|
MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON), len);
|
||||||
break;
|
break;
|
||||||
|
case XMB_SHADER_PIPELINE_SNOW:
|
||||||
|
strlcpy(s,
|
||||||
|
msg_hash_to_str(
|
||||||
|
MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SNOW), len);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
strlcpy(s2, path, len2);
|
strlcpy(s2, path, len2);
|
||||||
|
@ -2278,7 +2278,8 @@ 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)
|
if (settings->menu.xmb.shader_pipeline == XMB_SHADER_PIPELINE_RIBBON ||
|
||||||
|
settings->menu.xmb.shader_pipeline == XMB_SHADER_PIPELINE_SNOW)
|
||||||
draw.pipeline.id = VIDEO_SHADER_MENU;
|
draw.pipeline.id = VIDEO_SHADER_MENU;
|
||||||
|
|
||||||
menu_display_draw_pipeline(&draw);
|
menu_display_draw_pipeline(&draw);
|
||||||
@ -2798,36 +2799,63 @@ static void xmb_ribbon_set_vertex(float *ribbon_verts, unsigned idx, unsigned ro
|
|||||||
static void xmb_init_ribbon(xmb_handle_t * xmb)
|
static void xmb_init_ribbon(xmb_handle_t * xmb)
|
||||||
{
|
{
|
||||||
video_coords_t coords;
|
video_coords_t coords;
|
||||||
float ribbon_verts[2 * XMB_RIBBON_VERTICES];
|
unsigned vertices_total;
|
||||||
float dummy[4 * XMB_RIBBON_VERTICES];
|
unsigned r, c, col;
|
||||||
unsigned i, r, c, col;
|
unsigned i = 0;
|
||||||
video_coord_array_t *ca = NULL;
|
float *ribbon_verts = NULL;
|
||||||
|
float *dummy = NULL;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
video_coord_array_t *ca = menu_display_get_coords_array();
|
||||||
|
|
||||||
memset(&dummy[0], 0, 4 * XMB_RIBBON_VERTICES * sizeof(float));
|
if (settings->menu.xmb.shader_pipeline == XMB_SHADER_PIPELINE_SNOW)
|
||||||
ca = menu_display_get_coords_array();
|
|
||||||
|
|
||||||
/* Set up vertices */
|
|
||||||
i = 0;
|
|
||||||
for (r = 0; r < XMB_RIBBON_ROWS - 1; r++)
|
|
||||||
{
|
{
|
||||||
for (c = 0; c < XMB_RIBBON_COLS; c++)
|
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
|
||||||
|
{
|
||||||
|
vertices_total = XMB_RIBBON_VERTICES;
|
||||||
|
ribbon_verts = (float*)calloc(2 * vertices_total, sizeof(float));
|
||||||
|
|
||||||
|
/* Set up vertices */
|
||||||
|
for (r = 0; r < XMB_RIBBON_ROWS - 1; r++)
|
||||||
{
|
{
|
||||||
col = r % 2 ? XMB_RIBBON_COLS - c - 1 : c;
|
for (c = 0; c < XMB_RIBBON_COLS; c++)
|
||||||
xmb_ribbon_set_vertex(ribbon_verts, i, r, col);
|
{
|
||||||
xmb_ribbon_set_vertex(ribbon_verts, i + 2, r + 1, col);
|
col = r % 2 ? XMB_RIBBON_COLS - c - 1 : c;
|
||||||
i += 4;
|
xmb_ribbon_set_vertex(ribbon_verts, i, r, col);
|
||||||
|
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;
|
||||||
coords.lut_tex_coord = dummy;
|
coords.lut_tex_coord = dummy;
|
||||||
coords.vertices = XMB_RIBBON_VERTICES;
|
coords.vertices = vertices_total;
|
||||||
|
|
||||||
video_coord_array_append(ca, &coords, XMB_RIBBON_VERTICES);
|
free(dummy);
|
||||||
|
free(ribbon_verts);
|
||||||
|
|
||||||
|
video_coord_array_append(ca, &coords, coords.vertices);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void *xmb_init(void **userdata)
|
static void *xmb_init(void **userdata)
|
||||||
{
|
{
|
||||||
unsigned width, height;
|
unsigned width, height;
|
||||||
@ -2901,6 +2929,7 @@ static void *xmb_init(void **userdata)
|
|||||||
menu_display_allocate_white_texture();
|
menu_display_allocate_white_texture();
|
||||||
|
|
||||||
xmb_init_horizontal_list(xmb);
|
xmb_init_horizontal_list(xmb);
|
||||||
|
|
||||||
xmb_init_ribbon(xmb);
|
xmb_init_ribbon(xmb);
|
||||||
|
|
||||||
return menu;
|
return menu;
|
||||||
|
@ -74,6 +74,7 @@ enum xmb_shader_pipeline
|
|||||||
XMB_SHADER_PIPELINE_WALLPAPER = 0,
|
XMB_SHADER_PIPELINE_WALLPAPER = 0,
|
||||||
XMB_SHADER_PIPELINE_SIMPLE_RIBBON,
|
XMB_SHADER_PIPELINE_SIMPLE_RIBBON,
|
||||||
XMB_SHADER_PIPELINE_RIBBON,
|
XMB_SHADER_PIPELINE_RIBBON,
|
||||||
|
XMB_SHADER_PIPELINE_SNOW,
|
||||||
XMB_SHADER_PIPELINE_LAST
|
XMB_SHADER_PIPELINE_LAST
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -376,6 +376,7 @@ enum msg_hash_enums
|
|||||||
|
|
||||||
MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON_SIMPLIFIED,
|
MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON_SIMPLIFIED,
|
||||||
MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON,
|
MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON,
|
||||||
|
MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SNOW,
|
||||||
|
|
||||||
MENU_ENUM_LABEL_MATERIALUI_MENU_HEADER_OPACITY,
|
MENU_ENUM_LABEL_MATERIALUI_MENU_HEADER_OPACITY,
|
||||||
MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_HEADER_OPACITY,
|
MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_HEADER_OPACITY,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user