How is the second bullet point determined without testing each point within the block? I can see that "early in" could be determined by just computing the corners of the block, but the same doesn't hold for "early out". How is this determined efficiently?
Max
The same can hold for early-out too - given the slope of the line you are testing against, you can choose one corner of the tile such that if that corner is outside the line, then the whole tile is outside.
That article is over a decade old now, so it doesn't entirely carry over to modern GPU rasterization, but many of the parallelism trade-offs are still relevant.
How is the second bullet point determined without testing each point within the block? I can see that "early in" could be determined by just computing the corners of the block, but the same doesn't hold for "early out". How is this determined efficiently?
The same can hold for early-out too - given the slope of the line you are testing against, you can choose one corner of the tile such that if that corner is outside the line, then the whole tile is outside.
Here's an interesting (and very long) explanation of these techniques: http://www.cs.cmu.edu/afs/cs/academic/class/15869-f11/www/readings/abrash09_lrbrast.pdf
That article is over a decade old now, so it doesn't entirely carry over to modern GPU rasterization, but many of the parallelism trade-offs are still relevant.