1. Home
  2. Docs
  3. renderStacks
  4. Pass Modifier | Pmodifier

Pass Modifier | Pmodifier

Pmodifier is the engine of renderSTacks. They are the command which will be execute when you activate a pass. Understanding how pmodifier works is crucial to use renderStacks.

::Base State

::base state is a starter state for each pass before any pmodifier is applied. If you have no pmodifiers on a pass, your scene will go back to the ::base state when you activate pass.

When you add a type of pmodifier for the first time, a base pmodifier will be added automatically at the time. The benefit of having base pmodifier is that you don’t have to have a type of pmodifier for every single passes. For example, let’s say you have 10 passes and want to use Camera001 for 9 passes, Camera002 for 1 passes. You can pick Camera001 for base Camera pmodifier and add only one more pmodifier for Camera002. It also serves as a base state(start point) for the accumulative pmodifier types.

Evaluation Order

renderStacks always evaluates pmodifiers in the ::base depot first. Then, it evaluates each pass’ pmodifiers from the top to the button.

Even though some pmodifiers are accumulative, most of pmodifiers are not. A pass can only have one active pmodifier for the same type. Think about it. If you add 2 Camera pmodifier with Camera001 and Camera002, renderStacks will change your active viewport to Camera001 first. Then, it will change to Camera002 later. So, other than the most bottom pmodifier of the same type, all other same type modifiers in a pass will not do anything.

I know it is a lot to remember. So, renderStacks will show all this relationship visually in the treeview.

In the left image,”fgBty” pass 6 Camera pmodifiers. But, the only bottommost Camera pmodifiers is used in the end since the evaluation order is from the top to the bottom. To show that visually, renderStacks auto-disable those do-nothing  pmodifiers and display with disabled color(black for dark UI).

“bgBty” pass doesn’t have any local Camera pmodifier. Therefore, the base Camera pmodifier will be used for the pass, and renderStacks will displayed them as green to let you know that this pass is using the pmodifier from base state.



If you want, you can also manually disable pmodifier. Then, again renderStacks automatically adjust colors to show which one is being used.

In the left image, I manually turned off Camera_228, the bottommost one. Then, you can see renderStacks automatically turned on Camera_940, the bottommost Camera pmodifiers among available.



Displaying base pmodifier on each pass also allow you to update base pmodifier parameters without switching passes. But, if you think you are seeing too many pmodifiers, you can turn off displaying base pmodifiers for each pass by turning off “Show Base Pmodifiers” checkbox in Setting rollout in Note panel.

Or, if you think you font need to see ::base depot since you have all base pmodifiers on each passes, you can turn off ::base depot by turning off “Show BaseDepot” checkbox in Setting rollout in Note panel.

Accumulative Pmodifier

Most renderStacks pmodifiers are non-accumulative pmodifier. Basically you can have one one active pmodifier per pass for a pmodifier type just like the above Camera pmodifier.

But, there are some pmodifiers doesn’t work well with this concept. For example, object properties. You may want to control Visible to Camera for only a group of objects while controlling matte properties for other group of objects. If we can use only one pmodifiers for object properties, it will be too limited. Therefore, than one pmodifier can be active in a pass for some type of pmodifiers. We will call them an accumulative pmodifier. As of now, renderStacks has 3 accumulative pmodifier types.

  • ManyObjParams
  • ObjPropsDisplay
  • ObjPropsRender

I highly recommend to follow this accumulative pmodifier tutorials. One very important thing about accumulative pmodifier is that the objects you can control with these pmodifiers are limited by what you have selected in base pmodifier of that type. Basically you can only control a subset of objects in the base pmodifier of the type for local pmodifiers.

For example, you have 10 teapots from Teapot001Teapot010. You only selected Teapot001Teapot005 for Base_ObjPropsRender and set Visible to Camera to be on.

Now you select Teapot003 and Teapot007 and try to turn off Visible to Camera for a pass. You will find out that the property of Teapot003 is changing. But, Teapot007 is not because Teapot007  is not in the object selection of Base_ObjPropsRender. Remember you only selected Teapot001Teapot005.