Blender V5.0
bsdf_principled_hair_huang.h File Reference

Go to the source code of this file.

Classes

struct  HuangHairExtra
struct  HuangHairBSDF

Functions

ccl_device_forceinline float bsdf_hair_huang_energy_scale (KernelGlobals kg, const float mu, const float rough, const float ior)
ccl_device_inline float3 sample_wh (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 (const float alpha2, const float cos_NI, const float cos_NO)
ccl_device Spectrum bsdf_hair_huang_eval_r (KernelGlobals kg, const ccl_private 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, const ccl_private ShaderClosure *sc, const float3 wi, const float3 wo, ccl_private uint *rng_quadrature)
ccl_device int bsdf_hair_huang_sample (const KernelGlobals kg, const ccl_private ShaderClosure *sc, ccl_private ShaderData *sd, const 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 ShaderData *sd, const ccl_private ShaderClosure *sc, const float3 wo, ccl_private float *pdf)
ccl_device void bsdf_hair_huang_blur (ccl_private ShaderClosure *sc, const float roughness)
ccl_device Spectrum bsdf_hair_huang_albedo (const ccl_private ShaderData *, const ccl_private 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_inline bool is_circular (const float b)
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 (const float gamma, const float b)
ccl_device_inline float to_gamma (const float phi, const float b)
ccl_device_inline float phi_to_h (const float phi, const float b, const float3 wi)
ccl_device_inline float h_to_gamma (const float h_div_r, const float b, const float3 wi)
ccl_device_inline float d_gamma_d_h (const float2 sincos_phi_i, const float gamma, const float b)
ccl_device_inline float2 to_point (const float gamma, const float b)
ccl_device_inline float3 sphg_dir (const float theta, const float gamma, const float b)
ccl_device_inline float arc_length (const float e2, const float gamma)
ccl_device_inline bool is_nearfield (const ccl_private HuangHairBSDF *bsdf)

Function Documentation

◆ arc_length()

◆ bsdf_Go()

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

◆ bsdf_hair_huang_albedo()

ccl_device Spectrum bsdf_hair_huang_albedo ( const ccl_private ShaderData * ,
const ccl_private ShaderClosure * sc )

◆ bsdf_hair_huang_blur()

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

Definition at line 912 of file bsdf_principled_hair_huang.h.

References ccl_device, ccl_private, fmaxf, and HuangHairBSDF::roughness.

Referenced by bsdf_blur().

◆ bsdf_hair_huang_energy_scale()

ccl_device_forceinline float bsdf_hair_huang_energy_scale ( KernelGlobals kg,
const float mu,
const float rough,
const float ior )

◆ 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 425 of file bsdf_principled_hair_huang.h.

References A, ccl_device, max, one_spectrum, R, sqr, and T.

Referenced by bsdf_hair_huang_eval_residual().

◆ bsdf_hair_huang_sample()

◆ cos_theta()

◆ d_gamma_d_h()

ccl_device_inline float d_gamma_d_h ( const float2 sincos_phi_i,
const float gamma,
const float b )

◆ dir_phi()

◆ dir_sph()

ccl_device_inline float2 dir_sph ( const float3 w)

Definition at line 130 of file bsdf_principled_hair_huang.h.

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

◆ dir_theta()

ccl_device_inline float dir_theta ( const float3 w)

Definition at line 116 of file bsdf_principled_hair_huang.h.

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

Referenced by dir_sph().

◆ h_to_gamma()

◆ is_circular()

◆ is_nearfield()

ccl_device_inline bool is_nearfield ( const ccl_private HuangHairBSDF * bsdf)

Definition at line 232 of file bsdf_principled_hair_huang.h.

References ccl_device_inline, and ccl_private.

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 349 of file bsdf_principled_hair_huang.h.

References ccl_device_inline, and microfacet_visible().

◆ phi_to_h()

ccl_device_inline float phi_to_h ( const float phi,
const float b,
const float3 wi )

◆ sample_wh()

ccl_device_inline float3 sample_wh ( const float roughness,
const float3 wi,
const float3 wm,
const float2 rand )

◆ sin_phi()

◆ sin_theta()

◆ sincos_phi()

ccl_device float2 sincos_phi ( const float3 w)

◆ sphg_dir()

◆ tan_theta()

ccl_device_inline float tan_theta ( const float3 w)

Definition at line 91 of file bsdf_principled_hair_huang.h.

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

Referenced by bsdf_hair_huang_eval().

◆ to_gamma()

ccl_device_inline float to_gamma ( const float phi,
const float b )

Definition at line 147 of file bsdf_principled_hair_huang.h.

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

Referenced by phi_to_h().

◆ to_phi()

ccl_device_inline float to_phi ( const float gamma,
const float b )

◆ to_point()

ccl_device_inline float2 to_point ( const float gamma,
const float b )