Why is pyro shader a blackbox and slower than other shaders?

   3135   3   1
User Avatar
Member
8594 posts
Joined: July 2007
Offline
I am trying to understand the benefits of pyro shader's architecture over node based VOP network
i don't see any advantage even though i hoped speed can be one, i was surprised that it's the other way

with the simle scene (attached file)
billowy shader (default, density 50, noise off): 59.359u 8.390s 1:24.61r
pyro shader (deault, density 50, fire off): 1:48.406u 8.921s 2:24.43r
both look exactly the same
so why that speed penalty?
is it that scattering phase calculation (even if that param is 0,0,0?)

all that modifiers and noises which can be referenced in certain parameters, isn't that a little step back? Why couldn't they be VOP nodes which we can connect anywhere we want? How am I supposed to use abs() function on noise field before using it? or other operations like alter noise with custom spline ramp? all this is very easy in VOPs, but here it is blackboxed

i know i can just use billowy shader and enhance it for dual rest, but on the other hand scattering seems a nice feature so it would be great it someone could show me if it can be optimized for at least the same speed as other volume shaders without different step size or other quality decrease

that leads to my other question, how can i set scattering correctly to achieve multiple scattering from light sources? I have only smoke and i want it to react to my lights, i am not seeing any effect by turning scattering on, computing pc and rendering. Am i missing something? Or is it written to just scatter the fire?

Any info on this topic would be great because i am a little confused about the whole pyro shader thing. Are those extremely slow renders really normal? Is it usable for heavy volumes without renderfarm?

Attachments:
pyro_shader.hipnc (444.9 KB)

Tomas Slancik
FX Supervisor
Method Studios, NY
User Avatar
Member
192 posts
Joined: Nov. 2008
Offline
In addition to allowing for more complex scattering model (billowy smoke is just isotropic scattaring afaik) the pyro shader has a pretty sophisticated architecture for managing the field modifiers. Internally it builds an array of all the field values at the shading point and iterates thru them executing the modifiers and managing the relationships between the fields. I think this sort of architecture would be impossible to recreate in VOPs.

If you don't need these features I guess it doesn't really make sense to use the shader. I feel as though the shader hits the mark as advertised for having something that not only gives professional looking results out of the box without sacrificing customizability, and I feel like slower performance is a reasonable price to pay (particularily because I have found the render times to not be bad at all).

(I agree with you that it would be cool to have fast native volume multi-scattering within mantra like the prman approximate stuff)
User Avatar
Member
1390 posts
Joined: July 2005
Offline
All Pyro shader code can be reused in a way you want after including header files. You could build own vops based on it.
User Avatar
Member
8594 posts
Joined: July 2007
Offline
thank you for your answers

brianBurke

Internally it builds an array of all the field values at the shading point and iterates thru them executing the modifiers and managing the relationships between the fields. I think this sort of architecture would be impossible to recreate in VOPs….

and if i build modifier as a VOP node connect to another modifier then to density port of lets say smoke VOP node and at the same time to another modifier and then to intensity of the same smoke VOP node and so on, isn't that creating relationships between modifiers and incoming fields and result at each shading point? I know that pyro's architecture is unique in some way i don't really understand it's internal working so i can't say nothing, but i seek flexibility in houdini, it's always been there so this closed architecture surprises me

i know i can reuse code from pyro and build VOP nodes and gain some flexibility, on the other hand i doubt i will gain speed that way since it will be the same code

Ok, let's say that speed is not an issue and i want to use pyro shader, can someone help me with my scattering problem? Simple explanation of how it works will be sufficient. I am after lighting smoke with regular lights. I can get some nice looking smoke by playing with shadow density and scattering phase, but scattering with pointclouds does't have any effect on my smoke so i would like to know if it can be used with regular lights or just with the fire or if i need to recreate fire pointcloud based on my lights for scattering to work, thanks
Tomas Slancik
FX Supervisor
Method Studios, NY
  • Quick Links