In this page you can see some of the visual effects featured in QuteMol, aimed at producing clearer, more informative images of molecules.
All the techniques you see here are designed to run in real time. To achieve this QuteMol runs algorithms that relies quite heavily on modern graphic card features, including programmable fragment & vertex shaders, and frame and vertex buffer objects.
Click on any image on this page to see a 1:1 enlargement!
(every image is a snapshot of a real time renderings)
To start with, QuteMol follows the "impostor" approach, like many other space-fill molecular visualizer. Unlike, say, RasMol, QuteMol impostors are procedural (computed on the fly for each pixel, not just fixed size image), meaning that they look virtually perfect no matter how much they are enlarged on the screen. It is well known that Impostors are far more efficient than a standard tessellation (polygonizing atoms), and they look better too. To get a visual comparison, look at this image by VMD developers, which uses a similar technique (but we use 2 triangles per atom, not 12). Another important characteristic of our impostor is that they are textured all around, making possible the other techniques you see in this page. |
|||
Also, we use a similar approach for atom bonds (sticks) too. | |||
QuteMol uses many common rendering techniques, including basic Phong and Lambertian lighting, depth-cueing, self shadowing (using the shadow-maps approach), and so on. Plus, it adds a few rendering techniques that quite more advanced, and challenging for real time renderings, adapting them to the molecular-rendering by impostors case. Real time Ambient Occlusion (A.O.) is a rendering technique that we found particularly useful in order to improve clarity, by improving realism.With this technique, molecule surface is lighted according to how much light reaches it from any direction (skylight effect), as opposed to the overused, but unrealistic, point light sources. Ambient occlusion factors are computed on the fly in the GPU side. As they are computed they are stored in a specially formatted texture covering all the molecular surface. You can see just how much scene understandability improves in this way looking at a few side-to-side comparisons. See also an example using liquorice mode. |
|
|||||
Here you can see our depth aware borders, an attempt to bring more information in a visually intuitive way. The line between two atom borders is thicker the more spatially distant the two are along the viewing direction, separating far distances. |
|||
Both thin borders and depth aware borders are very fast to compute: both are done in the same rendering pass used to draw the rest of the molecule. |
|||
Along the same line, we also designed this Depth-aware halo effect. Halos "irradiates" from every atom with a strength indicating depth distance. Depth-aware halos are similar to Depth cueing, but they concentrate their effect locally, and only where needed, re-using the large gradient in contrast every time that is necessary, rather than dispersing it on a global scale. (Another way to see it is that halos are like "depth aware border" above, but they map z-distance over transparency rather than thickness). |
|||
See another example [here], where thanks to the halo effect you can clearly that that particular molecule has a general shape of a torus. In the example you can see [here], we draw bright halos over a darker rendering, rather than viceversa. Drawing halos requires a separate rendering pass. |
|||