RixLPE::SplatHelper Class Reference

RixLPE::SplatHelper Class Reference

#include <RixLPE.h>

Public Member Functions

PRMAN_INLINE SplatHelper (RixDisplayServices *displaySvc, RtInt integratorCtxIdx, RixLPE &rixLpe, RixLPEState &state, RtInt depth, RtInt lgtGrpId, RixLPEToken lpeGrpId, bool isReflect, RtColorRGB const &eyeTrans, RtColorRGB const &lgtTrans, RixShadingContext const *sCtx, RtInt shadingCtxIdx)
 
PRMAN_INLINE void SplatPerLobe (RixBXActiveLobeWeights &activeLobes, int weightIndex, RtColorRGB const &shadowWeight, RtColorRGB const &thruput, bool isFinite, RtFloat clamp=1.0f, RtColorRGB const &backgroundColor=RixConstants::k_ZeroRGB, bool isShadowCollector=false)
 
PRMAN_INLINE void SplatEmission (RtColorRGB const &emission, RtColorRGB const &thruput, bool isFinite, RtFloat clamp=1.0f, bool isShadowCollector=false)
 
PRMAN_INLINE void SplatValue (RtColorRGB const &color, RtColorRGB const &shadowWeight, bool isFinite, RtFloat clamp=1.0f, RtColorRGB const &backgroundColor=RixConstants::k_ZeroRGB, bool isShadowCollector=false)
 
PRMAN_INLINE void SplatBeauty (RtColorRGB const &val, RtFloat trans=0.0f) const
 Helper routine to splat a color/alpha to the beauty channel id.
 
PRMAN_INLINE void SplatLPE (RtColorRGB const &val, RtColorRGB const *lgtTrans, RtFloat alpha, bool isFinite, RtFloat clamp, int lpeId=-1, RtColorRGB const *masks=0, OverwritePolicy overwritePolicy=k_Overwrite)
 
PRMAN_INLINE void SplatShadowLPE (RtColorRGB const *lgtTrans, RtColorRGB const &shadowWeight, RtFloat alpha, bool isFinite, RtFloat clamp, int lpeId=-1, RtColorRGB const *masks=0, OverwritePolicy overwritePolicy=k_Overwrite, RtColorRGB const &backgroundColor=RixConstants::k_ZeroRGB, bool isShadowCollector=false)
 
PRMAN_INLINE void SplatNfaLPE (RtColorRGB const &val, RtColorRGB const *lgtTrans, RtFloat alpha, bool isFinite, RtFloat clamp, int lpeId=-1, RtColorRGB const *masks=0, OverwritePolicy overwritePolicy=k_Overwrite)
 
PRMAN_INLINE void SplatShadowNfaLPE (RtColorRGB const *lgtTrans, RtColorRGB const &shadowWeight, RtFloat alpha, bool isFinite, RtFloat clamp, int lpeId=-1, RtColorRGB const *masks=0, OverwritePolicy overwritePolicy=k_Overwrite, RtColorRGB const &backgroundColor=RixConstants::k_ZeroRGB, bool isShadowCollector=false)
 

Public Attributes

RtInt m_depth
 
RtInt m_lgtGrpId
 
RixLPEToken m_lpeGrpId
 
bool m_isReflect
 
RtFloat m_eyeTran
 
RtColorRGB m_lgtTrans
 
RixDisplayServices * m_displaySvc
 
RtInt m_integratorCtxIdx
 
RixLPEm_rixLpe
 
RixLPEStatem_state
 
RixShadingContext const * m_sCtx
 
RtInt m_shadingCtxIdx
 

Detailed Description

Represents the necessary information that we'll need to write out the standard AOV channels.

Constructor & Destructor Documentation

PRMAN_INLINE RixLPE::SplatHelper::SplatHelper ( RixDisplayServices *  displaySvc,
RtInt  integratorCtxIdx,
RixLPE rixLpe,
RixLPEState state,
RtInt  depth,
RtInt  lgtGrpId,
RixLPEToken  lpeGrpId,
bool  isReflect,
RtColorRGB const &  eyeTrans,
RtColorRGB const &  lgtTrans,
RixShadingContext const *  sCtx,
RtInt  shadingCtxIdx 
)

Constructor overload that sets all fields. Pass in the current RixLPEState instance up to this point along the light path (the 'state' parameter), along with the light group id of the current sample ('lgtGrpId'), the camera to primary hit transmission ('eyeTrans'), and the shadowing term ('lgtTrans').

Member Function Documentation

PRMAN_INLINE void RixLPE::SplatHelper::SplatEmission ( RtColorRGB const &  emission,
RtColorRGB const &  thruput,
bool  isFinite,
RtFloat  clamp = 1.0f,
bool  isShadowCollector = false 
)

Call this routine to splat emissive objects to the beauty and LPE AOVs when performing the direct lighting optimization. We want to perform the splat for some AOVs only if each component of the beauty RGB value is finite. Also, in the case of clamping, we want to use a consistent clamp factor across all illumination AOVs, so pass in the clamping scalar factor as an argument to this method (default is 1.0, or no clamping).

PRMAN_INLINE void RixLPE::SplatHelper::SplatLPE ( RtColorRGB const &  val,
RtColorRGB const *  lgtTrans,
RtFloat  alpha,
bool  isFinite,
RtFloat  clamp,
int  lpeId = -1,
RtColorRGB const *  masks = 0,
OverwritePolicy  overwritePolicy = k_Overwrite 
)

Helper routine to splat a color/alpha to the array of channel ids associated with the current light path expression automata state.

PRMAN_INLINE void RixLPE::SplatHelper::SplatNfaLPE ( RtColorRGB const &  val,
RtColorRGB const *  lgtTrans,
RtFloat  alpha,
bool  isFinite,
RtFloat  clamp,
int  lpeId = -1,
RtColorRGB const *  masks = 0,
OverwritePolicy  overwritePolicy = k_Overwrite 
)

Helper routine to splat a color/alpha to the array of channel ids associated with the current light path expression automata state.

PRMAN_INLINE void RixLPE::SplatHelper::SplatPerLobe ( RixBXActiveLobeWeights activeLobes,
int  weightIndex,
RtColorRGB const &  shadowWeight,
RtColorRGB const &  thruput,
bool  isFinite,
RtFloat  clamp = 1.0f,
RtColorRGB const &  backgroundColor = RixConstants::k_ZeroRGB,
bool  isShadowCollector = false 
)

Call this routine to splat per-lobe illumination to the beauty and LPE AOVs when performing the direct lighting optimization. We want to perform the splat for some AOVs only if each component of the beauty RGB value is finite. Also, in the case of clamping, we want to use a consistent clamp factor across all illumination AOVs, so pass in the clamping scalar factor as an argument to this method (default is 1.0, or no clamping).

PRMAN_INLINE void RixLPE::SplatHelper::SplatValue ( RtColorRGB const &  color,
RtColorRGB const &  shadowWeight,
bool  isFinite,
RtFloat  clamp = 1.0f,
RtColorRGB const &  backgroundColor = RixConstants::k_ZeroRGB,
bool  isShadowCollector = false 
)

Call this routine to splat a single illumination contribution to the beauty and LPE AOVs. The RixLPEState instance passed by reference into the SplatHelper class constructor should have already performed the final state transition that corresponds to hitting a geolight or emissive object just prior to calling this routine, and then this method will accumulate the illumination contribution for the appropriate set of LPE AOVs (along with the beauty display channel).

Member Data Documentation

RtInt RixLPE::SplatHelper::m_depth

The following fields represent the information that we'll need to write out the standard set of AOVs.

RixDisplayServices* RixLPE::SplatHelper::m_displaySvc

Cached references to the display services, context index, rixLpe, and the state of the LPE automata.


The documentation for this class was generated from the following file: