Interpolating color across a polygon

This topic is 1922 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

Recommended Posts

I'm working on a software rasterizer just for grins and I'm to the point where I want to implement smoothing between different colors at vertices across a polygon.

From what I've read, it consists of calculating a scan line, calculating the colors at the ends of the scan line, and then linearly interpolating across that scan line to get the color at a single point.

My question is how to calculate the color at the end of the scan line for polygons with 4+ points. 3 points is pretty straight forward (though I haven't actually done the calculations yet), but 4 is a bit harder to wrap my head around.

Anyone have any good resources (or code) to get me started?

Share on other sites
The point at the end of the scan line belongs to a side of the polygon. You interpolate between the two vertices involved. What's the difficulty?

Share on other sites
You should triangulate/triple the mesh. Directly drawing quads and N-gons tends to cause artifacts, due to (floating point) precision errors (points on a 4+ polygon seldom lie on a single plane).

Plus, writing a triangle rasterizer is as you say more straightforward.

Share on other sites
Okay, so I'm doing some clipping to cut down on the surface area that I'm actually drawing. Right now thats being done before I'm rasterizing the polygon which is resulting in non-triangle polygons when I get to rasterization. So how should I go about avoiding those 4+ vertice polygons?

Share on other sites
Since your polygons are convex, you can just pick a vertex and convert the polygon to a fan around it, in the obvious way.