… | |
… | |
260 | m.x = fabs (fmod (m.x + time * 0.05f, 4.f)) - 2.f; |
260 | m.x = fabs (fmod (m.x + time * 0.05f, 4.f)) - 2.f; |
261 | |
261 | |
262 | float2 z = m; |
262 | float2 z = m; |
263 | float2 c = (float2)(sin (time * 0.05005), cos (time * 0.06001)); |
263 | float2 c = (float2)(sin (time * 0.05005), cos (time * 0.06001)); |
264 | |
264 | |
265 | for (int i = 0; i < 100 && dot (z, z) < 4.f; ++i) |
265 | for (int i = 0; i < 25 && dot (z, z) < 4.f; ++i) |
266 | z = (float2)(z.x * z.x - z.y * z.y, 2.f * z.x * z.y) + c; |
266 | z = (float2)(z.x * z.x - z.y * z.y, 2.f * z.x * z.y) + c; |
267 | |
267 | |
268 | float3 colour = (float3)(z.x, z.y, z.x * z.y); |
268 | float3 colour = (float3)(z.x, z.y, z.x * z.y); |
269 | write_imagef (img, (int2)(get_global_id (0), get_global_id (1)), (float4)(colour * p.x * p.x, 1.)); |
269 | write_imagef (img, (int2)(get_global_id (0), get_global_id (1)), (float4)(colour * p.x * p.x, 1.)); |
270 | } |
270 | } |
… | |
… | |
288 | |
288 | |
289 | # release objects to opengl again |
289 | # release objects to opengl again |
290 | $queue->enqueue_release_gl_objects ([$tex]); |
290 | $queue->enqueue_release_gl_objects ([$tex]); |
291 | |
291 | |
292 | # wait |
292 | # wait |
293 | $queue->flush; |
293 | $queue->finish; |
294 | |
294 | |
295 | # now draw the texture, the defaults should be all right |
295 | # now draw the texture, the defaults should be all right |
296 | glTexParameterf GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST; |
296 | glTexParameterf GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST; |
297 | |
297 | |
298 | glEnable GL_TEXTURE_2D; |
298 | glEnable GL_TEXTURE_2D; |
… | |
… | |
1369 | |
1369 | |
1370 | This is a family of methods to set the kernel argument with the number C<$index> to the give C<$value>. |
1370 | This is a family of methods to set the kernel argument with the number C<$index> to the give C<$value>. |
1371 | |
1371 | |
1372 | TYPE is one of C<char>, C<uchar>, C<short>, C<ushort>, C<int>, C<uint>, |
1372 | TYPE is one of C<char>, C<uchar>, C<short>, C<ushort>, C<int>, C<uint>, |
1373 | C<long>, C<ulong>, C<half>, C<float>, C<double>, C<memory>, C<buffer>, |
1373 | C<long>, C<ulong>, C<half>, C<float>, C<double>, C<memory>, C<buffer>, |
1374 | C<image2d>, C<image3d>, C<sampler> or C<event>. |
1374 | C<image2d>, C<image3d>, C<sampler>, C<local> or C<event>. |
1375 | |
1375 | |
1376 | Chars and integers (including the half type) are specified as integers, |
1376 | Chars and integers (including the half type) are specified as integers, |
1377 | float and double as floating point values, memory/buffer/image2d/image3d |
1377 | float and double as floating point values, memory/buffer/image2d/image3d |
1378 | must be an object of that type or C<undef>, and sampler and event must be |
1378 | must be an object of that type or C<undef>, local-memory arguments are |
1379 | objects of that type. |
1379 | set by specifying the size, and sampler and event must be objects of that |
|
|
1380 | type. |
1380 | |
1381 | |
1381 | L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clSetKernelArg.html> |
1382 | L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clSetKernelArg.html> |
1382 | |
1383 | |
1383 | =back |
1384 | =back |
1384 | |
1385 | |