Page tree

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.


LPE Outputs

Carousel Image Slider

Carousel Image Slider

Pig model by Tom Painter of Bigman 3D

Custom LPE

RenderMan for Maya

A custom LPE can be added in RenderMan Controls' Add Channels/Outputs:

RenderMan for Katana

Custom LPE is specified via PrmanOutputChannelDefine's Add Source:

LPE Macro

If the custom LPE is useful for other shots, you can add your custom LPE by creating a macro in rendermn.ini file. The custom LPE will appear in the RenderMan for Maya LPE list after relaunching Maya.

For example:

Code Block
/prman/lpe/macro/myDiffuse    CD<L.>

It is important to use <L.> instead of L so that it will be compatible with light groups. Otherwise, the renderer will output a warning.


The lpe: prefix will be automatically added to your macro's name when the file is parsed.


LPE Groups

LPE group lpegroup allows us to specify which object(s) we want to be use for the LPE channel.

RenderMan for Maya

In RfM, we add a lpegroup by selecting the objects and add the lpegroup RenderMan attribute.

RenderMan for Katana

In RfK, we add a lpegroup via PrmanObjectSettings' attributes/identifier/lpegroup.


Code Block
Attribute "identifier" "string lpegroup" ["ground"]
DisplayChannel "varying color plane2Shadow" "string source" ["color lpe:shadows;C<.[DS]'ground'><L.>"]

Predefined lpegroup

For the built-in LPE such as shadowcollector or reflectioncollector, it assumes a predefined lpegroup named "collector". So for the objects that we want to collect shadow or reflection, we can simply name its lpegroup to "collector". Specifying lpe:shadowcollector will collect the shadow for these objects.

Advanced lpegroup logic

You can use the usual regular expression character classes syntax to define more complex LPEs by considering each lpegroup as a single character.

For instance, provided you are using lpegroups "foo" and "bar", you can define the following LPEs:

Code Block


Light Groups

By default, LPEs retrieve the response to all lights in the scene. To limit the LPE to the contribution due to a single light or set of lights, assign each light to the group by setting the __group parameter on each light to the same name.

For the short LPE name, suffix the name with '_' followed by the light group name. For the long expression, place the light group name in single quotes inside the LPE.

For instance, say we have a light group named "key":

Using LPE name:

Code Block
DisplayChannel "varying color lpe:diffuse_key"

Using LPE name:

Code Block
DisplayChannel "varying color lpe:CD<L.'key'>"


Per-Lobe LPEs

Bxdfs may have more than one diffuse or specular lobe which are summed for D and S, respectively. However, in some situations, it may be desirable to output a specific lobe separately.

For example, some PxrLM materials have a Clearcoat lobe. Normally this is summed under the S token. Routing this lobe to the S2token will allow you to use S2 in your LPE's. Up to 4 diffuse lobes and 8 specular lobes are available for LPE's. By default, S1 contains all the specular lobes, so use any higher tokens such as S2 for your per-lobe LPE's.

Code Block
Option "lpe" "string specular2" ["Clearcoat"]
DisplayChannel "color lpe:CS2<L.>"


This will cause a slight performance penalty but may be desirable to see lobes independently.

LPE Prefixes

  • unoccluded - returns unoccluded result.
  • noclamp - returns unclamp result.
  • nothruput - does not apply thruput (thruput is the accumulative albedo of the rayhit object).
  • shadows - returns collected shadows.
  • holdout - holdout LPE that directs the LPE output to the beauty channel.
  • overwrite - instead of outputting the accumulated result, overwrite it. One example of using this is for the albedo output where we do not want an accumulated result.
  • noinfinitecheck - do not do any infinite check.


LPE Tokens

  • C camera
  • D diffuse
  • S any specular * S1 specular1 * S2 specular2 * ...
  • D any diffuse * D1 diffuse1 * D2 diffuse2 * ...
  • R reflection
  • O emissive object
  • L geometric area light
  • T transmission (refraction/subsurface)
  • <> specifies <ScatteringType ScatteringEvent lpegroup>
    • Scattering types: L (light), T (transmission), R (relection), or O (emissive object)
    • Scattering events: D (diffuse), S (specular).
    • lpegroup: This is optional. If specified, the LPE only applies to that lpegroup.
  • () is for grouping.
  • [] is for regular expression. []* means 0 or more. []+ means 1 or more.

User Defined Signal

  • U token specifies a user defined signal. A Bxdf can output any user defined signal via the RixBXLobeWeights class. There are U1 to U8. By default, all user defined signals are set to U1.
  • If you have more than one user defined signal, it is important to direct each user defined signal to a different U token by setting them in rendermn.ini. Otherwise, all user defined signals that are assigned to the same U token will override each others!
  • U2 is set to the albedo output in the installed rendermn.ini.
Code Block
/prman/lpe/user2                Albedo


  • <L.> means Light scattering type with all scattering events. For light group AOVs, using <L.> is required instead of L.
  • lpe:CD<L.> means camera with diffuse scattering event for light scattering type.
  • lpe:CO means camera with emissive objection (since emissive does not need any light, there is no L).