170 likes | 301 Vues
This lecture covers various rendering algorithms essential for 3D graphics, focusing on wireframe projections and opaque surfaces. Key topics include Painter’s algorithm, limitations of traditional methods, and advancements like scanline and Z-buffering for occlusion handling. We explore optimization techniques such as frustum and occlusion culling, which improve rendering efficiency by eliminating unnecessary triangles. Additionally, alternative perspectives like isometric and oblique projections are discussed, emphasizing their applications in creating visually compelling 3D effects using 2D graphics.
E N D
Rendering algorithms • Mark Nelson • mjas@itu.dk Fall 2013 www.itu.dk
Wireframe -> opaque • Starts the same • Transform vertices to (x,y) coordinates • But instead of connecting the 3 vertices, flood-fill it with a color • But, how to deal with overlapping triangles?
Occlusion • Wireframes have no occlusion • Front and back side of objects are visible • If surfaces are opaque, that won’t do • How do we draw only visible surfaces?
Painter’s algorithm • Simplest solution • Sort triangles from back to front by center z-coord • Draw in order • Further-front trianglesoverwritefurther-back ones
Painter’s algorithm downsides • Wasteddrawingeffort • Trianglesaredrawnonly to beoverwritten • Possibleartifactssince it only sorts by triangle centers
Scanline algorithm • Line by line • Find all triangle edges that intersect this line • Start scanning left to right • When we encounter an edge: • Add triangle to stack if it’s not on it (starting edge) • Remove triangle if it was already on the stack (closing edge) • Draw pixel that corresponds to nearest triangle on stack
Simple ray-casting • From viewport, draw a ray from each pixel until it hits the first surface • Render that pixel • Simple but inefficient
Z-buffering • Render triangle to (x,y) framebuffer but also save the z’s • Z buffer: current z-depth of every pixel • Don’t write a pixel to the framebuffer if z > zbuffer • Optimization: draw front to back to minimize overwrites
Z-buffering / scanline • Generally combined • Proceed in scanline order • Z-buffer for occlusion test • Why not stack-based scanline algorithm? • Z-buffer correctly handles each pixel
Optimizations • Z-buffering stops us from renderingsomeunnecessary pixels • Can weavoidentireunnecessarytriangles?
Frustum culling • Excludetrianglesoutside the frustum • Clip triangles on the edges to the edge • Can be done either in viewspace or clipspace
Occlusion culling • Fast-fail completely invisible triangles • E.g. ”early z test” • Potentially visible set algorithms
Some alternative perspectives • Isometric graphics • Parallel projection, tiled, fixed viewing angle • Graphics can therefore be predrawn to fake 3d • The angle is the one where axes have the same scale • Rotated 45 degrees around vertical, 35.264 around horizontal • In pixel art, approximated with a 2:1 ratio • Oblique projection • Fake 3d • Draw a 2d front view of the object, and then a skewed 2 side view • Depth often foreshortened (e.g. 0.5)