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);
355 std::vector<int>& paramId)
const = 0;
421 void* instanceData) = 0;
645 float* reversePdfs) = 0;
656 float* forwardPdfs,
float* reversePdfs) = 0;
913 int const* membership = NULL)
930 IntegratorDelegate* lcb,
int* numShadingCtxs,
956 for (
int i = 0; i < numRays; ++i)
989 virtual void Filter(
int const numLightSamples,
RtVector3 const* directions,
990 float const* distances,
const RixLight** lights,
1000 #define RIX_BXDFPLUGINCREATE \ 1001 extern "C" PRMANEXPORT RixBxdfFactory* CreateRixBxdfFactory(const char* hint) 1003 #define RIX_BXDFPLUGINDESTROY \ 1004 extern "C" PRMANEXPORT void DestroyRixBxdfFactory(RixBxdfFactory* bxdf) virtual bool GetOpacity(RtColorRGB *result)=0
GetOpacity: fill shadingCtx->nPts worth of RtColor opacity values.
#define US_NULL
Definition: RiTypesHelper.h:683
Definition: RixBxdf.h:124
VolumeProperty
Definition: RixBxdf.h:864
All-inlined interface for generating sample points for use by Monte Carlo integration and multiple-im...
Definition: RixRNG.h:59
Definition: RixBxdf.h:875
Definition: RixBxdf.h:264
RixShadingContext is analogous to a RenderMan grid - it is a group of 1 or more points that may be sh...
Definition: RixShading.h:663
Definition: RixBxdf.h:318
virtual void EndOpacity(class RixOpacity *)=0
Definition: RixBxdf.h:304
Definition: RixBxdf.h:261
virtual void EndPostLighting(class RixPostLighting *)
Definition: RixBxdf.h:506
Definition: RixBxdf.h:313
virtual void GetNearestHits(int numRays, RtRayGeometry const *rays, RixRNG *rng, RixBXLobeTraits const &lobesWanted, RixIntegratorContext &iCtx, RixLightingServices *lightingServices, IntegratorDelegate *lcb, int *numShadingCtxs, RixShadingContext const **shadingCtxs, RtUString const subset=US_NULL, RtUString const excludeSubset=US_NULL, bool isLightPath=false, RtHitSides hitSides=k_SidesBoth, bool isPrimary=false)=0
Definition: RixBxdf.h:326
RixLight This base class defines the interface for light sources.
Definition: RixLight.h:117
Definition: RixBxdf.h:866
Definition: RixBxdf.h:324
Definition: RixBxdf.h:152
RixBxdfFactory * GetBxdfFactory()
Definition: RixBxdf.h:702
Definition: RixBxdf.h:870
RixBXEvaluateDomain
The RixBxdf interface is a shading plugin responsible for creating a RixBxdf from the the ShadingCont...
Definition: RixBxdf.h:121
virtual ~RixPostLighting()
Definition: RixBxdf.h:979
RixBxdfFactory * GetBxdfFactory()
Definition: RixBxdf.h:532
Definition: RixBxdf.h:251
Definition: RixBxdf.h:873
Definition: RixBxdf.h:132
InstanceHints
Most Bxdfs do not require special opacity handling or support interior shading.
Definition: RixBxdf.h:298
pxrcore::ColorRGB RtColorRGB
Definition: RiTypesHelper.h:520
#define k_RixShadingVersion
Definition: RixShading.h:97
RixShadingContext const * EndVolumeSampling(RixBXLobeTraits const *exposeVol=NULL, int const *membership=NULL)
Definition: RixBxdf.h:912
virtual void Release()
Definition: RixBxdf.h:984
virtual float GetIndexOfRefraction(void *instanceData) const =0
Returns the index of refraction of the material.
RixShadingPlugin is the base class for RixBxdfFactory, RixDisplacementFactory, RixDisplayFilter, RixIntegrator, RixLightFilter, RixLightFactory, RixPattern, RixProjection, and RixSampleFilter.
Definition: RixShading.h:168
Definition: RixBxdf.h:306
Definition: RixBxdf.h:562
Definition: RixBxdf.h:128
RixBxdfFactory * bxdfFactory
Definition: RixBxdf.h:743
virtual class RixVolumeIntegrator * BeginInterior(RixShadingContext const *, RixSCShadingMode, void *parentData, void *instanceData)=0
BeginInterior creates a RixVolumeIntegrator for the current shading context.
Definition: RixBxdf.h:311
virtual void SetParameters(void const *subclassParams)
Definition: RixBxdf.h:837
Definition: RixBxdf.h:260
Definition: RixShading.h:113
Definition: RixIntegrator.h:615
RixBxdfFactory * bxdfFactory
Definition: RixBxdf.h:669
Definition: RixBxdf.h:301
Definition: RixBxdf.h:136
Definition: RixBxdf.h:329
RixSCDetail
RixSCDetail enumerates the valid sizing qualifiers for SC parameters.
Definition: RixShading.h:432
Definition: RixBxdf.h:694
PRMAN_INLINE bool RixVisibleToDomain(RixBXEvaluateDomain domain, RtVector3 const &L, RtVector3 const &N, RtVector3 const &V)
Definition: RixBxdf.h:158
virtual void EvaluateSample(RixBXTransportTrait transportTrait, RixBXLobeTraits const *lobesWanted, RixRNG *rng, RixBXLobeTraits *lobesEvaluated, RtVector3 const *directions, RixBXLobeWeights &weights, float *forwardPdfs, float *reversePdfs)=0
Bxdf is expected to evaluate itself subject to the lobesWanted request.
Definition: RixBxdf.h:151
RixVolumeIntegrator(RixShadingContext const *sCtx, RixBxdfFactory *f, void *_instanceData)
Definition: RixBxdf.h:772
RixBxdfFactory * bxdfFactory
Definition: RixBxdf.h:996
This struct represents the characteristics of just one lobe of a bxdf.
Definition: RixBxdfLobe.h:63
RixBxdf(RixShadingContext const *sCtx, RixBxdfFactory *factory)
Definition: RixBxdf.h:521
RixBXRayFlags
Definition: RixBxdf.h:256
virtual RixBxdf * BeginScatter(RixShadingContext const *, RixBXLobeTraits const &hints, RixSCShadingMode, void *parentData, void *instanceData)=0
BeginScatter is expected to return a RixBxdf for the current ShadingContext.
Definition: RixBxdfLobe.h:428
virtual ~IntegratorDelegate()
Definition: RixBxdf.h:849
Definition: RixIntegrator.h:234
RtHitSides
Definition: RixShading.h:99
Definition: RixBxdf.h:252
Definition: RixBxdf.h:259
virtual ~RixBxdf()
Definition: RixBxdf.h:525
RixSCShadingMode
RixSCShadingMode conveys the current operating mode associated with the shading context.
Definition: RixShading.h:553
virtual void EvaluateSamplesAtIndex(RixBXTransportTrait transportTrait, RixBXLobeTraits const &lobesWanted, RixRNG *rng, int index, int numSamples, RixBXLobeTraits *lobesEvaluated, RtVector3 const *directions, RixBXLobeWeights &weights, float *forwardPdfs, float *reversePdfs)=0
void const * params
Definition: RixBxdf.h:965
Definition: RixShading.h:434
Definition: RixBxdf.h:250
Definition: RixBxdf.h:154
Definition: RixBxdf.h:309
Definition: RixBxdf.h:769
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)
Definition: RixBxdf.h:942
Definition: RixBxdf.h:339
RixShadingContext const * GetShadingCtx() const
Definition: RixBxdf.h:789
Definition: RixBxdf.h:869
virtual void Release()
Definition: RixBxdf.h:662
Definition: RixBxdf.h:145
Definition: RixBxdf.h:352
RixShadingContext * GetVolumeShadingCtx() const
Definition: RixBxdf.h:794
RixShadingContext const * shadingCtx
Definition: RixBxdf.h:742
virtual bool EmitLocal(RtColorRGB *result)=0
RixBXTransportTrait
Definition: RixBxdf.h:248
virtual void GenerateSample(RixBXTransportTrait transportTrait, RixBXLobeTraits const *lobesWanted, RixRNG *rng, RixBXLobeSampled *lobesSampled, RtVector3 *directions, RixBXLobeWeights &weights, float *forwardPdfs, float *reversePdfs, RtColorRGB *compTrans=NULL)=0
Bxdf is expected to generate a sample direction and lobe weights for each point in the ShadingContext...
void SetInstanceData(void *data)
Definition: RixBxdf.h:832
RixShadingContext const * shadingCtx
Definition: RixBxdf.h:995
PRMAN_INLINE RixBXLobeTraits GetAllLobeTraits()
Definition: RixBxdf.h:545
virtual class RixVolumeIntegrator * BeginSubsurface(RixShadingContext const *, RixSCShadingMode, void *parentData, void *instanceData)=0
BeginSubsurface creates a RixVolumeIntegrator for the current shading context.
virtual RixOpacity * BeginOpacity(RixShadingContext const *, RixSCShadingMode, void *parentData, void *instanceData)=0
BeginOpacity creates a RixOpacity for the current shading context.
#define PRMAN_INLINE
Definition: prmanapi.h:99
virtual RixSCDetail GetProperty(BxdfProperty, void const **result) const =0
Definition: RixBxdf.h:150
virtual void EndScatter(class RixBxdf *bxdf)=0
Definition: RixBxdf.h:972
virtual void Release()
Definition: RixBxdf.h:853
RixBxdfFactory()
Definition: RixBxdf.h:510
Definition: RixBxdf.h:258
Usage
Definition: RixLighting.h:142
virtual bool GetPresence(float *result)=0
GetPresence: fill shadingCtx->nPts worth of float presence values.
virtual void PerformDirectLighting(RixShadingContext const &, RixBXLobeTraits const *lobesWanted, int step)=0
void * instanceData
Definition: RixBxdf.h:964
Definition: RixBxdf.h:876
RixShadingContext const * shadingCtx
Definition: RixBxdf.h:668
RixPostLighting(RixShadingContext const *sCtx, RixBxdfFactory *factory)
Definition: RixBxdf.h:975
Definition: RixBxdf.h:140
Definition: RixBxdf.h:871
RixOpacity(RixShadingContext const *sCtx, RixBxdfFactory *factory)
Definition: RixBxdf.h:697
Definition: RixBxdf.h:872
virtual void EndInterior(RixVolumeIntegrator *)=0
virtual void Filter(int const numLightSamples, RtVector3 const *directions, float const *distances, const RixLight **lights, RixBXLobeWeights *bxdfWeights, RixBXLobeWeights *lightWeights, RtColorRGB *transmissions)=0
virtual void EndSubsurface(RixVolumeIntegrator *)=0
Definition: RixBxdf.h:842
virtual void RegisterTemporalVolumeParams(void *instanceData, std::vector< int > ¶mId) const =0
Definition: RixBxdf.h:874
virtual int GetInstanceHints(void *instanceData) const =0
int GetInterface() const override
Definition: RixBxdf.h:267
~RixBxdfFactory() override
Definition: RixBxdf.h:512
RixBxdfFactory * bxdfFactory
Definition: RixBxdf.h:963
virtual RixBXEvaluateDomain GetEvaluateDomain()=0
Definition: RixBxdf.h:316
Definition: RixBxdf.h:333
Definition: RixBxdf.h:561
RixShadingContext const * GetShadingCtx()
Definition: RixBxdf.h:528
void SetBxdfFactory(RixBxdfFactory *factory)
Definition: RixBxdf.h:820
This struct represents the characteristics of potentially several lobes of a bxdf in aggregate...
Definition: RixBxdfLobe.h:178
virtual ~RixVolumeIntegrator()
Definition: RixBxdf.h:779
pxrcore::UString RtUString
Definition: RiTypesHelper.h:682
void * GetInstanceData() const
Definition: RixBxdf.h:825
Definition: RixBxdf.h:146
Definition: RixBxdf.h:868
virtual RixShadingContext * BeginVolumeSampling() const =0
Definition: RixBxdf.h:322
RixShadingContext * BeginVolumeSampling()
Definition: RixBxdf.h:904
virtual RixPostLighting * BeginPostLighting(RixShadingContext const *, RixSCShadingMode, void *parentData, void *instanceData)
parentData role is similar to the one of BeginScatter().
Definition: RixBxdf.h:497
RtFloat3 RtVector3
Definition: RiTypesHelper.h:72
Definition: RixShading.h:103
virtual void Release()
Definition: RixBxdf.h:736
virtual ~RixOpacity()
Definition: RixBxdf.h:700
virtual void GetAggregateLobeTraits(RixBXLobeTraits *t)=0
Definition: RixBxdf.h:320
Definition: RixBxdf.h:336
RixBxdfFactory * GetBxdfFactory() const
Definition: RixBxdf.h:799
Definition: RixBxdf.h:518
virtual RixShadingContext const * EndVolumeSampling(const RixShadingContext *, RixBXLobeTraits const *exposeVol=NULL, int const *membership=NULL) const =0
virtual RixSCDetail GetProperty(VolumeProperty, void const **) const
Definition: RixBxdf.h:878
#define PIXAR_ARGUSED(x)
Definition: prmanapi.h:170
BxdfProperty
Definition: RixBxdf.h:559
RixShadingContext const * GetShadingCtx()
Definition: RixBxdf.h:706