RenderMan  26.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
RixBxdf.h File Reference
#include <cstddef>
#include <vector>
#include "RixBxdfLobe.h"
#include "RixShading.h"
#include "prmanapi.h"
#include "RiTypesHelper.h"

Go to the source code of this file.

Classes

class  RixBxdfFactory
 
class  RixBxdf
 The RixBxdf interface is a shading plugin responsible for creating a RixBxdf from the the ShadingContext and the set of connected patterns. More...
 
class  RixOpacity
 RixOpacity objects are obtained from the BxdfFactory::BeginOpacity when it determines conditions warrant non-trivial responses to either or both of Presence and Opacity queries. More...
 
class  RixVolumeIntegrator
 RixVolumeIntegrators can be obtained from the BxdfFactory at the hit point where a ray enters an interior region. More...
 
class  RixVolumeIntegrator::IntegratorDelegate
 
class  RixPostLighting
 

Macros

#define RIX_BXDFPLUGINCREATE   extern "C" PRMANEXPORT RixBxdfFactory* CreateRixBxdfFactory(const char* hint)
 
#define RIX_BXDFPLUGINDESTROY   extern "C" PRMANEXPORT void DestroyRixBxdfFactory(RixBxdfFactory* bxdf)
 

Enumerations

enum  RixBXEvaluateDomain {
  k_RixBXEmptyDomain = 0, k_RixBXOutsideReflect = 1, k_RixBXOutsideTransmit = 2, k_RixBXInsideReflect = 4,
  k_RixBXInsideTransmit = 8, k_RixBXReflect = (k_RixBXInsideReflect | k_RixBXOutsideReflect), k_RixBXTransmit = (k_RixBXInsideTransmit | k_RixBXOutsideTransmit), k_RixBXBoth = (k_RixBXReflect | k_RixBXTransmit),
  k_RixBXOutside = (k_RixBXOutsideReflect | k_RixBXOutsideTransmit), k_RixBXInside = (k_RixBXInsideReflect | k_RixBXInsideTransmit), k_RixBXVolume = 16
}
 Tells Integrator the domain over which lighting/connecting/merging needs to be done. More...
 
enum  RixBXTransportTrait { k_RixBXDirectLighting = 1 << 0, k_RixBXIndirectLighting = 1 << 1, k_RixBXAnyLighting = k_RixBXDirectLighting | k_RixBXIndirectLighting }
 Tells Bxdf the subset of light transport to consider. More...
 
enum  RixBXRayFlags { k_RixBXBothEndsInVolume = 0, k_RixBXOriginOnBoundary = 1, k_RixBXEndOnBoundary = 2, k_RixBXBothEndsOnBoundary = 3 }
 Tells whether ray end points lies in volume or on boundary(interface) More...
 

Functions

PRMAN_INLINE bool RixVisibleToDomain (RixBXEvaluateDomain domain, RtVector3 const &L, RtVector3 const &N, RtVector3 const &V)
 

Macro Definition Documentation

#define RIX_BXDFPLUGINCREATE   extern "C" PRMANEXPORT RixBxdfFactory* CreateRixBxdfFactory(const char* hint)
#define RIX_BXDFPLUGINDESTROY   extern "C" PRMANEXPORT void DestroyRixBxdfFactory(RixBxdfFactory* bxdf)

Enumeration Type Documentation

Tells Integrator the domain over which lighting/connecting/merging needs to be done.

Reflect/Front = light samples are from the side the ray came from Transmit/Back = light samples are opposite the side the ray came from Outside = light samples are from the side the surface normal points into Inside = light samples are from the side the surface normal points away from The difference between Both and Volume is whether there's a cosine term (for surfaces) or not (for volumes).

Enumerator
k_RixBXEmptyDomain 
k_RixBXOutsideReflect 
k_RixBXOutsideTransmit 
k_RixBXInsideReflect 
k_RixBXInsideTransmit 
k_RixBXReflect 
k_RixBXTransmit 
k_RixBXBoth 
k_RixBXOutside 
k_RixBXInside 
k_RixBXVolume 

Tells whether ray end points lies in volume or on boundary(interface)

Enumerator
k_RixBXBothEndsInVolume 
k_RixBXOriginOnBoundary 
k_RixBXEndOnBoundary 
k_RixBXBothEndsOnBoundary 

Tells Bxdf the subset of light transport to consider.

Enumerator
k_RixBXDirectLighting 

(direct lighting samples only)

k_RixBXIndirectLighting 

(indirect lighting samples only)

k_RixBXAnyLighting 

Function Documentation

PRMAN_INLINE bool RixVisibleToDomain ( RixBXEvaluateDomain  domain,
RtVector3 const &  L,
RtVector3 const &  N,
RtVector3 const &  V 
)