Volumetrics are coming!

Brecht has begun adding all the Volumetrics work that all our great devs, Storm, Thomas, Stuart, Lukas and Brecht have been working on!

It’ll be a just little while before we have support for smoke simulation data, for now it’s just some basic absorption and soon some scattering and emission.

Commit from Brecht:

Cycles Volume Render: support for rendering of homogeneous volume with absorption.

This is the simplest possible volume rendering case, constant density inside
the volume and no scattering or emission. My plan is to tweak, verify and commit
more volume rendering effects one by one, doing it all at once makes it
difficult to verify correctness and track down bugs.

Documentation is here:

Currently this hooks into path tracing in 3 ways, which should get us pretty
far until we add more advanced light sampling. These 3 hooks are repeated in
the path tracing, branched path tracing and transparent shadow code:

  • Determine active volume shader at start of the path
  • Change active volume shader on transmission through a surface
  • Light attenuation over line segments between camera, surfaces and background


Color Ramp Improvements


Let’s be honest, these have been a long time coming – in fact the lack of some easy and precise controls for color ramps used to be one of  the things I hated the most, I use them quite a lot. In fact, it was even pretty high on my Todo list for Node Wrangler to add these features myself, though I couldn’t find a simple and usable way to do it.

But luckily, Krantz Geoffroy (kgeogeo) has come to the rescue, bringing a Position slider for precise control over the location of the active color stop. Other new additions include an input for the index of the active stop (in case you have trouble selecting the right one) and some welcome rearrangements of buttons (including the color ramps in BI textures and the rest of the UI)

I suppose the only thing left on my wishlist for Color Ramp features is some more interpolations, like squared and cubed  falloff, and the inverse of each.

Oh and in case you were wondering where I disappeared to for the last two weeks, I was on holiday in Scotland visiting (and meeting for the first time) my Blender Nerd partner Rex :) but more on that later.

2.69 Released (test build)


2.69 hasn’t officially been released, but there is now a test build, which is practically the same thing (no new features will be added, only bug fixes)

Now before you run away shouting “It’s not the same!” remember that test builds are extremely important. They’re there for you to start using and report any bugs so that the official 2.69 release is mostly bug free. Otherwise we need to do an ‘a’ release. Last time, we nearly had to do a ‘b’ release too because even more bugs were found.

So do everyone a favour and just try it out. Render some old scenes, model something, or check your rigs still work.

If you’d like to see what’s new, check out the release notes (which are still being written in some parts). The Cycles release notes are done.


Volume Test

volume_spot (1)

A long time ago in a version far far away, an anonymous user named ‘storm’ wrote a patch for volumetric rendering in cycles.

Recently, Thomas and Stuart (them crazy coder guys) made some changes and cleanups to the code – meaning it’s possible to download a patch, compile Blender and render some volumes!

Don’t get too excited just yet though, in it’s current state there’s no way to give it any fancy voxel textures from the smoke simulator or anything – all in due time!


Images courtesy of Thomas Dinges, because I’m too lazy to compile it myself


I just thought I’d pop by to break the radio-silence and show some epic skin stuff that’s been happening lately.

A couple days ago, Brecht surprised us all by adding two additional falloff options for the SSS shader, as well as giving it bump/normal map capabilities and texture blurring, and Thomas also finished his work on SSS render passes (sneak a peak at the 2.69 release notes while we make them here)

The video above is an interesting combination of talent. Shortly after Brecht originally added the SSS shader, Matt Heimlich (a co-cycles module owner) created a monster node setup that mimics Arnold renderer’s renown skin shader abilities. A little while ago, Kent Trammell tried out Matt’s shader setup and that’s the video above :)

So I think it’s safe to say that the only major features missing from Cycles now is volumetrics (clouds and stuff). Sure there’s some other nice-to-have stuff, but if you think about it, nothing else is really a major feature (who cares about baking anyways)

DingTo Rocks!

I’ve been meaning to write this post since I started this blog, but my laziness isn’t a bad thing! (this time) Due to my procrastination, I now have more things to write about!

DingTo (Thomas Dinges) is one of the developers focused mainly on Cycles. He’s busy doing GSoC and has added a whole handful of great new features. Here’s a couple of my favorites:

Wavelength and Blackbody nodes

These two nodes allow you to input physical values to get a colour. The wavelength is the full spectrum of colours. Plug a gradient texture into it with a few math nodes to get the 0-1 range to a 380-780 range and you get a physically accurate rainbow!



The Blackbody node on the other hand allows you to input a colour temperature to get the right RGB colour. This is useful if you know the exact colour temperature of a specific light bulb, or get that lame looking candle of yours to look right!

Separate/Combine HSV

I’ve been asking for this one for a damn long time ;) I asked DingTo for it at least a couple times and ranted about the lack of it at least once in #blendercoders.

Before all we had was Separate/Combine RGB, but many artists like myself don’t work in RGB much and can visualize colours much better as Hue (what colour), Saturation (the richness of the colour) and Value (brightness).

Why do we need this? Basically to make easier colour adjustments to textures. I generally use nodes as a sort of dynamic photoshopping in three dimensions, getting a bunch of unrelated textures (like rocks, grass and baked occlusion) to create a completely different material (like metal).

Non-Progressive Integrator for GPU

I’ve seen some good results from the non-progressive integrator, but since it was CPU-only I never really took it seriously since CPU rendering is too slow to work with.

Basically, instead of having one control for the number of samples to do, it gives you the ability to choose how many of what kind of sample to do for each iteration. So you can choose to have more diffuse samples than glossy since it usually takes less than 10 glossy samples to clean sharp reflections, but diffuse needs a lot more.

So depending on your scene and your setup, you’ll get cleaner renders in shorter time.

I haven’t tried it out fully yet, so I’ll leave any further elaboration to another post.

Ray Depth

The Ray Depth output of the Light Path node basically gives you control over what happens on each light bounce. You can use it on lamps to control the number of light bounces per lamp, or only have a single light bounce for transmission rays to eliminate that kind of caustics (though keeping reflection caustics). Or you could use it in materials, making a glossy material act like a diffuse one after a couple bounces so that it doesn’t give any fireflies but still adds a little colour bleeding. Use your imagination :)

The only downfall is that this is purely visual and doesn’t actually reduce render time at all. It might reduce some noise in the case of caustics, but it still calculates the same number of bounces for each ray even if you have the emission shader become a holdout shader after a few bounces. So use it for artistic purposes, not to optimize render time (unless in the caustics case).

Sky Model


Added just yesterday, this is a much more realistic algorithm for the sky texture node, especially when it comes to sunsets.

All the features except the Sky Model are already in trunk, so get a build from graphicall.org or builder.blender.org  to use them :)

Here’s a full list of all DingTo’s GSoC awesomeness: