|
|
|
|
|
|
|
kernel void initialize(size_t width, size_t height, write_only image2d_t output){
|
|
|
|
size_t x = get_global_id(0);
|
|
|
|
size_t y = get_global_id(1);
|
|
|
|
|
|
|
|
int2 coord = {x, y};
|
|
|
|
const float xx = x / float(width - 1) - 0.5;
|
|
|
|
const float yy = y / float(height - 1) - 0.5;
|
|
|
|
float4 color = {0.066 * xx, 0.1 * yy, 0.1 * yy * xx, 1};
|
|
|
|
|
|
|
|
write_imagef(output, coord, color);
|
|
|
|
}
|
|
|
|
|
|
|
|
kernel void update(size_t width, size_t height, read_only image2d_t input, write_only image2d_t output){
|
|
|
|
size_t x = get_global_id(0);
|
|
|
|
size_t y = get_global_id(1);
|
|
|
|
|
|
|
|
int2 coord = {x, y};
|
|
|
|
|
|
|
|
const sampler_t samplerA = CLK_NORMALIZED_COORDS_FALSE
|
|
|
|
| CLK_ADDRESS_NONE
|
|
|
|
| CLK_FILTER_NEAREST;
|
|
|
|
|
|
|
|
const float4 w = read_imagef(input, samplerA, coord);
|
|
|
|
float4 v = w;
|
|
|
|
|
|
|
|
const float s = 9.120836;
|
|
|
|
const float r = 32.799129;
|
|
|
|
const float b = 2.902814;
|
|
|
|
const float dt = 0.019997;
|
|
|
|
|
|
|
|
v.x += dt * s * (w.y - w.x);
|
|
|
|
v.y += dt * (w.x * (r - w.z) - w.y);
|
|
|
|
v.z += dt * (w.x * w.y - b * w.z);
|
|
|
|
|
|
|
|
write_imagef(output, coord, v);
|
|
|
|
}
|
|
|
|
|