RixNullBsdf Class Reference

RixNullBsdf Class Referenceabstract
Inheritance diagram for RixNullBsdf:
RixBsdf

Public Member Functions

virtual RixBXEvaluateDomain GetEvaluateDomain ()=0
 
virtual void GetAllLobeTraits (RixBXLobeTraits *)=0
 
virtual RtInt GetNumLobes ()=0
 
virtual void GenerateSample (RixBXTransportTrait transportTrait, RixBXLobeTraits const *lobesWanted, RixRNG *rng, RixBXLobeSampled *lobeSampled, RtVector3 *sampleDirs, RixBXLobeWeights &weights, RtFloat *forwardPdfs, RtFloat *reversePdfs)=0
 
virtual void EvaluateSample (RixBXTransportTrait transportTrait, RixBXLobeTraits const *lobesWanted, RixBXLobeTraits *lobesEvaluated, RtVector3 const *sampleDirs, RixBXLobeWeights &weights, RtFloat *forwardPdfs, RtFloat *reversePdfs)=0
 
virtual void EvaluateSamplesAtIndex (RixBXTransportTrait transportTrait, RixBXLobeTraits const &lobesWanted, RtInt index, RtInt nSamples, RixBXLobeTraits *lobesEvaluated, RtVector3 const *sampleDirs, RixBXLobeWeights &weights, RtFloat *forwardPdfs, RtFloat *reversePdfs)=0
 
- Public Member Functions inherited from RixBsdf
 RixBsdf (RixShadingContext const *sCtx, RixBxdfFactory *fact)
 
RixShadingContext const * GetShadingCtx ()
 
RixBxdfFactoryGetBxdfFactory ()
 
virtual void GetAggregateLobeTraits (RixBXLobeTraits *t)=0
 The types of samples this BxdfEvaluator can generate.
 
PRMAN_INLINE RixBXLobeTraits GetAllLobeTraits ()
 
virtual RixSCDetail GetProperty (BxdfProperty, void const **) const
 
virtual bool EmitLocal (RtColorRGB *)
 EmitLocal: used for baked, pre-integrated, indirect results. More...
 
virtual void Release ()
 

Additional Inherited Members

- Public Types inherited from RixBsdf
enum  BxdfProperty { k_Albedo, k_MaterialIor }
 
- Protected Attributes inherited from RixBsdf
RixShadingContext const * shadingCtx
 
RixBxdfFactorybxdfFactory
 

Member Function Documentation

virtual void RixNullBsdf::EvaluateSample ( RixBXTransportTrait  transportTrait,
RixBXLobeTraits const *  lobesWanted,
RixBXLobeTraits lobesEvaluated,
RtVector3 const *  sampleDirs,
RixBXLobeWeights weights,
RtFloat *  forwardPdfs,
RtFloat *  reversePdfs 
)
pure virtual

EvaluateSample: Bxdf is expected to evaluate itself subject to the lobesWanted request. In addition to sampleDirs, the ShadingContext variables (primarily Vn, Nn, Tn) must be consulted. The lobesEvaluated output can be set to indicate invalid conditions. If and only if the bxdf is unable to satisfy the request, then lobesEvaluated should be set to k_RixBXNullTrait. For example, if the lobesWanted argument requests a specific lobe (e.g., diffuse reflection) that the Bxdf does not support (for instance, that Bxdf only supports glossy reflections), then lobesEvaluated should be set to k_RixBXNullTrait. However, if it is possible to evaluate the request, then lobesEvaluated should not be set to k_RixNullTrait (and should instead be set to the evaluated lobe for each point in the ShadingContext). For valid samples, usually the pdf will be non-zero but the weight may be set to 0 if there is no surface response for the given directions. In some cases, it is appropriate to set the pdf to zero when a given sample could never have been generated (for example, if the sample direction is below the horizon of the surface for a purely reflective surface). This function can assume that the input directions in sampleDirs are normalized.

Implements RixBsdf.

virtual void RixNullBsdf::EvaluateSamplesAtIndex ( RixBXTransportTrait  transportTrait,
RixBXLobeTraits const &  lobesWanted,
RtInt  index,
RtInt  numSamples,
RixBXLobeTraits lobesEvaluated,
RtVector3 const *  sampleDirs,
RixBXLobeWeights weights,
RtFloat *  forwardPdfs,
RtFloat *  reversePdfs 
)
pure virtual

EvaluateSamplesAtIndex Do multiple evals at a single shading point. Also see the documentation above for EvaluateSample().

Implements RixBsdf.

virtual void RixNullBsdf::GenerateSample ( RixBXTransportTrait  transportTrait,
RixBXLobeTraits const *  lobesWanted,
RixRNG *  rng,
RixBXLobeSampled lobesSampled,
RtVector3 *  sampleDirs,
RixBXLobeWeights weights,
RtFloat *  forwardPdfs,
RtFloat *  reversePdfs 
)
pure virtual

GenerateSample: Bxdf is expected to generate a sample direction and lobe weights for each point in the ShadingContext (shadingCtx). Bxdfs must respect the transportTrait and lobesWanted request and indicate which class of lobe is associated with each sample by setting lobesSampled for each generated sample. If and only if the bxdf is unable to generate a requested sample, then lobesSampled should be set to k_RixBXNullTrait; for example, if the lobesWanted argument requests a specific lobe (e.g., diffuse reflection) that the Bxdf does not support (for instance, that Bxdf only supports glossy reflections), then lobesSampled should be set to k_RixBXNullTrait. However, if it is possible to generate the requested samples, then lobesSampled should not be set to k_RixBXNullTrait (and should instead be set to the sampled lobe for each point in the ShadingContext). Note that it is possible for the returned lobe weights to be set to zero for one or more of the points in the ShadingContext when there is no surface response for the sampled directions, although usually the returned pdfs will be non-zero. The pdf should be set to zero only if the probability of the Bxdf model generating a given sample is zero (see the documentation for EvaluateSample() for an example where setting the pdf to zero is appropriate). The generated sample directions must be normalized.

Implements RixBsdf.

virtual RixBXEvaluateDomain RixNullBsdf::GetEvaluateDomain ( )
pure virtual

The domain over which this Bsdf evaluates samples. Note that it may Generate discrete samples in any direction, this only tells where incoming samples could Evaluate to non-zero.

Implements RixBsdf.


The documentation for this class was generated from the following file: