aboutsummaryrefslogtreecommitdiffstats
path: root/examples/quick3d/extensions/stenciloutline3d/shaders/huesaturation.frag
blob: ab10c15d59849668ea1d0c881aadbc0836e44e97 (plain)
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
#version 450
layout(location = 0) in vec2 qt_TexCoord0;
layout(location = 0) out vec4 fragColor;
layout(std140, binding = 0) uniform buf {
    mat4 qt_Matrix;
    float qt_Opacity;
    float value;
};

vec3 hsv2rgb(vec3 c)
{
    vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
    vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
    return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
}

#define TWO_PI 6.28318530718

void main()
{
    vec2 st = qt_TexCoord0;
    vec4 color = vec4(1.0);
    // Use polar coordinates instead of cartesian
    vec2 toCenter = vec2(0.5)-st;
    float angle = atan(toCenter.y,toCenter.x);
    float radius = length(toCenter)*2.0;
    if (radius <= 1.0) {
       color.rgb = hsv2rgb(vec3((angle/TWO_PI)+0.5,radius,value));
    } else {
        discard;
    }
    fragColor = color * qt_Opacity;
}