37 #ifndef RixLightFilter_h 38 #define RixLightFilter_h 78 int const numSamples,
int const* shadingCtxIndex,
79 RtVector3 const* directions,
float const* distances,
99 void* instanceData,
float* result)
const = 0;
118 void const** result)
const = 0;
133 int const numSamples,
int const* shadingCtxIndex,
134 RtVector3 const* directions,
float const* distances,
150 #define RIX_LIGHTFILTERPLUGINCREATE \ 151 extern "C" PRMANEXPORT RixLightFilter* CreateRixLightFilter(const char* hint) 153 #define RIX_LIGHTFILTERPLUGINDESTROY \ 154 extern "C" PRMANEXPORT void DestroyRixLightFilter(RixLightFilter* modifier) 174 virtual bool IsEnabled(
void const* instance,
void** instanceData)
const = 0;
184 float const** radius = NULL)
const = 0;
186 float const** radius = NULL)
const = 0;
188 float const** radius = NULL)
const = 0;
199 float* width = NULL)
const = 0;
205 float* dstWidth)
const = 0;
217 float const* srcWidth,
float* dstWidth)
const = 0;
225 virtual void*
Allocate(
size_t n,
size_t size)
const = 0;
235 T*
New(
size_t nObjs)
const 237 T* mem =
static_cast<T*
>(
Allocate(nObjs,
sizeof(T)));
238 return new (mem) T[nObjs];
257 template <
typename T>
260 if (num == 0)
return NULL;
261 return (T*)m_lfCtx->
Allocate(num,
sizeof(T));
291 void* instanceData)
const = 0;
RixShadingContext is analogous to a RenderMan grid - it is a group of 1 or more points that may be sh...
Definition: RixShading.h:663
int GetInterface() const override
Definition: RixLightFilter.h:69
virtual void EndMutableContext(RixShadingContext *ctx) const =0
Terminates the mutable shading context created by CreateMutableContext().
virtual int Transform(RixShadingContext::TransformInterpretation interp, RtUString const fromSpace, RtUString const toSpace, RtFloat3 *var, float *width=NULL) const =0
Transform an array of RtFloat3 (and optional width) the same size as the numPts in the RixLightFilter...
virtual RixSCDetail GetProperty(void *instanceData, LightFilterProperty prop, void const **result) const =0
RixLight This base class defines the interface for light sources.
Definition: RixLight.h:117
pxrcore::ColorRGB RtColorRGB
Definition: RiTypesHelper.h:520
#define k_RixShadingVersion
Definition: RixShading.h:97
Rix interfaces are obtained from an RixContext.
Definition: RixInterfaces.h:172
RixLightFilter()
Definition: RixLightFilter.h:121
BuiltinVar
Definition: RixShading.h:937
RixShadingPlugin is the base class for RixBxdfFactory, RixDisplacementFactory, RixDisplayFilter, RixIntegrator, RixLightFilter, RixLightFactory, RixPattern, RixProjection, and RixSampleFilter.
Definition: RixShading.h:168
The amount by which a light's radiance is multiplied.
Definition: RixLightFilter.h:93
int numPts
Definition: RixLightFilter.h:170
The RixLightFilterContext provides limited access to data from the shading context associated with a ...
Definition: RixLightFilter.h:167
virtual void ShadowFilter(RixLightFilterContext const *lfCtx, void *instanceData, int const numSamples, int const *shadingCtxIndex, RtVector3 const *directions, float const *distances, RixBXLobeSampled const *incidentLobeSampled, RtColorRGB *transmissions)
Called after Filter has run and default shadow rays have been traced.
Definition: RixLightFilter.h:132
RixSCDetail
RixSCDetail enumerates the valid sizing qualifiers for SC parameters.
Definition: RixShading.h:432
~RixLightFilterContext() override
Definition: RixLightFilter.h:269
Definition: RixLightFilter.h:109
virtual RixLight * GetCurrentLight() const =0
Get the current light associated with the context of execution.
This struct represents the characteristics of just one lobe of a bxdf.
Definition: RixBxdfLobe.h:63
virtual void * Allocate(size_t n, size_t size) const =0
Allocate: fast memory allocation support from a memory pool tailored to light modifier plugins...
Definition: RixBxdfLobe.h:428
Definition: RiTypesHelper.h:82
TransformInterpretation
Definition: RixShading.h:1113
Definition: RixShading.h:116
pxrcore::Float3 RtFloat3
Definition: RiTypesHelper.h:69
Allocator is a utility (fully inlined) class to assist with tedious memory pool allocations.
Definition: RixLightFilter.h:252
virtual RixSCDetail GetPrimVar(RtUString const name, float fill, float const **var, float const **radius=NULL) const =0
Retrieve primitive variables from the underlying shading context.
virtual bool GetRadianceModifier(FilterRadianceModifierProperty property, RixLightFilterContext const *lfCtx, void *instanceData, float *result) const =0
T * Allocate(int num)
Definition: RixLightFilter.h:258
LightFilterProperty
Definition: RixLightFilter.h:105
virtual RixShadingContext * CreateMutableContext(RixLightFilter const *filter, void *instanceData) const =0
Creates a mutable shading context that can be used to re-evaluate connected inputs to the lightfilter...
RixLightFilter plugins modify the lighting contribution to a surface point after a light has been sam...
Definition: RixLightFilter.h:66
virtual void GetBuiltinVar(RixShadingContext::BuiltinVar, int const **var) const =0
Retrieve built-in variables from the underlying shading context.
Definition: RixLightFilter.h:113
~RixLightFilter() override
Definition: RixLightFilter.h:123
Definition: RixLightFilter.h:92
pxrcore::Matrix4x4 RtMatrix4x4
Definition: RiTypesHelper.h:74
Represents the LPE system state of a light transport path.
Definition: RixLPE.h:439
Allocator(RixLightFilterContext const *lfCtx)
Definition: RixLightFilter.h:255
pxrcore::UString RtUString
Definition: RiTypesHelper.h:682
FilterRadianceModifierProperty
Light filters can be queried as to what effect they will have on radiance.
Definition: RixLightFilter.h:90
T * New(size_t nObjs) const
New is a utility (fully inlined) non-virtual method to assist with tedious memory allocation tasks...
Definition: RixLightFilter.h:235
virtual void Filter(RixLightFilterContext const *lfCtx, void *instanceData, int const numSamples, int const *shadingCtxIndex, RtVector3 const *directions, float const *distances, float const *lightPdfsDirect, RixBXLobeWeights *contribution)=0
Called after light sample generation, before bxdf evaluation.
RtFloat3 RtVector3
Definition: RiTypesHelper.h:72
Definition: RixLightFilter.h:114
virtual bool IsEnabled(void const *instance, void **instanceData) const =0
Determine whether or not the given instance of a light filter is active.
#define PIXAR_ARGUSED(x)
Definition: prmanapi.h:170