Blender V5.0
bsdf_util.h File Reference

Go to the source code of this file.

Classes

struct  FresnelThinFilm
struct  complex< T >
struct  fresnel_info< float >
struct  fresnel_info< Spectrum >

Functions

ccl_device float2 fresnel_dielectric_polarized (float cos_theta_i, const float eta, ccl_private float *r_cos_theta_t, ccl_private float2 *r_cos_phi)
ccl_device_forceinline float fresnel_dielectric (const float cos_theta_i, const float eta, ccl_private float *r_cos_theta_t)
ccl_device_inline float3 refract_angle (const float3 incident, const float3 normal, const float cos_theta_t, const float inv_eta)
ccl_device float fresnel_dielectric_cos (const float cosi, const float eta)
ccl_device_inline float fresnel_dielectric_Fss (const float eta)
ccl_device void fresnel_conductor_polarized (const float cosi, const float ambient_ior, const complex< Spectrum > conductor_ior, ccl_private Spectrum *r_R_s, ccl_private Spectrum *r_R_p, ccl_private complex< Spectrum > *r_phasor_s, ccl_private complex< Spectrum > *r_phasor_p)
ccl_device Spectrum fresnel_conductor (const float cosi, const complex< Spectrum > ior)
ccl_device_inline Spectrum fresnel_f82_Fss (const Spectrum F0, const Spectrum B)
ccl_device_inline Spectrum fresnel_f82tint_B (const Spectrum F0, const Spectrum tint)
ccl_device_inline Spectrum fresnel_f82_B (const Spectrum F0, const Spectrum F82)
ccl_device_inline Spectrum fresnel_f82 (const float cosi, const Spectrum F0, const Spectrum B)
ccl_device_inline Spectrum fresnel_conductor_Fss (const complex< Spectrum > ior)
ccl_device float ior_from_F0 (const float f0)
ccl_device float F0_from_ior (const float ior)
ccl_device float schlick_fresnel (const float u)
ccl_device_forceinline Spectrum interpolate_fresnel_color (const float3 L, const float3 H, const float ior, Spectrum F0)
ccl_device float3 ensure_valid_specular_reflection (const float3 Ng, const float3 I, float3 N)
ccl_device float3 maybe_ensure_valid_specular_reflection (ccl_private ShaderData *sd, const float3 N)
ccl_device_inline float bsdf_principled_hair_albedo_roughness_scale (const float azimuthal_roughness)
ccl_device_inline Spectrum bsdf_principled_hair_sigma_from_reflectance (const Spectrum color, const float azimuthal_roughness)
ccl_device_inline Spectrum bsdf_principled_hair_sigma_from_concentration (const float eumelanin, const float pheomelanin)
ccl_device_inline Spectrum closure_layering_weight (const Spectrum layer_albedo, const Spectrum weight)
ccl_device_inline complex< Spectrumiridescence_lookup_sensitivity (KernelGlobals kg, const float OPD)
template<typename SpectrumOrFloat>
ccl_device_inline float3 iridescence_airy_summation (KernelGlobals kg, const float R12, const SpectrumOrFloat R23, const float OPD, const complex< SpectrumOrFloat > phasor)
template<typename SpectrumOrFloat>
ccl_device Spectrum fresnel_iridescence (KernelGlobals kg, const float ambient_ior, const FresnelThinFilm thin_film, const complex< SpectrumOrFloat > substrate_ior, ccl_private const Spectrum *F82, const float cos_theta_1, ccl_private float *r_cos_theta_3)

Function Documentation

◆ bsdf_principled_hair_albedo_roughness_scale()

ccl_device_inline float bsdf_principled_hair_albedo_roughness_scale ( const float azimuthal_roughness)

Definition at line 378 of file bsdf_util.h.

References ccl_device_inline, and x.

Referenced by bsdf_hair_chiang_albedo(), and bsdf_principled_hair_sigma_from_reflectance().

◆ bsdf_principled_hair_sigma_from_concentration()

ccl_device_inline Spectrum bsdf_principled_hair_sigma_from_concentration ( const float eumelanin,
const float pheomelanin )

Definition at line 393 of file bsdf_util.h.

References ccl_device_inline, make_float3(), and rgb_to_spectrum().

Referenced by svm_node_closure_bsdf().

◆ bsdf_principled_hair_sigma_from_reflectance()

ccl_device_inline Spectrum bsdf_principled_hair_sigma_from_reflectance ( const Spectrum color,
const float azimuthal_roughness )

Definition at line 386 of file bsdf_util.h.

References bsdf_principled_hair_albedo_roughness_scale(), log, max, and zero_spectrum.

Referenced by svm_node_closure_bsdf().

◆ closure_layering_weight()

ccl_device_inline Spectrum closure_layering_weight ( const Spectrum layer_albedo,
const Spectrum weight )

◆ ensure_valid_specular_reflection()

ccl_device float3 ensure_valid_specular_reflection ( const float3 Ng,
const float3 I,
float3 N )

◆ F0_from_ior()

◆ fresnel_conductor()

ccl_device Spectrum fresnel_conductor ( const float cosi,
const complex< Spectrum > ior )

Definition at line 194 of file bsdf_util.h.

References ccl_device, and fresnel_conductor_polarized().

Referenced by fresnel_conductor_Fss(), and microfacet_fresnel().

◆ fresnel_conductor_Fss()

ccl_device_inline Spectrum fresnel_conductor_Fss ( const complex< Spectrum > ior)

◆ fresnel_conductor_polarized()

ccl_device void fresnel_conductor_polarized ( const float cosi,
const float ambient_ior,
const complex< Spectrum > conductor_ior,
ccl_private Spectrum * r_R_s,
ccl_private Spectrum * r_R_p,
ccl_private complex< Spectrum > * r_phasor_s,
ccl_private complex< Spectrum > * r_phasor_p )

◆ fresnel_dielectric()

◆ fresnel_dielectric_cos()

◆ fresnel_dielectric_Fss()

◆ fresnel_dielectric_polarized()

ccl_device float2 fresnel_dielectric_polarized ( float cos_theta_i,
const float eta,
ccl_private float * r_cos_theta_t,
ccl_private float2 * r_cos_phi )

◆ fresnel_f82()

ccl_device_inline Spectrum fresnel_f82 ( const float cosi,
const Spectrum F0,
const Spectrum B )

Definition at line 232 of file bsdf_util.h.

References B, ccl_device_inline, mix, one_spectrum, saturate, saturatef, and sqr.

Referenced by fresnel_iridescence(), and microfacet_fresnel().

◆ fresnel_f82_B()

ccl_device_inline Spectrum fresnel_f82_B ( const Spectrum F0,
const Spectrum F82 )

Definition at line 223 of file bsdf_util.h.

References ccl_device_inline, mix, one_spectrum, and sqr.

Referenced by fresnel_conductor_Fss(), and fresnel_iridescence().

◆ fresnel_f82_Fss()

ccl_device_inline Spectrum fresnel_f82_Fss ( const Spectrum F0,
const Spectrum B )

Definition at line 202 of file bsdf_util.h.

References B, ccl_device_inline, mix, and one_spectrum.

Referenced by bsdf_microfacet_setup_fresnel_f82_tint(), and fresnel_conductor_Fss().

◆ fresnel_f82tint_B()

ccl_device_inline Spectrum fresnel_f82tint_B ( const Spectrum F0,
const Spectrum tint )

Definition at line 208 of file bsdf_util.h.

References ccl_device_inline, mix, one_spectrum, and sqr.

Referenced by bsdf_microfacet_setup_fresnel_f82_tint().

◆ fresnel_iridescence()

template<typename SpectrumOrFloat>
ccl_device Spectrum fresnel_iridescence ( KernelGlobals kg,
const float ambient_ior,
const FresnelThinFilm thin_film,
const complex< SpectrumOrFloat > substrate_ior,
ccl_private const Spectrum * F82,
const float cos_theta_1,
ccl_private float * r_cos_theta_3 )

◆ interpolate_fresnel_color()

ccl_device_forceinline Spectrum interpolate_fresnel_color ( const float3 L,
const float3 H,
const float ior,
Spectrum F0 )

◆ ior_from_F0()

ccl_device float ior_from_F0 ( const float f0)

◆ iridescence_airy_summation()

template<typename SpectrumOrFloat>
ccl_device_inline float3 iridescence_airy_summation ( KernelGlobals kg,
const float R12,
const SpectrumOrFloat R23,
const float OPD,
const complex< SpectrumOrFloat > phasor )

◆ iridescence_lookup_sensitivity()

ccl_device_inline complex< Spectrum > iridescence_lookup_sensitivity ( KernelGlobals kg,
const float OPD )

Evaluate the sensitivity functions for the Fourier-space spectral integration.

Definition at line 422 of file bsdf_util.h.

References ccl_device_inline, kernel_data, lookup_table_read(), M_2PI_F, make_float3(), size(), THIN_FILM_TABLE_SIZE, and x.

Referenced by iridescence_airy_summation().

◆ maybe_ensure_valid_specular_reflection()

◆ refract_angle()

ccl_device_inline float3 refract_angle ( const float3 incident,
const float3 normal,
const float cos_theta_t,
const float inv_eta )

◆ schlick_fresnel()

ccl_device float schlick_fresnel ( const float u)

Definition at line 261 of file bsdf_util.h.

References ccl_device, and clamp().