40 #include "RixShading.h"
139 enum IntegratorIntent
143 k_MaterialAndLightSamples
148 k_IgnoreFixedSampleCount = 0,
149 k_RespectFixedSampleCount = 1,
150 k_ReducedFixedSampleCount = 2
155 unsigned SaveSamples:1;
156 unsigned RestoreSamples:1;
157 unsigned RESERVED:30;
165 virtual void Begin(RixShadingContext
const *sCtx,
167 RixBXEvaluateDomain dom,
170 RtInt *fixedSampleCount = NULL,
172 int parentIndirectCount = 1) = 0;
175 virtual void GenerateSamples(RtInt numSamples,
181 RixBXLobeWeights *contribution,
183 RtFloat *lightPdfIllum,
189 RixBXLobeTraits *lobesWanted,
190 RixBXLobeWeights *evaluatedMaterialWeights,
191 RtFloat *evaluatedMaterialFPdf,
192 RtFloat *evaluatedMaterialRPdf,
193 RixBXLobeTraits *lobesEvaluated,
196 RtColorRGB *throughput = NULL
200 virtual void GenerateSamples(RtInt numSamples,
206 RixBXLobeWeights *contribution,
208 RtFloat *lightPdfIllum,
209 RtFloat *lightPdfEmit,
211 RtFloat *solidAngToArea,
217 RixBXLobeTraits *lobesWanted,
218 RixBXLobeWeights *evaluatedMaterialWeights,
219 RtFloat *evaluatedMaterialFPdf,
220 RtFloat *evaluatedMaterialRPdf,
221 RixBXLobeTraits *lobesEvaluated,
224 RtColorRGB *throughput = NULL,
228 RtFloat * volForwardPdf = NULL,
229 RtFloat * volReversePdf = NULL,
230 RtFloat * volCrossPdf = NULL
234 virtual void EvaluateSamples(RtInt numSamples,
239 RixBXLobeWeights *weights,
240 RixBXLobeSampled *lobeSampled,
243 RixBXLobeWeights *contribution,
245 RtFloat *lightPdfIllum,
248 RtColorRGB *throughput = NULL
252 virtual void EvaluateSamples(RtInt numSamples,
257 RixBXLobeWeights *weights,
258 RixBXLobeSampled *lobeSampled,
261 RixBXLobeWeights *contribution,
263 RtFloat *lightPdfIllum,
264 RtFloat *lightPdfEmit,
266 RtFloat *solidAngToArea,
269 RtColorRGB *throughput = NULL,
273 RtFloat * volForwardPdf = NULL,
274 RtFloat * volReversePdf = NULL,
275 RtFloat * volCrossPdf = NULL
279 virtual void BeginEmission(Mode m, RtInt *fixedSampleCount = NULL) = 0;
293 virtual void GenerateEmission(RtInt numPts,
294 RtInt *integratorCtxIds,
300 RixBXLobeWeights *contribution,
303 RixShadingContext
const***shadeCtxs,
305 RtVector3 *lightNorm,
307 RtFloat *lightPdfIllum,
308 RtFloat *lightPdfEmit,
312 RtFloat *solidAngToArea,
313 RtInt *directIllumDisabled = NULL,
322 RtFloat * volForwardPdf = NULL,
323 RtFloat * volReversePdf = NULL,
324 RtFloat * volCrossPdf = NULL
327 virtual void End() = 0;
331 virtual int GetNumLightGroups() = 0;
332 virtual int GetLightGroup(
const char *name) = 0;
333 virtual const char *GetLightGroupName(
int i) = 0;
334 virtual int GetTotalFixedSamples() = 0;
338 RixShadingContext
const *shadingCtx;
339 RixBXEvaluateDomain domain;