Step 2 // blending functions float BezierLinear(float a, float b, float t) { return a * (1.0f - t) + b * t; } float BezierQuadratic(float A, float B, float C, float t){ float AB = BezierLinear(A, B, t); float BC = BezierLinear(B, C, t); return BezierLinear(AB, BC, t); } float BezierCubic(float A, float B, float C, float D, float t) { float ABC = BezierQuadratic(A, B, C, t); float BCD = BezierQuadratic(B, C, D, t); return BezierLinear(ABC, BCD, t); } float BezierQuartic(float A, float B, float C, float D, float E, float t) { float ABCD = BezierCubic(A, B, C, D, t); float BCDE = BezierCubic(B, C, D, E, t); return BezierLinear(ABCD, BCDE, t); } float BezierQuintic(float A, float B, float C, float D, float E, float F, float t) { float ABCDE = BezierQuartic(A, B, C, D, E, t); float BCDEF = BezierQuartic(B, C, D, E, F, t); return BezierLinear(ABCDE, BCDEF, t); } float BezierSextic(float A, float B, float C, float D, float E, float F, float G, float t) { float ABCDEF = BezierQuintic(A, B, C, D, E, F, t); float BCDEFG = BezierQuintic(B, C, D, E, F, G, t); return BezierLinear(ABCDEF, BCDEFG, t); }