OpenGL is the industry standard API for high performance 2D and 3D graphics. It works on everything from mobile devices to supercomputers. Today it’s also available on demand, and helps solve problems ranging from design to rendering, and everything in between.
OpenGL for Visualization
OpenGL powers the “Visualize” step of JARVICE’s Build, Compute, and Visualize workflow. It’s used for post processing or rendering results from a computation. In some cases, it can even be used in the Build step, to design models for future computation. In this mode, OpenGL draws graphics on the screen for immediate visualization.
The 3D Desktop NAE in JARVICE leverages powerful server-side rendering on a passively cooled NVIDIA GPU to quickly display complex models on any device. Even if you have a mobile device such as a tablet, which has very limited GPU power compared to a High Performance Computing node, you can still enjoy high quality 3D graphics since the heavy lifting is done on a supercomputer. Server side rendering is popular in many other cloud applications as well, including virtual desktops and application streaming, for the very reason that it allows end users to leverage low powered, energy efficient clients to do complex work.
Using the “gloss” 3D demo in a 6 core, single GPU desktop NAE on JARVICE, we can see that a rotating, shaded OpenGL model can easily deliver over 400 frames per second to the viewer (in this case displayed on a standard Windows 8 tablet). This is over the public Internet on an average broadband connection on the client side, using an encrypted remote display session. To put that in perspective, industry standard motion picture film projects at 24 frames per second. Even with motion blur issues aside, 400 frames per second is pretty fast considering public Internet latencies and typical use cases. Remote 3D graphics are finally a reality in cloud based applications thanks to modern GPUs, broadband connections, and HPC platforms such as JARVICE.
OpenGL for Headless Rendering
Visualization is just one use case of cloud-based OpenGL. Another popular one is headless rendering. This is used to create videos and movies from 3D models. We can access a headless JARVICE NAE using an ordinary secure shell session:
In this case we don’t see the OpenGL display, because it’s headless. This results in much higher frame rates since there’s no need to transmit 2D images down to the client for visualization. At over 1800 frames per second, you can render a 2 hour 3D movie in just under 2 minutes of compute time. Since we did this on a $1 per hour NAE, and Nimbix bills per minute, that’s less than 4 cents of total job cost! Obviously this doesn’t include transcoding or audio encoding, but as you can see, headless rendering can be incredibly economical.
Another interesting capability of headless rendering with OpenGL is that you can run it in batch mode, either on its own or part of a larger workflow. You can control this via API if you like. Since a headless job is not interactive, there’s no need to be sitting in front of a terminal session while it runs. Imagine being able to queue up long running rendering jobs and have them execute from start to finish while you sleep!
Whether you’re using OpenGL for pre/post processing of models, or to render large videos, cloud computing can deliver tremendous results quickly and economically. Be sure to give JARVICE 3D Desktops and GPU Servers a try so you can see these amazing results for yourself!