Files
INF6B/math/mandelbrot.hlsl

25 lines
560 B
HLSL

cbuffer ViewportBuffer : register(b0)
{
float xmin;
float xmax;
float ymin;
float ymax;
int max_iter;
};
struct PS_IN { float4 pos : SV_POSITION; };
float4 PSMain(PS_IN input) : SV_TARGET
{
float2 uv = input.pos.xy * 0.5 + 0.5; // [-1,1] -> [0,1]
float2 c = float2(xmin,ymin) + uv * float2(xmax-xmin, ymax-ymin);
float2 z = c;
int i;
for(i=0;i<max_iter;i++){
if(dot(z,z)>4) break;
z = float2(z.x*z.x - z.y*z.y, 2*z.x*z.y)+c;
}
float t = i/(float)max_iter;
return float4(t,0.5*t,1.0-t,1);
}