Houdini 17.5 Nodes VOP nodes

Global Variables VOP node

Provides outputs that represent all the global variables for the current VOP network type.

On this page

This operator provides outputs that represent all the global variables for the current VOP network type. There are no inputs to this operator.

The variables available from this operator will almost always include all of the input variables provided in the Output Variables operator. The difference between these two operators is that the Output Variables operator only provides inputs for those global variables that can be changed.

Every VOP network type has a set of global variables associated with it. These are the variables inherent to the VEX context that the VOP network operates in. For shading contexts (such as Surface and Displacement) these will be variables like the position of the point on the geometry being shaded (P), or the normal of the surface at the point being shaded (N). For SOP or POP Operator networks, these variables include the position of the point being manipulated (P), and the point number of the point being manipulated (ptnum).


Context Type

Specifies the shader context in which the node is active. The shader context can be Surface, Fog, Light, or Displacement.

A Material Shader Builder SHOP can contain several shaders, each defined by a portion of the VOP network the builder SHOP contains. There will be nodes for several shader context types inside. For example, surface and displacement to define a material that assigns color and perturbs the surface geometry.

Other SHOPs, such as Surface Shader Builder or Displacement Shader Builder contain only one type of context. The VOP nodes inside can specify only that context type, so this parameter will be disabled.

Output A Single Variable

When enabled, it shrinks the number of outputs to one and outputs only the global variable chosen from the menu below. This option is very useful when the operator is part of a subnetwork that needs to be accessed by different contexts.

Variable Name

Menu of all available global variables. It works in conjunction with the toggle above it.




The list of available outputs depends on the current VOP network type. The number of outputs depends on whether Output A Single Variable is enabled.

When found in a VEX Surface SHOP Type network, Outputs include the following.


Surface Color.


Surface Opacity.


Surface Alpha.


Surface Position.


Surface Depth.


Direction from Eye (camera) to Surface.

dPds, dPdt

Directions or Derivatives of surface.


Surface Normal.


Surface Geometric Normal.


Position of Eye (camera).

s, t

Parametric s and t coordinate (u, v).


Shading Time.


Change in Position with depth.


Sample Identifier. A sample id to be used with the nextsample() VEX function to generate consistent random samples that don’t change when re-rendering or between frames.


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.

DensityViscosity Example for FLIP Solver dynamics node

This example demonstrates two fluids with different densities and viscosities interacting with a solid object.

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.

SpinningFlipCollision Example for FLIP Solver dynamics node

This scene shows how to create FLIP fluids based on the velocity of geometry by generating new particles from points scattered on the original geometry based on the velocity vectors. It also shows how to set up the original geometry to act as a collision object for the fluid.

PaintedGrog Example for Fluid Object dynamics node

This example creates a torus of paint which is dropped on the Grog character. The Grog character is then colored according to the paint that hits him. This also shows how to have additional color information tied to a fluid simulation.

DiffuseSmoke Example for Gas Diffuse dynamics node

This example demonstrates how to diffuse the density of a smoke simulation using the Gas Diffuse DOP.

TimelessGas Example for Gas Particle to Field dynamics node

This example demonstrates the use of gasParticleToField in Timeless mode.


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.

2dfluid Example for Smoke Object dynamics node

Demonstrates exporting a 2d fluid into COPs where it can be saved to disk as a sequence of image files to then be used as texture maps, displacement maps, etc.

BreakWire Example for Wire Solver dynamics node

This example demonstrates how to break wire constraints on a per point basis. The wire solver is set up to constrain certain points if it finds an attribute named 'pintoanimation'.


This example highlights several features:

  • Geometry area lights

  • Attenuation ramp controls

  • Surface model specular layers

The example consists of a geometry light based on a wireframe of nurbs curves. The attenuation on the light uses colored keys, allowing for different light colors to be produced at different distances from the light. The ground plane shader uses a surface model with two specular components - one wide component and another narrower glossy component to give a multi-layered appearance.

IndirectLightBox Example for Indirect Light object node

This example shows how to set up the indirectlight object for indirect diffuse lighting. The scene consists of a box that has been extruded several times, containing a light source and the camera. The light has been placed so that all light reaching the camera must bounce more than once inside the scene before reaching the camera. The indirectlight object is configured to generate 1000000 photons. To visualize the photon map, change the rendering mode on the light to "Direct Global Photon Map". To adjust the sampling quality, modify the pixel samples or ray samples on the mantra ROP. The rendering engine used in this example is PBR.


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.

VolumeNoiseIso Example for Mantra: VEX Volume Procedural shader node

This example shows how to render an isosurface defined by a cvex shader using mantra’s volume rendering capabilities. A noise field is generated by a cvex shader, which is attached to the VEX Volume Procedural. The volume is shaded by finding the surface where the density crosses 0, and then shading using a simple surface shader that shows the normals.

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.

FluffyTorus Example for Bake Volume geometry node

This example shows how to setup the Bake Volume SOP to compute the lightfield created by the shadowing of a fog volume. It then exports the fields properly to be rendered in Mantra by a constant volume shader.

PathAnalysis Example for Find Shortest Path geometry node

This is an advanced example of how to use the FindShortestPath SOP to prefer "central" paths, based on centraily measures computed using FindShortestPath and AttribWrangle. This helps avoid staying too close to walls where avoidable.

Turn on the Display Option > Optimization > Culling > Remove Backfaces to see inside the space more easily. Try visualizing the different centrality measures using the switch node. The same example without considering the centrality of the path is demonstrated in a side branch of the SOP network, in order to see the difference.


This example uses the foreach sop to apply the same SOP repeatedly to the geometry, accumulating the effect of each pass.

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.

FurPipelineExample Example for Fur geometry node

This example illustrates how custom shaders can be used to define the appearance of fur generated by the Fur SOP.

PaintPoints Example for Paint geometry node

This example demonstrates how to paint scattered points onto the surface of your geometry with a set number of points per area.

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.

volumeanalysis_grad Example for Volume Analysis geometry node

This example shows how to use the Volume Analysis SOP to compute the gradient of a volume and displace the geometry’s points by the gradient.

volumesurface_explicitgrade Example for Volume Surface geometry node

This example shows how to use the Volume Surface SOP to surface an SDF using another volume to specify the triangle sizes.

volumesurface_simple Example for Volume Surface geometry node

This example shows how to use the Volume Surface SOP to surface an SDF using adaptive triangle sizes.

GroupPainted Example for Add Point to Group VOP node

This example demonstrates how to take a painted attribute and build a point group from that attribute using the Add Point to Group VOP and the Create Point Group VOP.

VOPpointgroup Example for Add Point to Group VOP node

Example of building point Groups in a VOP SOP where every other point is added to a new group.

Only point groups are supported in VOPs.

The VOPs you need to learn are:

Add Point To Group VOP, Create Point Group VOP, and Point In Group VOP

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.


This is a simple example of using the If-Then Block VOP with the "true" value coming from outside the If-Then subnet, and the "false" value also coming from outside the If-Then subnet.

A Condition VOP is used based on the "t" Global Variable. When "t" is less then .5, the If-Then gets a "false" Condition, and when "t" is equal to or greater than .5, the If-Then gets a "true" Condition.

In this example, the red color is used if the value fed into the condition is not True, and blue if the condition being fed in is True.

CrinkleSphere Example for Inline Code VOP node

This example demonstrates the use of an Inline Code node that allows you to write VEX code that is put directly into your shader or operator definition.

SimpleMetaImport Example for Meta-Loop Import VOP node

This example demostrates how to use the Meta-Loop Start, Meta-Loop Next and Meta-Loop Import VOPs.

It calculates the sum of the densities of all metaballs in some input geometry, and uses that total to create an image in a Composite Network.

RampParameter Example for Parameter VOP node

This example shows how to control the particle colours using the temperature attributes from a pyro simulation using a Ramp Parameter VOP node.

PointCloudIterateAverage Example for Point Cloud Iterate VOP node

This example shows how the pciterate vop can be used to average together points returned by pcopen. First, a point cloud is generated with a floating point "check" channel initialized to 1 inside a circle in the x-z plane. Then, the points are filtered in a shader by looping using the pciterate vop and averaging the value of the "check" channel. The point cloud used in the example is stored inside the asset as points.pc.

PointCloudWrite Example for Point Cloud Write VOP node

This example shows how the pcwrite vop can be used to write out points to a point cloud file. Render the mantra1 ROP to generate the point cloud, then view the point cloud with gplay. The distribution of points will depend on where mantra shaders are executed - in this case, the mantra ROP is configured to shade hidden surfaces allowing the back faces of the sphere to generate points.

RaytraceVopShader Example for Ray Trace VOP node

This example demonstrates a simple ray traced shader using a vop vex network. To modify the shader properties, create a properties shader in the material and connect it to the output shaders node. You can then add rendering parameters to the properties node. For example to control the number of reflection bounces, you would add the reflect limit parameter.

SensorDeform Example for Sensor Panorama Create VOP node

Example demonstrating sensor creation and how depth information can be extracted using the cone command. This allows the centre sphere to be deform by observed sphere.

See also

VOP nodes