Blender V4.3
bsdf_principled_hair_huang.h File Reference

Go to the source code of this file.

Classes

struct  HuangHairExtra
 
struct  HuangHairBSDF
 

Typedefs

typedef CCL_NAMESPACE_BEGIN struct HuangHairExtra HuangHairExtra
 
typedef struct HuangHairBSDF HuangHairBSDF
 

Functions

ccl_device_forceinline float bsdf_hair_huang_energy_scale (KernelGlobals kg, float mu, float rough, float ior)
 
ccl_device_inline float3 sample_wh (KernelGlobals kg, const float roughness, const float3 wi, const float3 wm, const float2 rand)
 
ccl_device_inline bool microfacet_visible (const float3 v, const float3 m, const float3 h)
 
ccl_device_inline bool microfacet_visible (const float3 wi, const float3 wo, const float3 m, const float3 h)
 
ccl_device_inline float bsdf_Go (float alpha2, float cos_NI, float cos_NO)
 
ccl_device Spectrum bsdf_hair_huang_eval_r (KernelGlobals kg, ccl_private const ShaderClosure *sc, const float3 wi, const float3 wo)
 
ccl_device Spectrum bsdf_hair_huang_eval_trrt (const float T, const float R, const Spectrum A)
 
ccl_device Spectrum bsdf_hair_huang_eval_residual (KernelGlobals kg, ccl_private const ShaderClosure *sc, const float3 wi, const float3 wo, uint rng_quadrature)
 
ccl_device int bsdf_hair_huang_sample (const KernelGlobals kg, ccl_private const ShaderClosure *sc, ccl_private ShaderData *sd, float3 rand, ccl_private Spectrum *eval, ccl_private float3 *wo, ccl_private float *pdf, ccl_private float2 *sampled_roughness)
 
ccl_device Spectrum bsdf_hair_huang_eval (KernelGlobals kg, ccl_private const ShaderData *sd, ccl_private const ShaderClosure *sc, const float3 wo, ccl_private float *pdf)
 
ccl_device void bsdf_hair_huang_blur (ccl_private ShaderClosure *sc, float roughness)
 
ccl_device Spectrum bsdf_hair_huang_albedo (ccl_private const ShaderData *sd, ccl_private const ShaderClosure *sc)
 
Hair coordinate system utils.
ccl_device_inline float sin_theta (const float3 w)
 
ccl_device_inline float cos_theta (const float3 w)
 
ccl_device_inline float tan_theta (const float3 w)
 
ccl_device float sin_phi (const float3 w)
 
ccl_device float2 sincos_phi (const float3 w)
 
ccl_device_inline float dir_theta (const float3 w)
 
ccl_device_inline float dir_phi (const float3 w)
 
ccl_device_inline float2 dir_sph (const float3 w)
 
ccl_device_inline float to_phi (float gamma, float b)
 
ccl_device_inline float to_gamma (float phi, float b)
 
ccl_device_inline float h_to_gamma (const float h_div_r, const float b, const float3 wi)
 
ccl_device_inline float2 to_point (float gamma, float b)
 
ccl_device_inline float3 sphg_dir (float theta, float gamma, float b)
 
ccl_device_inline float arc_length (float e2, float gamma)
 
ccl_device_inline bool is_nearfield (ccl_private const HuangHairBSDF *bsdf)
 

Typedef Documentation

◆ HuangHairBSDF

typedef struct HuangHairBSDF HuangHairBSDF

◆ HuangHairExtra

typedef CCL_NAMESPACE_BEGIN struct HuangHairExtra HuangHairExtra

Function Documentation

◆ arc_length()

◆ bsdf_Go()

ccl_device_inline float bsdf_Go ( float alpha2,
float cos_NI,
float cos_NO )

Definition at line 313 of file bsdf_principled_hair_huang.h.

References bsdf_lambda().

Referenced by bsdf_hair_huang_eval_residual(), and bsdf_hair_huang_sample().

◆ bsdf_hair_huang_albedo()

◆ bsdf_hair_huang_blur()

ccl_device void bsdf_hair_huang_blur ( ccl_private ShaderClosure * sc,
float roughness )

Definition at line 880 of file bsdf_principled_hair_huang.h.

References ccl_private, fmaxf, and HuangHairBSDF::roughness.

Referenced by bsdf_blur().

◆ bsdf_hair_huang_energy_scale()

◆ bsdf_hair_huang_eval()

◆ bsdf_hair_huang_eval_r()

◆ bsdf_hair_huang_eval_residual()

◆ bsdf_hair_huang_eval_trrt()

ccl_device Spectrum bsdf_hair_huang_eval_trrt ( const float T,
const float R,
const Spectrum A )

Definition at line 376 of file bsdf_principled_hair_huang.h.

References A, max, one_spectrum, R, and sqr().

Referenced by bsdf_hair_huang_eval_residual().

◆ bsdf_hair_huang_sample()

◆ cos_theta()

◆ dir_phi()

◆ dir_sph()

ccl_device_inline float2 dir_sph ( const float3 w)

Definition at line 118 of file bsdf_principled_hair_huang.h.

References dir_phi(), dir_theta(), make_float2(), and w().

◆ dir_theta()

ccl_device_inline float dir_theta ( const float3 w)

Definition at line 104 of file bsdf_principled_hair_huang.h.

References atan2f, cos_theta(), sin_theta(), and w().

Referenced by dir_sph().

◆ h_to_gamma()

ccl_device_inline float h_to_gamma ( const float h_div_r,
const float b,
const float3 wi )

Definition at line 147 of file bsdf_principled_hair_huang.h.

References acosf, asinf, atan2f, b, float3::x, and float3::z.

Referenced by bsdf_hair_huang_eval(), and bsdf_hair_huang_sample().

◆ is_nearfield()

ccl_device_inline bool is_nearfield ( ccl_private const HuangHairBSDF * bsdf)

Definition at line 187 of file bsdf_principled_hair_huang.h.

Referenced by bsdf_hair_huang_eval(), and bsdf_hair_huang_sample().

◆ microfacet_visible() [1/2]

ccl_device_inline bool microfacet_visible ( const float3 v,
const float3 m,
const float3 h )

◆ microfacet_visible() [2/2]

ccl_device_inline bool microfacet_visible ( const float3 wi,
const float3 wo,
const float3 m,
const float3 h )

Definition at line 304 of file bsdf_principled_hair_huang.h.

References microfacet_visible().

◆ sample_wh()

◆ sin_phi()

◆ sin_theta()

◆ sincos_phi()

ccl_device float2 sincos_phi ( const float3 w)

Definition at line 96 of file bsdf_principled_hair_huang.h.

References cos_theta(), make_float2(), and w().

◆ sphg_dir()

◆ tan_theta()

ccl_device_inline float tan_theta ( const float3 w)

Definition at line 85 of file bsdf_principled_hair_huang.h.

References cos_theta(), sin_theta(), and w().

Referenced by bsdf_hair_huang_eval().

◆ to_gamma()

ccl_device_inline float to_gamma ( float phi,
float b )

Definition at line 134 of file bsdf_principled_hair_huang.h.

References atan2f, b, fast_sincosf(), and sin_phi().

Referenced by bsdf_hair_huang_eval().

◆ to_phi()

ccl_device_inline float to_phi ( float gamma,
float b )

Definition at line 124 of file bsdf_principled_hair_huang.h.

References atan2f, b, and fast_sincosf().

Referenced by bsdf_hair_huang_eval_residual(), and bsdf_hair_huang_sample().

◆ to_point()

ccl_device_inline float2 to_point ( float gamma,
float b )