7
$\begingroup$

I've noticed that glass objects tend to turn really dark when adding volume scattering.

It seems the volume scatter shader gives a much different result when a refraction shader is used in the surface, even if the aforementioned refraction shader is theoretically doing nothing.

Here's a test, rendered with 1000 samples:

  • On the left is a refraction shader with the color and IOR set to 1, essentially just an un-optimized transparent shader.
    Naturally, it looks like nothing is there (though some extra noise can be observed if you look closely at the ground where it should be)
  • On the right is a volume shader setup with a true transparent shader. Looks fine.
  • In the middle, the volume setup from the right is used with the "transparent-refraction" from the right.

enter image description here

As you can see, the middle looks much different from the right, despite the refraction shader making no change to anything in the left.

Exact setup for the middle Suzanne:

enter image description here

What's going on here?

$\endgroup$
4
  • $\begingroup$ I'm not sure, but I'm guessing it's up to the amount of bounces, even though the Refraction Shader looks like doing nothing, yet when a Camera Ray hits the surface it will change into a Transmission Ray, then exiting the surface on the other side will count as another bounce. So if not enough bounces are allowed, it's just like when a glass shader looks black when no enough bounces are allowed, so that multiplied with the Volume Scatter added to Volume absorption..hmmm, well as I said, it could be the reason. $\endgroup$
    – Georges D
    Commented May 2, 2016 at 3:33
  • $\begingroup$ This seems like a solid theory. Why don't test it quickly, and post it as an answere? $\endgroup$ Commented May 2, 2016 at 8:14
  • $\begingroup$ A quick test of mine suggests that increasing the number of volume bounces helps. However AFAIK the refraction node shouldn't count towards the number of volume bounces, so why does it have have an effect? $\endgroup$
    – gandalf3
    Commented May 2, 2016 at 8:30
  • $\begingroup$ I'm kind of new to Blender and Cycles, but I know the Ray changes it's registration type and count everytime it hits a new surface, I really don't know how volumetrics are calculated "yet" but I'm sure they are using the same rays fired from the Camera, so any additional change in a ray's registration type or count is using the bounces made available by render parameters. $\endgroup$
    – Georges D
    Commented May 2, 2016 at 9:59

2 Answers 2

8
$\begingroup$

Solution

Set Properties panel / Scene / Bounces / Volume value to at least one.

Explanation

Probably your volume bounces is set to zero because it is the default setting. That means only direct lighting on volumes are allowed, however caustics¹ are not. The same goes for the diffuse bounces value: If you set it to zero, caustics will not be present² and the perfectly transparent refractive object will cast shadow.

¹ Caustics is actually simply indirect lighting, but is handled specially due to its noisy nature.

² No recursive indirect sampling (also known as bounce, hence zero bounce) allowed.

Alternative Solution

You could also disable shadow casting on the refractive object and leave the volume bounces zero. The result will have less noise, but will lack proper caustical shadows. Or you could set up fake caustics like this one: https://urchn.org/post/fake-caustics-in-cycles

$\endgroup$
4
  • $\begingroup$ It seems I misunderstand how the bounce settings work. I thought they limited the number of bounces per-ray-type (so a refraction bounce counts as 1 towards hitting the max transmission bounce setting, and doesn't have any affect on other ray types). However, if I understand correctly, it seems they limit the number of bounces based on the total number of bounces ray has taken (so a refraction bounce counts as one bounce, and if that's >= the max for the ray's current type (e.g. volume), the ray is terminated). Is this correct? $\endgroup$
    – gandalf3
    Commented May 2, 2016 at 20:04
  • $\begingroup$ I think it goes this way: $\endgroup$ Commented May 2, 2016 at 20:13
  • $\begingroup$ 1: Check currently calculated surface type (diffuse for example). 2: See how many surfaces of that type (diffuse) where already hit by the ray. 3a: If this number is greater than or equal to the limit of the bounces of that type (the diffuse bounces setting), do not cast any recursive ray¹, only direct lighting. 3b: If the limit is not reached, calculate direct lighting and recursively cast a ray (in some semi-random direction from the hit point). ¹It could not be predicted what type of surface will be hit next. $\endgroup$ Commented May 2, 2016 at 20:23
  • $\begingroup$ Or in other words: "If this caustics would be calculated, then the previous diffuse surface would have bounced the ray to the glass, however only 0 diffuse bounces are allowed." $\endgroup$ Commented May 2, 2016 at 20:27
1
$\begingroup$

This issue still exist with volume boucnces, also without cast shadow. my mesh doesn't cast shadow, and I have all bounces set to whatever is a lot, and the combo refraction + volume still creates a nearly pure black result, as opposed to any other combo. It's a bit annoyong because it's kind of the only way to create natural looking water, have refractions/roughness + volume.

Ow Ok found it, by using the "is shadow ray" and multplying it by -50, then it actually kills the shadow casting from any object (deactivate shadows does not) and you can have both volume and refractions, for super natural looking water body.

enter image description here

enter image description here

$\endgroup$
2
  • $\begingroup$ This does not really answer the question. If you have a different question, you can ask it by clicking Ask Question. To get notified when this question gets new answers, you can follow this question. Once you have enough reputation, you can also add a bounty to draw more attention to this question. - From Review $\endgroup$
    – Harry McKenzie
    Commented May 28, 2023 at 2:16
  • $\begingroup$ It actually does, try if you want, set a material with a refraction + volume, it gets totally dark like in the first image posted in this topic. The proposed solution of having bounces or removing cast shadow does nothing, still dark. What I did above in the shader editor solves the issue, you have the volume appearing as it should (not fully dark) and you have refraction (that can be rough ect...) $\endgroup$ Commented May 29, 2023 at 3:16

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .