shaders/cgshaderfractal/Mandelbrot.cg
// Based on the example code by Arkadiusz Waliszewski (arsil@acm.org).
//----------------------------------------------------------------------------
struct vert2frag
{
float4 HPosition : HPOS;
float2 ScreenCoords : TEX0;
};
struct frag2screen
{
float3 COL : COLOR;
};
frag2screen main(vert2frag In)
{
frag2screen Out;
float KillValue = 8.0;
float4 Color = float4(0 , 0, 0, 0);
float4 ColorAdd = float4(0.01, 0.01, 0.015, 0.01);
float2 AB = float2(0, 0);
float2 ABSrt;
for( int i = 0; i < 64; i++ )
{
ABSrt = AB * AB;
AB = float2(ABSrt.x - ABSrt.y - In.ScreenCoords.x, 2 * AB.x * AB.y + In.ScreenCoords.y);
if ((ABSrt.x + ABSrt.x) < KillValue)
{
Color += ColorAdd;
}
}
Out.COL = Color.xyz;
return Out;
}