User guide
104
The ShadowManager node then creates two output nodes for each render pass. The first one contains the modified
scene (with the corresponding file path set to the Shadow_File shader parameter), the second one passing the
dependencies of the Render nodes to the output port.
The example code covers:
• Creating a UI using custom buttons, tree widgets and exposing parameters from underlying nodes.
• Adding a custom UI widget to pick a light from a list of lights available at the current node.
• Renaming and reordering items in tree widget lists and applying the necessary changes to the internal node
network (rewiring and reordering input and output ports).
• Drag and drop of lights from the Scene Graph into the light list.
• Handling events regarding items in a tree widget such as adding callbacks for key events and creating a right-click
menu.
• Creating and managing nodes as well as their input and output ports in order to build a dynamic internal node
network. It is also shown how to dynamically re-align nodes and group multiple nodes into one.
EXPERIMENT: Extend this Super Tool with the following:
• It is assumed that all light shaders have the Shadow_File parameter. For use with different shaders or
renderers this can be customized.
• There are often shader parameters for dialing the effect of each shadow file which would be visible within
the Gaffer. Expose these shader parameters from the Gaffer with the context of the corresponding
shadow map directly inside the ShadowManager UI.
• Constraints are often placed on the lights for use as the shadow camera to frame or optimize to specific
assets. Per-light controls for managing these constraints could be useful.
13 GROUPS, MACROS, AND SUPER TOOLS | SUPER TOOLS