Add 'Simple Snow' shader to GLSL backend
This commit is contained in:
parent
abaa6eda62
commit
9f470c53ae
|
@ -0,0 +1,52 @@
|
|||
#include "shaders_common.h"
|
||||
|
||||
static const char *stock_fragment_xmb_simple_snow = GLSL(
|
||||
uniform float time;
|
||||
vec2 res = vec2(1920*3, 1080*3);
|
||||
float quality = 8.0;
|
||||
|
||||
float Cellular2D(vec2 P) {
|
||||
vec2 Pi = floor(P);
|
||||
vec2 Pf = P - Pi;
|
||||
vec2 Pt = vec2( Pi.x, Pi.y + 1.0 );
|
||||
Pt = Pt - floor(Pt * ( 1.0 / 71.0 )) * 71.0;
|
||||
Pt += vec2( 26.0, 161.0 );
|
||||
Pt *= Pt;
|
||||
Pt = Pt.xy * Pt.yx;
|
||||
float hash_x = fract( Pt.x * ( 1.0 / 951.135664 ) ) * 2.0 - 1.0;
|
||||
float hash_y = fract( Pt.y * ( 1.0 / 642.949883 ) ) * 2.0 - 1.0;
|
||||
const float JITTER_WINDOW = 0.25;
|
||||
hash_x = ( ( hash_x * hash_x * hash_x ) - sign( hash_x ) ) * JITTER_WINDOW;
|
||||
hash_y = ( ( hash_y * hash_y * hash_y ) - sign( hash_y ) ) * JITTER_WINDOW;
|
||||
vec2 dd = vec2(Pf.x - hash_x, Pf.y - hash_y);
|
||||
float d = dd.x * dd.x + dd.y * dd.y;
|
||||
return d * ( 1.0 / 1.125 );
|
||||
}
|
||||
|
||||
float snow(vec2 pos, float time, float scale) {
|
||||
pos.x += cos(pos.y*4.0 + time*3.14159*2.0 + 1.0/scale)/(8.0/scale);
|
||||
pos += time*scale*vec2(-0.5, 1.0);
|
||||
return max(
|
||||
1.0 - Cellular2D(mod(pos/scale, scale*quality)*16.0)*1024.0,
|
||||
0.0
|
||||
) * (scale*0.5 + 0.5);
|
||||
}
|
||||
|
||||
void main( void ) {
|
||||
float winscale = max(res.x, res.y);
|
||||
float tim = mod(time/8.0, 84.0*quality);
|
||||
vec2 pos = gl_FragCoord.xy/winscale;
|
||||
float a = 0.0;
|
||||
a += snow(pos, tim, 1.0);
|
||||
a += snow(pos, tim, 0.7);
|
||||
a += snow(pos, tim, 0.6);
|
||||
a += snow(pos, tim, 0.5);
|
||||
a += snow(pos, tim, 0.4);
|
||||
a += snow(pos, tim, 0.3);
|
||||
a += snow(pos, tim, 0.25);
|
||||
a += snow(pos, tim, 0.125);
|
||||
a = a * min(pos.y*4.0, 1.0);
|
||||
gl_FragColor = vec4(1.0, 1.0, 1.0, a);
|
||||
}
|
||||
|
||||
);
|
|
@ -124,6 +124,7 @@ static const char *glsl_prefixes[] = {
|
|||
#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_snow.glsl.frag.h"
|
||||
#include "../drivers/gl_shaders/pipeline_snow_simple.glsl.frag.h"
|
||||
#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"
|
||||
|
@ -966,7 +967,7 @@ static void *gl_glsl_init(void *data, const char *path)
|
|||
#else
|
||||
shader_prog_info.vertex = glsl_core ? stock_vertex_xmb_snow_modern : stock_vertex_xmb_snow_legacy;
|
||||
#endif
|
||||
shader_prog_info.fragment = stock_fragment_xmb_snow;
|
||||
shader_prog_info.fragment = stock_fragment_xmb_simple_snow;
|
||||
|
||||
gl_glsl_compile_program(
|
||||
glsl,
|
||||
|
@ -975,6 +976,21 @@ static void *gl_glsl_init(void *data, const char *path)
|
|||
&shader_prog_info);
|
||||
gl_glsl_find_uniforms(glsl, 0, glsl->prg[VIDEO_SHADER_MENU_3].id,
|
||||
&glsl->uniforms[VIDEO_SHADER_MENU_3]);
|
||||
|
||||
#if defined(HAVE_OPENGLES)
|
||||
shader_prog_info.vertex = stock_vertex_xmb_snow_modern;
|
||||
#else
|
||||
shader_prog_info.vertex = glsl_core ? stock_vertex_xmb_snow_modern : stock_vertex_xmb_snow_legacy;
|
||||
#endif
|
||||
shader_prog_info.fragment = stock_fragment_xmb_snow;
|
||||
|
||||
gl_glsl_compile_program(
|
||||
glsl,
|
||||
VIDEO_SHADER_MENU_4,
|
||||
&glsl->prg[VIDEO_SHADER_MENU_4],
|
||||
&shader_prog_info);
|
||||
gl_glsl_find_uniforms(glsl, 0, glsl->prg[VIDEO_SHADER_MENU_4].id,
|
||||
&glsl->uniforms[VIDEO_SHADER_MENU_4]);
|
||||
#endif
|
||||
|
||||
gl_glsl_reset_attrib(glsl);
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
#define VIDEO_SHADER_MENU (GFX_MAX_SHADERS - 2)
|
||||
#define VIDEO_SHADER_MENU_2 (GFX_MAX_SHADERS - 3)
|
||||
#define VIDEO_SHADER_MENU_3 (GFX_MAX_SHADERS - 4)
|
||||
#define VIDEO_SHADER_MENU_4 (GFX_MAX_SHADERS - 4)
|
||||
#define VIDEO_SHADER_MENU_4 (GFX_MAX_SHADERS - 5)
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1190,6 +1190,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON,
|
|||
"Ribbon")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON_SIMPLIFIED,
|
||||
"Ribbon (simplified)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SIMPLE_SNOW,
|
||||
"Simple Snow")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SNOW,
|
||||
"Snow")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHOW_ADVANCED_SETTINGS,
|
||||
|
|
|
@ -1178,6 +1178,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON,
|
|||
"Ribbon")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON_SIMPLIFIED,
|
||||
"Ribbon (simplified)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SIMPLE_SNOW,
|
||||
"Simple Snow")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SNOW,
|
||||
"Snow")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHOW_ADVANCED_SETTINGS,
|
||||
|
|
|
@ -1198,6 +1198,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON,
|
|||
"リボン")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON_SIMPLIFIED,
|
||||
"リボン (単純)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SIMPLE_SNOW,
|
||||
"Simple Snow")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SNOW,
|
||||
"雪")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHOW_ADVANCED_SETTINGS,
|
||||
|
|
|
@ -1140,3 +1140,11 @@ MSG_HASH(MENU_ENUM_LABEL_DATABASE_CURSOR_LIST_ENTRY_EDGE_MAGAZINE_RATING,
|
|||
"database_cursor_list_edge_magazine_rating")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DATABASE_CURSOR_LIST_ENTRY_DATABASE_INFO,
|
||||
"database_info")
|
||||
MSG_HASH(MENU_ENUM_LABEL_SHADER_PIPELINE_RIBBON,
|
||||
"shader_pipeline_ribbon")
|
||||
MSG_HASH(MENU_ENUM_LABEL_SHADER_PIPELINE_RIBBON_SIMPLIFIED,
|
||||
"shader_pipeline_ribbon_simplified")
|
||||
MSG_HASH(MENU_ENUM_LABEL_SHADER_PIPELINE_SIMPLE_SNOW,
|
||||
"shader_pipeline_simple_snow")
|
||||
MSG_HASH(MENU_ENUM_LABEL_SHADER_PIPELINE_SNOW,
|
||||
"shader_pipeline_snow")
|
||||
|
|
|
@ -1190,8 +1190,10 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON,
|
|||
"Ribbon")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON_SIMPLIFIED,
|
||||
"Ribbon (simplified)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SIMPLE_SNOW,
|
||||
"Simpel Sneeuw")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SNOW,
|
||||
"Snow")
|
||||
"Sneeuw")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHOW_ADVANCED_SETTINGS,
|
||||
"Geavanceerde Instellingen weergeven")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHOW_HIDDEN_FILES,
|
||||
|
|
|
@ -1190,6 +1190,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON,
|
|||
"Ribbon")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON_SIMPLIFIED,
|
||||
"Ribbon (simplified)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SIMPLE_SNOW,
|
||||
"Simple Snow")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SNOW,
|
||||
"Snow")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHOW_ADVANCED_SETTINGS,
|
||||
|
|
|
@ -1206,6 +1206,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON,
|
|||
"Ribbon")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON_SIMPLIFIED,
|
||||
"Ribbon (simplified)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SIMPLE_SNOW,
|
||||
"Simple Snow")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SNOW,
|
||||
"Snow")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SHOW_ADVANCED_SETTINGS,
|
||||
|
|
|
@ -225,6 +225,11 @@ static void menu_action_setting_disp_set_label_pipeline(
|
|||
msg_hash_to_str(
|
||||
MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON), len);
|
||||
break;
|
||||
case XMB_SHADER_PIPELINE_SIMPLE_SNOW:
|
||||
strlcpy(s,
|
||||
msg_hash_to_str(
|
||||
MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SIMPLE_SNOW), len);
|
||||
break;
|
||||
case XMB_SHADER_PIPELINE_SNOW:
|
||||
strlcpy(s,
|
||||
msg_hash_to_str(
|
||||
|
|
|
@ -2390,9 +2390,12 @@ static void xmb_draw_bg(
|
|||
case XMB_SHADER_PIPELINE_RIBBON:
|
||||
draw.pipeline.id = VIDEO_SHADER_MENU;
|
||||
break;
|
||||
case XMB_SHADER_PIPELINE_SNOW:
|
||||
case XMB_SHADER_PIPELINE_SIMPLE_SNOW:
|
||||
draw.pipeline.id = VIDEO_SHADER_MENU_3;
|
||||
break;
|
||||
case XMB_SHADER_PIPELINE_SNOW:
|
||||
draw.pipeline.id = VIDEO_SHADER_MENU_4;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -170,6 +170,7 @@ static void menu_display_gl_draw_pipeline(void *data)
|
|||
case VIDEO_SHADER_MENU:
|
||||
case VIDEO_SHADER_MENU_2:
|
||||
case VIDEO_SHADER_MENU_3:
|
||||
case VIDEO_SHADER_MENU_4:
|
||||
{
|
||||
static float t = 0;
|
||||
video_shader_ctx_info_t shader_info;
|
||||
|
|
|
@ -74,6 +74,7 @@ enum xmb_shader_pipeline
|
|||
XMB_SHADER_PIPELINE_WALLPAPER = 0,
|
||||
XMB_SHADER_PIPELINE_SIMPLE_RIBBON,
|
||||
XMB_SHADER_PIPELINE_RIBBON,
|
||||
XMB_SHADER_PIPELINE_SIMPLE_SNOW,
|
||||
XMB_SHADER_PIPELINE_SNOW,
|
||||
XMB_SHADER_PIPELINE_LAST
|
||||
};
|
||||
|
|
|
@ -385,9 +385,10 @@ enum msg_hash_enums
|
|||
MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_DARK,
|
||||
MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_PLAIN,
|
||||
|
||||
MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON_SIMPLIFIED,
|
||||
MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON,
|
||||
MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SNOW,
|
||||
MENU_LABEL(SHADER_PIPELINE_RIBBON_SIMPLIFIED),
|
||||
MENU_LABEL(SHADER_PIPELINE_RIBBON),
|
||||
MENU_LABEL(SHADER_PIPELINE_SIMPLE_SNOW),
|
||||
MENU_LABEL(SHADER_PIPELINE_SNOW),
|
||||
|
||||
MENU_LABEL(MATERIALUI_MENU_HEADER_OPACITY),
|
||||
MENU_LABEL(MATERIALUI_MENU_FOOTER_OPACITY),
|
||||
|
|
Loading…
Reference in New Issue