231 int* fixedSampleCount =
nullptr,
233 int depth = 0,
int parentIndirectCount = 1) = 0;
327 int numLightSamples,
RixRNG* rixRNG,
334 float* distancesToSamples,
339 float* directLightingPdfs,
340 float* selectionProbs,
346 float* evaluatedMaterialFPdfs,
347 float* evaluatedMaterialRPdfs,
410 int numLightSamples,
RixRNG* rixRNG,
417 float* distancesToSamples,
422 float* directLightingPdfs,
423 float* selectionProbs,
425 float* emissionPositionPdfs,
426 float* emissionDirectionPdfs,
427 float* solidAngleToAreaFactors,
434 float* evaluatedMaterialFPdfs,
435 float* evaluatedMaterialRPdfs,
468 RixRNG* rixRNG,
float* maxDistances,
RtVector3* samplePositions,
float* selectionProbs,
469 float* segmentMinT,
float* segmentMaxT) = 0;
549 int numMaterialSamples,
RixRNG* rixRNG,
556 float const* materialPdfs,
566 float* directLightingPdfs,
567 float* selectionProbs,
626 int numMaterialSamples,
RixRNG* rixRNG,
633 float const* materialPdfs,
643 float* directLightingPdfs,
644 float* selectionProbs,
646 float* emissionPositionPdfs,
647 float* emissionDirectionPdfs,
648 float* solidAngleToAreaFactors,
803 int const* integratorContextIndices,
805 int numSamples,
RixRNG* rixRNG,
815 int* numShadingContexts,
821 float* directLightingPdfs,
822 float* selectionProbs,
823 float* emissionPositionsPdfs,
825 float* emissionCosines,
826 float* emissionDirectionPdfs,
827 float* solidAngleToAreaFactors,
836 virtual void End() = 0;
873 float* estimates,
float* confidences) = 0;
virtual void GenerateEmission(int numPts, int const *integratorContextIndices, int const *rayIds, int numSamples, RixRNG *rixRNG, int *lightGroupIds, RixLPEToken *lightLpeTokens, RixBXLobeWeights *lightContributions, RtColorRGB *transmissions, RtColorRGB *volumeEmissions, int *numShadingContexts, RixShadingContext const ***shadingContexts, RtPoint3 *emissionPositions, RtVector3 *emissionNormals, float *distances, float *directLightingPdfs, float *selectionProbs, float *emissionPositionsPdfs, RtVector3 *emissionDirections, float *emissionCosines, float *emissionDirectionPdfs, float *solidAngleToAreaFactors, RixPhotonGuiding const *photonGuide=nullptr)=0
Generates photons on the surface of the lights, then trace them through the scene. The resulting hits are returned in the form of RixShadingContext objects.
virtual ~RixLightingServices()
pxrcore::ColorRGB RtColorRGB
virtual void End()=0
Must be call in pair with Begin().
This struct represents the characteristics of just one lobe of a bxdf.
RixShadingContext const * shadingCtx
virtual void GenerateSamples(int numLightSamples, RixRNG *rixRNG, int *lightGroupIds, RixLPEToken *lightLpeTokens, RtVector3 *directionsToSamples, RtNormal3 *lightNormals, float *distancesToSamples, RixBXLobeWeights *lightContributions, RtColorRGB *transmissions, RtColorRGB *volumeEmissions, float *directLightingPdfs, float *selectionProbs, RixBXLobeTraits const *materialLobesWanted, RixBXLobeWeights *evaluatedMaterialWeights, float *evaluatedMaterialFPdfs, float *evaluatedMaterialRPdfs, RixBXLobeTraits *evaluatedMaterialLobes, RixLight **sampledLights, RtColorRGB const *pathThroughputs=nullptr)=0
Generates light samples for the shading points encapsulated by the RixShadingContext given to Begin()...
virtual int GetTotalFixedSamples()=0
Deprecated, always use default-constructed object.
virtual void UpdateWithResults(int nSamples, RixBXLobeWeights const *contribution, RtColorRGB const *trans, RtFloat const *lPdfDirect, RtFloat const *lightSelectionProbs, RtFloat const *distances, RixBXLobeWeights const *evaluatedMaterialWeights, const RixLight *const *lights)=0
virtual void EvaluateSamples(int numMaterialSamples, RixRNG *rixRNG, RtVector3 const *directions, float *distances, float const *materialPdfs, RixBXLobeWeights const *materialWeights, RixBXLobeSampled const *materialLobeSampled, int *lightGroupIds, RixLPEToken *lightLpeTokens, RixBXLobeWeights *lightContributions, RtColorRGB *transmissions, RtColorRGB *volumeEmissions, float *directLightingPdfs, float *selectionProbs, RtNormal3 *lightNormals, RixLight **evaluatedLights, RtColorRGB const *pathThroughputs=nullptr)=0
Evaluate light contributions for the provided directions, w.r.t. shading points encapsulated by the R...
virtual int GetTotalNumLights()=0
virtual RtUString GetLightGroupName(int i)=0
virtual int GetTotalNumLightsWithFixedSamples()=0
pxrcore::UString RtUString
virtual int GetLightGroup(RtUString const name)=0
virtual void GenerateSamplesForRaySegments(int numLightSamples, RixRNG *rixRNG, float *maxDistances, RtVector3 *samplePositions, float *selectionProbs, float *segmentMinT, float *segmentMaxT)=0
Generates light samples for the line segments encapsulated by the RixShadingContext given to Begin() ...
FixedSampleCountMode Mode
virtual void BeginEmission(FixedSampleCountMode mode, int *fixedSampleCount=nullptr)=0
Initializes the lighting services for photon emission. Photon emission is a global process...
RixBXEvaluateDomain domain
virtual void IrradianceEstimate(uint32_t lightSetId, RtPoint3 const *points, int numPts, float *estimates, float *confidences)=0
virtual void EndEmission()=0
Must be call in pair with BeginEmission().
virtual void Begin(RixShadingContext const *shadingContext, RixRNG *rixRNG, RixBXEvaluateDomain evaluationDomain, IntegratorIntent integratorIntent, FixedSampleCountMode fixedSampleCountMode, SampleMode sampleMode, int *fixedSampleCount=nullptr, int depth=0, int parentIndirectCount=1)=0
Initializes the lighting services for a given shading context. Following calls to GenerateSamples() a...
virtual int GetNumLightGroups()=0