62
62
const char fshadersrc[] =
63
63
"precision mediump float; \n"
64
"uniform float theta; \n"
64
"uniform vec4 theta; \n"
65
65
"varying vec2 texcoord; \n"
66
66
"uniform vec3 low_color, high_color; \n"
68
"vec3 gradient(float x) \n"
71
" const vec3 white = vec3(1.0, 1.0, 1.0); \n"
73
" col = x * low_color / 0.333; \n"
74
" else if (x < 0.666) \n"
75
" col = (x - 0.333) * (high_color - low_color) / \n"
76
" 0.333 + low_color; \n"
78
" col = (x - 0.666) * (white - high_color) / \n"
79
" 0.333 + high_color; \n"
85
70
" const float pi2 = 6.283185308; \n"
86
" float u = texcoord.x * pi2; \n"
87
" float v = texcoord.y * pi2; \n"
88
" float us = (cos(1.1 * u + 7.0 * theta) + \n"
89
" cos(2.3 * v * cos(1.0 * theta)) + \n"
90
" cos(0.3 * u * cos(3.0 * theta)) \n"
92
" float vs = (cos(2.3 * v + 8.0 * theta) + \n"
93
" cos(1.3 * u * cos(3.0 * theta)) + \n"
94
" cos(1.7 * v * cos(2.0 * theta)) \n"
96
" float x = (us * vs + 1.0) / 2.0; \n"
97
" gl_FragColor = vec4(gradient(x), 1.0); \n"
71
" float x = texcoord.x * pi2; \n"
72
" float y = texcoord.y * pi2; \n"
73
" float a = cos(1.0 * (x + theta.x)); \n"
74
" float b = cos(2.0 * (y + theta.y + a)); \n"
75
" float c = cos(2.0 * (2.0*x + theta.z + b)); \n"
76
" float d = cos(1.0 * (3.0*y + theta.w + c)); \n"
77
" float v = (a+b+c+d + 4.0) / 8.0; \n"
78
" vec3 color = v * (high_color - low_color) + \n"
80
" gl_FragColor = vec4(color, 1.0); \n"
100
83
const GLfloat vertices[] =
108
91
GLuint vshader, fshader, prog;
109
92
GLint linked, low_color, high_color, vpos, theta;
110
93
unsigned int width = 0, height = 0;
111
GLfloat angle = 0.0f;
94
GLfloat angle[4] = {3.1f, 4.1f, 5.9f, 2.6f};
113
96
if (!mir_eglapp_init(argc, argv, &width, &height))
150
133
while (mir_eglapp_running())
152
glUniform1f(theta, angle);
135
glUniform4fv(theta, 1, angle);
136
angle[0] += 0.00345f;
137
angle[1] += 0.01947f;
138
angle[2] += 0.03758f;
139
angle[3] += 0.01711f;
140
for (int a = 0; a < 4; ++a)
141
if (angle[a] > pi2) angle[a] -= pi2;
156
142
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
157
143
mir_eglapp_swap_buffers();