aboutsummaryrefslogtreecommitdiff
path: root/cl/burning-ship.cl
blob: 7bab4b1d903ada98ba5fd56c19828c0f4eeda5fe (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
__kernel void fractal_gen(
	__global unsigned char *buffer,
	const unsigned int size,
	const unsigned long iterations)
{
	unsigned int x = get_global_id(0);
	unsigned int y = get_global_id(1);
	unsigned long i = 0;

	float a = -2.5+(((float)x)/size)*3.5;
	float b = -1.75+(((float)y)/size)*3.5;

	float2 z = (0.0, 0.0);

	for (i = 0; i < iterations; i++) {
		// if abs(z) > 2
		if (z.x*z.x + z.y*z.y > 4)
			break;

		float arez = fabs(z.x);
		float aimz = fabs(z.y);

		z.x = arez*arez - aimz*aimz + a;
		z.y = 2*aimz*arez + b;
	}
	buffer[(size*y)+x] = (i*255)/iterations;
}