1
2/*
3Copyright (c) 2019 The Khronos Group Inc.
4Use of this source code is governed by an MIT-style license that can be
5found in the LICENSE.txt file.
6*/
7
8
9attribute vec4 gtf_Vertex;
10attribute vec4 gtf_Color;
11uniform mat4 gtf_ModelViewProjectionMatrix;
12varying vec4 color;
13
14void main (void)
15{
16	const float M_PI = 3.14159265358979323846;
17	vec2 x = 2.0 * (gtf_Color.gg - 0.5);
18	vec2 y = 2.0 * (gtf_Color.bb - 0.5);
19	const float epsilon = 1.0e-4;
20	color = vec4(0.0, 0.0, 0.0, 1.0);
21
22	// Avoid evaluating atan(0, x) for x < epsilon because it's implementation-dependent
23	if(x[0] > epsilon || abs(y[0]) > epsilon)
24	{
25		color[0] = atan(y[0], x[0]) / (2.0 * M_PI) + 0.5;
26	}
27
28	if(x[1] > epsilon || abs(y[1]) > epsilon)
29	{
30		color[1] = atan(y[1], x[1]) / (2.0 * M_PI) + 0.5;
31	}
32
33	gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex;
34}
35