Blender V5.0
mapping.h File Reference
#include "util/math.h"
#include "util/projection.h"

Go to the source code of this file.

Functions

CCL_NAMESPACE_BEGIN ccl_device float2 sample_uniform_disk (const float2 rand)
ccl_device void make_orthonormals_tangent (const float3 N, const float3 T, ccl_private float3 *a, ccl_private float3 *b)
ccl_device void make_orthonormals_safe_tangent (const float3 N, const float3 T, ccl_private float3 *a, ccl_private float3 *b)
ccl_device_inline void sample_cos_hemisphere (const float3 N, const float2 rand_in, ccl_private float3 *wo, ccl_private float *pdf)
ccl_device_inline float pdf_cos_hemisphere (const float3 N, const float3 D)
ccl_device_inline void sample_uniform_hemisphere (const float3 N, const float2 rand, ccl_private float3 *wo, ccl_private float *pdf)
ccl_device_inline float pdf_uniform_cone (const float3 N, const float3 D, const float angle)
ccl_device_inline float3 sample_uniform_cone (const float3 N, const float one_minus_cos_angle, const float2 rand, ccl_private float *cos_theta, ccl_private float *pdf)
ccl_device float3 sample_uniform_sphere (const float2 rand)
ccl_device float2 regular_polygon_sample (const float corners, float rotation, const float2 rand)
ccl_device_inline int sample_geometric_distribution (const float rand, const float r, ccl_private float &pmf, const int cut_off=INT_MAX)
ccl_device_inline float sample_exponential_distribution (const float rand, const float lambda)
ccl_device_inline float sample_exponential_distribution (const float rand, const float lambda, const Interval< float > t)
ccl_device_inline Spectrum pdf_exponential_distribution (const float x, const Spectrum lambda, const Interval< float > t)

Function Documentation

◆ make_orthonormals_safe_tangent()

ccl_device void make_orthonormals_safe_tangent ( const float3 N,
const float3 T,
ccl_private float3 * a,
ccl_private float3 * b )

Definition at line 51 of file sample/mapping.h.

References b, ccl_device, ccl_private, cross, len_squared(), make_orthonormals(), N, safe_normalize(), and T.

Referenced by bsdf_sheen_setup().

◆ make_orthonormals_tangent()

ccl_device void make_orthonormals_tangent ( const float3 N,
const float3 T,
ccl_private float3 * a,
ccl_private float3 * b )

◆ pdf_cos_hemisphere()

ccl_device_inline float pdf_cos_hemisphere ( const float3 N,
const float3 D )

Definition at line 82 of file sample/mapping.h.

References ccl_device_inline, cos_theta(), D, dot(), M_1_PI_F, and N.

Referenced by sphere_light_pdf(), and spot_light_pdf().

◆ pdf_exponential_distribution()

ccl_device_inline Spectrum pdf_exponential_distribution ( const float x,
const Spectrum lambda,
const Interval< float > t )

◆ pdf_uniform_cone()

ccl_device_inline float pdf_uniform_cone ( const float3 N,
const float3 D,
const float angle )

Definition at line 107 of file sample/mapping.h.

References angle(), ccl_device_inline, D, M_1_2PI_F, N, one_minus_cos(), precise_angle(), and z().

Referenced by background_sun_pdf().

◆ regular_polygon_sample()

ccl_device float2 regular_polygon_sample ( const float corners,
float rotation,
const float2 rand )

Definition at line 184 of file sample/mapping.h.

References angle(), ccl_device, cosf, floorf, M_PI_F, make_float2, sinf, sqrtf, v, float2::x, and float2::y.

Referenced by camera_sample_aperture().

◆ sample_cos_hemisphere()

◆ sample_exponential_distribution() [1/2]

ccl_device_inline float sample_exponential_distribution ( const float rand,
const float lambda )

Definition at line 226 of file sample/mapping.h.

References ccl_device_inline, and logf.

◆ sample_exponential_distribution() [2/2]

ccl_device_inline float sample_exponential_distribution ( const float rand,
const float lambda,
const Interval< float > t )

Definition at line 235 of file sample/mapping.h.

References ccl_device_inline, clamp(), expf, logf, Interval< T >::max, and Interval< T >::min.

◆ sample_geometric_distribution()

ccl_device_inline int sample_geometric_distribution ( const float rand,
const float r,
ccl_private float & pmf,
const int cut_off = INT_MAX )

Definition at line 214 of file sample/mapping.h.

References ccl_device_inline, ccl_private, floorf, logf, min, and powf.

◆ sample_uniform_cone()

◆ sample_uniform_disk()

◆ sample_uniform_hemisphere()

ccl_device_inline void sample_uniform_hemisphere ( const float3 N,
const float2 rand,
ccl_private float3 * wo,
ccl_private float * pdf )

◆ sample_uniform_sphere()