3
$\begingroup$

I'm trying out a method of rendering smoke in Blender Cycles through the use of Image Planes and Smoke Textures as Johnathon Lampel shows in his recent tutorial: http://www.blendernation.com/2015/07/04/faking-smoke-with-particles-in-cycles/

This is my current result: Screenshot1

And this is my node set-up: Screenshot2

As you can see, in order to prevent cycles from rendering transparent planes at the back of the particle system as black I've had to bump my Transparency Light Path Bounces up to a Max: value of 56, which in turn takes a while to render (1min 56secs on half-res 10 samples).

I feel that it should be possible for Cycles to simply disregard Transparency, so instead of computing it as a bounce, it just treats it as though it's not there, rendering the smoke image but not the alpha surrounding it. As a result this would drastically save on render times.

Does anyone know if this is possible? :)

Thanks!

$\endgroup$
  • 3
    $\begingroup$ That's.. exactly what it does. It still has to perform the intersection check on the ray in order to know if the ray hits anything, which (AFAIK) is the slow part. $\endgroup$ – gandalf3 Jul 7 '15 at 0:21
  • $\begingroup$ Thanks @gandalf3 I understand that, but I'm wondering if there's a way to stop it treating something as 'transparent', and instead just treating it as though it isn't there. It's hard to describe exactly what I'm getting at. Basically, how disabling the Camera ray visibilty essentially stops an object being seen and rendered through the camera, is there something similar that prevents transparency from being rendered by the camera? If that makes any more sense? :/ $\endgroup$ – Hexbob6 Jul 7 '15 at 0:29
4
$\begingroup$

From my knowledge of cycles, I don't think this is possible.

Think of it this way: If you disable camera ray visibility it simply ignores the object when calculating ray collisions. But a transparent shader is simply that: a shader. And Cycles will only look at a surface's shader if a ray has already hit the surface, meaning the calculation you are trying to avoid has already been performed. In other words, Cycles has to perform the collision algorithm to find out where the ray hits the surface to know if it is transparent.

To ignore transparent parts of objects you would first have to go through every shader in the scene looking for the pure white 100% transparent parts so that it just so you can ignore them in the ray-tracing step. This process would be very computationally expensive and would probably far out-weigh the saved time in the ray collision calculation.

With that said, I am by no means a complete expert on cycles, so if anything I have said is incorrect please let me know.

$\endgroup$
  • $\begingroup$ Ah well, thanks for the reply PGmath. I guess it was wishful thinking on my part, but I was wondering if there isn't a setting directly in cycles, whether it could be achieved through some fakery with the Light Path input node, or something along those lines? $\endgroup$ – Hexbob6 Jul 7 '15 at 12:37
  • 1
    $\begingroup$ @Hexbob6 Yea, I wish there was too, it would be nice. But again, the light path node is just a part of a shader's node tree, meaning it is only looked at once the collision has already been calculated. $\endgroup$ – PGmath Jul 7 '15 at 14:03
  • $\begingroup$ ah yeah that's a good point. Oh well maybe one day, I could see it being super useful for not only this case but with nature renders as well... those pesky alpha masked leaf planes! ;) Thanks for the help and explanations anyway +1! :) $\endgroup$ – Hexbob6 Jul 7 '15 at 23:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.