166 float dpL = L.Dot(N);
167 float dpV = N.Dot(V);
171 return (dpL > 0.0f && dpV < 0.0f);
174 return (dpL > 0.0f && dpV > 0.0f);
177 return (dpL < 0.0f && dpV > 0.0f);
180 return (dpL < 0.0f && dpV < 0.0f);
189 return ((dpL > 0.0f) != (dpV < 0.0f));
192 return ((dpL > 0.0f) == (dpV < 0.0f));
195 return ((dpL > 0.0f && dpV < 0.0f) || (dpL < 0.0f && dpV < 0.0f));
198 return ((dpL > 0.0f && dpV > 0.0f) || (dpL < 0.0f && dpV > 0.0f));
201 return ((dpL > 0.0f && dpV < 0.0f) || (dpL > 0.0f && dpV > 0.0f) ||
202 (dpL < 0.0f && dpV < 0.0f));
205 return ((dpL > 0.0f && dpV > 0.0f) || (dpL < 0.0f && dpV > 0.0f) ||
206 (dpL < 0.0f && dpV < 0.0f));
209 return ((dpL > 0.0f && dpV < 0.0f) || (dpL < 0.0f && dpV > 0.0f) ||
210 (dpL < 0.0f && dpV < 0.0f));
213 return ((dpL > 0.0f && dpV > 0.0f) || (dpL > 0.0f && dpV < 0.0f) ||
214 (dpL < 0.0f && dpV > 0.0f));
220 float dpL = L.Dot(N);
229 float dpV = N.Dot(V);
344 std::vector<int>& paramId)
const = 0;
497 : shadingCtx(sCtx), bxdfFactory(factory)
523 this->GetAggregateLobeTraits(&t);
549 virtual bool EmitLocal(
RtColorRGB* result) = 0;
620 float* reversePdfs) = 0;
631 float* forwardPdfs,
float* reversePdfs) = 0;
639 if (bxdfFactory) bxdfFactory->EndScatter(
this);
673 : shadingCtx(sCtx), bxdfFactory(factory)
697 virtual bool GetPresence(
float* result) = 0;
709 virtual bool GetOpacity(
RtColorRGB* result) = 0;
713 if (bxdfFactory) bxdfFactory->EndOpacity(
this);
749 instanceData(_instanceData),
786 params = subclassParams;
802 if (bxdfFactory) bxdfFactory->EndInterior(
this);
860 int const* membership = NULL)
903 for (
int i = 0; i < numRays; ++i)
923 : shadingCtx(sCtx), bxdfFactory(factory)
933 if (bxdfFactory) bxdfFactory->EndPostLighting(
this);
936 virtual void Filter(
int const numLightSamples,
RtVector3 const* directions,
946 #define RIX_BXDFPLUGINCREATE \ 947 extern "C" PRMANEXPORT RixBxdfFactory* CreateRixBxdfFactory(const char* hint) 949 #define RIX_BXDFPLUGINDESTROY \ 950 extern "C" PRMANEXPORT void DestroyRixBxdfFactory(RixBxdfFactory* bxdf) virtual float GetIndexOfRefraction(RtPointer instanceData) const =0
virtual void EndSubsurface(RixVolumeIntegrator *)=0
RixPostLighting(RixShadingContext const *sCtx, RixBxdfFactory *factory)
pxrcore::ColorRGB RtColorRGB
virtual RixPostLighting * BeginPostLighting(RixShadingContext const *, RixSCShadingMode, RtPointer instanceData)
RixShadingContext const * shadingCtx
virtual ~RixPostLighting()
RixShadingContext * BeginVolumeSampling()
RixShadingContext const * EndVolumeSampling(RixBXLobeTraits const *exposeVol=NULL, int const *membership=NULL)
This struct represents the characteristics of just one lobe of a bxdf.
RixBxdfFactory * bxdfFactory
virtual RixOpacity * BeginOpacity(RixShadingContext const *, RixSCShadingMode, RtPointer instanceData)=0
RixBxdfFactory * GetBxdfFactory()
RtPointer GetInstanceData() const
RixShadingContext * GetVolumeShadingCtx() const
RixBxdfFactory * GetBxdfFactory()
virtual void EndInterior(RixVolumeIntegrator *)=0
RixBxdf(RixShadingContext const *sCtx, RixBxdfFactory *factory)
virtual void EndPostLighting(class RixPostLighting *)
virtual void EndScatter(class RixBxdf *bxdf)=0
RixOpacity(RixShadingContext const *sCtx, RixBxdfFactory *factory)
RixShadingContext const * GetShadingCtx() const
virtual int GetInstanceHints(RtPointer instanceData) const =0
virtual class RixVolumeIntegrator * BeginSubsurface(RixShadingContext const *, RixSCShadingMode, RtPointer instanceData)=0
RixShadingContext const * GetShadingCtx()
virtual void GetTransmission(int numRays, RtRayGeometry const *rays, RixRNG *rng, RixIntegratorContext &iCtx, RtColorRGB *transmissions, RtColorRGB *emission, RtUString const subset=US_NULL, RtUString const excludeSubset=US_NULL)
RixShadingContext const * shadingCtx
virtual class RixVolumeIntegrator * BeginInterior(RixShadingContext const *, RixSCShadingMode, RtPointer instanceData)=0
pxrcore::UString RtUString
virtual RixShadingContext * BeginVolumeSampling() const =0
RixBxdfFactory * bxdfFactory
#define k_RixShadingVersion
virtual void EndOpacity(class RixOpacity *)=0
virtual ~RixVolumeIntegrator()
virtual void SetParameters(void const *subclassParams)
virtual RixSCDetail GetProperty(VolumeProperty, void const **) const
RixBxdfFactory * bxdfFactory
virtual RixShadingContext const * EndVolumeSampling(const RixShadingContext *, RixBXLobeTraits const *exposeVol=NULL, int const *membership=NULL) const =0
PRMAN_INLINE bool RixVisibleToDomain(RixBXEvaluateDomain domain, RtVector3 const &L, RtVector3 const &N, RtVector3 const &V)
virtual void RegisterTemporalVolumeParams(RtPointer instanceData, std::vector< int > ¶mId) const =0
virtual ~IntegratorDelegate()
RixBxdfFactory * bxdfFactory
PRMAN_INLINE RixBXLobeTraits GetAllLobeTraits()
virtual int GetInterface() const override
virtual ~RixBxdfFactory()
RixShadingContext const * GetShadingCtx()
RixBxdfFactory * GetBxdfFactory() const
RixShadingContext const * shadingCtx
RixVolumeIntegrator(RixShadingContext const *sCtx, RixBxdfFactory *f, RtPointer _instanceData)
virtual RixBxdf * BeginScatter(RixShadingContext const *, RixBXLobeTraits const &hints, RixSCShadingMode, RtPointer instanceData)=0