-
Notifications
You must be signed in to change notification settings - Fork 16
/
demo-GenCubeMap.glsl
142 lines (102 loc) · 2.65 KB
/
demo-GenCubeMap.glsl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
-- TheGameMaker.VS
in vec4 Position;
in vec2 TexCoord;
uniform mat4 Projection;
uniform mat4 Modelview;
out vec2 vTexCoord;
void main()
{
vTexCoord = vec2( 5.0, 1.0 ) * TexCoord;
gl_Position = Projection * Modelview * Position;
}
-- TheGameMaker.FS
uniform float time;
uniform float fogDensity = 0.45;
uniform vec3 fogColor = vec3(0, 0, 0);
layout(binding=0) uniform sampler2D cloud;
layout(binding=1) uniform sampler2D lava;
in vec2 vTexCoord;
out vec4 FragColor;
void main( void ) {
vec2 position = -1.0 + 2.0 * vTexCoord;
vec4 noise = texture( cloud, vTexCoord );
vec2 T1 = vTexCoord + vec2( 1.5, -1.5 ) * time * 0.02;
vec2 T2 = vTexCoord + vec2( -0.5, 2.0 ) * time * 0.01;
T1.x += noise.x * 2.0;
T1.y += noise.y * 2.0;
T2.x -= noise.y * 0.2;
T2.y += noise.z * 0.2;
float p = texture( cloud, T1 * 2.0 ).a;
vec4 color = texture( lava, T2 * 2.0 ).bgra;
vec4 temp = color * ( vec4( p, p, p, p ) * 2.0 ) + ( color * color - 0.1 );
if( temp.r > 1.0 ){ temp.bg += clamp( temp.r - 2.0, 0.0, 100.0 ); }
if( temp.g > 1.0 ){ temp.rb += temp.g - 1.0; }
if( temp.b > 1.0 ){ temp.rg += temp.b - 1.0; }
FragColor = temp;
}
-- Quad.VS
in vec2 Position;
in vec2 TexCoord;
out vec2 vTexCoord;
void main()
{
vTexCoord = TexCoord;
gl_Position = vec4(Position, 0, 1);
}
-- Blur.FS
in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
uniform sampler2D Sampler;
uniform vec2 Offsets[5];
uniform float Weights[5];
void main()
{
FragColor = vec4(0);
for (int i = 0; i < 5; i++) {
float w = Weights[i];
vec2 o = Offsets[i];
FragColor += w * texture(Sampler, vTexCoord + o);
}
}
-- Quad.FS
in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
uniform sampler2D Sampler;
uniform float Alpha = 1.0;
void main()
{
FragColor = texture(Sampler, vTexCoord);
if (gl_FragCoord.x < 1 || gl_FragCoord.x > 1279 || gl_FragCoord.y < 1 || gl_FragCoord.y > 799) {
FragColor.rgb = vec3(0.5);
}
FragColor.a *= Alpha;
}
-- Hipass.FS
in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
uniform sampler2D Sampler;
uniform float Threshold = 1.0;
const vec3 Black = vec3(0, 0, 0);
void main()
{
vec3 c = texture(Sampler, vTexCoord).rgb;
float gray = dot(c,c);
FragColor = vec4(gray > Threshold ? c : Black, 1);
}
-- Reflection.VS
in vec4 Position;
in vec2 TexCoord;
uniform mat4 Projection;
uniform mat4 Modelview;
out vec2 vTexCoord;
void main()
{
vTexCoord = vec2( 5.0, 1.0 ) * TexCoord;
gl_Position = Projection * Modelview * Position;
}
-- Reflection.FS
out vec4 FragColor;
void main()
{
FragColor = vec4(1);
}