|
|
|
Tell us what you think of the site.
|
Autodesk Media & Entertainment User Community
|
Autodesk® 3ds Max®
|
|
Autodesk® Maya®
|
|
Autodesk® Softimage®
|
|
Autodesk® MotionBuilder®
|
|
Autodesk® Mudbox™
|
|
Autodesk® ImageModeler™
|
|
Autodesk® Sketchbook® Pro
|
|
Autodesk® Smoke on Mac®
|
|
Hi,
This may not be the best place to post this but here goes. I’ve got a question about tree efficiency in the Render Tree using switches inside compounds. Switches generally take multiple input and output to a single port. This usually, but not always, expects that the switch will be toward the end of the tree output of the compound. If I have 5 pipelines, each pipeline very similar with small changes, and each pipeline feeds one of the ports on the final switch, are all pipelines evaluated and processed prior to being cut off at the final switch for the active switch port? Or is everything processed backwards from the end of the tree to reduce redundant processing? The point is that if all pipelines are processed, a multi-pipeline compound which is using on one piepline on output has the capacity to be become very process heavy just for the ability to have multiple processing options within the same compound. I was wondering if anyone had any insight to this?
Joey
|
|
|
|
Rendering/Materials question, definitely one for Halfy.
I’m moving it to the materials forum for you Joey.
Might also ask to tweak a couple forum names to Leo, when so many people are getting confused probably means that the names are not obvious enough.
|
|
|
|
For the multi-switch, the only color input evaluated is the one that matches the case label (or the default input if none match). Likewise for the boolean switch.
|
|
|
|
Halfdan,
Thanks for the reply. I’m not sure I understand if the port itself is limited or all the connections to the port, IE the pipeline feeding the port is also limited. For example, if I have a compound with a single input and a single output, inside the compound the input branches off to 5 linear pipelines, each pipeline contains 10 nodes each, each pipeline feeds a single case to the multiswitch. The multiswitch feeds teh output. If the multiswitch is set to case 3, are only the 10 nodes feeding case 3 being processed? Or are all 50 nodes being completely processed but the other pipelines not connected to case 3 being terminated prior to the switch. Or are the other pipelines(40 nodes), not connected to case 3, never processed at all?
Understanding this better helps to determine where to put the switches in the compound.
If all 50 are processed then the switches needs to be used as early in the tree as possible, and nodes need to be borrowed as much as possible.
If only the 10 connected to case 3 are processed, then the switch can be used most efficiently late in the tree. This would also suggest that you’ll want to keep your processes(pipelines) feeding the switch cases as separate and linear as possible, and that you should replicate processes rather than borrow from other processes as that may cause multiple pieplines to be evaluated.
Any insight on this would be apreciated.
Joey
|
|
|
|
The tree is always evaluated from the root up. Each shader is responsible for triggering an evaluation for any branches connected to its input port(s). Due to this, it is better to place any switches as close to the root as possible (e.g. on the output port side inside a compound).
In the case of the multi-switch, it will only evaluate the one branch which matches the case label. So in your case, only those 10 shaders in the branch connected to that case input port will be evaluated.
|
|
|
|
Halfdan,
Thats great to know! Thanks! I had no idea where the root side was. I was working under the assumption that everything got processed and was getting worried that my compound internals were becoming heavily redundant and possibly inefficient.
BTW, this stuff is really cool! I’m really enjoying this. Ya’ll really did your homework. Can’t wait for what comes next!
Joey
|
|
|
|
|
|