Blender V4.3
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)
 
ccl_device_inline float bssrdf_burley_fitting (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, 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 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, float r)
 
ccl_device_forceinline float bssrdf_pdf (const Spectrum radius, 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, int path_flag, ClosureType type)
 

Macro Definition Documentation

◆ BURLEY_TRUNCATE

#define BURLEY_TRUNCATE   16.0f

Definition at line 93 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 94 of file bssrdf.h.

Referenced by bssrdf_burley_pdf(), and bssrdf_burley_sample().

Typedef Documentation

◆ Bssrdf

typedef CCL_NAMESPACE_BEGIN struct Bssrdf Bssrdf

Function Documentation

◆ bssrdf_alloc()

◆ bssrdf_burley_compatible_mfp()

ccl_device_inline Spectrum bssrdf_burley_compatible_mfp ( Spectrum r)

Definition at line 104 of file bssrdf.h.

Referenced by bssrdf_burley_setup().

◆ bssrdf_burley_eval()

ccl_device float bssrdf_burley_eval ( const float d,
float r )

Definition at line 123 of file bssrdf.h.

References BURLEY_TRUNCATE, and expf.

Referenced by bssrdf_burley_pdf().

◆ bssrdf_burley_fitting()

ccl_device_inline float bssrdf_burley_fitting ( float A)

Definition at line 96 of file bssrdf.h.

Referenced by bssrdf_burley_setup().

◆ bssrdf_burley_pdf()

ccl_device float bssrdf_burley_pdf ( const float d,
float r )

Definition at line 143 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 ( float xi)

Definition at line 156 of file bssrdf.h.

References expf, and fabsf.

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 192 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 ( float rd,
float fourthirdA )

Definition at line 31 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 25 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,
float r )

Definition at line 248 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 206 of file bssrdf.h.

References channels(), 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,
float r )

Definition at line 257 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()