File: instanced.vert

package info (click to toggle)
qt3d-opensource-src 5.15.15%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 119,316 kB
  • sloc: cpp: 220,927; ansic: 904; python: 467; objc: 244; javascript: 158; pascal: 155; xml: 28; makefile: 25
file content (51 lines) | stat: -rw-r--r-- 1,215 bytes parent folder | download | duplicates (8)
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
#version 150 core

in vec3 vertexPosition;
in vec3 vertexNormal;
in vec3 pos;

out vec3 position;
out vec3 normal;
out vec3 kd;

uniform mat4 modelView;
uniform mat3 modelViewNormal;
uniform mat4 mvp;

// Calculate RGB triplet from HSV
vec3 hsvToRGB( float h, float s, float v )
{
    if ( s <= 0.0 )
        return vec3( v );

    h = h * 6.0;
    float c = v * s;
    float x = ( 1.0 - abs( ( mod( h, 2 ) - 1 ) ) ) * c;
    float m = v - c;
    float r = 0.0;
    float g = 0.0;
    float b = 0.0;

    if ( h < 1.0 )      { r = c;   g = x;   b = 0.0;}
    else if ( h < 2.0 ) { r = x;   g = c;   b = 0.0; }
    else if ( h < 3.0 ) { r = 0.0; g = c;   b = x; }
    else if ( h < 4.0 ) { r = 0.0; g = x;   b = c; }
    else if ( h < 5.0 ) { r = x;   g = 0.0; b = c; }
    else                { r = c;   g = 0.0; b = x; }

    return vec3( r + m, g + m, b + m );
}

void main()
{
    normal = normalize( modelViewNormal * vertexNormal );

    vec3 offsetPos = vertexPosition + pos;
    position = vec3(modelView * vec4(offsetPos, 1.0));

    float hue = fract( pos.x / 10.0 );
    float saturation = fract( pos.z / 20.0 );
    kd = hsvToRGB( hue, saturation, 1.0 );

    gl_Position = mvp * vec4(offsetPos, 1.0);
}