summaryrefslogtreecommitdiffstats
path: root/balls.cl
blob: eb668e27d2083fcc3b6fd58d3371a9bfa5dd07bb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#define RADIUS 0.75

__kernel void
balls(__global float4 *vertices, float tick) {
	uint id;
	int longitude, latitude;
	float sign, phi, theta;

	id = get_global_id(0);

	longitude = id / 16;
	latitude = id % 16;

	sign = -2.0f * (longitude % 2) + 1.0f;
	phi = 2.0f * M_PI_F * longitude / 16 + tick;
	theta = M_PI_F * latitude / 16;

	vertices[id].x = RADIUS * sin(theta) * cos(phi);
	vertices[id].y = RADIUS * sign * cos(theta);
	vertices[id].z = RADIUS * sin(theta) * sin(phi);
	vertices[id].w = 1.0f;
}