Quantcast
Channel: Intel Developer Zone Articles
Viewing all articles
Browse latest Browse all 3384

How Embree Delivers Uncompromising Photorealism

$
0
0

Introduction

Rendering is the process of generating final output from a collection of data that defines the geometry of objects, the materials they are made from, and the light sources in a 3D scene.

Rendering is a computationally demanding task, involving calculations for many millions of rays as they travel through the scene and interact with the materials on every surface. With full global illumination (GI), light bounces from surface to surface, changing intensity and color as it goes, and it may also be reflected and refracted, and even absorbed or scattered by the volume of an object rather than just interacting with its surface.

3D rendering of an expensive car

Rendering is used in industrial applications as diverse as architectural and product visualization, animations, visual effects in movies, automotive rendering, and more.

For all these applications, the content creator may vary from being a lone freelancer to an employee working for a multi-million dollar companies with hundreds of employees. The hardware used can be anything from a single machine to many hundreds of machines, any of which may be brand new or a decade old.

No matter the size of the company or what hardware they use, 3D artists are expected to create photoreal output within tight and demanding deadlines.

Corona Renderer*, developed by Render Legion a.s., is a leading rendering solution that meets all these diverse needs.

Logo for Corona

The Challenges

3D rendering of an opulent room

End users require absolute realism in the final output, but they also need unrivaled speed and stability due to the strict deadlines involved in their work.

Handling the complex calculations needed to generate the final output is only half the battle. A modern render engine must also increase productivity through ease-of-use. In other words, the software must allow users to work as well as render faster. As a result, end users need real-time previews to assess changes in lighting and materials, adjustments in the point of view, or changes to the objects themselves.

Each industry also has its own specific needs, and every user has a set of preferred tools. A render engine must be compatible with as wide a range of tools and plug-ins as possible.

Development costs for the render engine have to be managed, so that the final product is affordable for both single users and large firms.

The render engine must also work on as wide a variety of hardware as possible and scale across setups, from single laptops to render farms consisting of hundreds of multiprocessor machines.

The Solution

3d rendering of a large modern airplane on a sunny runway

Corona Renderer uses Embree ray tracing kernels to carry out the intensive computations necessary in rendering. This ensures that end users get the best speed and performance and the highest level of realism in their final output.

Using Embree ray tracing kernels gives another benefit: the development team is freed from having to optimize these calculations themselves, which means they can use their time and talents to meet other demands such as:

  • Creating a simple and intuitive user interface
  • Ensuring compatibility with a wide range of tools and plug-ins
  • Meeting the specialized needs for each industry
  • Creating code that allows seamless scaling on setups of a single machine through to hundreds of machines

The developers of Corona Renderer use Intel processor-based machines for coding and testing, which helps ensure that the development and testing environments are similar to the hardware used by most end users (90 percent of them work and render on Intel processor-based machines), and gives the developers the most stable, reliable, and best-performing environment for their work.

Close collaboration with the Embree team at Intel means that the Corona Renderer developers get the best results from Intel technology, a benefit that is passed directly on to Corona Renderer end users.

Results – With Embree versus without Embree

Application: Path tracer renderer using Embree ray tracing kernels

Description: Path tracer renderer integrated into various 3D modeling software packages

Highlights: Corona Renderer is a production-quality path tracer renderer, used in industrial applications such as architectural and product visualization, animation for film and television, automotive rendering, and more. It uses Embree ray tracing kernels to accelerate geometry processing and rendering.

End-user benefits: Speed, reliability, and ease-of-use in creating production-quality images and animations. Interactive rendering provides the same capabilities for real-time viewing while working with a scene as featured in GPU-based renderers but with none of the drawbacks and limitations of a GPU-based solution.

Comparisons: The same scene was rendered with and without Embree, with results averaged from five machines with different processors (from fastest rendering times on a dual Intel® Xeon® processor E5-2690 @ 2.9 GHz to slowest rending times on an Intel® Core™ i7-3930K processor @ 4.2GHz).

graphics comparison

graphics comparison

Results – Comparing Intel® Xeon® Processor Generations

3d rendering of a tank

Application: Path tracer renderer benchmarking application, using Embree ray tracing kernels

Description: Path tracing app for use in benchmarking hardware performance

Highlights: Corona Renderer is a production-quality path tracer renderer, used in industrial applications such as architectural and product visualization, animation for film and television, automotive rendering, and more. It uses Embree ray tracing kernels to accelerate geometry processing and rendering.

End-user benefits: Ability to compare performance of different computer hardware configurations, in particular different brands and generations of CPUs.

The application allows end users to test their own system, while an online database of results allows the user to look up the performance of other configurations.

Comparisons:

graphics comparison
Each generation of Intel® Xeon® processors offers significant improvement in rendering performance, with the Intel® Xeon® processor E5 v4 family processing roughly twice as many rays per second as the Intel® Xeon® processor E5 v2 family.

graphics comparison
Each generation of Intel® Xeon® processors offers significant improvement in rendering time, with the Intel® Xeon® processor E5 v4 family processing being roughly twice as fast as the Intel® Xeon® processor E5 v2 family.

The GPU Question - Speed

There is an ongoing debate about whether GPUs or CPUs provide the best solution for rendering.

The many thousands of cores that a GPU-based rendering solution offers may sound like an advantage, but at best this is only true with relatively simple scenes. As scene complexity increases, the more sophisticated architecture of CPUs takes the lead, providing the best rendering performance.

Corona Renderer uses full GI for true realism—something that is often disabled in GPU renderers for previews and even for final renders. This lack of full GI is behind some of the claims of the speed of GPU renderers. While you can disable this true calculation of light bounces throughout a scene with CPU-based solutions, you don’t really need to, since CPUs don’t struggle with these calculations in the same way GPU solutions do.

3d rendering of a bedroom with textures

GPUs gain their benefits when each of their thousands of cores is performing a similar type of calculation and when “what needs to be calculated next” is well known. However, when handling the millions of rays bouncing through a 3D scene, each core may have to do a very different calculation, and there will be many logic branches that will need to be accounted for. This is where the sophisticated architecture of a CPU pulls ahead, thanks to the more flexible and adaptive scheduling of processes across its cores.

GPU Speed Comparison

Test Setup

An interior scene was created, illuminated only by environment lighting entering the scene through small windows. This is a particularly challenging situation, as most of the lighting in the scene is indirect, coming from light bouncing throughout the scene.

To standardize across the different renderers, only their default materials were used, and the environment lighting was a single color. The render engines were left at their default settings as much as possible, although where relevant the GPU render engines were changed from defaults to use full GI.

The Corona Renderer was set to run for 2 minutes and 30 seconds, which included scene parsing and render time. Since the cost of the single NVIDIA GTX* 1080 card in the test setup is roughly half the cost of the Intel® Core™ i7-6900K processor, the GPU engines were set to run for 5 minutes, approximating the effect of having two GTX 1080 cards to give a comparable measure of performance-per-cost.

Hardware

The same PC was used for each test:
Corona Renderer: Intel Core i7-6900K processor, 3.2 GHz base, 3.7 GHz turbo
GPU engines: NVIDIA GTX 1080, 1.6 GHz base, 1.7 GHz turbo

Results

3d rendering of a bedroom without textures

3d rendering of a bedroom without textures

3d rendering of a bedroom without textures

Despite running for twice as long, both GPU engines showed significant noise in the results and did not approach the results shown by the CPU-based Corona Renderer, which had very little noise remaining in half the time.

By using Corona Renderer’s denoising feature, the same 2 minutes and 30 seconds (the last 5 seconds used for denoising rather than rendering) gives an image that is almost completely free of noise.

3d rendering of a bedroom without textures

Speed Conclusion

At best, the speed benefits of a GPU-based solution only apply to simpler scenes. As the path that the lighting follows increases in complexity, the more sophisticated CPU architecture takes a clear lead.

Many of the claims of GPU rendering speed are based on artificial simplifications of a scene, such as disabling full light bouncing, clamping highlights, and so on. CPU-based solutions can also implement these simplifications, but performance is so good that they are not required.

Other CPU versus GPU Considerations

Stability

CPU-based solutions lead the way in terms of stability and reliability, factors that can be critical in many industries and are not reliant on the stability of frequently updated graphics card drivers.

Compatibility

Most 3D software has a wide range of plug-ins or shaders available that expand on the inbuilt functionality or materials. CPU rendering solutions offer the widest compatibility with these plug-ins, some of which are integral to the workflow of certain industries.

Also, many companies, and even freelancers, turn to commercial render farms to deliver content within the tight deadlines set by their clients. Render farms use many hundreds of machines to accelerate rendering. While there are many long-established render farms supporting CPU-based solutions like Corona Renderer, far fewer farms exist that support GPU-based renderers.

3D rendering of an elegant courtyard

Interactive Rendering

The ability to see changes in your scene without having to start and stop a render has become critical to the workflow of many artists. This kind of real-time rendering is not unique to GPU-based solutions, however since its release, Corona Renderer has included Interactive Rendering that provides this exact functionality, allowing a user to move an object, change the lighting, alter a material, move a camera, and so on, and see the results of that change immediately.

The result shown in the Interactive Renderer is identical to the final render, including full GI and any post-processing, and can be displayed in a separate window (the Corona VFB) or even in the viewport of the host 3D application as shown below:

3d rendering of a terrace and it's 3d environment

Hardware - Networking

Even for freelancers, it is common practice to have a network of machines to use as a local render farm.

Building a multiple-GPU solution can take special hardware and knowledge, and many of the claims of the high performance of GPU-based solutions come from users who have specialized setups that support four or more graphics cards.

With a CPU-based solution, anyone can create a similar network without needing any specialized knowledge or hardware. Any computer from the last decade can be added to the rendering network, thanks to Corona Renderer’s inbuilt Distributed Rendering. If the machines are on the same network, you can use auto-discovery to add them without any manual setup at all, while those on a different network can be added by simply adding their IP addresses to a list. In both cases, those machines can then be used to assist in accelerating rendering beyond what a single machine can do.

This ability is also reflected in the availability of render farms and cloud-based rendering services, which allow users to submit their renders to many hundreds of machines for even faster processing. For CPU-based render engines, users can choose from many farms, while only a handful of farms offer similar services for GPU-based render engines.

This means that CPU-based renderers make it easy to create a farm of rendering machines, even for freelancers or hobby-level users, and of course each machine can still be used as a computer in its own right, while networked GPUs are only useful during rendering.

Hardware - Upgrading

With upgrading a CPU, the benefits are realized across all applications. Upgrading a GPU on the other hand only offers benefits for a few select applications and uses - money invested in GPU hardware almost exclusively benefits only your render times, while money invested in an upgraded CPU will benefit every aspect of your workflow.

Hardware - Memory

The maximum RAM directly available on a graphics card is limited by the current technology, with the most expensive cards at the time of writing (in the region of USD 2,500) offering a maximum of 32 GB of memory. CPU-based solutions on the other hand can easily and affordably have two, three or four times as much directly accessible RAM as the “latest and greatest” graphics cards at a fraction of the cost.

While GPU render engines may be able to access out-of-core memory (that is, memory not on the graphics card itself), this capability often results in a reduction of rendering performance. With a CPU-based solution like Corona Renderer, there is much less need to worry about optimizing a scene to reduce polygon counts, textures, and so on.

Also, upgrading a GPU is all-or-nothing: if more memory on the graphics card itself is required, to avoid using out-of-core memory for example, you must replace the entire card. With a CPU-based solution, adding more memory is simple and again benefits every application, not just rendering.

3D redenring of inner gears of a timepiece

GPU versus CPU Summary

Corona Renderer remains CPU-based, ensuring the widest compatibility, greatest stability, easiest hardware setup, and best performance as scenes scale in complexity. Ninety percent of Corona Renderer end users choose Intel processor-based solutions.

Thanks to the power of modern CPUs and the Embree ray tracing kernels, Corona Renderer can offer all the benefits claimed by GPU-based render engines, but with none of the drawbacks.

Conclusion

Corona Renderer continues to grow in market share thanks to its combination of rendering speed and simple user interface that allows users to take an artistic rather than technical approach to their work without any loss of speed, power, or performance.

By ensuring the best possible rendering performance, using the Embree ray tracing kernels lets you look beyond optimizing the rendering process and focus instead on ease of use and continuing to innovate, introducing unique features such as LightMix, Interactive Rendering, the standalone Corona Image Editor, inbuilt scattering tools, and more.

Despite recent developments in the field of GPUs, CPU-based solutions remain the best, and sometimes only, solution for a great many companies, freelancers, and individuals.

3d rendering of a elegant car in a wet rainy environment

Learn More

Corona Renderer home page:

https://corona-renderer.com/

Embree ray tracing kernels:

https://embree.github.io/

About Corona Renderer and Render Legion a.s.

Corona is a CPU-based rendering engine initially developed for 3ds Max*, and also available as a standalone command-line interface application. It is currently being ported for Cinema 4D*.

It began as a solo student project by Ondřej Karlík at the Czech Technical University in Prague, evolving into a full-time commercial project in 2014 after Ondřej established a company along with former CG artist Adam Hotový and Jaroslav Křivánek, an associate professor and researcher at Charles University in Prague.

It was first released commercially in February 2015, and since then Render Legion has grown to more than 15 members.

Corona Renderer’s focus has been mainly on polishing the ArchViz feature set, and future plans are for further specialization to meet the needs of the automotive, product design, and VFX industries.


Viewing all articles
Browse latest Browse all 3384

Trending Articles