Volumetric lighting issues

Hi, I find always difficult to control the result with volumetric lighting, and the concept of absorption in the principle volume.

For example, I made a cube for the volume, with the principal shader applied to it, but it appears black, and I want it being fusioned with the Background:

But let’s say that I rise the absorption color from black to white, the result is this:


Why is it purple, shouldn’t it be white?

Curiously I’ve found that the purple is actually the opposite color in the color wheel of the Color parameter which in this case is green. Because if for example, I change the Color parameter to yellow, keeping the Absorption Color in White, then the color of the volume that is not lighted, becomes blue. But the absorption color I’m keeping it white!

Any ideas why is happening and why is so unintuitive? Maybe a bug?

Anyone any idea about this please?

No. Its lightened part appears Green. Its part in shadows appears black.

Cycles supports respect of object shape by volumetric material. EEVEE does not.
This inability is not as is because of principled volume shader.

In EEVEE, you are forced to create a 3D Texture that looks like a cone and plug it into density factor of Principled Volume shader. In Cycles, you can just use a cone.
In future release, volume object type should allow a respect of mesh shape by volumetrics.
But currently, Principle Volume shader is part of solution. It is not the problem.

Absorption color is a multiplier of default Color.
If there is no absorption, there is no scattering of light colored by default color into parts of volume in darkness.
When there is absorption, there is scattering of light colored by default color into parts of volume in darkness.
Absorption is applied to the whole volume. Color is also applied to whole volume.

It is not intuitive because it is not supposed to be a basic lightened/shadowed opposition.
The goal is to give a correct look when making smoke and fire.
Before Principled Volume shader, you could only deal with Volume Scatter and Volume Absorption nodes. They are not more intuitive.

Thank you zeauro for the thorough explanation. It is quite difficult to undertand this behaviour of the volume.

Good to know that tip about the 3d texture , yeah I can see that there a lot of complications when you try to control volumetrics in EEVEE. I will try that.

I don’t understand why you cannot control the absorption color as you wish, and it changes to the opposite color in the color wheel. Yeah perhaps the reason has to do with the fact that each RGB channel gets multiplied, so the color resultant is purple, but it shouldn’t be like that. It should be easily controlable by the artist…

Yeah well I guess it’s not very useful to try to control the volumetric lighting in EEVEE without having to do compositing, which was my purpose.

You can control absorption color as you wish. But absorption is not the same thing as shadow on a surface.
It is property saying that how light is absorbed and, as a consequence, how light does not travel through volume further than a certain distance.
Here, absorption color is color of reflected light. In other software, it can be color of light absorbed.
On the opposite side, scatering is saying how light is scattered, how its travel is modified.

On a surface, you can draw a line and tell this side is under light and this side is in darkness.
That is literally principle of toon shading.

But for a volume, voxel closer to camera and voxel at opposite side of object, and all voxels in between are overlapping. Render engine has to mix what should be correct result for each voxel into a pertinent result for rendered pixel.
And depth from camera is different from distance to the light.
So, from any point of view, some voxels in darkness will always be blended with some voxels in light.
Although density of volume is so important that your volume is acting like a surface, there is still present a scattering effect to distinguish this volume to a surface.

So, absorption and scattering are only things to adjust to obtained a believable volume.
That is why both are represented by a specific node. Volume Absorption and Volume Scattering.
To achieve a believable volume render, you had to mix those nodes.
Each one of this node has its own color setting and density setting. Most frequent way to obtain a pertinent result is to have one delivering opposite color of the other.
So, when Principled Volume was created to reduce complexity of nodetree, a formula was chosen to mix both settings.
But if it does not correspond to your need, you can try a different mixing with old nodes.

What is sure is that, as physical properties of volume, mixing you choose, will always deliver a palette of colors at rendering more important (and sometimes different) than color inputs inside shader.

Thank you for the detailed explanation. Well yeah you cannot expect a real behaviour of the volume in EEVEE, but at least an easy intuitive way to tweak it. When you try to use a noise texture for example, it becomes even more clueless and complicated to try the control the look you want.

I found a way to get what I wanted, that the volume instead of black, becomes transparent with the background. For some weird reason I have to put the emission strength of the principle volume shader to 0.010 :roll_eyes: This way the volume is not black and gets transparent with the background.

Before was like this:

I’ve also found that is better to leave the color for color scatter and absorption as white, and playing with the color of the light and the emission of the principled volume instead… If you try to play with the colors of the scatter and absorption you can get crazy…