Render Engines: The Change They've Experienced With GPU Acceleration – Onionlab
7-4-20

Render Engines: The Change They’ve Experienced With GPU Acceleration

Every project that comes to Onionlab is unique. The render engines that guarantee the satisfying final result of our projects are complex and that is why they require a lot of work and time. The quality of projects is as important as the time of their production. In the case of our 3D mappings, we talk about projections with an approximate duration of 10 minutes. But, before those 10 minutes, there are several things that have to be taken into account.

One of the most important things in the creating process of our projects, is the use of rendering engines so we can create realistic videos. Why rendering engines? Because generating each mapping is very expensive, and therefore to lower the costs, they must be made as agile and precise as possible. Like any project, there must be a balance between cost, amount of time, and product quality. For this reason, we maintain the importance of having rendering software that covers these needs.

Render created with Redshift- Barceló Sants Hotel
Render created with Redshift- Barceló Sants Hotel
Render created with Redshift- Barceló Sants Hotel
Render created with Redshift- Barceló Sants Hotel

But to better understand this process, we must go way back to the past. In the first computers the central processor -CPU, central processing unit- was in charge of managing and processing all kinds of information. From the data that the user wanted to operate to of course the operating system, and with it its interface. CPU is a multipurpose component, which is capable of handling fewer tasks or threads at the same time, these tasks can be also much more complex and varied, making essential to handle key elements of the operating system and certain applications, such as word processors.

From CPU to GPU

On the other hand, CAD programs or video games, for example, required much more resources to function properly. At this point, system designers relied on a component that already existed to evolve and grow. Initially, the FPU (floating-point unit), mathematical coprocessors that were used in many systems to speed up data processing, was created. Then, it was tacked onto the GPUs (graphics processing unit), with a specific purpose: to be optimized to work with large amounts of data and perform the same operations, over and over again.

Render created with Redshift- Genesis, 100th Anniversary of the Automobila Barcelona
Render created with Redshift- Genesis, 100th Anniversary of the Automobila Barcelona

GPUs are designed to process instructions simultaneously on many cores. So when rendering the GPU takes a single set of instructions and executes them on multiple cores (32 to hundreds) on multiple data. A typical GPU will have 2000-3000 cores and will run 100 or more threads of instructions. Each thread will work on about 30 blocks of data at once. The CPU can work on approximately 24 blocks of data at the same time, while a GPU can handle approximately 3000.

Render created with Redshift- Paradoxa
Render created with Redshift- Paradoxa
Render created with Redshift- Paradoxa
Render created with Redshift- Paradoxa

Anyway, GPU acceleration is very simple. It is about deriving from working with graphics to the graphics card. In this way, we improve performance in two ways: by removing load on the CPU and by using the graphic card procedures, which are faster and more efficient. And in this lies the importance of this type of processor for us.

What types of render engines exist?

Obviously, the render engines have undergone a great optimization with this type of graphics processor. Some commonly used render engine programs are: Corona, Redshift, Octane, and Arnold. What is the difference between them? Arnold is an advanced Monte Carlo ray tracing processor created specifically for the demands of feature film animation and visual effects. Originally developed in conjunction with Sony Pictures Imageworks and now its main processor, Arnold is used in more than 300 studios worldwide, so the vast majority of movies are made with this render engine. It is available as a standalone renderer on Linux, Windows, and Mac OS X, with compatible plugins for Maya, 3ds Max, Houdini, Cinema 4D, and Katana.

Render created with Notch- ESTEVE
Render created with Notch- ESTEVE
Render created with Redshift- El Prado
Render created with Redshift- El Prado

In the case of Corona, a high-performance photorealistic render available for Autodesk 3ds Max, MAXON Cinema 4D and as a standalone application. The development of Corona Renderer started in 2009 as a solo student project by Ondřej Karlík at the Czech Technical University in Prague. But despite its short time on the market, Corona Renderer has become a production-ready renderer capable of creating high-quality results.

Redshift is the render engine that we use most frequently in our studio, due to its high quality and for being, at the moment, the fastest. Also, it has a different feature than the other renders, it is licensed per machine with no limit on the amount of GPU. No distinction is made between workstations and rendering nodes; 1 license is valid for 1 machine, but it is transferable between machines. It was created to meet the specific demands of high-end contemporary production rendering, and in turn it integrates with industry-standard CG applications.  Lastly, Octane Render stands out for being the first commercially available render engine that works exclusively with the GPU (Graphics Processing Unit) that calculates all light, reflection and refraction measurements as well as renders in real time.