mirror of
https://github.com/libretro/RetroArch
synced 2025-02-24 09:40:07 +00:00
Merge pull request #5854 from fr500/master
this probably fixes the shader on noveau and others
This commit is contained in:
commit
5795d9926c
@ -6,29 +6,40 @@
|
||||
|
||||
static const char* stock_fragment_xmb_snowflake = GLSL(
|
||||
uniform float time;
|
||||
uniform float atime;
|
||||
uniform vec2 OutputSize;
|
||||
vec2 uv;
|
||||
|
||||
float atime;
|
||||
|
||||
float rand(vec2 co)
|
||||
{
|
||||
return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);
|
||||
}
|
||||
|
||||
float rand(float x){ return rand(vec2(x,1.0));}
|
||||
float rand_float(float x)
|
||||
{
|
||||
return rand(vec2(x, 1.0));
|
||||
}
|
||||
|
||||
float snow(vec3 pos, vec2 uv, float o)
|
||||
{
|
||||
vec2 d = (pos.xy - uv);
|
||||
float a = atan(d.y,d.x)+sin(atime*1.+o)*10.;
|
||||
float a = atan(d.y,d.x) + sin(atime*1.0 + o) * 10.0;
|
||||
|
||||
float dist = d.x*d.x + d.y*d.y;
|
||||
|
||||
if(dist < pos.z/400.){
|
||||
if(dist < pos.z/400.0)
|
||||
{
|
||||
float col = 0.0;
|
||||
if(sin(a*8.) < 0.0){col=1.0;}
|
||||
if(dist<pos.z/800.0){col+=1.0;}
|
||||
return col*pos.z;
|
||||
if(sin(a * 8.0) < 0.0)
|
||||
{
|
||||
col=1.0;
|
||||
}
|
||||
if(dist < pos.z/800.0)
|
||||
{
|
||||
col+=1.0;
|
||||
}
|
||||
return col * pos.z;
|
||||
}
|
||||
|
||||
return 0.0;
|
||||
@ -37,14 +48,14 @@ static const char* stock_fragment_xmb_snowflake = GLSL(
|
||||
float col(vec2 c)
|
||||
{
|
||||
float color = 0.0;
|
||||
for (int i = 1; i < 50; i++)
|
||||
for (int i = 1; i < 15; i++)
|
||||
{
|
||||
float o = rand(float(i) / 3.0) * 15 * 2.0;
|
||||
float z = rand(float(i) + 13.0);
|
||||
float x = 1.8 - (3.6) * (rand(floor((time*((z+1.0)/2.0)+o)/2.0)) + sin(time*o/1000.0)/10.0);
|
||||
float y = 1.0-mod((time*((z+1.0)/2.0))+o, 2.0);
|
||||
float o = rand_float(float(i) / 3.0) * 15.0;
|
||||
float z = rand_float(float(i) + 13.0);
|
||||
float x = 1.8 - (3.6) * (rand_float(floor((time*((z + 1.0) / 2.0) +o) / 2.0)) + sin(time * o /1000.0) / 10.0);
|
||||
float y = 1.0 - mod((time * ((z + 1.0)/2.0)) + o, 2.0);
|
||||
|
||||
color += snow(vec3(x,y,z),c,o);
|
||||
color += snow(vec3(x,y,z), c, o);
|
||||
}
|
||||
|
||||
return color;
|
||||
@ -57,7 +68,7 @@ static const char* stock_fragment_xmb_snowflake = GLSL(
|
||||
vec2 p = uv;
|
||||
p.x *= OutputSize.x / OutputSize.y;
|
||||
|
||||
atime = (time + 1)/4.0;
|
||||
atime = (time + 1.0) / 4.0;
|
||||
|
||||
gl_FragColor = vec4(col(p));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user