![]() |
RenderMan
26.0
|
#include <algorithm>
#include <cassert>
#include <cmath>
#include <cstddef>
#include "RixInterfaces.h"
#include "RixShading.h"
#include "prmanapi.h"
#include "RiTypesHelper.h"
#include "RixPredefinedStrings.hpp"
#include <alloca.h>
Go to the source code of this file.
Namespaces | |
RixConstants | |
Constant Groups | |
RixConstants | |
Macros | |
#define | F_PI (3.14159265f) |
#define | F_TWOPI (6.283185307f) |
#define | F_FOURPI (12.56637061f) |
#define | F_INVPI (0.318309886f) |
#define | F_INVPISQ (0.1013211836f) |
#define | F_INVTWOPI (0.15915494309f) |
#define | F_INVFOURPI (0.0795774715f) |
#define | F_PIDIV2 (1.57079632679f) |
#define | F_PIDIV4 (0.785398163397f) |
#define | F_DEGTORAD (0.017453292520f) |
#define | F_RADTODEG (57.2957795131f) |
#define | F_INVLN2 (1.44269504089f) |
#define | F_INVLN4 (0.72134752f) |
#define | F_LOG2E (1.44269504088896f) |
#define | F_SQRT2 (1.41421356237f) |
#define | F_MAXDIST (1.0e10f) |
#define | F_SQRTMIN (1.0842021721e-19f) |
#define | F_MINDIVISOR (1.0e-6f) |
#define | ALMOSTZERO 0.005f |
#define | RixAlloca(s) alloca(s) |
Functions | |
PRMAN_INLINE unsigned int | RixFindFirstSetBit (unsigned long long v) |
PRMAN_INLINE float | RixDegreesToRadians (float degrees) |
PRMAN_INLINE float | RixRadiansToDegrees (float rads) |
template<typename T > | |
PRMAN_INLINE T | RixSignum (T x) |
PRMAN_INLINE int | RixIsFinite (float x) |
PRMAN_INLINE int | RixIsFinite (RtFloat3 const &v) |
PRMAN_INLINE float | RixMin (float x, float y) |
PRMAN_INLINE int | RixMin (int x, int y) |
PRMAN_INLINE float | RixMax (float x, float y) |
PRMAN_INLINE int | RixMax (int x, int y) |
PRMAN_INLINE float | RixClamp (float x, float min, float max) |
PRMAN_INLINE int | RixClamp (int x, int min, int max) |
PRMAN_INLINE float | RixFractional (float x) |
PRMAN_INLINE float | RixMod (float x, float y) |
PRMAN_INLINE void | RixFresnelDielectric (float VdN, float eta, float *Kr) |
PRMAN_INLINE void | RixFresnelDielectric (const RtVector3 &Vn, const RtNormal3 &Nn, float eta, float *Kr, RtVector3 *Rn=NULL, RtVector3 *Tn=NULL) |
PRMAN_INLINE void | RixFresnelDielectric (RixShadingContext &sCtx, float eta, float *Kr, float *Kt, RtVector3 *R, RtVector3 *T) |
PRMAN_INLINE void | RixFresnelConductorApprox (float VdN, float eta, float kappa, float *Kr) |
PRMAN_INLINE void | RixFresnelConductor (float VdN, float eta, float kappa, float *Kr) |
PRMAN_INLINE void | RixFresnelConductor (const RtVector3 &Vn, const RtNormal3 &Nn, float eta, float kappa, float *Kr, RtVector3 *Rn=NULL) |
PRMAN_INLINE void | RixFresnelConductor (float VdN, RtColorRGB const &eta, RtColorRGB const &kappa, RtColorRGB *Kr) |
PRMAN_INLINE void | RixFresnelConductor (RtVector3 const &Vn, RtNormal3 const &Nn, RtColorRGB const &eta, RtColorRGB const &kappa, RtColorRGB *Kr, RtVector3 *Rn=NULL) |
PRMAN_INLINE float | RixSchlickFresnelWeight (float NdV) |
PRMAN_INLINE RtVector3 | RixReflect (const RtVector3 &Vn, const RtNormal3 &Nn) |
PRMAN_INLINE RtVector3 | RixReflect (RtVector3 const &Vn, RtVector3 const &Nn, float VdN) |
PRMAN_INLINE int | RixRefract (const RtVector3 &Vn, const RtNormal3 &Nn, float eta, RtVector3 &Tn) |
PRMAN_INLINE RtNormal3 | RixGetForwardFacingNormal (RtVector3 const &Vn, RtNormal3 const &Nn, float *VdotNf=NULL) |
PRMAN_INLINE RtNormal3 | RixGetBackwardFacingNormal (RtVector3 const &Vn, RtNormal3 const &Nn, float *VdotNb=NULL) |
PRMAN_INLINE void | RixCosDirectionalDistribution (const RtFloat2 &xi, const RtVector3 &n, const RtVector3 &t0, const RtVector3 &t1, RtVector3 &outDir, float &cosTheta) |
PRMAN_INLINE void | RixCosDirectionalDistribution (const RtFloat2 &xi, const RtVector3 &n, RtVector3 &outDir, float &cosTheta) |
PRMAN_INLINE void | RixUniformDirectionalDistribution (const RtFloat2 &xi, const RtVector3 &n, const RtVector3 &t0, const RtVector3 &t1, RtVector3 &outDir, float &cosTheta) |
PRMAN_INLINE void | RixUniformDirectionalDistribution (const RtFloat2 &xi, const RtVector3 &n, RtVector3 &outDir, float &cosTheta) |
PRMAN_INLINE void | RixUniformConeDistribution (const RtFloat2 &xi, const float coneAngle, const RtVector3 &n, const RtVector3 &t0, const RtVector3 &t1, RtVector3 &outDir, float &cosTheta) |
PRMAN_INLINE void | RixUniformConeDistribution (const RtFloat2 &xi, const float coneAngle, const RtVector3 &n, RtVector3 &outDir, float &cosTheta) |
PRMAN_INLINE RtVector3 | RixSphericalDistribution (const RtFloat2 &xi) |
PRMAN_INLINE int | RixChooseAndRemap (float &xi, int numThresholds, float *thresholds) |
PRMAN_INLINE float | RixTraceBias (const RtPoint3 &, const RtNormal3 &N, const RtVector3 &dir, float biasR, float biasT) |
PRMAN_INLINE RtPoint3 | RixApplyTraceBias (const RtPoint3 &org, const RtNormal3 &N, const RtVector3 &dir, const float biasR, const float biasT) |
PRMAN_INLINE void | RixSinCos (float phi, float *sinPhi, float *cosPhi) |
PRMAN_INLINE RtVector3 | RixSphericalDirection (float sinTheta, float cosTheta, float sinPhi, float cosPhi) |
PRMAN_INLINE RtVector3 | RixSphericalDirection (float sinTheta, float cosTheta, float phi) |
PRMAN_INLINE RtVector3 | RixChangeBasisFrom (RtVector3 const &in, RtVector3 const &X, RtVector3 const &Y, RtVector3 const &Z) |
PRMAN_INLINE RtVector3 | RixChangeBasis (RtVector3 const &in, RtVector3 const &X, RtVector3 const &Y, RtVector3 const &Z) |
PRMAN_INLINE RtVector3 | RixChangeBasisTo (RtVector3 const &in, RtVector3 const &X, RtVector3 const &Y, RtVector3 const &Z) |
template<typename T > | |
PRMAN_INLINE T | RixMix (const T &v0, const T &v1, float m) |
template<typename T > | |
PRMAN_INLINE T | RixSmoothMix (const T &x1, const T &x2, float t) |
template<typename T > | |
PRMAN_INLINE T | RixEaseInMix (const T &x1, const T &x2, float t) |
template<typename T > | |
PRMAN_INLINE T | RixEaseOutMix (const T &x1, const T &x2, float t) |
PRMAN_INLINE float | RixBoxStep (float min, float val) |
PRMAN_INLINE float | RixLinearStep (float min, float max, float val) |
PRMAN_INLINE float | RixSmoothStep (float min, float max, float val) |
PRMAN_INLINE float | RixGaussStep (float min, float max, float val) |
PRMAN_INLINE float | RixSolidAngle2Spread (float solidangle) |
PRMAN_INLINE void | RixComputeShadingBasis (RtNormal3 const &Nf, RtVector3 const &Tn, RtVector3 &TX, RtVector3 &TY) |
PRMAN_INLINE void | RixDebugBasis (RixShadingContext *sc, RtPoint3 &o, RtVector3 &x, RtVector3 &y, RtVector3 &z) |
PRMAN_INLINE void | RixShiftCtxInU (RixShadingContext *sCtx) |
PRMAN_INLINE void | RixShiftCtxInV (RixShadingContext *sCtx) |
PRMAN_INLINE void | RixBump (RixShadingContext const *sCtx, float const *disp, float const *dispU, float const *dispV, RtNormal3 *Nn) |
PRMAN_INLINE int | RixIsMatte (RixShadingContext const &sCtx) |
PRMAN_INLINE int | RixIsHoldout (RixShadingContext const &sCtx) |
PRMAN_INLINE unsigned long | RixImod (const unsigned long a, const unsigned long b) |
PRMAN_INLINE float | RixHash (const char *bufPtr, unsigned long range=65535) |
PRMAN_INLINE RtColorRGB | RixLerpRGB (RtColorRGB const &a, RtColorRGB const &b, float const mix) |
PRMAN_INLINE void | RixAdjustNormal (float const amount, RtVector3 const &Vn, RtVector3 const &Ngn, RtNormal3 &Nn) |
PRMAN_INLINE RtFloat | RixBumpShadowingFactor (RtNormal3 shadingNormal, RtNormal3 bumpNormal, RtVector3 Ln) |
PRMAN_INLINE RtFloat | RixProcPrimInstanceHash (RixRenderState *rstate) |
PRMAN_INLINE float | RixRayCurvatureToRoughnessSq (float multiplier, float curvature, float incidentRayRadius, float incidentRaySpread) |
PRMAN_INLINE float | RixMollifyRoughness (float roughness, float rayCurvatureRoughnessSq) |
#define ALMOSTZERO 0.005f |
Referenced by RixCosDirectionalDistribution().
#define F_DEGTORAD (0.017453292520f) |
Referenced by RixDegreesToRadians().
#define F_FOURPI (12.56637061f) |
#define F_INVFOURPI (0.0795774715f) |
#define F_INVLN2 (1.44269504089f) |
#define F_INVLN4 (0.72134752f) |
#define F_INVPI (0.318309886f) |
#define F_INVPISQ (0.1013211836f) |
#define F_INVTWOPI (0.15915494309f) |
#define F_LOG2E (1.44269504088896f) |
#define F_MAXDIST (1.0e10f) |
#define F_MINDIVISOR (1.0e-6f) |
#define F_PI (3.14159265f) |
Referenced by RixIES::EvaluateIESProfile(), and RixIES::ReadIESProfile().
#define F_PIDIV2 (1.57079632679f) |
#define F_PIDIV4 (0.785398163397f) |
#define F_RADTODEG (57.2957795131f) |
Referenced by RixRadiansToDegrees().
#define F_SQRT2 (1.41421356237f) |
#define F_SQRTMIN (1.0842021721e-19f) |
#define F_TWOPI (6.283185307f) |
#define RixAlloca | ( | s) | alloca(s) |
PRMAN_INLINE void RixAdjustNormal | ( | float const | amount, |
RtVector3 const & | Vn, | ||
RtVector3 const & | Ngn, | ||
RtNormal3 & | Nn | ||
) |
PRMAN_INLINE RtPoint3 RixApplyTraceBias | ( | const RtPoint3 & | org, |
const RtNormal3 & | N, | ||
const RtVector3 & | dir, | ||
const float | biasR, | ||
const float | biasT | ||
) |
References RixTraceBias().
PRMAN_INLINE float RixBoxStep | ( | float | min, |
float | val | ||
) |
Referenced by RixGaussStep(), RixLinearStep(), and RixSmoothStep().
PRMAN_INLINE void RixBump | ( | RixShadingContext const * | sCtx, |
float const * | disp, | ||
float const * | dispU, | ||
float const * | dispV, | ||
RtNormal3 * | Nn | ||
) |
References RixShadingContext::GetBuiltinVar(), RixShadingContext::GetPrimVar(), RixShadingContext::k_dPdu, RixShadingContext::k_dPdv, RixShadingContext::k_du, RixShadingContext::k_dv, RixShadingContext::k_Naon, RixShadingContext::k_Ngn, RixShadingContext::k_Nn, k_RixSCInvalidDetail, and RixShadingContext::numPts.
PRMAN_INLINE RtFloat RixBumpShadowingFactor | ( | RtNormal3 | shadingNormal, |
RtNormal3 | bumpNormal, | ||
RtVector3 | Ln | ||
) |
References RixClamp(), RixMax(), and RixMin().
PRMAN_INLINE RtVector3 RixChangeBasis | ( | RtVector3 const & | in, |
RtVector3 const & | X, | ||
RtVector3 const & | Y, | ||
RtVector3 const & | Z | ||
) |
References RixChangeBasisFrom().
PRMAN_INLINE RtVector3 RixChangeBasisFrom | ( | RtVector3 const & | in, |
RtVector3 const & | X, | ||
RtVector3 const & | Y, | ||
RtVector3 const & | Z | ||
) |
Referenced by RixChangeBasis().
PRMAN_INLINE RtVector3 RixChangeBasisTo | ( | RtVector3 const & | in, |
RtVector3 const & | X, | ||
RtVector3 const & | Y, | ||
RtVector3 const & | Z | ||
) |
PRMAN_INLINE int RixChooseAndRemap | ( | float & | xi, |
int | numThresholds, | ||
float * | thresholds | ||
) |
PRMAN_INLINE float RixClamp | ( | float | x, |
float | min, | ||
float | max | ||
) |
Referenced by RixBumpShadowingFactor(), RixColorClamp(), RixContrast(), RixHslCorrect(), RixHsvCorrect(), and RixLerpRGB().
PRMAN_INLINE int RixClamp | ( | int | x, |
int | min, | ||
int | max | ||
) |
PRMAN_INLINE void RixComputeShadingBasis | ( | RtNormal3 const & | Nf, |
RtVector3 const & | Tn, | ||
RtVector3 & | TX, | ||
RtVector3 & | TY | ||
) |
PRMAN_INLINE void RixCosDirectionalDistribution | ( | const RtFloat2 & | xi, |
const RtVector3 & | n, | ||
const RtVector3 & | t0, | ||
const RtVector3 & | t1, | ||
RtVector3 & | outDir, | ||
float & | cosTheta | ||
) |
References ALMOSTZERO, and F_TWOPI.
Referenced by RixCosDirectionalDistribution().
PRMAN_INLINE void RixCosDirectionalDistribution | ( | const RtFloat2 & | xi, |
const RtVector3 & | n, | ||
RtVector3 & | outDir, | ||
float & | cosTheta | ||
) |
References RixCosDirectionalDistribution().
PRMAN_INLINE void RixDebugBasis | ( | RixShadingContext * | sc, |
RtPoint3 & | o, | ||
RtVector3 & | x, | ||
RtVector3 & | y, | ||
RtVector3 & | z | ||
) |
References RixGeoDebugger::EmitPointNormal(), RixContext::GetRixInterface(), and k_RixGeoDebugger.
PRMAN_INLINE float RixDegreesToRadians | ( | float | degrees) |
References F_DEGTORAD.
PRMAN_INLINE T RixEaseInMix | ( | const T & | x1, |
const T & | x2, | ||
float | t | ||
) |
PRMAN_INLINE T RixEaseOutMix | ( | const T & | x1, |
const T & | x2, | ||
float | t | ||
) |
PRMAN_INLINE unsigned int RixFindFirstSetBit | ( | unsigned long long | v) |
PRMAN_INLINE float RixFractional | ( | float | x) |
Referenced by RixHslCorrect(), and RixHsvCorrect().
PRMAN_INLINE void RixFresnelConductor | ( | float | VdN, |
float | eta, | ||
float | kappa, | ||
float * | Kr | ||
) |
References RixFresnelDielectric().
Referenced by RixFresnelConductor().
PRMAN_INLINE void RixFresnelConductor | ( | const RtVector3 & | Vn, |
const RtNormal3 & | Nn, | ||
float | eta, | ||
float | kappa, | ||
float * | Kr, | ||
RtVector3 * | Rn = NULL |
||
) |
References RixFresnelConductorApprox().
PRMAN_INLINE void RixFresnelConductor | ( | float | VdN, |
RtColorRGB const & | eta, | ||
RtColorRGB const & | kappa, | ||
RtColorRGB * | Kr | ||
) |
References RixFresnelConductorApprox().
PRMAN_INLINE void RixFresnelConductor | ( | RtVector3 const & | Vn, |
RtNormal3 const & | Nn, | ||
RtColorRGB const & | eta, | ||
RtColorRGB const & | kappa, | ||
RtColorRGB * | Kr, | ||
RtVector3 * | Rn = NULL |
||
) |
References RixFresnelConductor().
PRMAN_INLINE void RixFresnelConductorApprox | ( | float | VdN, |
float | eta, | ||
float | kappa, | ||
float * | Kr | ||
) |
References RixFresnelDielectric().
Referenced by RixFresnelConductor().
PRMAN_INLINE void RixFresnelDielectric | ( | float | VdN, |
float | eta, | ||
float * | Kr | ||
) |
Referenced by RixFresnelConductor(), RixFresnelConductorApprox(), and RixFresnelDielectric().
PRMAN_INLINE void RixFresnelDielectric | ( | const RtVector3 & | Vn, |
const RtNormal3 & | Nn, | ||
float | eta, | ||
float * | Kr, | ||
RtVector3 * | Rn = NULL , |
||
RtVector3 * | Tn = NULL |
||
) |
PRMAN_INLINE void RixFresnelDielectric | ( | RixShadingContext & | sCtx, |
float | eta, | ||
float * | Kr, | ||
float * | Kt, | ||
RtVector3 * | R, | ||
RtVector3 * | T | ||
) |
PRMAN_INLINE float RixGaussStep | ( | float | min, |
float | max, | ||
float | val | ||
) |
References RixBoxStep().
PRMAN_INLINE RtNormal3 RixGetBackwardFacingNormal | ( | RtVector3 const & | Vn, |
RtNormal3 const & | Nn, | ||
float * | VdotNb = NULL |
||
) |
PRMAN_INLINE RtNormal3 RixGetForwardFacingNormal | ( | RtVector3 const & | Vn, |
RtNormal3 const & | Nn, | ||
float * | VdotNf = NULL |
||
) |
PRMAN_INLINE float RixHash | ( | const char * | bufPtr, |
unsigned long | range = 65535 |
||
) |
References RixImod().
PRMAN_INLINE unsigned long RixImod | ( | const unsigned long | a, |
const unsigned long | b | ||
) |
Referenced by RixHash().
PRMAN_INLINE int RixIsFinite | ( | float | x) |
Referenced by RixIsFinite(), and RtRayGeometry::SetRaySpread().
PRMAN_INLINE int RixIsFinite | ( | RtFloat3 const & | v) |
References RixIsFinite().
PRMAN_INLINE int RixIsHoldout | ( | RixShadingContext const & | sCtx) |
References RixContext::GetRixInterface(), and k_RixRenderState.
PRMAN_INLINE int RixIsMatte | ( | RixShadingContext const & | sCtx) |
References RixContext::GetRixInterface(), and k_RixRenderState.
PRMAN_INLINE RtColorRGB RixLerpRGB | ( | RtColorRGB const & | a, |
RtColorRGB const & | b, | ||
float const | mix | ||
) |
References RixClamp().
PRMAN_INLINE float RixLinearStep | ( | float | min, |
float | max, | ||
float | val | ||
) |
References RixBoxStep().
PRMAN_INLINE float RixMax | ( | float | x, |
float | y | ||
) |
Referenced by RixBumpShadowingFactor(), RixGamma(), and RixSaturation().
PRMAN_INLINE int RixMax | ( | int | x, |
int | y | ||
) |
PRMAN_INLINE float RixMin | ( | float | x, |
float | y | ||
) |
Referenced by RixBumpShadowingFactor(), and RixContrast().
PRMAN_INLINE int RixMin | ( | int | x, |
int | y | ||
) |
PRMAN_INLINE T RixMix | ( | const T & | v0, |
const T & | v1, | ||
float | m | ||
) |
PRMAN_INLINE float RixMod | ( | float | x, |
float | y | ||
) |
PRMAN_INLINE float RixMollifyRoughness | ( | float | roughness, |
float | rayCurvatureRoughnessSq | ||
) |
PRMAN_INLINE RtFloat RixProcPrimInstanceHash | ( | RixRenderState * | rstate) |
References RixRenderState::GetAttribute().
PRMAN_INLINE float RixRadiansToDegrees | ( | float | rads) |
References F_RADTODEG.
PRMAN_INLINE float RixRayCurvatureToRoughnessSq | ( | float | multiplier, |
float | curvature, | ||
float | incidentRayRadius, | ||
float | incidentRaySpread | ||
) |
PRMAN_INLINE RtVector3 RixReflect | ( | const RtVector3 & | Vn, |
const RtNormal3 & | Nn | ||
) |
PRMAN_INLINE RtVector3 RixReflect | ( | RtVector3 const & | Vn, |
RtVector3 const & | Nn, | ||
float | VdN | ||
) |
PRMAN_INLINE int RixRefract | ( | const RtVector3 & | Vn, |
const RtNormal3 & | Nn, | ||
float | eta, | ||
RtVector3 & | Tn | ||
) |
PRMAN_INLINE float RixSchlickFresnelWeight | ( | float | NdV) |
PRMAN_INLINE void RixShiftCtxInU | ( | RixShadingContext * | sCtx) |
PRMAN_INLINE void RixShiftCtxInV | ( | RixShadingContext * | sCtx) |
PRMAN_INLINE T RixSignum | ( | T | x) |
PRMAN_INLINE void RixSinCos | ( | float | phi, |
float * | sinPhi, | ||
float * | cosPhi | ||
) |
Referenced by RixSphericalDirection().
PRMAN_INLINE T RixSmoothMix | ( | const T & | x1, |
const T & | x2, | ||
float | t | ||
) |
PRMAN_INLINE float RixSmoothStep | ( | float | min, |
float | max, | ||
float | val | ||
) |
References RixBoxStep().
PRMAN_INLINE float RixSolidAngle2Spread | ( | float | solidangle) |
PRMAN_INLINE RtVector3 RixSphericalDirection | ( | float | sinTheta, |
float | cosTheta, | ||
float | sinPhi, | ||
float | cosPhi | ||
) |
Referenced by RixSphericalDirection().
PRMAN_INLINE RtVector3 RixSphericalDirection | ( | float | sinTheta, |
float | cosTheta, | ||
float | phi | ||
) |
References RixSinCos(), and RixSphericalDirection().
PRMAN_INLINE RtVector3 RixSphericalDistribution | ( | const RtFloat2 & | xi) |
References F_TWOPI.
PRMAN_INLINE float RixTraceBias | ( | const RtPoint3 & | , |
const RtNormal3 & | N, | ||
const RtVector3 & | dir, | ||
float | biasR, | ||
float | biasT | ||
) |
Referenced by RixApplyTraceBias().
PRMAN_INLINE void RixUniformConeDistribution | ( | const RtFloat2 & | xi, |
const float | coneAngle, | ||
const RtVector3 & | n, | ||
const RtVector3 & | t0, | ||
const RtVector3 & | t1, | ||
RtVector3 & | outDir, | ||
float & | cosTheta | ||
) |
References F_TWOPI.
Referenced by RixUniformConeDistribution().
PRMAN_INLINE void RixUniformConeDistribution | ( | const RtFloat2 & | xi, |
const float | coneAngle, | ||
const RtVector3 & | n, | ||
RtVector3 & | outDir, | ||
float & | cosTheta | ||
) |
References RixUniformConeDistribution().
PRMAN_INLINE void RixUniformDirectionalDistribution | ( | const RtFloat2 & | xi, |
const RtVector3 & | n, | ||
const RtVector3 & | t0, | ||
const RtVector3 & | t1, | ||
RtVector3 & | outDir, | ||
float & | cosTheta | ||
) |
References F_TWOPI.
Referenced by RixUniformDirectionalDistribution().
PRMAN_INLINE void RixUniformDirectionalDistribution | ( | const RtFloat2 & | xi, |
const RtVector3 & | n, | ||
RtVector3 & | outDir, | ||
float & | cosTheta | ||
) |
References RixUniformDirectionalDistribution().