1 / 17

Rendering algorithms

Rendering algorithms. Mark Nelson mjas@itu.dk. Last lecture: Wireframe projection. 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.

spike
Download Presentation

Rendering algorithms

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Rendering algorithms • Mark Nelson • mjas@itu.dk Fall 2013 www.itu.dk

  2. Last lecture: Wireframe projection

  3. 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?

  4. 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?

  5. Painter’s algorithm • Simplest solution • Sort triangles from back to front by center z-coord • Draw in order • Further-front trianglesoverwritefurther-back ones

  6. Painter’s algorithm

  7. Painter’s algorithm downsides • Wasteddrawingeffort • Trianglesaredrawnonly to beoverwritten • Possibleartifactssince it only sorts by triangle centers

  8. 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

  9. Simple ray-casting • From viewport, draw a ray from each pixel until it hits the first surface • Render that pixel • Simple but inefficient

  10. 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

  11. 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

  12. Hierarchical z-buffer

  13. Optimizations • Z-buffering stops us from renderingsomeunnecessary pixels • Can weavoidentireunnecessarytriangles?

  14. Frustum culling • Excludetrianglesoutside the frustum • Clip triangles on the edges to the edge • Can be done either in viewspace or clipspace

  15. Occlusion culling • Fast-fail completely invisible triangles • E.g. ”early z test” • Potentially visible set algorithms

  16. 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)

  17. Isometric (Age of Empires 2)

More Related