Assignment: portal culling, due March 5


In this assignment you will gain experience with heads up display, basic level modeling, frustum culling and portal culling.


The components of this assignment are as follows:

  • 5% Properly turned in assignment. Use OpenGL unless you arrange otherwise with your instructor. Upload the assignment to WolfWare, including all source code and assets. You will demo your executable in class.
  • 20% Create and render a level. Model and render an indoor environment which would benefit from portal culling: one with many rooms occluding each other, connected by doors, each containing a significant number of triangles to lower frame rate. Any modeling tool is fine, but a simple idea for testing is to use a text file to describe the level, and convert that text file into triangles. Your level should be textured and rendering should support navigating the viewpoint through it with arrow keys.
  • 20% Create and render a heads up display.Implement the display by counting rendered triangles and measuring frame time, converting that into displayable small text, and rendering that on top of the scene. A simple method for measuring frame time is to record the time of each buffer swap, and report both the time elapsed since the previous swap, and the time since the 10th swap divided by 10.
  • 20% implement frustum culling.Implement frustum culling as described in class to raise frame rate. Confirm that rendered triangles go down and frame rate goes up in your heads up display.
  • 35% implement portal culling.Implement portal culling as described in class. Confirm that rendered triangles go down and frame rate goes up further in your heads up display. Remember that you will require a room graph that matches your level to implement portal culling.


Extra credit opportunities include the following, with additional opportunities possible with instructor approval:

  • 10% implement a top down visualization of portal culling. Use the floor plan view in the portal culling paper. The visualization should show the room layout, and interactively update the eye position and the portal-cultured frustum boundaries.
  • 10% add collision detection. Detect when the user moves through a room wall, and revert to the previous view to respond to the collision.
  • 5% add sound. A walking sound, and if you implement collision, a bumping sound.