Cycles Volumetric Rendering

Here is the catseye video. This principle could make a good moonstone gem material.

Thinking of other applications of the above material. How about reflective road studs. These are not emitting any light of their own - they are simply backscattering the two spotlights simulating car headlights. Notice how they get dimmer as they get closer to the car - this is because the lamp, road stud, camera angle is increasing. This is exactly what you would expect to see.

[ATTACH=CONFIG]287986[/ATTACH]

Another application - retro-reflective tape like you get on barriers, police cars, ambulances etc

You are right, i’d rather have the right solution, than a workaround, but knowing the nature of open source development, it would take a while, so if you think you can get something close via compositing, i’d appreciate the insight, either here, or via Private message. Many thanks. I don’t agree the the effect is subtle though, I think its quite blatant.

Very good! :smiley:

really like the retroreflection, v. cool

what node setup did u use for the first monkey?


demo.blend (507 KB)I have found something which I don’t understand. Take a look at the image and blend file. If I have both emission (density up to 5) and volume scatter (density up to 10) [volume absorption has no importance for this result] and color the emission yellow and the scatter white I get a blue backscatter. Why? It’s the complement color of yellow, I understand, but I really don’t understand this. Is it a bug or is this really correct? I’m using msvc 2013 build 6a2c467.

Here are a couple of images of mine that shows just what you can do with the new volumetric rendering.




The first one uses volumes for light atmospherics and the water (not the dust particles though) and the second one uses it for mist and clouds (ie. there’s no use of the mist pass or the ray-length node anywhere).

Now in the second one, you do tend to get a bit of firefly action when two volumes are overlapping, but this is something that denoising filters can easily handle.

I tried to dig a little deeper into this issue. And started to scan over the cycles-kernel source code. I must confess that I do not completely understand how the different parts of volumes osl shader, closure and path branching interact with each other in detail but I have a rough idea. As a matter of fact, if you have both emission and scattering (and/or absorption) present in the volume shader part an attenuated emission is calculated where the light is reduced by the absorption (aka density setting) of present volume absorption and volume scatter shader nodes. The formula seems to be correct. Furthermore if you use volume absorption only it yields the expected result. So I think this part is completly right.

However, if scattering applies the light path must now start to branch and this is where I mostly get lost within the kernel code. The contribution of this branched ray in combination with a high density seems to be the problem. I am only guessing now but to me it seems that the color information for this ray is calculated beforehand and includes now the mixed in emission part. Therefore it has a yellowish tint. Thus, now the yellow (red + green in rgb) part of the light is scattered away by a larger amount. The blue part stays. However, what is expected is that for scattering the color should still be the neutral grey/white where each rgb component is scattered by the same amount. The emission should not influence the “color” of the scatter part.

I currently hesitate to report this as a bug as I cannot find the proof for my assumptions in the source code. I could be simply wrong. Maybe one of the more technically experienced user in this forums can comment on it… :frowning:

Another test - refining my retroreflective tape material.

Nice!

Just one thing which bothers me currently. After looking into the source code of cycles a bit more I found that a branching of light rays always happens at the first possible voxel within the material. So if you set volumetric bounces to 1 it seems they always get scattered from the very first “point” in the volume where the density is above one. I personally assumed before that there is a certain probability to further continue onwards into the volume before a branching / scattering occurs - somehow on a statistical base.

And one of my personal tests:


An opal volumetric material - somewhat as discussed before volumetric rendering was available:

The last one for today…



A short visit to the noisy arcade.

Cool - I have been meaning to revisit my opal material using volumetrics. I think the retroreflection effect that I have been experimenting with above will come in handy for such a material.

What texture did you use to simulate the flecks?

Nice - very atmospheric.

I’m not sure if I totally understand what you’re asking, but it is certainly possible to mix a glossy and a volume material. You’ll just have to mix the glossy with something transparent so that the volume material is used. It’s not possible, I think, to use a 3D texture to control a mix of glossy and transparent within the volume of an object, if that’s what you’re asking. The surface shaders (with the exception of emission) can only apply to surfaces. Someone feel free to correct me if I’m wrong.
While those “hard volume” objects are perhaps memory efficient, they aren’t really going to be useful for a whole lot, at least until CPUs get much faster. If you want that sort of soft surface look, you’re best off with the subsurface scattering material. It’s much faster to converge.

Yep that is basically what i’m asking. I know about using a mix of glossy/transparent surface and volume scattering/absorption (I used such a technique on my retroreflective and moonstone materials above).

Regarding the glossy volume bounces: this is sadly not possible because there is no normal available within the volume. Thus, you cannot determine in which direction the light should be reflected.

I am currently not at my computer so I cannot post the node setup for the opal - I will do so tomorrow. Basically I start with a voronoi with cell type. I used a combination of multiply and modulo to do a very simple randomization. Once followed by a less than which is multiplied with the base density to make only some cells show up. A second one followed by a color ramp for the color itself. These are used as inputs for the volume scattering node - no absorption.

The surface is white glass with I or 1.45

Ok cool - I didn’t think so.

One thing I have just thought of that might be useful. Currently we have anisotropy which allows you to scatter light forward or backwards based on the angle of the incident light source vs the camera. For forward scattering the angle is close to 180 degrees - whereas for backscattering its close to 0.

It would be useful to be able to scatter light based on an arbitrary light/camera angle. This could allow you to use a volume texture to render the light reflecting flecks inside an opal (for example).