framebuffer formalitites
[carveJwlIkooP6JGAAIwe30JlM.git] / shaders / sway.glsl
1
2 "uniform mat4 uPv;"
3 "uniform mat4x3 uMdl;"
4 "uniform float uTime;"
5 "uniform float uSwayAmt;"
6 ""
7 "out vec4 aColour;"
8 "out vec2 aUv;"
9 "out vec3 aNorm;"
10 "out vec3 aCo;"
11 ""
12 "vec3 compute_sway( vec3 pos )"
13 "{"
14 "vec4 sines = vec4( sin(uTime + pos.x)*1.0,"
15 "sin(uTime*1.2 + pos.z*2.0)*1.1,"
16 "sin(uTime*2.33)*0.5,"
17 "sin(uTime*0.6 + pos.x*0.3)*1.3 );"
18
19 "vec3 offset = vec3( sines.x+sines.y*sines.w, 0.0, sines.x+sines.z );"
20 "return pos + offset*a_colour.r*uSwayAmt;"
21 "}"
22 ""
23 "void main()"
24 "{"
25 "vec3 swaypos = compute_sway( a_co );"
26 "gl_Position = uPv * vec4(uMdl * vec4(swaypos,1.0), 1.0 );"
27 "aColour = a_colour;"
28 "aUv = a_uv;"
29 "aNorm = normalize(mat3(uMdl) * a_norm);"
30 "aCo = a_co;"
31 "}",
32 /* Fragment */
33 "out vec4 FragColor;"
34 ""
35 "uniform int uMode;"
36 "uniform sampler2D uTexMain;"
37 "uniform sampler2D uTexGradients;"
38 ""
39 /*Include*/ SHADER_VALUE_NOISE_3D
40 ""
41 "in vec4 aColour;"
42 "in vec2 aUv;"
43 "in vec3 aNorm;"
44 "in vec3 aCo;"
45 ""
46 "void main()"
47 "{"
48 "vec4 colour = vec4(1.0,0.0,0.5,1.0);"
49 "vec4 diffuse = texture( uTexMain, aUv );"
50
51 "if( uMode == 1 )"
52 "{"
53 "colour = vec4(aNorm * 0.5 + 0.5, 1.0);"
54 "}"
55 "if( uMode == 2 )"
56 "{"
57 "colour = aColour;"
58 "}"
59 "if( uMode == 3 )"
60 "{"
61 "float light = dot(aNorm, vec3(0.2,0.8,0.1));"
62 "vec3 grid3 = fract(aCo);"
63
64 "colour = vec4(vec3(light)*(1.0-grid3*0.3),1.0);"
65 "}"
66 "if( uMode == 4 )"
67 "{"
68 "colour = vec4( aUv, 0.0, 1.0 );"
69 "}"
70 "if( uMode == 5 )"
71 "{"
72 "if( diffuse.a < 0.45 ) discard;"
73 "colour = diffuse;"
74 "}"
75 "if( uMode == 6 )"
76 "{"
77 "float r1 = fractalNoise(aCo);"
78 "colour = vec4( vec3(r1), 1.0 );"
79 "}"
80 "if( uMode == 7 )"
81 "{"
82 "if( diffuse.a < 0.2 ) discard;"
83 "float lighting = 1.0 - aColour.g*0.8;"
84
85 "float light1 = max(0.0,dot(-vec3(0.5,-0.8,0.25), aNorm));"
86 "float light2 = max(0.0,dot(-vec3(-0.8,0.5,-0.25), aNorm));"
87 "vec3 lt = vec3(0.2,0.2,0.2 ) + "
88 "vec3(1.0,1.0,0.9)*light1 + "
89 "vec3(0.1,0.3,0.4 )*light2;"
90
91
92 "colour = vec4(vec3(pow(lighting,1.6)*(diffuse.r*0.7+0.5)),1.0);"
93 "colour = vec4(colour.rgb*lt,1.0);"
94
95 "vec2 gradUV = vec2(lighting*1.9,aColour.b*0.8);"
96 "vec4 gradient_sample = texture( uTexGradients, gradUV );"
97 "colour = colour*gradient_sample;"
98 "}"
99 "if( uMode == 8 )"
100 "{"
101 "if( diffuse.a < 0.45 ) discard;"
102 "float light = 1.0 - aColour.g;"
103 "light = pow(light,1.6)*(diffuse.r*0.7+0.5);"
104 "float r1 = fractalNoise(aCo*0.01);"
105
106 "vec2 gradUV = vec2(light*1.9,r1+aColour.b);"
107 "vec4 gradient_sample = texture( uTexGradients, gradUV );"
108 "colour = gradient_sample*light;"
109 "}"
110
111 "FragColor = colour;"
112 "}"