2

(shown material)

I'm really not sure what causes this, I have several volumetric objects in my scene, but this one renders always in front, as you can see below:

clipping

The first very obvious thing I tried was to change the volumetrics clipping values, but they didn't really solve the problem consistently. Sometimes you can see the volume through objects, sometimes you can't. This may also be caused by the fact that it's an emission shader that's plugged into the volume socket of the material output, but I'm not sure, as I tried swapping out it for a principled volume shader and the problem persisted.

If you know what's causing this, please let me know!

Thanks!

(comparison with 2 materials)

Geri
  • 1,341
  • 1
  • 8
  • 24
  • I'm afraid this is an limitation for Eevee... If you try to see what is happening when testing "is camera ray" from "light path" node, that makes no effect in the context of this shader node tree. – lemon Mar 09 '20 at 16:54
  • Interesting, so why don't any other objects with volumetrics have this issue in my scene? This is rather silly to be honest, stuff just shows through solid faces. Have you checked out the actual material in the .blend file? Maybe there's something wrong with it that I'm unaware of? – Geri Mar 09 '20 at 17:53
  • Could you upload a scene with this object and one of these other objects? for comparison. I need to precise: i'm not sure at all about this possibly Eevee limitation (just seems to be). – lemon Mar 09 '20 at 18:19
  • Added it to the OP, but now I'm 100% totally confused about this, the volumetrics just act totally inconsistent. Now, even the other one shows through sometimes, and the first one doesn't seem to all of a sudden. Uhh, I really don't know what's going on here. – Geri Mar 09 '20 at 18:54
  • It occurs too, but less visible for some reasons: https://i.stack.imgur.com/1ppiG.jpg – lemon Mar 09 '20 at 19:05
  • 1
    Probably because it's not emissive like the other one. I actually scaled the nebula one way down, and the other one up a bit, so maybe that plays a role as well somehow, I really have no idea. – Geri Mar 09 '20 at 19:12
  • I've seen the impact of scaling, but have not yet decrypted all your node setting. For now, have no idea too. And by the way, the wall has inverted normals, but this is not the matter here (no impact). – lemon Mar 09 '20 at 19:17
  • When I connect only Emission into Volume sockets its still blinking throught a wall. So its not a material it self. Distance between objects make a difference. Visible from 0 to 4.45m, above its gone ... also decreasing Render Properties > Volumetrics> End fix somehow issue, but moving wall closer to emitter I had to decrease more ... – vklidu Mar 09 '20 at 23:40
  • Well, in my specific case reducing the end value way down did fix the issue. The only thing I need to look out for is to not get too close to the volume. You can make this an answer if you'd like to. – Geri Mar 10 '20 at 17:58
  • No surely, no. You can answer yourself if you want. I've though about reducing the end value, but this works only if pov is constant.. so, to me, this is not the good solution (if there is one). – lemon Mar 10 '20 at 19:00

1 Answers1

4

This is due to how renderers process depth. Basically they squish all depth into a range between 0 and 1. With large ranges, rounding errors will create visual glitches like clipping. You may already be familiar with this in the viewport and cameras for the view range of geometry, but volumetrics also use this. I'm not sure why volumetrics are so much worse at this, but the way to fix it is by giving blender less information to cram in.

This means reducing the range where it renders volumetrics or increasing the number of samples. Both of these settings are in render > volumetrics.

Renderers bias toward objects closer to the camera so increasing the lower value is the best way to improve results. You might also be able to get results from the distribution slider which I think changes the bias on the renderer but I haven't been able to get anything out of it.

TLDR: Reduce the volumetric render range and increase samples.