34 #ifndef DUALSCATTERMATH_H
35 #define DUALSCATTERMATH_H
39 #if (OGRE_PLATFORM == OGRE_PLATFORM_WIN32)
43 namespace HairRenderNode {
58 inline float GToR(
const float grad);
60 float g(
float x,
float variance);
70 inline float S(
funcPtr f,
const float a,
const float b,
int n,
const float c);
72 inline float M_X(
const float alpha,
const float beta,
const float theta);
74 inline float SM_X(
const float alpha,
const float beta,
const float a,
const float b);
76 inline float N_R(
const float phi,
float empty = 0);
78 inline float N_TT(
const float phi,
const float gamma);
80 inline float N_TRT(
const float phi,
const float gamma);
82 inline Ogre::ColourValue
f_R(
const float theta,
const float I,
const float phi, Ogre::ColourValue &colour);
84 inline Ogre::ColourValue
f_TT(
const float theta,
const float I,
const float phi, Ogre::ColourValue &colour);
86 inline Ogre::ColourValue
f_TRT(
const float theta,
const float I,
const float phi, Ogre::ColourValue &colour);
88 inline Ogre::ColourValue
DualScatterMath::f_s(
const float theta,
const float phi,
const float I_R,
const float I_TT,
const float I_TRT,
const float I_G, Ogre::ColourValue &colour_R, Ogre::ColourValue &colour_TT, Ogre::ColourValue &colour_TRT);
90 inline Ogre::ColourValue
alpha_fb(
const float phi,
const float from,
const float to);
92 inline Ogre::ColourValue
beta_fb(
const float phi,
const float from,
const float to);
94 inline Ogre::ColourValue
SX_f_s(
const float theta,
const float from,
const float to);
96 inline Ogre::ColourValue
a_fb(
const float theta,
const float from,
const float to);
98 inline Ogre::ColourValue
A_b(
const float theta);
100 inline Ogre::ColourValue
delta_b(
const float theta);
102 inline Ogre::ColourValue
sigma_b(
const float theta);
108 Ogre::ColourValue*
fill_A_b(
const float from,
const float to);
109 Ogre::ColourValue*
fill_delta_b(
const float from,
const float to);
110 Ogre::ColourValue*
fill_sigma_b(
const float from,
const float to);