Houdini 17.5 Nodes VOP nodes

Shading Layer Parameter VOP node

Creates a parameter to appear in the signature of the VEX function defined by the VOP network (VOPNET).

On this page

This operator creates a parameter to appear in the signature of the VEX function defined by the VOP network (VOPNET). The new parameter is named according to the chosen geometry attribute and the specified layer.

Unlike the Parameter operator, which creates parameters of any name and type, Shading Layer computes the parameter name from the name of the geometry attribute and the specified layer. For example, choosing UV Coordinates from the attribute menu will generate uv, uv2, uv3 when the layer is 1 and respectively 2 and 3. The parameter type matches the type of the selected geometry attribute.

This operator always checks if the geometry attribute is bound and, if so, assigns its value to the new parameter. Thus, the new parameter will be hidden in the operator type defined by the VOP network.

One of the most common uses of this operator is the creation of layered textures, which requires different sets of texture coordinates for each Texture operator. To accomplish this task, choose UV Coordinates from this operator’s attribute menu and set the appropriate layer. Pipe the uv output into a Vector To Float operator to extract the s and t as individual float values, then wire s and t into the Texture operator. Repeat this operation for all the layers, then add or multiply the all Texture outputs using the Add or Multiply operator respectively.


Geometry Attribute

The attribute to be searched for in the given layer. The following attributes are available in this operator:

Label          | Name  | Type     | Default If Not Bound
UV Coordinates | uv    | 3 floats | { global s, global t, .5 }
RGB Color      | Cd    | 3 floats | { 1, 1, 1} (i.e. white)
Alpha          | Alpha | 1 float  | 1          (i.e. opaque)

Geometry attributes are created in the Geometry module using a variety of SOP operators such as: AttribCreate, Attribute, Point, UV Project, UV Texture, UV Unwrap, etc.

Use This Node to Set Parameter Attributes

When several Shading Layer VOPs have the same Geometry Attribute chosen, only one of the nodes is used to control the settings of the attribute. Houdini decides which node to use for this by searching all the nodes according to the user defined order, then traversing inside subnets. If none of them have this parameter turned on, the first one found is used to set the parameter attributes. If one or more do have this option turned on, the first one with this option is used, even if another node (with this option turned off) is found first.

Attribute Layer

Attribute layer where to search for the geo attribute. Layer 1 is the default layer. Attributes in this layer do not have a suffix. Layers are created in the Geometry module using the Layer SOP.


Specifies whether the new parameter can be exported to other contexts (written to as well as read from). If set to Always or When Input is Connected, this operator gets an input. The value wired into this input is then assigned to the exported parameter. In a Surface network, exported parameters can be used to create deep rasters.


The parameter will not be exported.


The parameter will be exported.

When Input is Connected

The parameter will only be exported if the node’s input is ultimately connected to another VOP.


Export Value

The value assigned to the new parameter if the Export Parameter toggle is checked.


Output Parameter

The value of this VEX function parameter.

Is Parameter Bound

True is the new parameter is bound to an attribute.


The following examples include this node.

Street Crowd Example Example for Crowd Solver dynamics node

Crowd example showing a street setup with two agent groups

The setup creates two groups of agents. The yellow agents are zombies which follow a path of the street. The blue agents are living pedestrians that wander around until they come into proximity of the zombies and then they swtich into a running state.

Triggers to change agent states are setup in the crowd_sim dopnet. The zombies group uses proximity to the stoplights and the color of the light to transition into a standing state when lights are red. The living group transition into a running state when they get close to the zombie agents.


The animation clips need to be baked out before playing the scene. This should happen automatically if example is created from Crowds shelf. Otherwise save scene file to a location of your choice and click Render on '/obj/bake_cycles' ropnet to write out the files. The default path for the files is ${HIP}/agents.

FlipColumn Example for FLIP Solver dynamics node

This example demonstrates how a mixture of fluid colours can have their colour changed by a collision with a static object.


This example simulates grass being pushed down by an RBD object. Fur Objects are used to represent the blades of grass and Wire Objects are used to simulate the motion. When a single Fur Object is used to represent the grass, neighbouring blades of grass will have similar motion. Additional objects with different stiffness values can be used to make the motion less uniform. When "Complex Mode" is enabled, two objects are used to represent the grass. The stiffness of each set of curves can be controlled by adjusting the "Angular Spring Constant" and "Linear Spring Constant" parameters on the corresponding Wire Objects.

CurveForce Example for POP Curve Force dynamics node

This example demonstrates the use of the POP Curve Force node to control the flow of a particle sim AND a flip fluid sim.


This example demonstrates the use of ramps and referenced ramps which are animated over time.

Down Hill Lava Flow Example for Material shader node

In this file we create a downhill lava flow with crust gathering and hardening at the base of the slope. All of the animation is achieved through the shader itself, and all of the geometry is completely static.


Most of the parameters for the lava material are overridden by point attributes created in the surface nodes.

FirePit Example for Material shader node


No geometry is animated in this file. All animation is achieved by animating the textures

Flames are grids so that UV textures can easily be applied, they are then warped around a metaball using a magnet SOP. The flames are then assigned to either a yellow or blue Flames texture. The Flames' opacity mask wrap is set to Decal to prevent the texture from repeating and showing a single pixel ring at the top of the flame geometry. I'm also using a mask file named flameOpacMap.jpg to enhance the flames' shape at the top. The noise offset has been animated over $T with an greater emphasis on the Y axis so that the flames look like they are rising. This is the same reason the Noise jitter is larger for the Y axis as well.

The coals are spheres that have been copy stamped onto a deformed grid. Using Attribute Create surface nodes I am able to override and copy stamp the lava texture’s parameters at the SOP level so that local variables, such as $BBY, can be used to animate the texture. This way the texture’s crust and its crust values can be used only to form the tops of the coals. This reserves the lava aspect of the texture to be used on the bottoms of the coals. The lava intensity (Kd attribute) is then stamped and animated to create the look of embers on the bottom of coals glowing.

StyleDisplacement Example for Material shader node

This is an example file showing an object made up of two quads, one with a bump map, the other with true displacement. This object is duplicated, and the second copy uses a style sheet to reverse the material assignments on the two quads.

BlendAttr Example for Attribute Composite geometry node

This example demonstrates how to blend attributes using the Attribute Composite SOP.

RandomMaterial Example for Attribute String Edit geometry node

This example demonstrates how to use the Attrib String Edit SOP to modify String primitive attributes and randomize the colours on a grid on a per-primitive basis.

FurBallWorkflow Example for Fur geometry node

This example demonstrates how the Fur SOP and Mantra Fur Procedural can be applied to an animated skin geometry. CVEX shaders are used to apply a custom look to the hairs based upon attributes assigned to the geometry.

FurTextureMap Example for Fur geometry node

This example demonstrates how to use a texturemap to color fur.

AlphaOmega Example for Points from Volume geometry node

This example demonstrates how to use a Points From Volume SOP to create a target goal for a flip simulation and make it fill a given piece of geometry.

UnpackWithStyle Example for Unpack geometry node

This example demonstrates the Unpack SOPs ability to evaluate style sheet information while unpacking. Nested packed primitives are used to demonstrate partial unpacking while still preserving styling information. This example also demonstrates the use of a Python SOP to extract information from the per-primitive style sheets.

WornMetal Example for Curvature VOP node

This example shows how the curvature vop can be added to a shader network to add a worn or distressed look to your material.

See also

VOP nodes