RenderMan API  23.0
RixLight Class Referenceabstract

#include <RixLight.h>

Classes

struct  EvaluateEmissionForCameraResults
 
struct  EvaluateSamplesResults
 
struct  GenerateEmissionResults
 
struct  GenerateSamplesResults
 
struct  RixSamplePoint
 
struct  RixScatterPoint
 

Public Types

enum  Type { k_RixLocal, k_RixInfinite }
 
enum  LightProperty {
  k_LightGroupName, k_EnableShadows, k_ShadowColor, k_ShadowDistance,
  k_ShadowFalloff, k_ShadowFalloffGamma, k_ShadowSubset, k_ShadowExcludeSubset,
  k_TraceLightPaths, k_ThinShadow, k_VisibleInRefractionPath, k_FixedSampleCount,
  k_RixIES, k_Importance, k_LightNormal, k_ApproxFocus,
  k_LightName, k_numLightProperties
}
 

Public Member Functions

 RixLight (RixLightFactory const *lightFactory, Type type)
 
virtual ~RixLight ()
 
bool IsLocal () const
 
bool IsInfinite () const
 
virtual RixSCDetail GetProperty (LightProperty prop, void const **result) const =0
 
virtual void GetBounds (int &nPoints, RtPoint3 const *&points) const =0
 
virtual bool Intersect (bool isTransmissionRay, float const rayTime, RtPoint3 const &rayOrigin, RtVector3 const &rayDirection, float &hitDistance, float &u, float &v, float &w, RtPoint3 &hitP, RtNormal3 &hitNn) const =0
 
virtual RtFloat GetIncidentRadianceEstimate (RtPoint3 const &P, RtMatrix4x4 const &lightToCurrent, RtMatrix4x4 const &currentToLight) const =0
 
virtual RtFloat GetIncidentRadianceEstimate (RtPoint3 const &segmentOrigin, RtVector3 const &segmentDir, RtFloat segmentLen, RtMatrix4x4 const &lightToCurrent, RtMatrix4x4 const &currentToLight, RtFloat &minT, RtFloat &maxT) const =0
 
virtual float GetPowerEstimate (RtMatrix4x4 const &xform) const =0
 
virtual void GenerateSamples (RixLightContext const &lCtx, RixScatterPoint const &scatter, GenerateSamplesResults &results) const =0
 
virtual void EvaluateSamples (RixLightContext const &lCtx, RixSamplePoint const &sample, RixScatterPoint const &scatter, EvaluateSamplesResults &results) const =0
 
virtual void GenerateEmission (RixLightContext const &lCtx, GenerateEmissionResults &results) const =0
 
virtual void EvaluateEmissionForCamera (RixLightContext const &lCtx, RixSamplePoint const &sample, RixScatterPoint const &scatter, EvaluateEmissionForCameraResults &results) const =0
 
virtual RixLightEdit (RixContext &ctx, RtUString const name, RixParameterList const *pList, RtPointer instanceData)=0
 

Protected Attributes

RixLightFactory const * m_lightFactory
 

Detailed Description

RixLight This base class defines the interface for light sources.

Definition at line 118 of file RixLight.h.

Member Enumeration Documentation

◆ LightProperty

Enumerator
k_LightGroupName 
k_EnableShadows 
k_ShadowColor 
k_ShadowDistance 
k_ShadowFalloff 
k_ShadowFalloffGamma 
k_ShadowSubset 
k_ShadowExcludeSubset 
k_TraceLightPaths 
k_ThinShadow 
k_VisibleInRefractionPath 
k_FixedSampleCount 
k_RixIES 
k_Importance 
k_LightNormal 
k_ApproxFocus 
k_LightName 
k_numLightProperties 

Definition at line 174 of file RixLight.h.

◆ Type

Enumerator
k_RixLocal 
k_RixInfinite 

Definition at line 121 of file RixLight.h.

Constructor & Destructor Documentation

◆ RixLight()

RixLight::RixLight ( RixLightFactory const *  lightFactory,
Type  type 
)
inline

Definition at line 155 of file RixLight.h.

◆ ~RixLight()

virtual RixLight::~RixLight ( )
inlinevirtual

Definition at line 163 of file RixLight.h.

Member Function Documentation

◆ Edit()

virtual RixLight* RixLight::Edit ( RixContext ctx,
RtUString const  name,
RixParameterList const *  pList,
RtPointer  instanceData 
)
pure virtual

◆ EvaluateEmissionForCamera()

virtual void RixLight::EvaluateEmissionForCamera ( RixLightContext const &  lCtx,
RixSamplePoint const &  sample,
RixScatterPoint const &  scatter,
EvaluateEmissionForCameraResults results 
) const
pure virtual

◆ EvaluateSamples()

virtual void RixLight::EvaluateSamples ( RixLightContext const &  lCtx,
RixSamplePoint const &  sample,
RixScatterPoint const &  scatter,
EvaluateSamplesResults results 
) const
pure virtual

◆ GenerateEmission()

virtual void RixLight::GenerateEmission ( RixLightContext const &  lCtx,
GenerateEmissionResults results 
) const
pure virtual

◆ GenerateSamples()

virtual void RixLight::GenerateSamples ( RixLightContext const &  lCtx,
RixScatterPoint const &  scatter,
GenerateSamplesResults results 
) const
pure virtual

◆ GetBounds()

virtual void RixLight::GetBounds ( int &  nPoints,
RtPoint3 const *&  points 
) const
pure virtual

◆ GetIncidentRadianceEstimate() [1/2]

virtual RtFloat RixLight::GetIncidentRadianceEstimate ( RtPoint3 const &  P,
RtMatrix4x4 const &  lightToCurrent,
RtMatrix4x4 const &  currentToLight 
) const
pure virtual

GetIncidentRadianceEstimate Returns an estimate of the radiance this light will return for a shading point. This is used by localisation schemes to optionally adjust the importance associated with the light source relative to other light sources. As such, it should be an estimate that is very quick to compute.

◆ GetIncidentRadianceEstimate() [2/2]

virtual RtFloat RixLight::GetIncidentRadianceEstimate ( RtPoint3 const &  segmentOrigin,
RtVector3 const &  segmentDir,
RtFloat  segmentLen,
RtMatrix4x4 const &  lightToCurrent,
RtMatrix4x4 const &  currentToLight,
RtFloat minT,
RtFloat maxT 
) const
pure virtual

GetIncidentRadiancEstimate Returns an estimate of the radiance this light will return for a segment, along with a min and max t that represent the subsection of the segment that intersects the light's frustum, if it has one. Dir and segmentLen are normalized direction and segment length This case is used during volume integration.

◆ GetPowerEstimate()

virtual float RixLight::GetPowerEstimate ( RtMatrix4x4 const &  xform) const
pure virtual

GetPowerEstimate Returns an estimate of the power emitted by this light. This is used by localisation schemes to optionally adjust the importance associated with the light source relative to other light sources. As such, it should be an estimate that is very quick to compute.

◆ GetProperty()

virtual RixSCDetail RixLight::GetProperty ( LightProperty  prop,
void const **  result 
) const
pure virtual

◆ Intersect()

virtual bool RixLight::Intersect ( bool  isTransmissionRay,
float const  rayTime,
RtPoint3 const &  rayOrigin,
RtVector3 const &  rayDirection,
float &  hitDistance,
float &  u,
float &  v,
float &  w,
RtPoint3 hitP,
RtNormal3 hitNn 
) const
pure virtual

◆ IsInfinite()

bool RixLight::IsInfinite ( ) const
inline

Definition at line 168 of file RixLight.h.

◆ IsLocal()

bool RixLight::IsLocal ( ) const
inline

Definition at line 167 of file RixLight.h.

Member Data Documentation

◆ m_lightFactory

RixLightFactory const* RixLight::m_lightFactory
protected

Definition at line 356 of file RixLight.h.


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