Blender V5.0
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 ccl_device_inline, and 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, ccl_device, 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, and ccl_device_inline.

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(), BURLEY_TRUNCATE_CDF, and ccl_device.

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 ccl_device_forceinline, expf, fabsf, fmaxf, and i.

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 )

◆ bssrdf_burley_setup()

◆ 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(), ccl_device, and i.

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 ccl_device, expf, and sqrtf.

Referenced by bssrdf_dipole_compute_alpha_prime().

◆ bssrdf_eval()

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

◆ bssrdf_num_channels()

ccl_device float bssrdf_num_channels ( const Spectrum radius)

Definition at line 211 of file bssrdf.h.

References ccl_device, FOREACH_SPECTRUM_CHANNEL, GET_SPECTRUM_CHANNEL, and i.

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(), ccl_device_forceinline, 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()