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;i4) 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); }