GPUs are amazing, I tried to use the Mandelbrot set as a texture, because it's amazingly beautiful and easy to implement. The algorithm I used is the following:

__device__ void
mandelbrotSet( const SceneInfo& sceneInfo, const float x, const float y,
float4& color )

{

float W = (float)gTextureWidth;

float H = (float)gTextureHeight;

float MinRe = -2.f;

float MaxRe = 1.f;

float MinIm = -1.2f;

float MaxIm = MinIm
+ (MaxRe - MinRe) * H/W;

float
Re_factor = (MaxRe - MinRe) / (W - 1.f);

double Im_factor = (MaxIm - MinIm) / (H - 1.f);

float
MaxIterations = 20.f+sceneInfo.pathTracingIteration.x;

float c_im = MaxIm - y*Im_factor;

float c_re =
MinRe + x*Re_factor;

float Z_re = c_re;

float Z_im = c_im;

bool isInside = true;

unsigned n;

for( n = 0; isInside && n < MaxIterations;
++n )

{

float Z_re2 = Z_re*Z_re;

float Z_im2 = Z_im*Z_im;

if ( Z_re2+Z_im2>4.f )

{

isInside = false;

}

Z_im = 2.f*Z_re*Z_im+c_im;

Z_re = Z_re2 - Z_im2+c_re;

}

color.x += Z_re/64.f;

color.y += Z_im/64.f;

color
*= (n/MaxIterations);

}

GPUs amaze me for making it possible to enjoy real-time computation of ray-traced images, with the Mandelbrot set... as a texture.