1 #ifndef RixLightFilter_h
2 #define RixLightFilter_h
40 #include "RixShading.h"
65 virtual int GetInterface()
const {
return k_RixLightFilter; }
67 virtual int Init(RixContext &ctx,
char const *pluginPath) = 0;
68 virtual void Finalize(RixContext &) = 0;
76 RtConstPointer instancedata,
77 RtInt
const numSamples,
78 RtInt
const * shadingCtxIndex,
79 RtVector3
const * toLight,
81 RtFloat
const * lightPdfIllum,
90 #define RIX_LIGHTFILTERPLUGINCREATE \
91 extern "C" PRMANEXPORT RixLightFilter *CreateRixLightFilter(const char *hint)
93 #define RIX_LIGHTFILTERPLUGINDESTROY \
94 extern "C" PRMANEXPORT void DestroyRixLightFilter(RixLightFilter *modifier)
114 virtual bool IsEnabled(RtConstPointer instance, RtConstPointer* instanceData)
const = 0;
117 virtual void GetBuiltinVar(RixShadingContext::BuiltinVar, RtInt
const**var)
const = 0;
118 virtual void GetBuiltinVar(RixShadingContext::BuiltinVar, RtFloat
const**var)
const = 0;
119 virtual void GetBuiltinVar(RixShadingContext::BuiltinVar, RtFloat3
const**var)
const = 0;
123 virtual RixSCDetail
GetPrimVar(
char const *name, RtFloat fill,
125 RtFloat
const **radius=NULL)
const = 0;
126 virtual RixSCDetail
GetPrimVar(
char const *name, RtFloat2 fill,
127 RtFloat2
const **var,
128 RtFloat
const **radius=NULL)
const = 0;
129 virtual RixSCDetail
GetPrimVar(
char const *name, RtFloat3 fill,
130 RtFloat3
const **var,
131 RtFloat
const **radius=NULL)
const = 0;
132 virtual RixSCDetail
GetPrimVar(
char const *name,
133 RtConstString **var)
const = 0;
139 virtual int Transform(RixShadingContext::TransformInterpretation interp,
140 char const *fromSpace,
char const *toSpace,
141 RtFloat3 *var, RtFloat *width = NULL)
const = 0;
144 virtual int Transform(RixShadingContext::TransformInterpretation interp,
145 char const *fromSpace,
char const *toSpace,
146 RtFloat3
const * srcVar, RtFloat3 * dstVar,
147 RtFloat
const * srcWidth, RtFloat * dstWidth)
const = 0;
156 virtual int Transform(RixShadingContext::TransformInterpretation interp,
157 char const *fromSpace,
char const *toSpace,
158 RtInt numPts, RtInt
const * shadingCtxIndex,
159 RtFloat3
const * srcVar, RtFloat3 * dstVar,
160 RtFloat
const * srcWidth, RtFloat * dstWidth)
const = 0;
168 virtual void *
Allocate(
size_t n,
size_t size)
const = 0;
178 T *
New(
size_t nObjs)
const
180 T *mem =
static_cast<T*
>(
Allocate(nObjs,
sizeof(T)));
181 return new (mem) T[nObjs];
199 template <
typename T>
200 T *Allocate(RtInt num)
202 if(num == 0)
return NULL;
203 return (T *) m_lfCtx->
Allocate(num,
sizeof(T));