[SESI logo]

VEX Language Reference - Version 7.0

Side Effects Software Inc. 2004

Changes since Houdini 5.5

These are highlights of major changes since the 5.5 release of houdini.

  • Compiler Changes
  • Function Additions/Modifications
  • Area Sampling and Global Illumination
  • The new Photon Context

  • Compiler Changes

  • There is now a pragma to give a hint that the string parameter refers to a path to an operator. Please see the section explaining #pragma hint

  • Function Additions/Modifications

  • For the shading contexts, the shadowmap() function has been re-written. Many artifacts and quality issues should disappear and the quality of z-mapped shadows should be improved dramatically.

  • The nrandom() function can now generate random numbers using different "schemes". The current schemes supported are:
  • default - Previous behaviour using a fast random number generator.
  • twister - Random number generation using the Mersenne Twister.
  • qstrat - Quasi-Stratified random number generation.
  • The nrandom() function has a new form which generates pairs of random numbers:
    nrandom(float &x, &y, [string scheme])

  • Many ray tracing functions have been augmented with additional optional arguments to control behaviour of rays. This includes area sampling, maximum intersection distance limiting and hit/miss controls.

  • There is a new SOP context function called addvariablename(string aname; string vname) which allows you to set up local variables in the same manner as the AttribCreate SOP.

  • There are new SOP context functions called getneighbourcount(int ptnum, input) and getneighbour(int ptnum, neighbournum, input) which allow the querying of point connectivity within a vex SOP.

  • There is a new function to intersect a ray against a 3D texture map: intersect3d().

  • There are new functions to mimic the houdini expression functions rand(), noise(), snoise(), turb(), and sturb(). Documentation may be found here and here.

  • Area Sampling and Global Illumination

  • All functions which perform ray-tracing (trace(), refractlight(), reflectlight(), fastshadow(), filtershadow(), hittest()) can take optional parameters to cause area sampling to be done.

  • The new irradiance function can be used to compute irradiance in mantra. Irradiance is computed by sampling stochastically over the hemisphere and computing the incoming illumination from the other geometry in the scene.

  • The new occlusion function can be used to compute ambient occlusion in mantra. Like the irradiance function, the hemisphere is sampled. But rather than computing the illumination from the rest of the scene, only occlusion testing is performed. This can be much faster than irradiance computation.

  • The new photonmap function can be used to evaluate a photon texture. Photon maps can be generated using mantra or i3dconvert. The photonmap function is available in all VEX contexts (not only shading).


  • There is a new VEX context to construct shaders for photon shading. This context is invoked when mantra is generating photon maps.



    Copyright © 1999-2004 Side Effects Software Inc.
    477 Richmond Street West, Toronto, Ontario, Canada M5V 3E7