BlenderDiplom interviews Brecht van Lommel, the main developer behind Cycles, Blender's new render engine with realtime-preview. Find out why he started Cycles, what is planned for the future and why Cycles supports CPU, OpenCL and CUDA.
BD: You're Brecht Van Lommel, the main coder of Cycles, the new Render Engine for Blender 2.61. How came it that you started working on a completely new render engine for Blender?
BvL: I've been working for quite a while on the existing Blender render engine, we used it in many projects like the Open Movies. It has a lot of limitations, it was started in the 80ies and more and more features were added on top of it. The core of it isn't very modular and is sort of built for direct lighting and rasterization. Adding more stuff on to it became more and more difficult. I've tried to get the core working well and upgrade it but it wasn't working very well. At a certain point I just had a lot of free time and I just started coding in my free time "My ideal Render Engine". I tried to put in some things I learned from working with the artists on the Open Movie Projects. After half a year I showed it to Ton Rosendaal and he was interested in it. Now I have started working for the Blender Foundation again, half time solely on the Cycles render engine as a new renderer for Blender.
BD: Just half time?
BvL: Well, I got a lot of other assignments like fixing bugs, release management and getting other coders get their work fit for integration into Blender. So I can spend only half my time on Cycles. But it's pretty good to be an employee of the Blender Foundation or the Blender Institute. It's a super job helping all the volunteers.
BD: What's the target audience for Cycles?
BvL: The target audience is more or less the same as Blender itself - individual artists and small studios. It's not meant to be a render engine for Hollywood. It's meant to be something that is easy to use, that produces renders quickly without too many technical parameters to tweak. I tried to keep it as simple as possible. The other thing I tried to do is make it more interactive. In Cycles you got a realtime interactive preview which updates while you're working. That's really important. In the Open Movies we had some rather complicated renders and whenever you hit "Render", it took several minutes until you actually saw pixels. So tweaking parameters took a lot of time.
That's why I made Cycles an interactive raytracer. It keeps updating while you are changing parameters so you can see results as soon as possible.
BD: You did not take the pure physically correct approach but allow a lot of cheating?
BvL: We try to make it possible to cheat in various ways which are usually not possible in various physically based render engines. Basically if you want to do animation rendering and want it to render quicker you need to be able to disable various things like full Global Illumination or Caustics or reduce bounces for certain objects. There are various more tricks that allow to render things not physically correct but suitable for animation.
BD: That's what Cycles is probably gonna do in the next Open Movie. Are you looking forward to the work?
BvL: That's in the next 4 months, so that's a bit scary. We'll see how it goes. We still got Blender Internal as fallback if we need it. But Cycles will be tested for various VFX tasks like render layers and render passes that will be composited with real footage and environment lighting from real footage. That will be the focus for the next few months, make it usable for VFX works.
BD: Your main influence for the shader system was the Open Shading Language but you are not directly using it?
BvL: At the moment we got two backends, one supporting OSL and the main one that is working on CPU and GPU. It is planned that one day OSL is supported in Blender.
BD: So some day one will be able to use custom OSL shaders in Blender?
BvL: The main issue is to get OSL working on the GPU. It's almost as much work as building Cycles itself. It's not easy to do so we need more people to help us.
BD: For GPU rendering, Cycles is supporting both OpenCL and CUDA. Why this decision?
BvL: Actually the languages are very similiar. OpenCL just has a few more restrictions than CUDA. Once you restrict yourself to the featureset of OpenCL, it's very easy to also compile for CUDA and CPU. The CPU thing is very important because many people don't have a suitable GPU or you got a scene that needs a lot of memory. OpenCL is also very important since it is supported by both AMD and nVidia. CUDA has the superior performance so it's useful to support both all three. So every user can choose the option that best suits his hardware.
BD: Regarding interface you have chosen a dual-approach of both the traditional interface based on layers, but at the same time supporting nodes.
BvL: We have chosen nodes because they allow a lot of cool tricks and combinations. But nodes also tend to be harder to manage. In order to set up a scene with lots of materials there will also be presets, groups of nodes like plastic or metal. You will be able to stack them in a simple tree view so you can have results very fast while you still have the option to do all the complex and crazy things with nodes.
This interview was translated to German and released in the print magazine Digital Production alongside an article on Blender Cycles in Germany and Austria.