Generate a Mandelbulb Set with CUDA Functionality
Generate a Mandelbulb Set with CUDA Functionality
Needs["CUDALink`"]width = 640;
height = 480;
iconfig = {width, height, 1, 0, 1, 6};
config = {0.001, 0.0, 0.0, 0.0, 8.0, 15.0, 10.0, 5.0};camera = {{2.0, 2.0, 2.0}, {0.0, 0.0, 0.0}};
AppendTo[camera, Normalize[camera[[2]] - camera[[1]]]];
AppendTo[camera, 0.75 * Normalize[Cross[camera[[3]], {0.0, 1.0, 0.0}]]];
AppendTo[camera, 0.75 * Normalize[Cross[camera[[4]], camera[[3]]]]];config = Join[{config, Flatten[camera]}];pixelsMem = CUDAMemoryAllocate["Float", {height, width, 3}]srcf = FileNameJoin[{$CUDALinkPath, "SupportFiles", "mandelbulb.cu"}]mandelbulb = CUDAFunctionLoad[{srcf}, "MandelbulbGPU", {{"Float", _, "Output"}, {"Float", _, "Input"}, {"Integer32", _, "Input"}, "Integer32", "Float", "Float"}, {16}, "UnmangleCode" -> False]mandelbulb[pixelsMem, Flatten[config], iconfig, 0, 0.0, 0.0, {width * height * 3}]pixels = CUDAMemoryGet[pixelsMem];Image[pixels]