A video showing how to setup lentil in Houdini. The scene file is provided at the bottom of the page.
The bidirectional component runs after the light integration has already been completed. When looping over all the samples at the filtering stage, it detects high intensity samples with a luminance exceeding param: bidir_min_luminance (Trigger Treshold). When one of these high intensity samples is found, it will re-integrate its energy over many rays shot backwards through the lens.
In the /shop context, create an Arnold Shader Network
. Inside, add either a lentil_camera
node. Create a Camera Output
node and connect. The automatically created Material Output
node can be removed.
The next step is to link the shader to a Houdini camera. In the /obj context, select your camera node. In the camera parameters, inside of the arnold submenu there's a parameter Camera Shader
. Enter the path to the shader there.
From here on, the parameters in the depth of field tab will not work any more. Instead, you need to control the parameters (focal length, focus distance, ...) on the lentil_camera
node in the /shop context.
Set the Units param: units. Set this to meters if you work in the default houdini scale (1unit=1meter). You can set this to centimeter if you consider 1 unit 1 centimeter, etc. Note that this is for internal conversion, e.g the focus_distance is always supplied in centimeters, even if the unit param would be set to M.
Set the bidirectional sample multiplier param: bidir_sample_mult. The bokeh samples are decoupled from the AA sample count. A good interactive baseline is around 1-5
, although you might want to increase this to 50-100
when dealing with very small highlights, or decrease it when dealing with larger high luminance areas. Lentil will automatically modulate the sample count based on the screenspace area footprint of the bokeh.
Set the minimum luminance a sample needs to have to be re-integrated using param: bidir_min_luminance (Trigger Treshold). Luminance equals r*0.21 + g*0.71 + b*0.072
.
In the /out context, add a lentil_operator
node and connect it to the arnold ROP. This operator will duplicate all AOV's at rendertime and automatically insert the correct lentil filter.
In the /out context, create an Arnold Imager Builder
. Inside, add a lentil_imager
node & connect to Imager Output
node.
lentil_imager
needs to be the first imager in the imager stack. It cannot accept inputs from other imagers, unlike the default arnold imagers.
The next step is to link the imager inside the Arnold ROP. Simply put the path to the recently created lentil_imager
.
A debug mode is provided to check which samples are going to be triggering the bidirectional sampling. Enable it with the bidir_debug
parameter in the camera settings. Make sure you adjust param: bidir_min_luminance to keep the white area around the highlights. Supersampling large diffuse areas is simply a waste of time.
The bidirectional sampling only kicks into action when:
3
.lentil_operator
has been added & connected.lentil_imager
has been added & connected.0
.0
.