The Origins of Krakatoa: A VFX Rendering Journey
By Ben Houston, 2024-12-06
After joining Frantic Films in 2002, I embarked on a journey that would lead to the creation of several influential VFX tools. While I'm most well known for developing Deadline, a popular network render manager that evolved from a distributed fluid simulation scheduler, today I want to share the story of another significant project I started: the Krakatoa point renderer.
The Birth of Krakatoa: Rendering SPORE
Krakatoa's origin story begins with an interesting challenge we faced while working on the 2005 film "Stay." We did the post-production work in early 2004.
We needed to render some unique luminescent graphics designed by Doc Bailey, a unique genius in Hollywood known for his proprietary "SPORE" images based at least partially on chaos/Lorenz attractors.
The challenge was significant: Doc's existing renderer couldn't scale to our needs. While it could produce 1K images, we needed much higher resolution with perfect anti-aliasing, matte object cutouts and the ability to fly through the renders (e.g. cutting planes.) Additionally, these graphics needed to be animated, requiring the production of numerous high-resolution, alias-free images at an efficient scale.
Before building our own solution, we attempted to use existing renderers. Mark Wiebe built something out of Exluna's Entropy renderer, using instancing to handle the point clouds. However, it couldn't handle the sheer volume of points we needed to render - some SPORE images eventually contained billions of points. These established renderers simply weren't designed for such massive point clouds.
To solve this, we got Doc to provide his core proprietary algorithm as a Windows DLL that could output points incrementally based on his desired input parameters. I then went about writing a custom renderer. My first approach was to reuse an existing OpenGL / C# renderer I had laying around. I just modified it to incrementally render the points coming from Doc's DLL. This worked well and took only a few days to get going. This initial version of Krakatoa include support for matte objects, volume clipping, some lens effects and also depth of field support (contributed by Mark Wiebe.) Mark Wiebe was an invaluable collaborator who helped write some particle loaders/saves (to load and save particle sets as PRT files) and gave lots of useful feedback during development.
The renderer I started on March 18, 2004 enabled Frantic Films to complete the Stay post-production work by June 2004. The end results, which was only released in 2005, looked like this:
Wispy Smoke for Wes Craven's "Cursed"
The second film to use Krakatoa was Wes Craven's "Cursed" (2005). This time, we needed to render wispy smoke effects. We approached this by using our fluid simulator, Flood, to advect tons of particles representing the smoke through the fluid space. And then we render them using Krakatoa. This necessitated adding motion blur to the renderer as we now had particles velocities from the fluid simulation. Christopher Batty took the simulation lead on this. This work was significant enough to warrant a short paper at SIGGRAPH 2005.
"Superman" Krypton Explosion
One of the last projects I worked on with Krakatoa, and I didn't see it to the end, was the 2006 Superman Returns film. It again was using Doc Bailey's SPORE work, or at least inspired by it. There was some rendering of the internals of the Kryptonite crystals, and I was working on scalability for that using a hierarchical tree structure and ray casting. I understand Krakatoa ended up also being used for the explosion of the sun that destroyed the planet Krypton.
Transition and Legacy
In early 2005, I left Frantic Films, and Krakatoa continued to evolve. Mark Wiebe took over development, at some point porting it from C# to C++ and integrating it more deeply with 3ds Max and later Maya with the help of Bobo Petrov. It eventually was released as a public product in 2007/2008. The renderer went on to be used in many dozens of high-profile films including "Harry Potter and the Deathly Hallows Part 2", and "Avatar".
On "Avatar", Anselm von Seherr-Thoß used Krakatoa to create the 3D holographic tree display in the command center, the image featured at the beginning of this blog post.
Reimagined as Exocortex Fury
After leaving Frantic Films, I founded Exocortex, my own VFX software company, and, along with Jack Caron and Richard Monette, developed Exocortex Fury - a spiritual successor to the original GPU-based concept of Krakatoa. Fury pushed the boundaries of what was possible with GPU rendering, featuring:
- Real-time rendering of millions of particles.
- Depth of field and motion blur, by deforming ellipses.
- Self-shadowing.
- Stereoscope rendering.
- Integration with both Softimage and Maya.
Exocortex Fury found its own success in the industry, particularly at Sofimage-based studios, although we had some penetration into Maya shops as well. One of our greatest champions was Andrew Moorer who was at Method Studios at the time.
Some of the projects that used Fury were:
- ABC's "Once Upon a Time"
- Verizon commercials
- Abraham Lincoln: Vampire Hunter
- The 3D conversion of Jurassic Park (reviewed by Steven Spielberg himself)
- The Avengers (the stereoscopic smoke from the Helicarrier effects)
- 300: Rise of an Empire
Exocortex Fury came to an end in 2013 as Exocortex, my company, transitioned away from VFX tools towards the Clara.io online 3D editor.
Looking Back
It's been incredible to see how these tools have evolved and contributed to the visual effects industry. From solving specific technical challenges on "Stay" to becoming industry-standard tools used in blockbuster films, the journey of Krakatoa and its successors represents the rapid evolution of VFX technology in the early 2000s.
Recently, Krakatoa was open-sourced, opening a new chapter in its story and allowing a new generation of developers to build upon its legacy.
This post was discussed here on Linkedin and here on Reddit.