kernel Gradient { output pixel4 dst; parameter float2 p1; parameter float2 p2; parameter float3 color1; parameter float3 color2; void evaluatePixel() { float2 co = outCoord(); // shift everything relative to p1. float2 uv = co - p1; float2 xy = p2 - p1; // the math. float g = dot(uv,xy) / dot(xy,xy); g = clamp(g,0.0,1.0); // the color. dst.a = 1.0; dst.rgb = mix(color1,color2,g); } }