AW Prman Envlight

This asset uses partial point clouds in prman 14+ to compute occlusion, reflection occlusion, colorbleeding, and subsurface scattering in a single light shader. It also has limited support for photon based GI and caustics.

This HDA automates the baking steps required for rendering these various pointcloud based effects. The possibly unusual part is that it only works with "partial" pointclouds. This technique allows pointclouds to do most of the important work, but the majority of calculations take effect at render-time. This allows you to bake less frequently, and a lot of parameters can be adjusted after the baking process that you would normally have to re-bake to achieve in standard workflows.


  • Houdini 9.5.254+ (commercial only)
  • prman 14 +

For more detailed information about this asset you can view the help card HERE

Download v2.2 For RenderMan Pro Server 14

AW Prman Envlight 2.2 (updated 10/08/09 – Bug Fixes)

Download v2.5 For RenderMan Pro Server 15

AW Prman Envlight 2.5 (updated 10/08/09 – Bug Fixes)

Bug Fixes

Photon based effects had a small error which prevented them from working correctly.

Found a few errors in the python module that were preventing colorbleeding from working correctly. Also changed the default directory for unsaved hip files to $HOME/envlight as opposed to $TEMP, which isn't writable in all Linux distros.

New Features

Environment mapped Reflection Occlusion with 0.4 coneangle and 0.005 maxsolidangle.

  • Added a few features from PRMan 15. Rasteresolutiion is now present as a quality knob and my light shader exports the new vector as "o_illuminationdir".
  • You can vary albedo with a texture map with the string user attribute myalbedo
  • Changed the way occlusion data is baked in the pre-baking pass. I used a light shader previously, but now I'm using a surface shader in the same way colorbleeding and SSS are done.
  • The Geometry Light mode for colorbleeding has been updated. Objects in your HIP can now take a Float User Attribute called "lightpower" to scale the self-illumination effect. Values over 10000 are a good starting place.
  • Support for Reflection Occlusion with the option to specify an environment map. Note: you must use a surface shader that sends a reflection vector to the light. This shader will do this. HERE. More info below if you'd like to roll your own.
If you want to write your own it's very simple. All you need to do is use the message passing technique shown below in your surface shaders or co-shader

 1             vector R = reflect(I,normalize(N));
 2             normal Ns = shadingnormal(N);
 4             /* indirect illumination */
 5             color indirect = 0;
 6             illuminance("environment", P, Ns, PI/2,
 7                         "lightcache", "refresh",
 8                         "send:light:nvec", Ns,
 9                         "send:light:refl", R)
10             {
12                indirect += Cl;
13             }

Example Usage