Blender  V2.93
Classes | Macros | Functions | Variables
bssrdf.h File Reference

Go to the source code of this file.

Classes

struct  Bssrdf
 

Macros

#define GAUSS_TRUNCATE   12.46f
 
#define BURLEY_TRUNCATE   16.0f
 
#define BURLEY_TRUNCATE_CDF   0.9963790093708328f
 

Functions

ccl_device float bssrdf_gaussian_eval (const float radius, float r)
 
ccl_device float bssrdf_gaussian_pdf (const float radius, float r)
 
ccl_device void bssrdf_gaussian_sample (const float radius, float xi, float *r, float *h)
 
ccl_device float bssrdf_cubic_eval (const float radius, const float sharpness, float r)
 
ccl_device float bssrdf_cubic_pdf (const float radius, const float sharpness, float r)
 
ccl_device_forceinline float bssrdf_cubic_quintic_root_find (float xi)
 
ccl_device void bssrdf_cubic_sample (const float radius, const float sharpness, float xi, float *r, float *h)
 
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 (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, float *r, float *h)
 
ccl_device float bssrdf_none_eval (const float radius, float r)
 
ccl_device float bssrdf_none_pdf (const float radius, float r)
 
ccl_device void bssrdf_none_sample (const float radius, float xi, float *r, float *h)
 
ccl_device_inline Bssrdfbssrdf_alloc (ShaderData *sd, float3 weight)
 
ccl_device int bssrdf_setup (ShaderData *sd, Bssrdf *bssrdf, ClosureType type)
 
ccl_device void bssrdf_sample (const ShaderClosure *sc, float xi, float *r, float *h)
 
ccl_device float bssrdf_channel_pdf (const Bssrdf *bssrdf, float radius, float r)
 
ccl_device_forceinline float3 bssrdf_eval (const ShaderClosure *sc, float r)
 
ccl_device_forceinline float bssrdf_pdf (const ShaderClosure *sc, float r)
 

Variables

CCL_NAMESPACE_BEGIN typedef ccl_addr_space struct Bssrdf Bssrdf
 

Macro Definition Documentation

◆ BURLEY_TRUNCATE

#define BURLEY_TRUNCATE   16.0f

Definition at line 193 of file bssrdf.h.

◆ BURLEY_TRUNCATE_CDF

#define BURLEY_TRUNCATE_CDF   0.9963790093708328f

Definition at line 194 of file bssrdf.h.

◆ GAUSS_TRUNCATE

#define GAUSS_TRUNCATE   12.46f

Definition at line 42 of file bssrdf.h.

Function Documentation

◆ bssrdf_alloc()

ccl_device_inline Bssrdf* bssrdf_alloc ( ShaderData sd,
float3  weight 
)

◆ bssrdf_burley_compatible_mfp()

ccl_device_inline float3 bssrdf_burley_compatible_mfp ( float3  r)

Definition at line 205 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 222 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 196 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 242 of file bssrdf.h.

References bssrdf_burley_eval(), BURLEY_TRUNCATE_CDF, and r.

Referenced by bssrdf_channel_pdf().

◆ bssrdf_burley_root_find()

ccl_device_forceinline float bssrdf_burley_root_find ( float  xi)

Definition at line 251 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,
float r,
float h 
)

Definition at line 287 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 ( Bssrdf bssrdf)

Definition at line 210 of file bssrdf.h.

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

Referenced by bssrdf_setup().

◆ bssrdf_channel_pdf()

ccl_device float bssrdf_channel_pdf ( const Bssrdf bssrdf,
float  radius,
float  r 
)

◆ bssrdf_cubic_eval()

ccl_device float bssrdf_cubic_eval ( const float  radius,
const float  sharpness,
float  r 
)

Definition at line 90 of file bssrdf.h.

References M_PI_F, powf, r, sqrtf, and y.

Referenced by bssrdf_cubic_pdf().

◆ bssrdf_cubic_pdf()

ccl_device float bssrdf_cubic_pdf ( const float  radius,
const float  sharpness,
float  r 
)

Definition at line 134 of file bssrdf.h.

References bssrdf_cubic_eval(), and r.

Referenced by bssrdf_channel_pdf().

◆ bssrdf_cubic_quintic_root_find()

ccl_device_forceinline float bssrdf_cubic_quintic_root_find ( float  xi)

Definition at line 140 of file bssrdf.h.

References fabsf, saturate(), x, and x2.

Referenced by bssrdf_cubic_sample().

◆ bssrdf_cubic_sample()

ccl_device void bssrdf_cubic_sample ( const float  radius,
const float  sharpness,
float  xi,
float r,
float h 
)

Definition at line 167 of file bssrdf.h.

References bssrdf_cubic_quintic_root_find(), powf, r, and safe_sqrtf().

Referenced by bssrdf_sample().

◆ bssrdf_eval()

ccl_device_forceinline float3 bssrdf_eval ( const ShaderClosure sc,
float  r 
)

Definition at line 479 of file bssrdf.h.

References bssrdf(), bssrdf_channel_pdf(), make_float3, and r.

Referenced by bssrdf_pdf(), and subsurface_scatter_eval().

◆ bssrdf_gaussian_eval()

ccl_device float bssrdf_gaussian_eval ( const float  radius,
float  r 
)

Definition at line 44 of file bssrdf.h.

References expf, GAUSS_TRUNCATE, M_PI_F, r, sqrtf, and v.

Referenced by bssrdf_gaussian_pdf().

◆ bssrdf_gaussian_pdf()

ccl_device float bssrdf_gaussian_pdf ( const float  radius,
float  r 
)

Definition at line 57 of file bssrdf.h.

References bssrdf_gaussian_eval(), expf, GAUSS_TRUNCATE, and r.

Referenced by bssrdf_channel_pdf().

◆ bssrdf_gaussian_sample()

ccl_device void bssrdf_gaussian_sample ( const float  radius,
float  xi,
float r,
float h 
)

Definition at line 65 of file bssrdf.h.

References expf, GAUSS_TRUNCATE, logf, r, safe_sqrtf(), sqrtf, and v.

Referenced by bssrdf_sample().

◆ bssrdf_none_eval()

ccl_device float bssrdf_none_eval ( const float  radius,
float  r 
)

Definition at line 302 of file bssrdf.h.

References r.

Referenced by bssrdf_none_pdf().

◆ bssrdf_none_pdf()

ccl_device float bssrdf_none_pdf ( const float  radius,
float  r 
)

Definition at line 308 of file bssrdf.h.

References blender::compositor::area(), bssrdf_none_eval(), M_PI_F, and r.

◆ bssrdf_none_sample()

ccl_device void bssrdf_none_sample ( const float  radius,
float  xi,
float r,
float h 
)

Definition at line 317 of file bssrdf.h.

References r, safe_sqrtf(), and sqrtf.

◆ bssrdf_pdf()

ccl_device_forceinline float bssrdf_pdf ( const ShaderClosure sc,
float  r 
)

Definition at line 488 of file bssrdf.h.

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

Referenced by subsurface_scatter_eval().

◆ bssrdf_sample()

ccl_device void bssrdf_sample ( const ShaderClosure sc,
float  xi,
float r,
float h 
)

◆ bssrdf_setup()

ccl_device int bssrdf_setup ( ShaderData sd,
Bssrdf bssrdf,
ClosureType  type 
)

Variable Documentation

◆ Bssrdf