Blender  V3.3
Classes | Macros | Typedefs | Functions
bssrdf.h File Reference

Go to the source code of this file.

Classes

struct  Bssrdf
 

Macros

#define BURLEY_TRUNCATE   16.0f
 
#define BURLEY_TRUNCATE_CDF   0.9963790093708328f
 

Typedefs

typedef CCL_NAMESPACE_BEGIN struct Bssrdf Bssrdf
 

Functions

ccl_device float bssrdf_dipole_compute_Rd (float alpha_prime, float fourthirdA)
 
ccl_device float bssrdf_dipole_compute_alpha_prime (float rd, float fourthirdA)
 
ccl_device void bssrdf_setup_radius (ccl_private Bssrdf *bssrdf, const ClosureType type, const float eta)
 
ccl_device_inline float bssrdf_burley_fitting (float A)
 
ccl_device_inline float3 bssrdf_burley_compatible_mfp (float3 r)
 
ccl_device void bssrdf_burley_setup (ccl_private Bssrdf *bssrdf)
 
ccl_device float bssrdf_burley_eval (const float d, float r)
 
ccl_device float bssrdf_burley_pdf (const float d, float r)
 
ccl_device_forceinline float bssrdf_burley_root_find (float xi)
 
ccl_device void bssrdf_burley_sample (const float d, float xi, ccl_private float *r, ccl_private float *h)
 
ccl_device float bssrdf_num_channels (const float3 radius)
 
ccl_device void bssrdf_sample (const float3 radius, float xi, ccl_private float *r, ccl_private float *h)
 
ccl_device_forceinline float3 bssrdf_eval (const float3 radius, float r)
 
ccl_device_forceinline float bssrdf_pdf (const float3 radius, float r)
 
ccl_device_inline ccl_private Bssrdfbssrdf_alloc (ccl_private ShaderData *sd, float3 weight)
 
ccl_device int bssrdf_setup (ccl_private ShaderData *sd, ccl_private Bssrdf *bssrdf, ClosureType type, const float ior)
 

Macro Definition Documentation

◆ BURLEY_TRUNCATE

#define BURLEY_TRUNCATE   16.0f

Definition at line 90 of file bssrdf.h.

◆ BURLEY_TRUNCATE_CDF

#define BURLEY_TRUNCATE_CDF   0.9963790093708328f

Definition at line 91 of file bssrdf.h.

Typedef Documentation

◆ Bssrdf

Function Documentation

◆ bssrdf_alloc()

ccl_device_inline ccl_private Bssrdf* bssrdf_alloc ( ccl_private ShaderData sd,
float3  weight 
)

◆ bssrdf_burley_compatible_mfp()

ccl_device_inline float3 bssrdf_burley_compatible_mfp ( float3  r)

Definition at line 101 of file bssrdf.h.

References M_1_PI_F, and r.

Referenced by bssrdf_burley_setup().

◆ bssrdf_burley_eval()

ccl_device float bssrdf_burley_eval ( const float  d,
float  r 
)

Definition at line 118 of file bssrdf.h.

References BURLEY_TRUNCATE, expf, and r.

Referenced by bssrdf_burley_pdf().

◆ bssrdf_burley_fitting()

ccl_device_inline float bssrdf_burley_fitting ( float  A)

Definition at line 93 of file bssrdf.h.

References A.

Referenced by bssrdf_burley_setup().

◆ bssrdf_burley_pdf()

ccl_device float bssrdf_burley_pdf ( const float  d,
float  r 
)

Definition at line 138 of file bssrdf.h.

References bssrdf_burley_eval(), BURLEY_TRUNCATE_CDF, and r.

Referenced by bssrdf_eval().

◆ bssrdf_burley_root_find()

ccl_device_forceinline float bssrdf_burley_root_find ( float  xi)

Definition at line 151 of file bssrdf.h.

References expf, fabsf, and r.

Referenced by bssrdf_burley_sample().

◆ bssrdf_burley_sample()

ccl_device void bssrdf_burley_sample ( const float  d,
float  xi,
ccl_private float r,
ccl_private float h 
)

Definition at line 187 of file bssrdf.h.

References bssrdf_burley_root_find(), BURLEY_TRUNCATE, BURLEY_TRUNCATE_CDF, r, and safe_sqrtf().

Referenced by bssrdf_sample().

◆ bssrdf_burley_setup()

ccl_device void bssrdf_burley_setup ( ccl_private Bssrdf bssrdf)

Definition at line 106 of file bssrdf.h.

References A, bssrdf(), bssrdf_burley_compatible_mfp(), bssrdf_burley_fitting(), l, and make_float3.

◆ bssrdf_dipole_compute_alpha_prime()

ccl_device float bssrdf_dipole_compute_alpha_prime ( float  rd,
float  fourthirdA 
)

Definition at line 27 of file bssrdf.h.

References bssrdf_dipole_compute_Rd().

Referenced by bssrdf_setup_radius().

◆ bssrdf_dipole_compute_Rd()

ccl_device float bssrdf_dipole_compute_Rd ( float  alpha_prime,
float  fourthirdA 
)

Definition at line 21 of file bssrdf.h.

References expf, and sqrtf.

Referenced by bssrdf_dipole_compute_alpha_prime().

◆ bssrdf_eval()

ccl_device_forceinline float3 bssrdf_eval ( const float3  radius,
float  r 
)

Definition at line 244 of file bssrdf.h.

References bssrdf_burley_pdf(), make_float3, r, float3::x, float3::y, and float3::z.

Referenced by bssrdf_pdf(), and subsurface_disk_eval().

◆ bssrdf_num_channels()

ccl_device float bssrdf_num_channels ( const float3  radius)

Definition at line 201 of file bssrdf.h.

References channels(), float3::x, float3::y, and float3::z.

Referenced by bssrdf_pdf(), and bssrdf_sample().

◆ bssrdf_pdf()

ccl_device_forceinline float bssrdf_pdf ( const float3  radius,
float  r 
)

Definition at line 251 of file bssrdf.h.

References bssrdf_eval(), bssrdf_num_channels(), r, float3::x, float3::y, and float3::z.

Referenced by subsurface_disk_eval().

◆ bssrdf_sample()

ccl_device void bssrdf_sample ( const float3  radius,
float  xi,
ccl_private float r,
ccl_private float h 
)

Definition at line 216 of file bssrdf.h.

References bssrdf_burley_sample(), bssrdf_num_channels(), r, float3::x, float3::y, and float3::z.

Referenced by subsurface_disk().

◆ bssrdf_setup()

ccl_device int bssrdf_setup ( ccl_private ShaderData sd,
ccl_private Bssrdf bssrdf,
ClosureType  type,
const float  ior 
)

◆ bssrdf_setup_radius()

ccl_device void bssrdf_setup_radius ( ccl_private Bssrdf bssrdf,
const ClosureType  type,
const float  eta 
)