Ambient Occlusion
Interactive Molecular Visualization
Paper: "Ambient Occlusion and Edge Cueing to Enhance Real Time Molecular Visualization" by Tarini et al.
Implementation by Bernhard Rainer (0828592) and Oana-Aurora Moraru (1108261)
Implemented Techniques:
- 2D Impostor of 3D Primitives - involves a projection of 3D shapes onto a 2D quad and no triangle meshes needed.
This results in a massive reduction of data. While the impostors are generated on the fly, one must keep in mind that
the other fragment values, such as normals and depth values, must be interpolated as well.
- Ambient Occlusion - Calculates how exposed each point in a scene is to ambient lighting. Light comes from a number
of directions distributed around the molecule with the same intensity. Multiple off-screen rendering passes are performed
to create shadow maps for each direction. These shadow maps are then used to determine the self-shading of the object.
- Edge Cueing:
- Depth aware contours - represents an operation in image space, during which fragments, that are right outside the
circle, are assigned an edge color. Depth value of edge fragments increases dramatically, so that correct intersections
with other impostors must be calculated carefully. Molecules close to each other get thinner edges.
- Halos - the Halo effect stands for drawing a transparent „halo“ glow around each atom. Represents a post process
effect, since it is taken care of within the second pass rendering after the depth buffer is set. Larger circles are drawn
around each atom, however the opacity is assigned according to the z-difference and distance from the center of each
atom.
Implementation Overview:
- C++/OpenGL Desktop Application
- IDE: Qt Creator
- Data format: Protein Data Bank
- Own implementation for the reading in of PDB files
- Graphic User Interface
Link to Documentation Page!