42 #include "RiTypesHelper.h"
201 IndirectResult(
void* _learningNode,
const RtPoint3& _currP,
const RtPoint3& _camP,
float _r,
const RtVector3& _wo,
float _bxdfResponse,
int _id,
int _f)
202 :
learningNode(_learningNode),
currP(_currP),
camP(_camP),
nodeR(_r),
wo(_wo),
hitP(0.0f, 0.0f, 0.0f),
bxdfResponse(_bxdfResponse),
id(_id),
faceIdx(_f),
radianceIn(0.0f),
transmission(1.0f),
hasResults(false) {}
265 int* fixedSampleCount =
nullptr,
267 int depth = 0,
int parentIndirectCount = 1) = 0;
362 int numLightSamples,
RixRNG* rixRNG,
367 RtVector3* directionsToSamples,
368 RtNormal3* lightNormals,
369 float* distancesToSamples,
372 RtColorRGB* transmissions,
373 RtColorRGB* volumeEmissions,
374 float* directLightingPdfs,
375 float* selectionProbs,
381 float* evaluatedMaterialFPdfs,
382 float* evaluatedMaterialRPdfs,
388 RtColorRGB
const* pathThroughputs =
nullptr,
446 int numLightSamples,
RixRNG* rixRNG,
451 RtVector3* directionsToSamples,
452 RtNormal3* lightNormals,
453 float* distancesToSamples,
456 RtColorRGB* transmissions,
457 RtColorRGB* volumeEmissions,
458 float* directLightingPdfs,
459 float* selectionProbs,
461 float* emissionPositionPdfs,
462 float* emissionDirectionPdfs,
463 float* solidAngleToAreaFactors,
470 float* evaluatedMaterialFPdfs,
471 float* evaluatedMaterialRPdfs,
477 RtColorRGB
const* pathThroughputs =
nullptr,
509 RixRNG* rixRNG,
float* maxDistances, RtVector3* samplePositions,
float* selectionProbs,
510 float* segmentMinT,
float* segmentMaxT) = 0;
594 int numMaterialSamples,
RixRNG* rixRNG,
595 RtVector3
const* directions,
601 float const* materialPdfs,
609 RtColorRGB* transmissions,
610 RtColorRGB* volumeEmissions,
611 float* directLightingPdfs,
612 float* selectionProbs,
613 RtNormal3* lightNormals,
618 RtColorRGB
const* pathThroughputs =
nullptr
673 int numMaterialSamples,
RixRNG* rixRNG,
674 RtVector3
const* directions,
680 float const* materialPdfs,
688 RtColorRGB* transmissions,
689 RtColorRGB* volumeEmissions,
690 float* directLightingPdfs,
691 float* selectionProbs,
693 float* emissionPositionPdfs,
694 float* emissionDirectionPdfs,
695 float* solidAngleToAreaFactors,
697 RtNormal3* lightNormals,
702 RtColorRGB
const* pathThroughputs =
nullptr,
852 int const* integratorContextIndices,
854 int numSamples,
RixRNG* rixRNG,
861 RtColorRGB* transmissions,
862 RtColorRGB* volumeEmissions,
864 int* numShadingContexts,
866 RtPoint3* emissionPositions,
867 RtVector3* emissionNormals,
870 float* directLightingPdfs,
871 float* selectionProbs,
872 float* emissionPositionsPdfs,
873 RtVector3* emissionDirections,
874 float* emissionCosines,
875 float* emissionDirectionPdfs,
876 float* solidAngleToAreaFactors,
885 virtual void End() = 0;
912 RtColorRGB
const* trans,
float const* lPdfDirect,
913 float const* lightSelectionProbs,
float const* distances,
921 virtual void IrradianceEstimate(uint32_t lightSetId, RtPoint3
const* points,
int numPts,
922 float* estimates,
float* confidences) = 0;
924 virtual void UpdateIndirectPaths(
const std::vector<IndirectResult>* indirectResults,
int numPaths) = 0;
926 virtual void EvalIndirect(
int const* rayIds,
int numPts,
const RtVector3* wos,
void** learningNodes,
const int* faceIdx,
const RtNormal3* pNn,
const RixBXLobeTraits* lobesWanted,
float* pdfs,
float* vals) = 0;
930 const RtVector3* pNgn,
931 const RtVector3* pVn,
const RtNormal3* pNn,
int* sampleFlags,
932 RtVector3* wos,
float* pdfs,
float* confidences,
933 void** learningNodes,
934 int* faceIdxs, RtPoint3* camPs,
float* nodeRs,
float* vals) = 0;