Blender V4.5
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
 

Functions

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

Macro Definition Documentation

◆ BURLEY_TRUNCATE

#define BURLEY_TRUNCATE   16.0f

Definition at line 99 of file bssrdf.h.

Referenced by bssrdf_burley_eval(), and bssrdf_burley_sample().

◆ BURLEY_TRUNCATE_CDF

#define BURLEY_TRUNCATE_CDF   0.9963790093708328f

Definition at line 100 of file bssrdf.h.

Referenced by bssrdf_burley_pdf(), and bssrdf_burley_sample().

Function Documentation

◆ bssrdf_alloc()

◆ bssrdf_burley_compatible_mfp()

ccl_device_inline Spectrum bssrdf_burley_compatible_mfp ( Spectrum r)

Definition at line 110 of file bssrdf.h.

References M_1_PI_F.

Referenced by bssrdf_burley_setup().

◆ bssrdf_burley_eval()

ccl_device float bssrdf_burley_eval ( const float d,
const float r )

Definition at line 129 of file bssrdf.h.

References BURLEY_TRUNCATE, and expf.

Referenced by bssrdf_burley_pdf().

◆ bssrdf_burley_fitting()

ccl_device_inline float bssrdf_burley_fitting ( const float A)

Definition at line 102 of file bssrdf.h.

References A.

Referenced by bssrdf_burley_setup().

◆ bssrdf_burley_pdf()

ccl_device float bssrdf_burley_pdf ( const float d,
const float r )

Definition at line 150 of file bssrdf.h.

References bssrdf_burley_eval(), and BURLEY_TRUNCATE_CDF.

Referenced by bssrdf_eval().

◆ bssrdf_burley_root_find()

ccl_device_forceinline float bssrdf_burley_root_find ( const float xi)

Definition at line 163 of file bssrdf.h.

References expf, fabsf, and fmaxf.

Referenced by bssrdf_burley_sample().

◆ bssrdf_burley_sample()

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

Definition at line 197 of file bssrdf.h.

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

Referenced by bssrdf_sample().

◆ bssrdf_burley_setup()

ccl_device void bssrdf_burley_setup ( ccl_private Bssrdf * bssrdf)

◆ bssrdf_dipole_compute_alpha_prime()

ccl_device float bssrdf_dipole_compute_alpha_prime ( const float rd,
const float fourthirdA )

Definition at line 36 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 ( const float alpha_prime,
const float fourthirdA )

Definition at line 30 of file bssrdf.h.

References expf, and sqrtf.

Referenced by bssrdf_dipole_compute_alpha_prime().

◆ bssrdf_eval()

ccl_device_forceinline Spectrum bssrdf_eval ( const Spectrum radius,
const float r )

Definition at line 253 of file bssrdf.h.

References bssrdf_burley_pdf(), FOREACH_SPECTRUM_CHANNEL, GET_SPECTRUM_CHANNEL, and result.

Referenced by bssrdf_pdf().

◆ bssrdf_num_channels()

ccl_device float bssrdf_num_channels ( const Spectrum radius)

Definition at line 211 of file bssrdf.h.

References FOREACH_SPECTRUM_CHANNEL, and GET_SPECTRUM_CHANNEL.

Referenced by bssrdf_pdf(), and bssrdf_sample().

◆ bssrdf_pdf()

ccl_device_forceinline float bssrdf_pdf ( const Spectrum radius,
const float r )

Definition at line 262 of file bssrdf.h.

References bssrdf_eval(), bssrdf_num_channels(), and reduce_add().

◆ bssrdf_sample()

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

◆ bssrdf_setup()

◆ bssrdf_setup_radius()