Celestia
1attribute vec4 in_Position;
2attribute vec2 in_TexCoord0;
3attribute float in_Size;
4attribute float in_ColorIndex;
5attribute float in_Brightness;
6
7uniform sampler2D colorTex;
8
9uniform mat4 m;
10uniform mat3 viewMat;
11
12uniform float size;
13uniform float brightness;
14
15varying vec4 color;
16varying vec2 texCoord;
17
18void main(void)
19{
20float s = size * in_Size;
21vec4 p = m * in_Position;
22float screenFrac = s / length(p);
23if (screenFrac >= 0.1)
24{
25// Output the same value for all discarded vertices so GPU will discard degenerate triangles
26gl_Position = vec4(0.0, 0.0, 0.0, 1.0);
27return;
28}
29
30vec4 v = vec4(viewMat * vec3(in_TexCoord0.s * 2.0 - 1.0, in_TexCoord0.t * 2.0 - 1.0, 0.0) * s, 0.0);
31float alpha = (0.1 - screenFrac) * in_Brightness * brightness;
32
33color = vec4(texture2D(colorTex, vec2(in_ColorIndex, 0.0)).rgb, alpha);
34texCoord = in_TexCoord0;
35set_vp(p + v);
36}
37