Modernizing Shading and Rendering

In May, I’m starting to work for the Blender Institute again. Besides maintenance, bug fixing, release work, etc, my big target will be modernizing the shading and render system. We haven’t worked out the exact plans, but this is roughly what I have in mind:

First, there is the need for an improved shading system. Such a system should be node based, to give full flexibility to artists, and to make it possible for external render engines to extend it by adding their own nodes. On the other hand, we should make it physically based, to simplify materials and support global illumination. There are also issues like UV mapping and texturing workflow that need to be addressed. To get the design right, we intend to work out a design over the coming months, with help from blender users and developers working on external engines.

There is also the problem that the internal render engine is showing its age. Before and during the Sintel project, I have worked on refactoring and improving it, but found it simply too hard to get it where I think a modern render engine should be.

I do think there’s still a place for a “small studio” production render engine, that sits between a render engine with a focus on complete realism, and a totally programmable and customizable Renderman style engine. Over the past months, I’ve been working on a new engine called (codename Cycles), that I hope will fit that space. Here’s a sneak peek:

Cycles source code will be released in a week or two. Much work remains to be done, it’s going to take time before this will be integrated and full featured. Cycles is currently working as an external engine addon, but needs a heavily modified Blender.

There are many active open source render engines like LuxRender, Aqsis, Yafaray, Mitshuba, and we can do a lot still on the Blender side to make it possible to integrate these better. These other render engines will benefit
from the work that will be done on the shading system and the render API.

There may of course be developers that want to continue developing Blender Internal, and the intention is not to drop it immediately.

Looking epic from the early snippets. I guess it’s a bit early to ask how well displacements will work with all this? My main raytracer experience is with Mental Ray which unless I’m missing something seems to crawl with anything higher than some mild displacements here and there due to the poly count/required raytree. Other than that, very excited already. 🙂

This is sort of the choice you have to make in designing a render engine, either you start from a renderman style engine, and work to get various lighting effects added one by one, or you start from a ray tracer, and work your way towards supporting heavier scenes. There’s a no free lunch, but we can do many things to improve rendering displacement.

Hi Brecht, fantastic job with Cycles! I just want to ask you if you are planing on the long run to have support for dispersion effects. I know this requires the light to be treated differently in code.

That is really great news, shading and rendering is the part of blender that is a bit behind. Please, don’t hesitate to modify or change parts of Blender because users are used to something – users will learn. Also, if you need models for testing I’ll be happy to help.

When/Could it be possible to use this engine to work visually in blender to make decision about lightning colors textures etc. (direct light + maybe AO) and then use blender internal for rendering (with all its strengths) ? (maybe use it for re-rendering simple passes for composition).

It will speeds decisions greatly, without having to constant rerendering.
Also I think in the early stage of development using it for something like masking/rotoscoping should be very useful.

Overall working visually is something amazing and I am very intrigue what people could develop using rendering API.

Have a look at the video. The active view updates pretty quickly and that’s on CPU rendering, on a dual core only. I think it’s safe to say that speed won’t be an issue, and if it becomes one the equal amount of time it takes to render will produce a result far superior to the current BI renderer in the same amount of time.

Plain and simple, quality will always take more time but the results are worth it and so far it seems that the time sacrifice for increased quality is nearly negligible.

Looks great, though I hope much of the internal renderer stays too. Approximate AO and indirect lighting is one of the best things about rendering in Blender, IMHO, and most of us Maya users wish we had it for the awesome speed!

Wow – utterly fantastic news! Imagine tying this in with social network rendering capabilities like RenderWeb. The potential for superior quality at reasonable render times would no longer be an issue. Go Brecht!

Wow fantastic. The most useful thing a renderer could have from my perspective would be a drop down ‘environment’ list so I only need to worry about the scene / camera setup and then I can pick time of day, weather, rotation from ‘into the sun/moon’, light type – street lamp / table lamp / candle / etc. without the technical knowledge so I can mood the scene quickly and then tweak once the feel is right. Awesome stuff in the reel though and great to have sight of things to come thank you for sharing !

Pretty damn awesome. One thing Blender also -really- needs is a workflow redesign that allows multiple rendering AS a node, which could be multiple passes (I.e. Portal effect with two cams rendering out then composited)or integrating different renderes. also, being able to pull a video file into the locked camera/matte like most of the big budget apps could give Blender major respect in the VFX world.

Great news. I’m happy that there is cap space to offer you such a work and it seams you are looking forward for this challenge 🙂
Wish you great ideas, many great helping hands and success to implement a great solution.

Brecht, you think sensibly and do the really great work. I’m glad about all this progress very much! 🙂
BI will be forever as the best basic render engine for stylized renders. And your new engine will be the best solution for realistic pictures and movies. The full harmony 🙂

very thankful to have this work being done. being a freestyle enthusiast, i hope that there is some thought into freestyle integration hopefully being merged before next release. 3ds max’s nitrous (or whatever) has good fast rendering liek in your video with also NPR lines and such. I realize how the two may not share any link to make this possible, but I hope it’s at least pondered.

Indeed exciting times ahead. I feel the quality, design and scope of the modern Blender projects reflect the maturity of the development team. BMesh, the nodetree, the tiled compositor, Cycles, Animato, the RNA itself.. this aren’t just cool fancy features but well designed tools with flexibility in mind. Even (specially) when it means starting from scratch, the dev team shows a strong sense of direction and long term planning

this would be difficult because the lighting of the surrounding objects depends on the color of the changed object. IMHO it would be possible to change this color too if the software didn’t save “red” there but “1/2 of the color of X”

Hi brecht,
this is looking amazing so far.
there’s recently been talk about the possibility of direct integrating slg(smallluxgpu) and it’s live mode into blender, maybe you know about it:http://www.luxrender.net/forum/viewtopic.php?f=34&t=5807
for me it seems very similar to your efforts.
Luxrays library can basically have both OpenCL and CUDA backends, which is also interesting.

If blender gets an awesome rendering engine which is physically based and all that good stuff can we still make unreal stuff??? Because in some images something unreal (or not so physically based)is what makes the image awesome. I usually acheive these “effects” in the compositor (ex: excessive blurring etc…)

Sweet! Hope this means we can code our own shaders for blender! That’s something I really miss. (light shaders too)

I don’t suppose it would be possible to build a system that uses both a raytracer and Reyes-like system? I’m not saying Renderman is the answer, just that after using it I understand it’s incredible potential (and drawbacks).

The choice to cache visibility and shadow data would be cool as well, so long as it encompasses a proper “lazy” behaviour.

I know all these things are way off in the distance as building a render engine requires a lot more important stuff. But if these can be considered and possibly worked into the grand plan that would be super cool.

I’m really glad that you are back Mr Brecth. I do hope that you will stay at the Blender Institute for a long time.

You are really making a great great job with this new renderer. But I also really like the fact that you are also thinking of all the great open source great renderers out there that are also giving there best. Ant that you are thinking of making things easier for them with there integration in Blender.

I wish you all the best, the whole community is gonna support all the Devs at the BI.

P.S.

A little demand on my part. Please after you have finish the new renderer. Could you please think of making the BGE better.I do not know if this falls in your expertise but I’m learning that great feature of Blender now and it would be grate if it gets better as we can do so much with it.

That’s great and really needed but…
Sintel was rendered with the Render Branch, which seems like isn’t been developed lately. I really liked it since it was quick and simple although not physically based, so is that project dead? What will happen with the Render Branch? I’ve been waiting so long for it to be commited to trunk and now it seems like it will never be.
Don’t get me wrong, that’s great news!

Yep OpenCL is going to be supported too, was just not as simple to quick get to work. Blender will remain cross-platform and we for sure wouldn’t accept development that benefits one hardware manufacturer only.

http://www.blendernation.com/#comment-574038
Ton already said ^^
Quote:
”
Having a public & open project means we need to conduct the utmost ethical practices. That’s an intrinsic value. Everything we do is open, and anyone can read the code and techniques to verify if that’s original, not something copied from other sources.

Anyone who has ever met with or worked with Brecht knows that he’s a very modest, easy going and ethical person. He’s also a brilliant developer, who took a long experience and a lot of 3d coding competences to enthusiastically join Refractive Software. The fact this company let him go after a short while was a shock to me as well. Brecht then needed a while to sort out stuff, and luckily decided to join the Blender team again. We unfortunately can’t pay him what commercial 3d companies could afford, so his decision was based on choosing for working in a pleasant, encouraging and rewarding environment first.

What he worked on, and will work on, are common concepts and techniques where everyone in the industry is heading anyway. Check Modo, Lightwave, Max, Maya for example. It’s also well aligned with design proposals and discussions here in the studio and on our public developer mailing list from long before he joined RS. If it wasn’t Brecht, similar ideas would be in Blender sooner or later anyway. 🙂

Here’s what i would like to see, blender, yafaray, lux and all other open source renderers join together and develop an opensource renderer that blows away all commercial software . I think that there’s to much fragmentation and resources spread to thin. i think there needs to be a pooling of coding design talent for this project. what do others think??
lux is to slow(currently)and the firefly is horrible(i need to do more research on this for i’m pretty sure its a user prob ;-)>
havn’t used yafray successfully
tried others but struggled to get them to work.
i want to be a guinea pig for this squeak squeak

Excellent work brecht! You’re a brave man, blender has a long way to go to catch up to 2011 in this regard but so far so good.

For me one of the most promising parts of this post is seeing that you’ve made a conscious decision to target a specific audience (small studios/freelancers – which is blender’s main professional user base), and I agree 110% with the design decisions you’re making based on that. Knowing that you’ve got a clear goal in mind gives a lot of confidence that things will go well – don’t listen to people trying to widen scope or trying to satisfy too many people, including (especially? 😉 ton! 🙂 A tool that does a job really well for its target audience is so much better than one that tries and fails to be everything to everyone.

Looking forward to see how this progresses.

PS. It would be awesome if this was kept interfacing through the render API. It’s the best way to ensure that external renderers are integrated seamlessly and not treated as second class citizens.

Yes, blender really needs renderer no worse than vray and mental ray, i’m mot sure about realtime (it will be impossible to render big scenes (about a billion polygons + hires textures with it)). But if blender will have a renderer compartible with Mental Ray or Vray it (blender) will be compatible with 3dsmax/maya and many other mainstream software.

mmm… read a few posts above (reply by Thomas Dinges). I think Brecht has proved to be smart enough not to need to copy code. The concepts are documented and there is plenty of open source implementations to take inspiration from.

This is really exciting, it brings real GI to blender and it looks very fast. Still, I think it’s important to have a fast, fake and noise-free renderer for animation. Imho, Blender internal should not be forgotten, and should also be modernized.

“Imho, Blender internal should not be forgotten, and should also be modernized.”
That’s exactly what he is doing. A new modern BI. Don’t worry, you will be able to do anything you want with it, including non GI stuff.

Yes Brecht this “”small studio” production render engine” like you have written will be great piece of tool for artists who want to visualize their ideas which are between reality and imagination. Definitely good way of thinking from “creative” point of view. Best Regards.

One feature that I’ve asked in the past, and now is the time to implement it, is object level visibility – to fade objects in and out – without using the compositor, without animating materials (complex to do on large objects with multiple materials per object, or groups/layers – even the ability to animate layer visibility as a float instead of an integer.

Anyway… good luck, and keep up the good work. I’ve donated to Blender in the past, and am likely to continue to do so. 🙂 cheers.

That is just insanely good.
Tell us, are there plans to implement the bake operation on this? Bake would be specially cool for us game developers who use blender outside it´s game engine. Looking forward to this!

At long last. Spent some time with it last night, just on my windows i7 machine with 8 threads. Crap. Totally cool. Can’t wait until there is a CUDA/OpenCL build for windows.

I use and love Octane. But if Brecht can implement this and get a workflow going, it is (already!) a viable replacement in my eyes. A lot of the interface enhancements in Octane already exist in Blender. And to be able to use nodes….. holy crap.

We should all support the Blender Foundation in any way that we can. A few Euros here, a few dollars there- it all adds up. The BF has proven to us, time after time, that they will propel development as much as possible. Every time you use Blender, you should say to yourself: “how much would I have to shell out for Max or Maya, or any other production package?” Is giving $10 dollars or $5 euros too much to ask?

No- I don’t work for Blender, or the Foundation, or get a kickback. But I am unabashed about the fact that we should support it as much as possible. Money will not fix every situation. But it sure can’t hurt. 🙂

AMAZING!! Give me anything, a Beta, an Alpha, Heck, I’ll even take a Gamma! (lame greek alphabet joke) ANYTHING! This is what I’ve been waiting for for a LONG time! An Internal renderer that creates realistic images! Blender and all of the incredible people who work to make it better will never cease to amaze me. God bless you all!

So The reason that other commercial programs don’t render that fast is because they don’t have this guy Brecht working for them? And thats because they’re so exclusive? And/or Brecht doesn’t want their 9 to midnight BS? I personally am proud of Brecht, and Blender. I have learned as much if not more using Blender and following the development over the last 3 years, than in all my days in computing. I mean Maya has actually tried to get people interested and learning 3d computing, but they have not tried as hard as Blender, which is completely and totally free.

Brecht, i do not understand how you could change the iOr setting to a 0-1 thing. I cannot find any sans and i still do not know any other setting then 0.3 for glass. Can you tell please how i have to recalculate normal iOr’s?

I just hope they keep all the settings and sliders that we’ve come to know and love in Blender Internal. Currently, the reason I don’t like Yafaray and Lux is that there is no versatility in materials.

Hi! Cycles already is epic!
However, I’ve tested some OpenCL builds from Graphicall.org and looks like my ATI card only supports OpenCL 1.0 – and the builds available use 1.1.
So, does this mean older cards won’t be able to run it? Is it possible to make the code using OpenCL 1.1 downward compatible (with 1.0)?

I have a piece of krop DELL Studio 1535 with oem graphics that makes cycles look like fuzzy logic. Until I can FIND OUT just exactly WHICH graphics cards on what motherboard running what CPU and subsequent GPU PLEASE don’t switch entirely to Cycles. I get the idea! real-time rendered quality 3d-views. Its ahead of its time! Its beautiful, in concept and execution! Just Pleas don’t drop the cheapo croppy blender renderer for another few years.

Its funny, I completed an IT Diploma and I am currently doing Computer Science 3rd year. And Started to Script in Blender in 2012. I wonder how does Mr Bretch van Lommel does all these advanced things at his age. Compared to him I feel like an insect to a giant. How does he know so much? He is impressive.

Artists who are unfamiliar with the concept of PBR systems often assume that content creation is drastically different, usually because of the terminology that is used. If you’ve worked with modern shaders and art creation techniques you already have experience with many of the concepts of a physically based rendering system.