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 |
RixLPE & | m_rixLpe |
RixLPEState & | m_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: