**************************************************************** mburu graded by Damian Isla-------------------------------------------- student : mburu graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2.5 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 1.5 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (shamrock) (0-2): 2 Exactitude (0-2): 2 total (0-15): 13 -------------------------------------------- notes: Good job, Fred! You got most of the problem set right. You had just two little problems: the x-interpolation in renderscanline() seemed to be off (the scanlines would start later than they should, thereby violating the "pixel center pixel-lighting" rule we specified) and also z was not correctly dealt with. I see you got the right idea with interpolating h linearly instead of z, but you might gotten something mixed up somewhere in there. Overall, though, good job! -------------------------------------------- **************************************************************** mburu graded by Damian Isla-------------------------------------------- student : mburu graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2.5 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 1.5 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (shamrock) (0-2): 2 Exactitude (0-2): 2 total (0-15): 14 -------------------------------------------- notes: Good job, Fred! You got most of the problem set right. You had just two little problems: the x-interpolation in renderscanline() seemed to be off (the scanlines would start later than they should, thereby violating the "pixel center pixel-lighting" rule we specified) and also z was not correctly dealt with. I see you got the right idea with interpolating h linearly instead of z, but you might gotten something mixed up somewhere in there. Overall, though, good job! -------------------------------------------- **************************************************************** meeroh graded by Damian Isla-------------------------------------------- student : meeroh graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (shamrock) (0-2): 2 Exactitude (0-2): 2 total (0-15): 14 -------------------------------------------- notes: Nice job, Miro. The only thing is that you were doing the z-interpolation incorrectly. This is the old eyespace/screen space depth problem. You were interpolating in screen space. To get the depth right, however, you need to interpolate in eyespace, or, in other words, interpolate /z (=h) in screen space. -------------------------------------------- **************************************************************** minneyar graded by Damian Isla-------------------------------------------- student : minneyar graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 0 Renders 2nd test (rgb) (0-2): 0 Renders 3rd test (cube) (0-2): 0 Renders 4th test (interpen) (0-2): 0 Renders 5th test (ellipse) (0-2): 0 Renders 6th test (shamrock) (0-2): 0 Exactitude (0-2): 0 total (0-15): -------------------------------------------- notes: Doesn't come close to working. -------------------------------------------- **************************************************************** mmaa graded by Damian Isla-------------------------------------------- student : mmaa graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 1 Renders 3rd test (cube) (0-2): 1 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 11 -------------------------------------------- notes: Your renderer is mostly working, but there are a few problems with it: 1) It does not correctly decide whether to light a pixel or not: pixels should only be lit when the pixel CENTER lies within the polygon. This did not work correctly in your implementation, probably because you did not adjust the starting X-value of each line to account for the points of the edge being off-center. 2) Color interpolation had something wrong with it - at the end of some polygon spans bright pixels appeared. 3) Depth interpolation did not function correctly. You should have been linearly interpolating h, not z, to get accurate intermediate depth values. -------------------------------------------- **************************************************************** nataraja graded by Damian Isla-------------------------------------------- student : nataraja graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 13 -------------------------------------------- notes: Good job. You just had two problems: 1) You were not correctly interpolating intializaing the EdgeRec, in that you were not correctly adjusting the starting value of X to account for the starting point of the edge being off-pixel-center. i.e. the initial value of xcurr does NOT equal xstart, but rather xstart + epsilon (finding epsilon is the trick). 2) Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. -------------------------------------------- **************************************************************** nilesh graded by Damian Isla-------------------------------------------- student : nilesh graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 13 -------------------------------------------- notes: Good job. You unfortunately just had three problems: 1) You were not correctly intializing the EdgeRec, in that you were not correctly adjusting the starting value of X to account for the starting point of the edge being off-pixel-center. i.e. the initial value of xcurr does NOT equal xstart, but rather xstart + epsilon (finding epsilon is the trick). Because what you REALLY want is the value of X at the level of the center of the next row of pixels. Since the edge probably starts below that level, you need to adjust X. Note that it is not JUST X that should be adjuseted in this way, but also color and depth (and inverse depth). 2) The above also counts for when you're interpolating along a scan-line (in RenderScanLine()). For each pixel that you light up, you want to take the values of color and depth at the CENTER of the pixel you're considering. So, if the starting X of an edge does not happen to be at the center of a pixel, you need to adjust the starting values of h and color to find their values at the center of the first pixel. The formula for this 1-D case is: hstart = e1->hstart + (pixelCenter_X - e1->xcurr) * (e1->hcurr - e2->hcurr) / (e1->xcurr - e2->xcurr) and likewise for color. Where pixelCenter_X is the X-coordinate of the center of the first pixel you're lighting up, e1 is the first edge and e2 is the second edge. 3) Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. -------------------------------------------- **************************************************************** ninghai graded by Damian Isla-------------------------------------------- student : ninghai graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 14 -------------------------------------------- notes: Good job! Your scan line renderer works well and is well-implemented. You have just two little problems: Good job on adjusting the Xstart (and zstart and colstart) positions to account for an edge starting off-pixel-center. However, you have to do that when you're interpolating along a single scan line as well! i.e. You have to adjust the beginning values of your z (or h) and color to account for the start of the span being off-pixel-center. Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. -------------------------------------------- **************************************************************** om_p graded by Damian Isla-------------------------------------------- student : om_p graded by : Damian Isla problem set: ivscan -------------------------------------------- -1 POINT: NO EXECUTABLE TURNED IN Renders 1st test (triangle) (0-3): 1 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 0.5 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 0 Renders 6th test (geekball) (0-2): 0 Exactitude (0-2): total (0-15): -------------------------------------------- notes: CHECK FOR MORE RECENT VERSION -------------------------------------------- **************************************************************** om_p graded by Damian Isla-------------------------------------------- student : om_p graded by : Damian Isla problem set: ivscan -------------------------------------------- -1 POINT: NO EXECUTABLE TURNED IN Renders 1st test (triangle) (0-3): 1 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 0.5 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 0 Renders 6th test (geekball) (0-2): 0 Exactitude (0-2): 2 total (0-15): 6.5 -------------------------------------------- notes: As you probably know, there are some serious problems with your renderer: 1) It does not handle multiple polygons - it only renders the leftmost one on each scan line. This could be an error in your RenderScanLine() routine, or in when you are deciding to remove edges from the active edge list. 2) You are not removing the edges at the correct time. 3) It crashes when loading complex models (such as the ellipsoid.iv model). 4) You were not correctly intializing the EdgeRec, in that you were not correctly adjusting the starting value of X to account for the starting point of the edge being off-pixel-center. i.e. the initial value of xcurr does NOT equal xstart, but rather xstart + epsilon (finding epsilon is the trick). Because what you REALLY want is the value of X at the level of the center of the next row of pixels. Since the edge probably starts below that level, you need to adjust X. Note that it is not JUST X that should be adjusted in this way, but also color and depth (and inverse depth). 5) The above also counts for when you're interpolating along a scan-line (in RenderScanLine()). For each pixel that you light up, you want to take the values of color and depth at the CENTER of the pixel you're considering. So, if the starting X of an edge does not happen to be at the center of a pixel, you need to adjust the starting values of h and color to find their values at the center of the first pixel. The formula for this 1-D case is: hstart = e1->hstart + (pixelCenter_X - e1->xcurr) * (e1->hcurr - e2->hcurr) / (e1->xcurr - e2->xcurr) and likewise for color. Where pixelCenter_X is the X-coordinate of the center of the first pixel you're lighting up, e1 is the first edge and e2 is the second edge. If you have questions about any of these comments, please let me (naimad) know. -------------------------------------------- **************************************************************** om_p graded by Damian Isla-------------------------------------------- student : om_p graded by : Damian Isla problem set: ivscan -------------------------------------------- -1 POINT: NO EXECUTABLE TURNED IN Renders 1st test (triangle) (0-3): 1 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 0.5 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 0 Renders 6th test (geekball) (0-2): 0 Exactitude (0-2): 2 total (0-15): 6.5 -------------------------------------------- notes: As you probably know, there are some serious problems with your renderer: 1) It does not handle multiple polygons - it only renders the leftmost one on each scan line. This could be an error in your RenderScanLine() routine, or in when you are deciding to remove edges from the active edge list. 2) You are not removing the edges at the correct time. 3) It crashes when loading complex models (such as the ellipsoid.iv model). 4) You were not correctly intializing the EdgeRec, in that you were not correctly adjusting the starting value of X to account for the starting point of the edge being off-pixel-center. i.e. the initial value of xcurr does NOT equal xstart, but rather xstart + epsilon (finding epsilon is the trick). Because what you REALLY want is the value of X at the level of the center of the next row of pixels. Since the edge probably starts below that level, you need to adjust X. Note that it is not JUST X that should be adjusted in this way, but also color and depth (and inverse depth). 5) The above also counts for when you're interpolating along a scan-line (in RenderScanLine()). For each pixel that you light up, you want to take the values of color and depth at the CENTER of the pixel you're considering. So, if the starting X of an edge does not happen to be at the center of a pixel, you need to adjust the starting values of h and color to find their values at the center of the first pixel. The formula for this 1-D case is: hstart = e1->hstart + (pixelCenter_X - e1->xcurr) * (e1->hcurr - e2->hcurr) / (e1->xcurr - e2->xcurr) and likewise for color. Where pixelCenter_X is the X-coordinate of the center of the first pixel you're lighting up, e1 is the first edge and e2 is the second edge. If you have questions about any of these comments, please let me (naimad) know. -------------------------------------------- **************************************************************** om_p graded by Damian Isla-------------------------------------------- student : om_p graded by : Damian Isla problem set: ivscan -------------------------------------------- -1 POINT: NO EXECUTABLE TURNED IN Renders 1st test (triangle) (0-3): 1 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 0.5 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 0 Renders 6th test (geekball) (0-2): 0 Exactitude (0-2): 2 total (0-15): 6.5 -------------------------------------------- notes: As you probably know, there are some serious problems with your renderer: 1) It does not handle multiple polygons - it only renders the leftmost one on each scan line. This could be an error in your RenderScanLine() routine, or in when you are deciding to remove edges from the active edge list. 2) You are not removing the edges at the correct time. 3) It crashes when loading complex models (such as the ellipsoid.iv model). 4) You were not correctly intializing the EdgeRec, in that you were not correctly adjusting the starting value of X to account for the starting point of the edge being off-pixel-center. i.e. the initial value of xcurr does NOT equal xstart, but rather xstart + epsilon (finding epsilon is the trick). Because what you REALLY want is the value of X at the level of the center of the next row of pixels. Since the edge probably starts below that level, you need to adjust X. Note that it is not JUST X that should be adjusted in this way, but also color and depth (and inverse depth). 5) The above also counts for when you're interpolating along a scan-line (in RenderScanLine()). For each pixel that you light up, you want to take the values of color and depth at the CENTER of the pixel you're considering. So, if the starting X of an edge does not happen to be at the center of a pixel, you need to adjust the starting values of h and color to find their values at the center of the first pixel. The formula for this 1-D case is: hstart = e1->hstart + (pixelCenter_X - e1->xcurr) * (e1->hcurr - e2->hcurr) / (e1->xcurr - e2->xcurr) and likewise for color. Where pixelCenter_X is the X-coordinate of the center of the first pixel you're lighting up, e1 is the first edge and e2 is the second edge. If you have questions about any of these comments, please let me (naimad) know. -------------------------------------------- **************************************************************** peggykuo graded by Damian Isla-------------------------------------------- student : peggykuo graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 1.5 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 13.5 -------------------------------------------- notes: Good job Peggy! I found just two little problems with your renderer: 1) You were not correctly intializing the EdgeRec, in that you were not correctly adjusting the starting value of X to account for the starting point of the edge being off-pixel-center. i.e. the initial value of xcurr does NOT equal xstart, but rather xstart + epsilon (finding epsilon is the trick). Because what you REALLY want is the value of X at the level of the center of the next row of pixels. Since the edge probably starts below that level, you need to adjust X. Note that it is not JUST X that should be adjusted in this way, but also color and depth (and inverse depth). 2) I found when rendering the cube that some cracks appear between polygons that should be flush. This is probably a problem in your RenderScanLine() function in Scan.C. -------------------------------------------- **************************************************************** rdror graded by Damian Isla-------------------------------------------- student : rdror graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 15 -------------------------------------------- notes: Good job, Ron! -------------------------------------------- **************************************************************** rwsu graded by Damian Isla-------------------------------------------- student : rwsu graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): -------------------------------------------- notes: -------------------------------------------- **************************************************************** rwsu graded by Damian Isla-------------------------------------------- student : rwsu graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 1 Renders 2nd test (rgb) (0-2): 0.5 Renders 3rd test (cube) (0-2): 0 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 1 Renders 6th test (geekball) (0-2): 1 Exactitude (0-2): 2 total (0-15): 6.5 -------------------------------------------- notes: Your renderer unfortunately has some severe problems. It crashed on most of the examples we tested it on. Those that don't crash display results which are, well, pretty wrong. It seems the problem with the crashing is due to the fact that you're removing lines at the wrong time. When this happens, you end up with only one edge for a certain polygon in the active edge list, and then the AEL throws an exception when you try and find the "NextPolyEdge". There were other problems, of varying severity. You interpolated Z rather than h, as you should have. Also, the starting values of X should have been adjusted (i.e. xcurr != xstart, initially) to account for the edges being off-pixel-center. If you have questions, please e-mail me (naimad). -------------------------------------------- **************************************************************** shishir graded by Damian Isla-------------------------------------------- student : shishir graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 14 -------------------------------------------- notes: Good job, Shishir! Your renderer works really well. I just found two problems: 1) Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. 2) Good job in recognizing the subtlety of setting up the initial value of xcurr -- i.e. that you have to adjust the value of x (and depth and color etc) to be the correct value at the next scan-line. However, to be REALLY accurate, you have to do this same sort of operation again in the RenderScanLine() function when you're interpolating along a scan line! i.e. you can't take curcolor to be equal to first_Edge->curColor, but rather you have to find the correct interpolated value at the center of the first pixel you're going to light. -------------------------------------------- **************************************************************** sirkin graded by Damian Isla-------------------------------------------- student : sirkin graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2.5 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 14.5 -------------------------------------------- notes: Great job, Dave! You just missed one tiny subtlety: Good job on figuring out that you can just use xstart as the initial value of xcurr (i.e. you have to adjust it to find the value of X at the next scan-line). However, the trick is that you have to do the same thing in RenderScanLine when you're interpolating across a scanline. i.e. You can't just take e1->hcurr as the initial value of hcurr -- you need to find the correctly interpolating value of h at the center of the first pixel you will light. To do that you need a correction term very similar to the one you used in the init function in EdgeRec.C. -------------------------------------------- **************************************************************** smeaton graded by Damian Isla-------------------------------------------- student : smeaton graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 1 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 1.5 Renders 6th test (geekball) (0-2): 1.5 Exactitude (0-2): 2 total (0-15): 11 -------------------------------------------- notes: You got most of it right, but there were some problems when we tested it with some of the more complex models. In the cube, for example, cracks appeared between pixels that should have been flush. This is probably a problem in your RenderScanLine function, although it could have something to do with how you set up your EdgeRecs. A few other issues: 1) You were right to adjust the initial xcurr values associated with each edge in order to get the correct X values at the center of the next scanline. However, you have to do this with Z, h and color as well. Also, a better place to do that would have been in EdgeRec::Init. 2) You have to do the above kind of adjustment when interpolating across a scanline as well (in RenderScanLine()). For each pixel that you light up, you want to take the values of color and depth at the CENTER of the pixel you're considering. So, if the starting X of an edge does not happen to be at the center of a pixel, you need to adjust the starting values of h and color to find their correctly interpolated values at the center of the first pixel. The formula for this 1-D case is: hstart = e1->hstart + (pixelCenter_X - e1->xcurr) * (e1->hcurr - e2->hcurr) / (e1->xcurr - e2->xcurr) and likewise for color. Where pixelCenter_X is the X-coordinate of the center of the first pixel you're lighting up, e1 is the first edge and e2 is the second edge. 3) Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. -------------------------------------------- **************************************************************** snoeren graded by Damian Isla-------------------------------------------- student : snoeren graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 15 -------------------------------------------- notes: Awesome job! -------------------------------------------- **************************************************************** sriram graded by Damian Isla-------------------------------------------- student : sriram graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2.5 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 14.5 -------------------------------------------- notes: Great job! Your renderer works really well. You missed just one little subtlety: Good job in recognizing that the starting value of xcur had to be adjusted to find the value of x at the center of the next scanline (and likewise for depth and color). However, you have to do an analogous thing in RenderScanLine when you're interpolating across a scanline. Your initial value of hcurr for a given span should not simply be edge1->hcurr, but rather the correctly interpolated value of hcurr at the center of the first pixel you light. -------------------------------------------- **************************************************************** stanhu graded by Damian Isla-------------------------------------------- student : stanhu graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2.5 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 14.5 -------------------------------------------- notes: Great job! You just missed one tiny subtlety: Good job in recognizing that the starting value of xcur had to be adjusted to find the value of x at the center of the next scanline (and likewise for depth and color). However, you have to do an analogous thing in RenderScanLine when you're interpolating across a scanline. Your initial value of hcurr for a given span should not simply be edge1->hcurr, but rather the correctly interpolated value of hcurr at the center of the first pixel you light. -------------------------------------------- **************************************************************** tkburian graded by Damian Isla-------------------------------------------- student : tkburian graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 0 Renders 2nd test (rgb) (0-2): 1 Renders 3rd test (cube) (0-2): 1 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 1 Renders 6th test (geekball) (0-2): 1 Exactitude (0-2): 1 total (0-15): 6 -------------------------------------------- notes: Unfortunately there seem to be some big problems with your ivscan. I had it crash on every example I tried. The message it crashed with was an assertion failure, which happened in a place that suggests that you were not removing the edge at the right time. In general, your code looked good -- you definitely had the right idea. Some other more subtle issues: 1) You were not correctly intializing the EdgeRec, in that you were not correctly adjusting the starting value of X to account for the start of the edge being off-pixel-center. i.e. the initial value of xcurr does NOT equal xstart, but rather xstart + epsilon (finding epsilon is the trick). Because what you REALLY want is the value of X at the intersection of the edge with the next scan line. Note that it is not JUST X that should be adjusted in this way, but also color and depth (and inverse depth). 2) The above also counts for when you're interpolating along a scan-line (in RenderScanLine()). For each pixel that you light up, you want to take the values of color and depth at the CENTER of the pixel you're considering. So, if the starting X of an edge does not happen to be at the center of a pixel, you need to adjust the starting values of h and color to find their correctly interpolated values at the center of the first pixel. The formula for this 1-D case is: hstart = e1->hstart + (pixelCenter_X - e1->xcurr) * (e1->hcurr - e2->hcurr) / (e1->xcurr - e2->xcurr) and likewise for color. Where pixelCenter_X is the X-coordinate of the center of the first pixel you're lighting up, e1 is the first edge and e2 is the second edge. 3) Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. -------------------------------------------- **************************************************************** treacle graded by Damian Isla-------------------------------------------- student : treacle graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 1.5 Renders 2nd test (rgb) (0-2): 1.5 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 0.5 Renders 5th test (ellipse) (0-2): 1 Renders 6th test (geekball) (0-2): 1 Exactitude (0-2): 1 total (0-15): 8.5 -------------------------------------------- notes: 1) The pixel-lighting rule that was described in class (only light a pixel when the center of that pixel is within the polygon) was not obeyed. 2) Color interpolation had some small problem: a bright outline was seen at times on the edges of polygons. 3) The most serious problem is that the system does not at all handle multiple polygons in a model any more complex than the cube. The unfortunate thing is that this could easily have been fixed, since looking at your code, I saw that you had done no visibility calculations. You were rendering the polygons in the order in which you got them, which is clearly wrong, since they are not handed to you in any particular order (and even if they were, there would be no garantee that they didn't intersect etc). You could have addded a simple XRES-wide z buffer, and that would have completely solved the problem. Some more subtle stuff: 4) You were not correctly intializing the EdgeRec, in that you were not correctly adjusting the starting value of X to account for the start of the edge being off-pixel-center. i.e. the initial value of xcurr does NOT equal xstart, but rather xstart + epsilon (finding epsilon is the trick). Because what you REALLY want is the value of X at the intersection of the edge with the next scan line. Note that it is not JUST X that should be adjusted in this way, but also color and depth (and inverse depth). 5) The above also counts for when you're interpolating along a scan-line (in RenderScanLine()). For each pixel that you light up, you want to take the values of color and depth at the CENTER of the pixel you're considering. So, if the starting X of an edge does not happen to be at the center of a pixel, you need to adjust the starting values of h and color to find their correctly interpolated values at the center of the first pixel. The formula for this 1-D case is: hstart = e1->hstart + (pixelCenter_X - e1->xcurr) * (e1->hcurr - e2->hcurr) / (e1->xcurr - e2->xcurr) and likewise for color. Where pixelCenter_X is the X-coordinate of the center of the first pixel you're lighting up, e1 is the first edge and e2 is the second edge. 6) Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. -------------------------------------------- **************************************************************** val graded by Damian Isla-------------------------------------------- student : val graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 14 -------------------------------------------- notes: Great job, Val. The only problem seemed to be that the pixel-lighting rule presented in lecture (light a pixel when the center of that pixel falls inside a polygon) was not followed. -------------------------------------------- **************************************************************** vbunny graded by Damian Isla-------------------------------------------- student : vbunny graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 Extra credit (0-2): 2 total (0-15): 16 -------------------------------------------- notes: Oooh ASL! Good job -- very daring to take on the ASL. Turned out great, though. There were just two little problems: 1) On some occasions the edges of lines were not formed correctly -- it was subtle, but it seemed like some spans ended a pixel before they should have. 2) You were not correctly intializing the EdgeRec, in that you were not correctly adjusting the starting value of X to account for the start of the edge being off-pixel-center. i.e. the initial value of xcurr does NOT equal xstart, but rather xstart + epsilon (finding epsilon is the trick). Because what you REALLY want is the value of X at the intersection of the edge with the next scan line. Note that it is not JUST X that should be adjusted in this way, but also color and depth (and inverse depth). -------------------------------------------- **************************************************************** wang066 graded by Damian Isla-------------------------------------------- student : wang066 graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): total (0-15): -------------------------------------------- notes: Good job! Your renderer works well. I just found two small issues: 1) The pixel-lighting rule that was presented in lecture (in which a pixel is lit only when its center falls within the polygon) was not followed. 2) Your intuition about "correcting for y discretization" in EdgeRec::Init was absolutely correct, but a) you forgot to apply it to xcurr and b) you undid the changes you (correctly) made to h! Oh well! -------------------------------------------- **************************************************************** wang066 graded by Damian Isla-------------------------------------------- student : wang066 graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 14 -------------------------------------------- notes: Good job! Your renderer works well. I just found two small issues: 1) The pixel-lighting rule that was presented in lecture (in which a pixel is lit only when its center falls within the polygon) was not followed. 2) Your intuition about "correcting for y discretization" in EdgeRec::Init was absolutely correct, but a) you forgot to apply it to xcurr and b) you undid the changes you (correctly) made to h! Oh well! -------------------------------------------- **************************************************************** wbeebee graded by Damian Isla-------------------------------------------- student : wbeebee graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2.5 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 1.5 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 14 -------------------------------------------- notes: Good job! I found just two little problems: 1) Particularly with rendering the cube and the interpen.iv, there were some random occasions in which cracks would appear between polygons that should have been flush. 2 ) Good job in recognizing that the starting value of xcur had to be adjusted to find the value of x at the center of the next scanline (and likewise for depth and color). However, you have to do an analogous thing in RenderScanLine when you're interpolating across a scanline. Your initial value of hcurr for a given span should not simply be edge1->hcurr, but rather the correctly interpolated value of hcurr at the center of the first pixel you light. -------------------------------------------- **************************************************************** yanhao graded by Damian Isla-------------------------------------------- student : yanhao graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 1.5 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 13.5 -------------------------------------------- notes: Good job on this problem set. I just found few small problems: 1) The pixel-lighting rule presented in lecture (in which a pixel is lit only if its center falls within the polygon) was not obeyed. 1) You were not correctly intializing the EdgeRec, in that you were not correctly adjusting the starting value of X to account for the start of the edge being off-pixel-center. i.e. the initial value of xcurr does NOT equal xstart, but rather xstart + epsilon (finding epsilon is the trick). Because what you REALLY want is the value of X at the intersection of the edge with the next scan line. Note that it is not JUST X that should be adjusted in this way, but also color and depth (and inverse depth). 2) The above also counts for when you're interpolating along a scan-line (in RenderScanLine()). For each pixel that you light up, you want to take the values of color and depth at the CENTER of the pixel you're considering. So, if the starting X of an edge does not happen to be at the center of a pixel, you need to adjust the starting values of h and color to find their correctly interpolated values at the center of the first pixel. The formula for this 1-D case is: hstart = e1->hstart + (pixelCenter_X - e1->xcurr) * (e1->hcurr - e2->hcurr) / (e1->xcurr - e2->xcurr) and likewise for color. Where pixelCenter_X is the X-coordinate of the center of the first pixel you're lighting up, e1 is the first edge and e2 is the second edge. 3) There were certain occasions (e.g. sometimes when rendering the cube.iv) where a crack would appear between two polygons that should have been flush. -------------------------------------------- **************************************************************** yipal graded by Damian Isla-------------------------------------------- student : yipal graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 0.5 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 12.5 -------------------------------------------- notes: Good job on this problem set. I found just a few problems: 1) There was one serious problem with running your ivscan on interpen.iv. It looked like there was something wrong your method for determining visibility. 2) You were not correctly intializing the EdgeRec, in that you were not correctly adjusting the starting value of X to account for the start of the edge being off-pixel-center. i.e. the initial value of xcurr does NOT equal xstart, but rather xstart + epsilon (finding epsilon is the trick). Because what you REALLY want is the value of X at the intersection of the edge with the next scan line. Note that it is not JUST X that should be adjusted in this way, but also color and depth (and inverse depth). 3) The above also counts for when you're interpolating along a scan-line (in RenderScanLine()). For each pixel that you light up, you want to take the values of color and depth at the CENTER of the pixel you're considering. So, if the starting X of an edge does not happen to be at the center of a pixel, you need to adjust the starting values of h and color to find their correctly interpolated values at the center of the first pixel. The formula for this 1-D case is: hstart = e1->hstart + (pixelCenter_X - e1->xcurr) * (e1->hcurr - e2->hcurr) / (e1->xcurr - e2->xcurr) and likewise for color. Where pixelCenter_X is the X-coordinate of the center of the first pixel you're lighting up, e1 is the first edge and e2 is the second edge. -------------------------------------------- **************************************************************** yusui graded by Damian Isla-------------------------------------------- student : yusui graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 1.5 Renders 4th test (interpen) (0-2): 0.5 Renders 5th test (ellipse) (0-2): 0 Renders 6th test (geekball) (0-2): 1 Exactitude (0-2): 2 total (0-15): 9 -------------------------------------------- notes: There are a few serious problems with your renderer: 1) Most seriously, your ivscan crashed when running the last two of the above tests (ellipse and geek ball). The cause is an assertion error. The place in which this error occurs would suggest to me that you're taking edges off of the active edge list at the wrong time. 2) There were certain occasions (e.g. sometimes when rendering the cube.iv) where a crack would appear between two polygons that should have been flush and/or when some strange artifacts appear around the corners of the models. 3) Interpen.iv does not work correctly -- there is some sort of problem with your visibility calculation. In fact, I think if you flipped the sign on your z-buffer entries it would probably work correctly. And more subtle problems: 4) You were not correctly intializing the EdgeRec, in that you were not correctly adjusting the starting value of X to account for the start of the edge being off-pixel-center. i.e. the initial value of xcurr does NOT equal xstart, but rather xstart + epsilon (finding epsilon is the trick). Because what you REALLY want is the value of X at the intersection of the edge with the next scan line. Note that it is not JUST X that should be adjusted in this way, but also color and depth (and inverse depth). 5) The above also counts for when you're interpolating along a scan-line (in RenderScanLine()). For each pixel that you light up, you want to take the values of color and depth at the CENTER of the pixel you're considering. So, if the starting X of an edge does not happen to be at the center of a pixel, you need to adjust the starting values of h and color to find their correctly interpolated values at the center of the first pixel. The formula for this 1-D case is: hstart = e1->hstart + (pixelCenter_X - e1->xcurr) * (e1->hcurr - e2->hcurr) / (e1->xcurr - e2->xcurr) and likewise for color. Where pixelCenter_X is the X-coordinate of the center of the first pixel you're lighting up, e1 is the first edge and e2 is the second edge. -------------------------------------------- **************************************************************** zwarren graded by Damian Isla-------------------------------------------- student : zwarren graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 1 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 12.5 -------------------------------------------- notes: Good job. There were just a few small problems: 1) The pixel-lighting rule presented in lecture (in which a pixel is lit only if its center falls within the polygon) was not obeyed. 2) You were not correctly intializing the EdgeRec, in that you were not correctly adjusting the starting value of X to account for the start of the edge being off-pixel-center. i.e. the initial value of xcurr does NOT equal xstart, but rather xstart + epsilon (finding epsilon is the trick). Because what you REALLY want is the value of X at the intersection of the edge with the next scan line. Note that it is not JUST X that should be adjusted in this way, but also color and depth (and inverse depth). 3) The above also counts for when you're interpolating along a scan-line (in RenderScanLine()). For each pixel that you light up, you want to take the values of color and depth at the CENTER of the pixel you're considering. So, if the starting X of an edge does not happen to be at the center of a pixel, you need to adjust the starting values of h and color to find their correctly interpolated values at the center of the first pixel. The formula for this 1-D case is: hstart = e1->hstart + (pixelCenter_X - e1->xcurr) * (e1->hcurr - e2->hcurr) / (e1->xcurr - e2->xcurr) and likewise for color. Where pixelCenter_X is the X-coordinate of the center of the first pixel you're lighting up, e1 is the first edge and e2 is the second edge. 4) Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. -------------------------------------------- **************************************************************** zwarren graded by Damian Isla-------------------------------------------- student : zwarren graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 1 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 12 -------------------------------------------- notes: Good job. There were just a few small problems: 1) The pixel-lighting rule presented in lecture (in which a pixel is lit only if its center falls within the polygon) was not obeyed. 2) You were not correctly intializing the EdgeRec, in that you were not correctly adjusting the starting value of X to account for the start of the edge being off-pixel-center. i.e. the initial value of xcurr does NOT equal xstart, but rather xstart + epsilon (finding epsilon is the trick). Because what you REALLY want is the value of X at the intersection of the edge with the next scan line. Note that it is not JUST X that should be adjusted in this way, but also color and depth (and inverse depth). 3) The above also counts for when you're interpolating along a scan-line (in RenderScanLine()). For each pixel that you light up, you want to take the values of color and depth at the CENTER of the pixel you're considering. So, if the starting X of an edge does not happen to be at the center of a pixel, you need to adjust the starting values of h and color to find their correctly interpolated values at the center of the first pixel. The formula for this 1-D case is: hstart = e1->hstart + (pixelCenter_X - e1->xcurr) * (e1->hcurr - e2->hcurr) / (e1->xcurr - e2->xcurr) and likewise for color. Where pixelCenter_X is the X-coordinate of the center of the first pixel you're lighting up, e1 is the first edge and e2 is the second edge. 4) Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. -------------------------------------------- **************************************************************** zxf graded by Damian Isla-------------------------------------------- student : zxf graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 0 Renders 2nd test (rgb) (0-2): 1 Renders 3rd test (cube) (0-2): 1 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 1 Renders 6th test (geekball) (0-2): 1 Exactitude (0-2): 1 total (0-15): 6 -------------------------------------------- notes: Your renderer has the serious problem that it crashes when I try and run it on anything. It fails with an assert error in EdgeRecList::NextPolyEdge, which suggests to me that it could be a matter of removing polygon edges too soon. Besides that, a few smaller matters: 1) You were not correctly intializing the EdgeRec, in that you were not correctly adjusting the starting value of X to account for the start of the edge being off-pixel-center. i.e. the initial value of xcurr does NOT equal xstart, but rather xstart + epsilon (finding epsilon is the trick). Because what you REALLY want is the value of X at the intersection of the edge with the next scan line. Note that it is not JUST X that should be adjusted in this way, but also color and depth (and inverse depth). 2) Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. -------------------------------------------- **************************************************************** greenie graded by Kari Anne Kjolaas-------------------------------------------- student : greenie graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): -------------------------------------------- notes: There is no record of your ps5 on turnin. Please contact me ASAP if you turned in the problem set so that I can make arrangements to look at your work and regrade. -------------------------------------------- **************************************************************** hongjy graded by Kari Anne Kjolaas-------------------------------------------- student : hongjy graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): -------------------------------------------- notes: There is no record of your ps5 on turnin. Please contact me ASAP if you turned in the problem set so that I can make arrangements to look at your work and regrade. -------------------------------------------- **************************************************************** hsieh graded by Kari Anne Kjolaas-------------------------------------------- student : hsieh graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): -------------------------------------------- notes: There is no record of your ps5 on turnin. Please contact me ASAP if you turned in the problem set so that I can make arrangements to look at your work and regrade. -------------------------------------------- **************************************************************** jar graded by Kari Anne Kjolaas-------------------------------------------- student : jar graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): -------------------------------------------- notes: There is no record of your ps5 on turnin. Please contact me ASAP if you turned in the problem set so that I can make arrangements to look at your work and regrade. -------------------------------------------- **************************************************************** jialun graded by Kari Anne Kjolaas-------------------------------------------- student : jialun graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): -------------------------------------------- notes: There is no record of your ps5 on turnin. Please contact me ASAP if you turned in the problem set so that I can make arrangements to look at your work and regrade. -------------------------------------------- **************************************************************** jingq graded by Kari Anne Kjolaas-------------------------------------------- student : jingq graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): -------------------------------------------- notes: There is no record of your ps5 on turnin. Please contact me ASAP if you turned in the problem set so that I can make arrangements to look at your work and regrade. -------------------------------------------- **************************************************************** jpelly graded by Kari Anne Kjolaas-------------------------------------------- student : jpelly graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): -------------------------------------------- notes: There is no record of your ps5 on turnin. Please contact me ASAP if you turned in the problem set so that I can make arrangements to look at your work and regrade. -------------------------------------------- **************************************************************** jpelly graded by Kari Anne Kjolaas-------------------------------------------- student : jpelly graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): -------------------------------------------- notes: There is no record of your ps5 on turnin. Please contact me ASAP if you turned in the problem set so that I can make arrangements to look at your work and regrade. -------------------------------------------- **************************************************************** jso graded by Kari Anne Kjolaas-------------------------------------------- student : jso graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): -------------------------------------------- notes: There is no record of your ps5 on turnin. Please contact me ASAP if you turned in the problem set so that I can make arrangements to look at your work and regrade. -------------------------------------------- **************************************************************** karinc graded by Kari Anne Kjolaas-------------------------------------------- student : karinc graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): -------------------------------------------- notes: There is no record of your ps5 on turnin. Please contact me ASAP if you turned in the problem set so that I can make arrangements to look at your work and regrade. -------------------------------------------- **************************************************************** liberal graded by Kari Anne Kjolaas-------------------------------------------- student : liberal graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): -------------------------------------------- notes: You have been temporarily given a 0 for ps5. I am aware that you have an extention for the problem set. Please contact me as soon as you have completed the work so that I can regrade. -------------------------------------------- **************************************************************** gromit graded by Kari Anne Kjolaas-------------------------------------------- student : gromit graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): -------------------------------------------- notes: -------------------------------------------- **************************************************************** gromit graded by Kari Anne Kjolaas-------------------------------------------- student : gromit graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): -------------------------------------------- notes: -------------------------------------------- **************************************************************** gromit graded by Kari Anne Kjolaas-------------------------------------------- student : gromit graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): -------------------------------------------- notes: -------------------------------------------- **************************************************************** gromit graded by Kari Anne Kjolaas-------------------------------------------- student : gromit graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 1 Renders 6th test (geekball) (0-2): 0 Exactitude (0-2): 0 total (0-15): 9 -------------------------------------------- notes: You do not interpolate depth correctly. Furthermore, your program seg faults on several occations due to errors in the initialization of the EdgeRecList. -------------------------------------------- **************************************************************** henryw graded by Kari Anne Kjolaas-------------------------------------------- student : henryw graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 14 -------------------------------------------- notes: Your depth interpolation is off. Otherwise solid. -------------------------------------------- **************************************************************** hhwang graded by Kari Anne Kjolaas-------------------------------------------- student : hhwang graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 15 -------------------------------------------- notes: Nice job! -------------------------------------------- **************************************************************** ibkaplan graded by Kari Anne Kjolaas-------------------------------------------- student : ibkaplan graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 15 -------------------------------------------- notes: Good job. -------------------------------------------- **************************************************************** jaw2s graded by Kari Anne Kjolaas-------------------------------------------- student : jaw2s graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 15 -------------------------------------------- notes: Good job. -------------------------------------------- **************************************************************** prettig graded by Damian Isla-------------------------------------------- student : prettig graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): 0 -------------------------------------------- notes: We could not find a turnin for you. The zero for this assignment is only temporary -- please e-mail me (naimad@graphics.lcs.mit.edu) with a publicly accessible location with your working executable and source files. Thanks. -------------------------------------------- **************************************************************** rpwang graded by Damian Isla-------------------------------------------- student : rpwang graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): 0 -------------------------------------------- notes: We could not find a turnin for you. The zero for this assignment is only temporary -- please e-mail me (naimad@graphics.lcs.mit.edu) with a publicly accessible location with your working executable and source files. Thanks. -------------------------------------------- **************************************************************** sverdlov graded by Damian Isla-------------------------------------------- student : sverdlov graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): 0 -------------------------------------------- notes: We could not find a turnin for you. The zero for this assignment is only temporary -- please e-mail me (naimad@graphics.lcs.mit.edu) with a publicly accessible location with your working executable and source files. Thanks. -------------------------------------------- **************************************************************** vedam graded by Damian Isla-------------------------------------------- student : vedam graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): -------------------------------------------- notes: We could not find a turnin for you. The zero for this assignment is only temporary -- please e-mail me (naimad@graphics.lcs.mit.edu) with a publicly accessible location with your working executable and source files. Thanks. -------------------------------------------- **************************************************************** jee graded by Kari Anne Kjolaas-------------------------------------------- student : jee graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 1 total (0-15): 13 -------------------------------------------- notes: Good job. Your z interpolation is off, otherwise ok. -------------------------------------------- **************************************************************** minneyar graded by Damian Isla-------------------------------------------- student : minneyar graded by : Damian Isla problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 1 Renders 2nd test (rgb) (0-2): 1 Renders 3rd test (cube) (0-2): 1 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 1 Renders 6th test (shamrock) (0-2): 1 Exactitude (0-2): 1 total (0-15): 7 -------------------------------------------- notes: It's too bad what you handed in doesn't quite work. I think your problem was the following line (in RenderScene() in Scan.C) env->EdgeRecTable[line].Concat(AEL); This should have been AEL->Concat(&(env->EdgeRecTable[line])); i.e. You want to concat the entries in the EdgeTable onto the AEL - not vice versa! Besides that there were a few other problems (understandably difficult to debug): 1) You were not correctly intializing the EdgeRec, in that you were not correctly adjusting the starting value of X to account for the start of the edge being off-pixel-center. i.e. the initial value of xcurr does NOT equal xstart, but rather xstart + epsilon (finding epsilon is the trick). Because what you REALLY want is the value of X at the intersection of the edge with the next scan line. Note that it is not JUST X that should be adjusted in this way, but also color and depth (and inverse depth). 2) The above also counts for when you're interpolating along a scan-line (in RenderScanLine()). For each pixel that you light up, you want to take the values of color and depth at the CENTER of the pixel you're considering. So, if the starting X of an edge does not happen to be at the center of a pixel, you need to adjust the starting values of h and color to find their correctly interpolated values at the center of the first pixel. The formula for this 1-D case is: hstart = e1->hstart + (pixelCenter_X - e1->xcurr) * (e1->hcurr - e2->hcurr) / (e1->xcurr - e2->xcurr) and likewise for color. Where pixelCenter_X is the X-coordinate of the center of the first pixel you're lighting up, e1 is the first edge and e2 is the second edge. 3) Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. -------------------------------------------- **************************************************************** jeffshel graded by Kari Anne Kjolaas-------------------------------------------- student : jeffshel graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 1 total (0-15): 14 -------------------------------------------- notes: Solid. -------------------------------------------- **************************************************************** jhhuang graded by Kari Anne Kjolaas-------------------------------------------- student : jhhuang graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): 0 -------------------------------------------- notes: You did not turn in an ivscan executable. Please contact me ASAP to turn this in so that I can regrade your assignment. -------------------------------------------- **************************************************************** mattlee graded by Damian Isla-------------------------------------------- student : mattlee graded by : Damian Isla problem set: ivscan -------------------------------------------- -1 POINT: NO EXECUTABLE TURNED IN Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 1 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 1 Renders 6th test (geekball) (0-2): 1 Exactitude (0-2): 1 total (0-15): 8 -------------------------------------------- notes: Your renderer unfortunately has a problem with multiple polygons. Even with tests as simple as the cube, rather obvious errors occurr -- this could be a problem with the way that you are determining visibility. Some other specific issues: 1) The pixel-lighting rule presented in lecture (in which a pixel is lit only if its center falls within the polygon) was not obeyed. 2) You were not correctly intializing the EdgeRec, in that you were not correctly adjusting the starting value of X to account for the start of the edge being off-pixel-center. i.e. the initial value of xcurr does NOT equal xstart, but rather xstart + epsilon (finding epsilon is the trick). Because what you REALLY want is the value of X at the intersection of the edge with the next scan line. Note that it is not JUST X that should be adjusted in this way, but also color and depth (and inverse depth). 3) The above also counts for when you're interpolating along a scan-line (in RenderScanLine()). For each pixel that you light up, you want to take the values of color and depth at the CENTER of the pixel you're considering. So, if the starting X of an edge does not happen to be at the center of a pixel, you need to adjust the starting values of h and color to find their correctly interpolated values at the center of the first pixel. The formula for this 1-D case is: hstart = e1->hstart + (pixelCenter_X - e1->xcurr) * (e1->hcurr - e2->hcurr) / (e1->xcurr - e2->xcurr) and likewise for color. Where pixelCenter_X is the X-coordinate of the center of the first pixel you're lighting up, e1 is the first edge and e2 is the second edge. 4) Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. -------------------------------------------- **************************************************************** jjlilley graded by Kari Anne Kjolaas-------------------------------------------- student : jjlilley graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 1 total (0-15): 14 -------------------------------------------- notes: Good job. -------------------------------------------- **************************************************************** jkent graded by Kari Anne Kjolaas-------------------------------------------- student : jkent graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 1 Renders 2nd test (rgb) (0-2): 1 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 1 Renders 6th test (geekball) (0-2): 0 Exactitude (0-2): 0 total (0-15): 6 -------------------------------------------- notes: Your scanline algorithm is messed up. It actually renders the z buffer before scanning in the geometry. Apart from flickering problems, this makes your program incredibly slow. You do not initialize xcur to find the value of x at the center of the next pixel (likewise for depth/color). You do not interpolate depth correctly. Your program has problems when calculating intersections and crashed on one of our examples. In other words, your problem set has some serious problems in most of the assigned areas. -------------------------------------------- **************************************************************** jmlaszlo graded by Kari Anne Kjolaas-------------------------------------------- student : jmlaszlo graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 1 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 1 Renders 6th test (geekball) (0-2): 1 Exactitude (0-2): 0 total (0-15): 8 -------------------------------------------- notes: Your code color a pixel whose center is not inside the polygon at the end of the scan line. You want to sample color and depth at the CENTER of a pixel. Thus, if the starting value of x is not at the center of a pixel you need to calculate an offset to adjust where you sample color and h. You do not compute intersections correctly. There are visible cracks between polygons when rendering certain shapes. In otehr words, your problem set has some serious problems. -------------------------------------------- **************************************************************** jnye graded by Kari Anne Kjolaas-------------------------------------------- student : jnye graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 1 Renders 2nd test (rgb) (0-2): 1 Renders 3rd test (cube) (0-2): 1 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 1 Renders 6th test (geekball) (0-2): 1 Exactitude (0-2): 0 total (0-15): 6 -------------------------------------------- notes: Your algorithm colors pixels whose center is not inside the polygon at the edges. You initialize the EdgeList incorrectly and this leads to your program crashing on all our examples. You do not interpolate color correctly. You do not do intersections correctly. In other words, your problem set has serious problems. -------------------------------------------- **************************************************************** joycelin graded by Kari Anne Kjolaas-------------------------------------------- student : joycelin graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 1 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 1 total (0-15): 12 -------------------------------------------- notes: You set the incorrect pixels on the edges of the polygons (pixels whose center is not in the polygon are set at the beginning of the line while pixels at the end of the line whse centers are inside the polygon are not set). You do not calculate teh right offset for sampling color and depth at the center of each pixel. -------------------------------------------- **************************************************************** jpearce graded by Kari Anne Kjolaas-------------------------------------------- student : jpearce graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 1 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 1 total (0-15): 11 -------------------------------------------- notes: The pixel-lighting rule presented in lecture (in which a pixel is lit only if its center falls within the polygon) was not obeyed. For each pixel that you light up, you want to take the values of color and depth at the CENTER of the pixel you're considering. So, if the starting X of an edge does not happen to be at the center of a pixel, you need to adjust the starting values of h and color to find their correctly interpolated values at the center of the first pixel. Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. -------------------------------------------- **************************************************************** kaechyc graded by Kari Anne Kjolaas-------------------------------------------- student : kaechyc graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 1 total (0-15): 12 -------------------------------------------- notes: The pixel-lighting rule presented in lecture (in which a pixel is lit only if its center falls within the polygon) was not obeyed. You do not calculate depth correctly. -------------------------------------------- **************************************************************** kdmc graded by Kari Anne Kjolaas-------------------------------------------- student : kdmc graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 1 total (0-15): 13 -------------------------------------------- notes: Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. -------------------------------------------- **************************************************************** ktkohl graded by Kari Anne Kjolaas-------------------------------------------- student : ktkohl graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 1 total (0-15): 14 -------------------------------------------- notes: good job -------------------------------------------- **************************************************************** kulkarni graded by Kari Anne Kjolaas-------------------------------------------- student : kulkarni graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 1 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 1 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 0 Renders 6th test (geekball) (0-2): 1 Exactitude (0-2): 1 total (0-15): 7 -------------------------------------------- notes: The pixel-lighting rule presented in lecture (in which a pixel is lit only if its center falls within the polygon) was not obeyed. Your program also consistently skips skan lines with no geometry. Your algorithm renders the Z-buffer after each primitive is scanned. The Z-buffer should be rendered once after all primitives are scanned. You do not compute depth correctly. Your program seg faults when dealing with large data sets. In other words, your problem set has some serious problems. -------------------------------------------- **************************************************************** kwi graded by Kari Anne Kjolaas-------------------------------------------- student : kwi graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 1 total (0-15): 14 -------------------------------------------- notes: good job -------------------------------------------- **************************************************************** leeying graded by Kari Anne Kjolaas-------------------------------------------- student : leeying graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 1 total (0-15): 12 -------------------------------------------- notes: The pixel-lighting rule presented in lecture (in which a pixel is lit only if its center falls within the polygon) was not obeyed. Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. -------------------------------------------- **************************************************************** low graded by Kari Anne Kjolaas-------------------------------------------- student : low graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 1 total (0-15): 13 -------------------------------------------- notes: Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. -------------------------------------------- **************************************************************** markman graded by Kari Anne Kjolaas-------------------------------------------- student : markman graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 1 total (0-15): 13 -------------------------------------------- notes: Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. -------------------------------------------- **************************************************************** aileen graded by Charles Lee-------------------------------------------- student : aileen graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): -------------------------------------------- notes: -------------------------------------------- **************************************************************** aileen graded by Charles Lee-------------------------------------------- student : aileen graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): -------------------------------------------- notes: -------------------------------------------- **************************************************************** aileen graded by Charles Lee-------------------------------------------- student : aileen graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15):15 -------------------------------------------- notes: Good job! -------------------------------------------- **************************************************************** akasha graded by Charles Lee-------------------------------------------- student : akasha graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15):15 -------------------------------------------- notes: Good job! -------------------------------------------- **************************************************************** asundqui graded by Charles Lee-------------------------------------------- student : asundqui graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 Extra Credit (0-2): 2 total (0-15):17 -------------------------------------------- notes: Awesome! You have way too much time on your hands. :) -------------------------------------------- **************************************************************** awchau graded by Charles Lee-------------------------------------------- student : awchau graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 0 Renders 4th test (interpen) (0-2): 0 Renders 5th test (ellipse) (0-2): 0 Renders 6th test (geekball) (0-2): 0 Exactitude (0-2): 0 total (0-15): 5 -------------------------------------------- notes: What happened? While rendering the test objects, I kept on getting assert errors: Assertion failed: p != NULL, file EdgeRecList.C, line 136 -------------------------------------------- **************************************************************** ayyang graded by Charles Lee-------------------------------------------- student : ayyang graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15):15 -------------------------------------------- notes: Good job! -------------------------------------------- **************************************************************** badger graded by Charles Lee-------------------------------------------- student : badger graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 1 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 1 Renders 6th test (geekball) (0-2): 1 Exactitude (0-2): 1 total (0-15):11 -------------------------------------------- notes: There were certain occasions (e.g. sometimes when rendering the cube.iv) where a crack would appear between two polygons that should have been flush. -------------------------------------------- **************************************************************** bdunn graded by Charles Lee-------------------------------------------- student : bdunn graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 1 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 1 total (0-15):12 -------------------------------------------- notes: The pixel-lighting rule presented in lecture (in which a pixel is lit only if its center falls within the polygon) was not obeyed. -------------------------------------------- **************************************************************** benchun graded by Charles Lee-------------------------------------------- student : benchun graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 1 Renders 2nd test (rgb) (0-2): 0 Renders 3rd test (cube) (0-2): 0 Renders 4th test (interpen) (0-2): 0 Renders 5th test (ellipse) (0-2): 0 Renders 6th test (geekball) (0-2): 0 Exactitude (0-2): 0 total (0-15): 1 -------------------------------------------- notes: The program you handed it doesn't not draw anything correctly. -------------------------------------------- **************************************************************** bdunn graded by Charles Lee-------------------------------------------- student : bdunn graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 1 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 1 total (0-15):11 -------------------------------------------- notes: The pixel-lighting rule presented in lecture (in which a pixel is lit only if its center falls within the polygon) was not obeyed. Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. -------------------------------------------- **************************************************************** benres graded by Charles Lee-------------------------------------------- student : benres graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 1 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 1 Renders 6th test (geekball) (0-2): 1 Exactitude (0-2): 2 total (0-15):11 -------------------------------------------- notes: You program does not always work for the one triangle case. sometimes it misses a row completely. and sometimes it draws outside of the triangle. There were certain occasions (e.g. sometimes when rendering the cube.iv) where a crack would appear between two polygons that should have been flush. -------------------------------------------- **************************************************************** brianlin graded by Charles Lee-------------------------------------------- student : brianlin graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15):15 -------------------------------------------- notes: Good job! -------------------------------------------- **************************************************************** brians graded by Charles Lee-------------------------------------------- student : brians graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): -------------------------------------------- notes: Did you turnin your assignment? -------------------------------------------- **************************************************************** charlesl graded by Charles Lee-------------------------------------------- student : charlesl graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): -------------------------------------------- notes: Did you turnin your assignment? -------------------------------------------- **************************************************************** cuijian graded by Charles Lee-------------------------------------------- student : cuijian graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): -------------------------------------------- notes: Did you turnin your assignment? -------------------------------------------- **************************************************************** emarcus graded by Charles Lee-------------------------------------------- student : emarcus graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): -------------------------------------------- notes: Did you turnin your assignment? -------------------------------------------- **************************************************************** bwallis graded by Charles Lee-------------------------------------------- student : bwallis graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 1 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 1 Renders 6th test (geekball) (0-2): 1 Exactitude (0-2): 1 total (0-15):10 -------------------------------------------- notes: Sometimes the cube is not drawn correctly. There are also holes in your ellipse. -------------------------------------------- **************************************************************** cda graded by Charles Lee-------------------------------------------- student : cda graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 1 total (0-15): 12 -------------------------------------------- notes: The pixel-lighting rule presented in lecture (in which a pixel is lit only if its center falls within the polygon) was not obeyed. Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. -------------------------------------------- **************************************************************** chungfat graded by Charles Lee-------------------------------------------- student : chungfat graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 1 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 1 Renders 6th test (geekball) (0-2): 1 Exactitude (0-2): 1 total (0-15):10 -------------------------------------------- notes: The pixel-lighting rule presented in lecture (in which a pixel is lit only if its center falls within the polygon) was not obeyed. There were certain occasions (e.g. sometimes when rendering the cube.iv) where a crack would appear between two polygons that should have been flush. -------------------------------------------- **************************************************************** chungfat graded by Charles Lee-------------------------------------------- student : chungfat graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 1 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 1 Exactitude (0-2): 1 total (0-15):11 -------------------------------------------- notes: The pixel-lighting rule presented in lecture (in which a pixel is lit only if its center falls within the polygon) was not obeyed. There were certain occasions (e.g. sometimes when rendering the cube.iv) where a crack would appear between two polygons that should have been flush. -------------------------------------------- **************************************************************** cda graded by Charles Lee-------------------------------------------- student : cda graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 1 total (0-15): 12 -------------------------------------------- notes: The pixel-lighting rule presented in lecture (in which a pixel is lit only if its center falls within the polygon) was not obeyed. Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. -------------------------------------------- **************************************************************** cjcheng graded by Charles Lee-------------------------------------------- student : cjcheng graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15):15 -------------------------------------------- notes: Good job! -------------------------------------------- **************************************************************** ctalbott graded by Charles Lee-------------------------------------------- student : ctalbott graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 1 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 0 total (0-15):11 -------------------------------------------- notes: The pixel-lighting rule presented in lecture (in which a pixel is lit only if its center falls within the polygon) was not obeyed. Your ellipse is slightly off. I had to deduct a point b/c you did not turn in your excutable as instructed. -------------------------------------------- **************************************************************** cyoon graded by Charles Lee-------------------------------------------- student : cyoon graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 0 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 13 -------------------------------------------- notes: Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. -------------------------------------------- **************************************************************** davidz graded by Charles Lee-------------------------------------------- student : davidz graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15):15 -------------------------------------------- notes: Very good job! -------------------------------------------- **************************************************************** dchen graded by Charles Lee-------------------------------------------- student : dchen graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15):15 -------------------------------------------- notes: Very good job! -------------------------------------------- **************************************************************** delfin graded by Charles Lee-------------------------------------------- student : delfin graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 1 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 1 Exactitude (0-2): 2 total (0-15):12 -------------------------------------------- notes: There were certain occasions (e.g. sometimes when rendering the cube.iv) where a crack would appear between two polygons that should have been flush. Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. -------------------------------------------- **************************************************************** dewb graded by Charles Lee-------------------------------------------- student : dewb graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15):15 -------------------------------------------- notes: Good! -------------------------------------------- **************************************************************** dmaze graded by Charles Lee-------------------------------------------- student : dmaze graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 1 Renders 4th test (interpen) (0-2): 0 Renders 5th test (ellipse) (0-2): 1 Renders 6th test (geekball) (0-2): 1 Exactitude (0-2): 2 total (0-15):10 -------------------------------------------- notes: There were certain occasions (e.g. sometimes when rendering the cube.iv) where a crack would appear between two polygons that should have been flush. You seem to have a lot of trouble rendering the cubes that intersect. -------------------------------------------- **************************************************************** draco graded by Charles Lee-------------------------------------------- student : draco graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15):15 -------------------------------------------- notes: Good job! -------------------------------------------- **************************************************************** dsnow graded by Charles Lee-------------------------------------------- student : dsnow graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 1 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15):14 -------------------------------------------- notes: There were certain occasions (e.g. sometimes when rendering the cube.iv) where a crack would appear between two polygons that should have been flush. -------------------------------------------- **************************************************************** emliu graded by Charles Lee-------------------------------------------- student : emliu graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 0 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 1 total (0-15):12 -------------------------------------------- notes: Good! Only one problem. The test case with multiple overlapping cubes result is off. I also had to deduct a point because you did not hand in the executable as instructed. -------------------------------------------- **************************************************************** fdabek graded by Charles Lee-------------------------------------------- student : fdabek graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 1 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 1 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15):12 -------------------------------------------- notes: Good! The pixel-lighting rule presented in lecture (in which a pixel is lit only if its center falls within the polygon) was not obeyed. -------------------------------------------- **************************************************************** flaspa graded by Charles Lee-------------------------------------------- student : flaspa graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 1 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 1 Exactitude (0-2): 2 total (0-15):12 -------------------------------------------- notes: Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. There were certain occasions (e.g. sometimes when rendering the cube.iv) where a crack would appear between two polygons that should have been flush. -------------------------------------------- **************************************************************** franco graded by Charles Lee-------------------------------------------- student : franco graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 0 Renders 5th test (ellipse) (0-2): 3 Renders 6th test (geekball) (0-2): 1 Exactitude (0-2): 1 total (0-15):12 -------------------------------------------- notes: Not bad! Except for the overlapping cube case. Where it goes haywire. It probably has to do with bad depth calculation. or that it is not kept tracked of properly -------------------------------------------- **************************************************************** gozar graded by Charles Lee-------------------------------------------- student : gozar graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 0 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 1 total (0-15):12 -------------------------------------------- notes: Not bad! Except for the overlapping cube case. Where it goes haywire. It probably has to do with bad depth calculation. or that it is not kept tracked of properly -------------------------------------------- **************************************************************** franco graded by Charles Lee-------------------------------------------- student : franco graded by : Charles Lee problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 0 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 1 total (0-15):12 -------------------------------------------- notes: Not bad! Except for the overlapping cube case. Where it goes haywire. It probably has to do with bad depth calculation. or that it is not kept tracked of properly -------------------------------------------- **************************************************************** karianne graded by Kari Anne Kjolaas-------------------------------------------- student : karianne graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): -------------------------------------------- notes: -------------------------------------------- **************************************************************** ira graded by Kari Anne Kjolaas-------------------------------------------- student : ira graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 15 -------------------------------------------- notes: Very nice job. -------------------------------------------- **************************************************************** karinc graded by Kari Anne Kjolaas-------------------------------------------- student : karinc graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 15 -------------------------------------------- notes: Good job. -------------------------------------------- **************************************************************** jhhuang graded by Kari Anne Kjolaas-------------------------------------------- student : jhhuang graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): Renders 2nd test (rgb) (0-2): Renders 3rd test (cube) (0-2): Renders 4th test (interpen) (0-2): Renders 5th test (ellipse) (0-2): Renders 6th test (geekball) (0-2): Exactitude (0-2): total (0-15): 0 -------------------------------------------- notes: You did not turn in an ivscan executable. Please contact me ASAP to turn this in so that I can regrade your assignment. -------------------------------------------- **************************************************************** jhhuang graded by Kari Anne Kjolaas-------------------------------------------- student : jhhuang graded by : Kari Anne Kjolaas problem set: ivscan -------------------------------------------- Renders 1st test (triangle) (0-3): 3 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 2 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 15 -------------------------------------------- notes: Good job. -------------------------------------------- **************************************************************** rpwang graded by Damian Isla-------------------------------------------- student : rpwang graded by : Damian Isla problem set: ivscan -------------------------------------------- -1 PT: LATENESS Renders 1st test (triangle) (0-3): 2 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 1 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 1 Renders 6th test (geekball) (0-2): 1 Exactitude (0-2): 2 total (0-15): 9 -------------------------------------------- notes: Okay, I had trouble running your version of ivscan. It did more or less correct things on the first to examples, but then crashed with an assertion error on the others. This assertion error was one that a lot of students had problems with. the probably cause is that you're taking edges off of the ActiveEdge list too soon. This is also the likely cause of the "streaks" you get when rendering even the simple examples -- the lines of completely dark pixels where the polygon should be drawn, that happens when one edge ends and one edge begins in the active edge list. Some other common mistakes: 1) You were not correctly intializing the EdgeRec, in that you were not correctly adjusting the starting value of X to account for the start of the edge being off-pixel-center. i.e. the initial value of xcurr does NOT equal xstart, but rather xstart + epsilon (finding epsilon is the trick). Because what you REALLY want is the value of X at the intersection of the edge with the next scan line. Note that it is not JUST X that should be adjusted in this way, but also color and depth (and inverse depth). 2) The above also counts for when you're interpolating along a scan-line (in RenderScanLine()). For each pixel that you light up, you want to take the values of color and depth at the CENTER of the pixel you're considering. So, if the starting X of an edge does not happen to be at the center of a pixel, you need to adjust the starting values of h and color to find their correctly interpolated values at the center of the first pixel. The formula for this 1-D case is: hstart = e1->hstart + (pixelCenter_X - e1->xcurr) * (e1->hcurr - e2->hcurr) / (e1->xcurr - e2->xcurr) and likewise for color. Where pixelCenter_X is the X-coordinate of the center of the first pixel you're lighting up, e1 is the first edge and e2 is the second edge. 3) Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. -------------------------------------------- **************************************************************** prettig graded by Damian Isla-------------------------------------------- student : prettig graded by : Damian Isla problem set: ivscan -------------------------------------------- -1 PT: LATENESS Renders 1st test (triangle) (0-3): 1 Renders 2nd test (rgb) (0-2): 2 Renders 3rd test (cube) (0-2): 2 Renders 4th test (interpen) (0-2): 1 Renders 5th test (ellipse) (0-2): 2 Renders 6th test (geekball) (0-2): 2 Exactitude (0-2): 2 total (0-15): 11 -------------------------------------------- notes: Good job overall on this pset. You had just a few problems (which were common): 1) The pixel-lighting rule presented in lecture (in which a pixel is lit only if its center falls within the polygon) was not obeyed. 2) You were not correctly intializing the EdgeRec, in that you were not correctly adjusting the starting value of X to account for the start of the edge being off-pixel-center. i.e. the initial value of xcurr does NOT equal xstart, but rather xstart + epsilon (finding epsilon is the trick). Because what you REALLY want is the value of X at the intersection of the edge with the next scan line. Note that it is not JUST X that should be adjusted in this way, but also color and depth (and inverse depth). 3) The above also counts for when you're interpolating along a scan-line (in RenderScanLine()). For each pixel that you light up, you want to take the values of color and depth at the CENTER of the pixel you're considering. So, if the starting X of an edge does not happen to be at the center of a pixel, you need to adjust the starting values of h and color to find their correctly interpolated values at the center of the first pixel. The formula for this 1-D case is: hstart = e1->hstart + (pixelCenter_X - e1->xcurr) * (e1->hcurr - e2->hcurr) / (e1->xcurr - e2->xcurr) and likewise for color. Where pixelCenter_X is the X-coordinate of the center of the first pixel you're lighting up, e1 is the first edge and e2 is the second edge. 4) Linearly interpolating Z in screen space is wrong. You needed to instead use linearly interpolated values of h in order to correcly gauge depth. --------------------------------------------