53 typedef std::vector<RixChannelId>
ChanIdVec;
224 virtual void IncRef() = 0;
227 virtual void DecRef() = 0;
243 const int integratorCtxIdx,
const RtColorRGB* lgtTrans,
244 const float clamp,
const bool isFinite,
246 const bool isHoldout)
const = 0;
275 int integratorCtxIndex,
286 bool writeOpacityAllowed =
true);
303 bool isHoldout =
false);
317 bool isHoldout =
false);
345 bool isHoldout =
false);
401 bool isSpecular,
unsigned char lpeId);
426 unsigned char m_lpeId;
427 unsigned char m_lpeIndex;
449 const std::vector<short>&
GetState()
const;
450 void SetState(
const std::vector<short>& state);
523 bool firstContribution,
570 bool doStateTransition =
true);
583 std::vector<short> m_state;
void MoveLight(RixShadingContext const *sCtx, int sCtxIndex, RtColorRGB const &thruput, RtColorRGB const *lightTrans, bool firstContribution, RixLPEToken lgtLpeToken)
Call this method at a light event along a light transport path.
Definition: RixLPEInline.h:253
PRMAN_INLINE RixLPEToken GetEvent() const
Definition: RixLPEInline.h:430
RixShadingContext is analogous to a RenderMan grid - it is a group of 1 or more points that may be sh...
Definition: RixShading.h:663
Definition: RixBxdfLobe.h:332
PRMAN_INLINE RixLPEToken GetScatt() const
Definition: RixLPEInline.h:437
virtual RtUString TokenToString(RixLPEToken token) const =0
void SetState(const std::vector< short > &state)
Definition: RixLPEInline.h:184
virtual void Splat(const RixLPEState &accum, RixDisplayServices *dspy, const RtColorRGB &val, const int integratorCtxIdx, const RtColorRGB *lgtTrans, const float clamp, const bool isFinite, const OverwritePolicy overwritePolicy, const bool isHoldout) const =0
~RixLPEState()
Definition: RixLPEInline.h:159
RixLPEState & m_state
Definition: RixLPE.h:361
PRMAN_INLINE unsigned char GetLpeIndex() const
Definition: RixLPEInline.h:449
virtual RixLPEState * AllocateStates(int count)=0
virtual RixLPEToken StringToToken(RtUString str) const =0
void MoveCamera(RixShadingContext const *sCtx, int sCtxIndex)
Call this method at a camera event along a light transport path.
Definition: RixLPEInline.h:222
static PRMAN_INLINE RixLPEToken LgtGrpIdToToken(int lightGroupId)
Convert an integer light group id to an LPE token.
Definition: RixLPEInline.h:125
pxrcore::ColorRGB RtColorRGB
Definition: RiTypesHelper.h:520
RixShadingContext const * m_sCtx
Definition: RixLPE.h:362
RtColorRGB m_lgtTrans
Definition: RixLPE.h:354
bool m_anyCustomLPEs
Definition: RixLPE.h:256
Base class for all Rix interfaces.
Definition: RixInterfaces.h:133
int m_depth
Definition: RixLPE.h:349
PRMAN_INLINE void SplatPerLobe(RixBXActiveLobeWeights &activeLobes, int weightIndex, RtColorRGB const &thruput, bool isFinite, float clamp=1.0f, bool isHoldout=false)
Definition: RixLPEInline.h:500
static const int k_baseLgtGrpTokenOffset
Definition: RixLPE.h:188
int RixLPEToken
Definition: RixInterfaces.h:977
OverwritePolicy
Definition: RixLPE.h:191
PRMAN_INLINE SplatHelper(RixDisplayServices *displaySvc, int integratorCtxIndex, RixLPE &rixLpe, RixLPEState &state, int depth, RixLPEToken lightLpeToken, RixLPEToken lpeGroupId, bool isReflect, RtColorRGB const &eyeTrans, RtColorRGB const &lightTrans, RixShadingContext const *shadingCtx, int shadingCtxIndex, bool writeOpacityAllowed=true)
Definition: RixLPEInline.h:465
bool m_anyLPEs
Definition: RixLPE.h:253
virtual void FreeStates(int count, RixLPEState *states)=0
This struct represents the characteristics of just one lobe of a bxdf.
Definition: RixBxdfLobe.h:63
RixLPEToken m_lgtLpeToken
Definition: RixLPE.h:350
void MoveVertex(RixShadingContext const *sCtx, int sCtxIndex, RixLPEScatterEvent const scatterEvent, RixLPEToken lpeGroupId=RixLPE::k_BLANK)
Invoke this method at an intermediate (non-camera/non-light) scattering event along a light transport...
Definition: RixLPEInline.h:270
PRMAN_INLINE unsigned char GetLpeId() const
Definition: RixLPEInline.h:443
RixLPEToken m_lpeGrpId
Definition: RixLPE.h:351
virtual RixLPEToken GroupAndObjectToToken(RtUString lpeGroup, RtUString objName) const =0
bool m_writeOpacityAllowed
Definition: RixLPE.h:364
bool Broken() const
Definition: RixLPEInline.h:190
const RixLPEAutomata * GetAutomata(int &nautomata) const
Definition: RixLPEInline.h:215
void Reset()
Definition: RixLPEInline.h:164
A compact deterministic finite automata class.
Definition: RixLPEInline.h:69
const RtColorRGB & GetThruput() const
Definition: RixLPEInline.h:209
PRMAN_INLINE bool AnyCustomLPEs() const
Definition: RixLPEInline.h:143
#define PRMAN_INLINE
Definition: prmanapi.h:99
Multiple methods of RixDisplayServices require similar parameters:
Definition: RixIntegrator.h:97
RtColorRGB m_eyeTrans
Definition: RixLPE.h:353
void MoveEmissiveObject(RixShadingContext const *sCtx, int sCtxIndex, RtColorRGB const &thruput, RixLPEToken lpeGroupId=RixLPE::k_BLANK)
Call this method at an emissive object event along a light transport path.
Definition: RixLPEInline.h:240
RixLPE()
Definition: RixLPE.h:198
RixLPEState(RixLPEAutomata const *automata, const int nautomata)
Definition: RixLPEInline.h:151
PRMAN_INLINE void SplatBeauty(RtColorRGB const &val, RtColorRGB &trans) const
Definition: RixLPEInline.h:716
PRMAN_INLINE RixLPEScatterEvent(RixBXLobeSampled lobeSampled)
Definition: RixLPEInline.h:361
int m_integratorCtxIdx
Definition: RixLPE.h:359
PRMAN_INLINE bool GetValid() const
Definition: RixLPEInline.h:455
std::vector< short > & GetState()
Definition: RixLPEInline.h:172
PRMAN_INLINE ~SplatHelper()
Definition: RixLPEInline.h:495
RixChannelId m_beautyChanId
Definition: RixLPE.h:259
bool m_isReflect
Definition: RixLPE.h:352
Represents the LPE system state of a light transport path.
Definition: RixLPE.h:439
std::vector< RixChannelId > ChanIdVec
Definition: RixLPE.h:51
PRMAN_INLINE void SplatValue(RtColorRGB const &color, bool isFinite, float clamp=1.0f)
Definition: RixLPEInline.h:695
unsigned int RixChannelId
Definition: RixIntegrator.h:55
int m_shadingCtxIdx
Definition: RixLPE.h:363
This struct represents the characteristics of potentially several lobes of a bxdf in aggregate...
Definition: RixBxdfLobe.h:178
RixLPEFlags
Definition: RixLPE.h:177
RixLPE & m_rixLpe
Definition: RixLPE.h:360
pxrcore::UString RtUString
Definition: RiTypesHelper.h:682
virtual int GetRefCnt() const =0
PRMAN_INLINE void SplatEmission(RtColorRGB const &emission, RtColorRGB const &thruput, bool isFinite, float clamp=1.0f, bool isHoldout=false)
Definition: RixLPEInline.h:633
bool Test(const RixLPEToken dir, const RixLPEToken sca, const RixLPEToken custom)
Definition: RixLPEInline.h:198
PRMAN_INLINE bool AnyLPEs() const
Definition: RixLPEInline.h:136
RixDisplayServices * m_displaySvc
Definition: RixLPE.h:358
PRMAN_INLINE void SplatLPE(RtColorRGB const &val, RtColorRGB const *lightTrans, bool isFinite, float clamp, int lpeId=-1, OverwritePolicy overwritePolicy=k_Overwrite, bool isHoldout=false)
Definition: RixLPEInline.h:729
RixLPEBuiltInTokens
Definition: RixLPE.h:131
virtual ~RixLPE()
Definition: RixLPE.h:250