RenderMan API  23.0
RixLightFilter Class Referenceabstract

#include <RixLightFilter.h>

Inheritance diagram for RixLightFilter:
RixShadingPlugin

Public Types

enum  FilterRadianceModifierProperty { k_Multiplier, k_MaxDistance }
 
enum  LightFilterProperty { k_LinkingGroups, k_numLightFilterProperties }
 
- Public Types inherited from RixShadingPlugin
enum  SynchronizeHints { k_None = 0x00000000, k_All = 0xFFFFFFFF }
 

Public Member Functions

virtual int GetInterface () const override
 
virtual void Filter (RixLightFilterContext const *lfCtx, RtPointer instanceData, int const numSamples, int const *shadingCtxIndex, RtVector3 const *directions, float const *distances, float const *lightPdfsDirect, RixBXLobeWeights *contribution)=0
 
virtual bool GetRadianceModifier (FilterRadianceModifierProperty property, RixLightFilterContext const *lfCtx, RtConstPointer instanceData, float *result) const =0
 
virtual RixSCDetail GetProperty (RtConstPointer instanceData, LightFilterProperty prop, void const **result) const =0
 
- Public Member Functions inherited from RixShadingPlugin
virtual int GetVersion () const
 
virtual int Init (RixContext &ctx, RtUString const pluginPath)=0
 
virtual void Finalize (RixContext &ctx)=0
 
virtual RixSCParamInfo const * GetParamTable ()=0
 
virtual void Synchronize (RixContext &ctx, RixSCSyncMsg syncMsg, RixParameterList const *syncParams)=0
 
virtual void CreateInstanceData (RixContext &rixCtx, RtUString const handle, RixParameterList const *parameterList, InstanceData *instanceData)
 
virtual void SynchronizeInstanceData (RixContext &rixCtx, RtUString const handle, RixParameterList const *instanceParams, uint32_t const editHints, InstanceData *instanceData)
 

Protected Member Functions

 RixLightFilter ()
 
virtual ~RixLightFilter ()
 
- Protected Member Functions inherited from RixShadingPlugin
 RixShadingPlugin (int version)
 
virtual ~RixShadingPlugin ()
 

Additional Inherited Members

- Protected Attributes inherited from RixShadingPlugin
int m_version
 

Detailed Description

RixLightFilter plugins modify the lighting contribution to a surface point after a light has been sampled. Light filters operate over a set of samples that are associated with points in a shading context. All of the array paramenters to Filter() are numSamples in length.

Any one point in the shading context may be represented more than once in these arrays if, for instance, the number of light samples provided to an integrator is greater than one. The shadingCtxIndex gives the index in the shading context corresponding to a particular sample, and can be used as an index into data retrieved from the light filter context, such as built-in and primitive variables.

Definition at line 65 of file RixLightFilter.h.

Member Enumeration Documentation

◆ FilterRadianceModifierProperty

Light filters can be queried as to what effect they will have on radiance. They should return a conservative estimate, since this is used to modifier light selection probabilities. Note that this estimate has no dependence on a shading context. The query is made at the start of rendering, when we build the light selection hierarchy. As such, the floating point result should be applicable across the entire range of influence of the light.

Enumerator
k_Multiplier 
k_MaxDistance 

The amount by which a light's radiance is multiplied.

Definition at line 89 of file RixLightFilter.h.

◆ LightFilterProperty

Enumerator
k_LinkingGroups 
k_numLightFilterProperties 

Definition at line 104 of file RixLightFilter.h.

Constructor & Destructor Documentation

◆ RixLightFilter()

RixLightFilter::RixLightFilter ( )
inlineprotected

Definition at line 116 of file RixLightFilter.h.

◆ ~RixLightFilter()

virtual RixLightFilter::~RixLightFilter ( )
inlineprotectedvirtual

Definition at line 118 of file RixLightFilter.h.

Member Function Documentation

◆ Filter()

virtual void RixLightFilter::Filter ( RixLightFilterContext const *  lfCtx,
RtPointer  instanceData,
int const  numSamples,
int const *  shadingCtxIndex,
RtVector3 const *  directions,
float const *  distances,
float const *  lightPdfsDirect,
RixBXLobeWeights contribution 
)
pure virtual

Called after light sample generation, before bxdf evaluation. Setting the contribution to zero across all lobes will disable shadow ray generation for the sample.

◆ GetInterface()

virtual int RixLightFilter::GetInterface ( ) const
inlineoverridevirtual

Reimplemented from RixShadingPlugin.

Definition at line 68 of file RixLightFilter.h.

◆ GetProperty()

virtual RixSCDetail RixLightFilter::GetProperty ( RtConstPointer  instanceData,
LightFilterProperty  prop,
void const **  result 
) const
pure virtual

◆ GetRadianceModifier()

virtual bool RixLightFilter::GetRadianceModifier ( FilterRadianceModifierProperty  property,
RixLightFilterContext const *  lfCtx,
RtConstPointer  instanceData,
float *  result 
) const
pure virtual

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