Celestia

Форк
0
/
galaxy150_geom.glsl 
59 строк · 1.5 Кб
1

2
uniform mat4 m;
3
uniform mat3 viewMat;
4

5
uniform float size;
6
uniform float brightness;
7
uniform float minimumFeatureSize;
8

9
in Vertex
10
{
11
    vec3  color;
12
    float size;
13
    float brightness;
14
} vertex[];
15

16
out vec4 v_Color;
17
out vec2 v_TexCoord;
18

19
void main()
20
{
21
    float s = size * vertex[0].size;
22
    if (s >= minimumFeatureSize)
23
    {
24
        vec4 p = m * gl_in[0].gl_Position;
25
        float screenFrac = s / length(p);
26
        if (screenFrac < 0.1)
27
        {
28
            /*
29
             * This shader assumes that vertices are rendered in CCW order.
30
             */
31
            vec4 v0 = vec4(viewMat * vec3(-1.0,  1.0, 0.0) * s, 0.0);
32
            vec4 v1 = vec4(viewMat * vec3(-1.0, -1.0, 0.0) * s, 0.0);
33
            vec4 v2 = vec4(viewMat * vec3( 1.0,  1.0, 0.0) * s, 0.0);
34
            vec4 v3 = vec4(viewMat * vec3( 1.0, -1.0, 0.0) * s, 0.0);
35
            float alpha = (0.1 - screenFrac) * vertex[0].brightness * brightness;
36
            vec4 color = vec4(vertex[0].color, alpha);
37

38
            set_vp(p + v0);
39
            v_TexCoord  = vec2(0.0, 1.0);
40
            v_Color     = color;
41
            EmitVertex();
42

43
            set_vp(p + v1);
44
            v_TexCoord  = vec2(0.0, 0.0);
45
            v_Color     = color;
46
            EmitVertex();
47

48
            set_vp(p + v2);
49
            v_TexCoord  = vec2(1.0, 1.0);
50
            v_Color     = color;
51
            EmitVertex();
52

53
            set_vp(p + v3);
54
            v_TexCoord  = vec2(1.0, 0.0);
55
            v_Color     = color;
56
            EmitVertex();
57
        }
58
    }
59
    EndPrimitive();
60
}
61

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.