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_imagerneeds 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
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:
lentil_operatorhas been added & connected.
lentil_imagerhas been added & connected.