What We Can Learn from Pixar's 24,000-Core Supercomputer
As fast as 3D animated films seem to get churned out, it's still a very grueling and slow process. To better understand why, let's take a deeper look at the science behind Pixar.
One thing that Pixar has always done in a very purposeful and transparent way is to push the boundaries of what's possible with each new feature film. It started with Toy Story, which was the first major motion picture to be made entirely with a DCC (Digital Content Creation) tool. Since then, Pixar has pioneered the growth of many other concepts involved in making things using computer-generated imagery (or CGI).
Cars was all about mastering shiny reflective surfaces, Ratatouille was about perfecting the look of fur and hair, and Finding Nemo was about great water simulations and effects. Even the most recent Toy Story 4 utilized a lot of really cutting-edge digital lens emulations. If you think about all Pixar movies as a whole, you'll probably realize each one did a particular thing a little better than you had previously seen before.
You'd probably guess that since Pixar has been at it so long, they probably have it down to a science and know how to get these beautiful animated shots faster than anyone else.
Ever Been to Cincinnati?
There is a lovely-looking exhibit in Cincinnati called "The Science Behind Pixar." So if you happen to be in Cincinnati, it might be worth checking out. It would be a great way to better understand what goes into the 3D animation process and how rendering and all the science behind it works.
"Pixar has a huge 'render farm,' which is basically a supercomputer composed of 2,000 machines with a whopping 24,000 cores total," says Pixar Scientist Peter Collingridge on the promotional website. "This makes it one of the 25 largest supercomputers in the world. That said, with all that computing power, it still took two years to render Monsters University."
So, even with all that computing power, why does it still take Pixar so long to render a single frame?
It all has to do with what parameters you give your render engine. How do render engines work? Well, if you're completely new to the technical concepts behind rendering, here's a little breakdown of some aspects that cause renders to take forever.
Level of Detail
As the tech progresses, you're only going to end up trying to do more. Creatives will always try to push their computer animation to higher levels of detail and photorealism beyond what the current level of simulation and rendering tech will allow.
Fur and hair, for example, have gotten absolutely bonkers in recent years. It's gotten to a point where it's indistinguishable from reality. If you compare the way it looks now to how it looked even in Incredibles 2, you can see how much more realistic things have gotten (even though those hair simulations looked astounding for the time).
But why does it look better? More sophisticated dynamics (the way the hair and fur move and react to other objects), more realistic roughness and specularity (the way light reflects or bounces off of it), translucency (more options for whether light shines through something or not), and truly just more actual hair particles or systems. The higher you crank up that "amount of hair" knob (a gross oversimplification), the realer it's going to look, and unfortunately, the longer it will take to render as well.
This same concept applies to the amount of overall geometry in a scene in general. More geometry also usually means you're getting more realism.
Samples and Sample Rate
Two other big aspects affecting render times are the number of samples you're using and the sample rate. A sample, as it relates to CGI, is basically when you tell your render engine to look at a particular pixel of the image and think about what it's supposed to see there for that particular pixel.
The more samples, the more times it's going to think about your image across the general span of the image itself. As you can probably guess, the higher the number of samples, the crisper and sharper your image will be. But also more accurate. In a word, it's kind of like resolution.
The same goes with sample rate, which helps you define how often and how many pixels you want your render engine to be looking at. This setting will generally give you more detail in between the crisper lines. The higher your sample rate, the more your textures, and colors will show up correctly and more true to your creative vision.
Credit: The Science Behind Pixar
Light Paths and Bounces
A render engine also needs to approximate what light actually does in the real world. If you've played video games extensively, you've probably heard the term "ray tracing" before. According to Nvidia, "this is a method of graphics rendering that simulates the physical behavior of light."
Amazingly, we now have render engines capable of taking the light sources you feed into it and bouncing them around your scene however many times you tell it to. Correspondingly, this is how light works in the real world. Think about lighting as rays that travel in a line and bounce off surfaces. If you couldn't do this in CGI, things wouldn't look nearly as realistic.
Credit: The Science Behind Pixar
This light bounces off of surfaces and then reacts to other surfaces and so on and so forth, but you need to tell the render engine how many of those bounces you want to try and resolve. Also, we can customize which type of bounces we want the render engine to attempt.
If you have a lot of transparent glass or glossy objects in your scene, you can turn up the transparency bounces or the gloss bounces and get a better result.
The more of these bounces, however, the more time your render is going to take. In short, this is how Pixar renders its films, by balancing these parameters. Even if you're doing live-action projects, all of this can be applied to visual effects as well.
Your Render Engine
Pixar has its own render engine called RenderMan. It's one of the best render engines in the entertainment industry, although it's a bit harder to learn than most. In the world of CGI, your render engine of choice is akin to rooting for your favorite sports team.
Everyone just has the render engine that they love. It's kind of an odd thing, really, because each render engine is good at certain things, but none of them seem to be particularly good at everything.
Octane render has insane systems for displacement, making it easy to get super realistic ground textures and things like that, but it isn't known for its stability.
Redshift has really good materials and tools for creating cinematic looks and customization, but it's also known for crashing a decent amount, among other complaints.
Arnold renderer is kind of an industry stalwart with great features, great stability, and (honestly, to my eye) looks the best of the paid renderers.
I'm a Cycles user, but mostly because it's included with Blender, which is free (but I also think it looks fantastic).
Your render engine of choice will be how you tell your computer to make use of all these various factors. There's definitely more to what makes renders take a while, like displacement, volumes, and things like that. Generally, if you're wondering why Pixar movies still take so long to render each frame, it's because they're just continually turning that "look better" knob up the more its technology will allow.
Rendered in CyclesCredit: Arnaud Imobersteg via Cycles-Renderer.org
Thinking About Pixels
Pixar is doing the kind of work that takes an entire team of people, not to mention folks whose entire job is just keeping that render job going. Its 2,000 machines are linked together to render small portions of each frame, which are then merged together. The studio is also rendering various movies at different times.
So sitting right here reading this, think of all those little pixels being sampled, creating visuals that will hopefully evoke an emotional response.
Let us know your thoughts in the comments.