Blender V4.5
math_float3.h File Reference
#include "util/math_base.h"
#include "util/math_float4.h"
#include "util/types_float3.h"
#include "util/types_float4.h"

Go to the source code of this file.

Functions

CCL_NAMESPACE_BEGIN ccl_device_inline float3 zero_float3 ()
ccl_device_inline float3 one_float3 ()
ccl_device_template_spec float3 make_zero ()
ccl_device_inline float3 reciprocal (const float3 a)
ccl_device_inline float3 operator- (const float3 &a)
ccl_device_inline float3 operator* (const float3 a, const float3 b)
ccl_device_inline float3 operator* (const float3 a, const float f)
ccl_device_inline float3 operator* (const float f, const float3 a)
ccl_device_inline float3 operator/ (const float f, const float3 a)
ccl_device_inline float3 operator/ (const float3 a, const float f)
ccl_device_inline float3 operator/ (const float3 a, const float3 b)
ccl_device_inline float3 operator+ (const float3 a, const float3 b)
ccl_device_inline float3 operator+ (const float3 a, const float f)
ccl_device_inline float3 operator- (const float3 a, const float3 b)
ccl_device_inline float3 operator- (const float3 a, const float f)
ccl_device_inline float3 operator+= (float3 &a, const float3 b)
ccl_device_inline float3 operator-= (float3 &a, const float3 b)
ccl_device_inline float3 operator*= (float3 &a, const float3 b)
ccl_device_inline float3 operator*= (float3 &a, const float f)
ccl_device_inline float3 operator/= (float3 &a, const float3 b)
ccl_device_inline float3 operator/= (float3 &a, const float f)
ccl_device_inline packed_float3 operator*= (packed_float3 &a, const float3 b)
ccl_device_inline packed_float3 operator*= (packed_float3 &a, const float f)
ccl_device_inline packed_float3 operator/= (packed_float3 &a, const float3 b)
ccl_device_inline packed_float3 operator/= (packed_float3 &a, const float f)
ccl_device_inline bool operator== (const float3 a, const float3 b)
ccl_device_inline bool operator!= (const float3 a, const float3 b)
ccl_device_inline int3 operator>= (const float3 a, const float3 b)
ccl_device_inline float dot (const float3 a, const float3 b)
ccl_device_inline float dot_xy (const float3 a, const float3 b)
ccl_device_inline float len (const float3 a)
ccl_device_inline float reduce_min (const float3 a)
ccl_device_inline float reduce_max (const float3 a)
ccl_device_inline float len_squared (const float3 a)
ccl_device_inline float distance (const float3 a, const float3 b)
ccl_device_inline float3 cross (const float3 a, const float3 b)
ccl_device_inline float3 normalize (const float3 a)
ccl_device_inline float3 min (const float3 a, const float3 b)
ccl_device_inline float3 max (const float3 a, const float3 b)
ccl_device_inline float3 clamp (const float3 a, const float3 mn, const float3 mx)
ccl_device_inline float3 fabs (const float3 a)
ccl_device_inline float3 fmod (const float3 a, const float b)
ccl_device_inline float3 sqrt (const float3 a)
ccl_device_inline float3 floor (const float3 a)
ccl_device_inline float3 ceil (const float3 a)
ccl_device_inline float3 mix (const float3 a, const float3 b, const float t)
ccl_device_inline float3 saturate (const float3 a)
ccl_device_inline float3 exp (const float3 v)
ccl_device_inline float3 log (const float3 v)
ccl_device_inline float3 cos (const float3 v)
ccl_device_inline float3 reflect (const float3 incident, const float3 unit_normal)
ccl_device_inline float3 refract (const float3 incident, const float3 normal, const float eta)
ccl_device_inline float3 faceforward (const float3 vector, const float3 incident, const float3 reference)
ccl_device_inline float3 project (const float3 v, const float3 v_proj)
ccl_device_inline float3 normalize_len (const float3 a, ccl_private float *t)
ccl_device_inline float3 safe_normalize (const float3 a)
ccl_device_inline float3 safe_normalize_fallback (const float3 a, const float3 fallback)
ccl_device_inline float3 safe_normalize_len (const float3 a, ccl_private float *t)
ccl_device_inline float3 safe_divide (const float3 a, const float3 b)
ccl_device_inline float3 safe_divide (const float3 a, const float b)
ccl_device_inline float3 interp (const float3 a, const float3 b, const float t)
ccl_device_inline float3 sqr (const float3 a)
ccl_device_inline bool is_zero (const float3 a)
ccl_device_inline float reduce_add (const float3 a)
ccl_device_inline float average (const float3 a)
ccl_device_inline bool isequal (const float3 a, const float3 b)
template<class MaskType>
ccl_device_inline float3 select (const MaskType mask, const float3 a, const float3 b)
template<class MaskType>
ccl_device_inline float3 mask (const MaskType mask, const float3 a)
ccl_device_inline float3 power (const float3 v, const float e)
ccl_device_inline bool isfinite_safe (const float3 v)
ccl_device_inline float3 ensure_finite (const float3 v)
ccl_device_inline float triangle_area (const ccl_private float3 &v1, const ccl_private float3 &v2, const ccl_private float3 &v3)
ccl_device_inline void make_orthonormals (const float3 N, ccl_private float3 *a, ccl_private float3 *b)
ccl_device_inline float3 rotate_around_axis (const float3 p, const float3 axis, const float angle)
ccl_device_inline float precise_angle (const float3 a, const float3 b)
ccl_device_inline float tan_angle (const float3 a, const float3 b)
ccl_device_inline float2 map_to_tube (const float3 co)
ccl_device_inline float2 map_to_sphere (const float3 co)

Function Documentation

◆ average()

ccl_device_inline float average ( const float3 a)

Definition at line 496 of file math_float3.h.

References ccl_device_inline, and reduce_add().

◆ ceil()

ccl_device_inline float3 ceil ( const float3 a)

Definition at line 367 of file math_float3.h.

References ccl_device_inline, ceilf, make_float3(), float3::x, float3::y, and float3::z.

◆ clamp()

ccl_device_inline float3 clamp ( const float3 a,
const float3 mn,
const float3 mx )

Definition at line 310 of file math_float3.h.

References ccl_device_inline, max, and min.

◆ cos()

Definition at line 396 of file math_float3.h.

References ccl_device_inline, cosf, make_float3(), and v.

◆ cross()

ccl_device_inline float3 cross ( const float3 a,
const float3 b )

Definition at line 269 of file math_float3.h.

References b, ccl_device_inline, make_float3(), msub(), float3::x, x, float3::y, y, float3::z, and z().

◆ distance()

ccl_device_inline float distance ( const float3 a,
const float3 b )

Definition at line 264 of file math_float3.h.

References b, ccl_device_inline, and len.

◆ dot()

ccl_device_inline float dot ( const float3 a,
const float3 b )

◆ dot_xy()

ccl_device_inline float dot_xy ( const float3 a,
const float3 b )

Definition at line 229 of file math_float3.h.

References b, ccl_device_inline, float3::x, and float3::y.

◆ ensure_finite()

ccl_device_inline float3 ensure_finite ( const float3 v)

Definition at line 544 of file math_float3.h.

References ccl_device_inline, isfinite_safe(), v, float3::x, float3::y, and float3::z.

◆ exp()

Definition at line 386 of file math_float3.h.

References ccl_device_inline, expf, make_float3(), and v.

◆ fabs()

ccl_device_inline float3 fabs ( const float3 a)

Definition at line 315 of file math_float3.h.

References ccl_device_inline, fabsf, make_float3(), mask(), float3::x, float3::y, and float3::z.

◆ faceforward()

ccl_device_inline float3 faceforward ( const float3 vector,
const float3 incident,
const float3 reference )

Definition at line 415 of file math_float3.h.

References ccl_device_inline, and dot().

◆ floor()

ccl_device_inline float3 floor ( const float3 a)

Definition at line 358 of file math_float3.h.

References ccl_device_inline, floorf, make_float3(), float3::x, float3::y, and float3::z.

◆ fmod()

ccl_device_inline float3 fmod ( const float3 a,
const float b )

Definition at line 333 of file math_float3.h.

References b, ccl_device_inline, fmodf, make_float3(), float3::x, float3::y, and float3::z.

◆ interp()

ccl_device_inline float3 interp ( const float3 a,
const float3 b,
const float t )

Definition at line 466 of file math_float3.h.

References b, and ccl_device_inline.

◆ is_zero()

ccl_device_inline bool is_zero ( const float3 a)

Definition at line 476 of file math_float3.h.

References ccl_device_inline, make_float3(), float3::x, float3::y, and float3::z.

◆ isequal()

ccl_device_inline bool isequal ( const float3 a,
const float3 b )

Definition at line 501 of file math_float3.h.

References all(), b, and ccl_device_inline.

◆ isfinite_safe()

ccl_device_inline bool isfinite_safe ( const float3 v)

Definition at line 539 of file math_float3.h.

References ccl_device_inline, isfinite_safe(), and v.

Referenced by ensure_finite(), and isfinite_safe().

◆ len()

ccl_device_inline float len ( const float3 a)

Definition at line 238 of file math_float3.h.

References ccl_device_inline, dot(), and sqrtf.

◆ len_squared()

ccl_device_inline float len_squared ( const float3 a)

Definition at line 257 of file math_float3.h.

References ccl_device_inline, and dot().

◆ log()

Definition at line 391 of file math_float3.h.

References ccl_device_inline, logf, make_float3(), and v.

◆ make_orthonormals()

◆ make_zero()

Definition at line 29 of file math_float3.h.

References ccl_device_template_spec, and zero_float3().

◆ map_to_sphere()

◆ map_to_tube()

ccl_device_inline float2 map_to_tube ( const float3 co)

Definition at line 638 of file math_float3.h.

References atan2f, ccl_device_inline, len, M_PI_F, make_float2(), sqrtf, v, float3::x, float3::y, and float3::z.

◆ mask()

template<class MaskType>
ccl_device_inline float3 mask ( const MaskType mask,
const float3 a )

Definition at line 527 of file math_float3.h.

References ccl_device_inline, mask(), select, and zero_float3().

◆ max()

ccl_device_inline float3 max ( const float3 a,
const float3 b )

Definition at line 301 of file math_float3.h.

References b, ccl_device_inline, make_float3(), max, float3::x, float3::y, and float3::z.

◆ min()

ccl_device_inline float3 min ( const float3 a,
const float3 b )

Definition at line 292 of file math_float3.h.

References b, ccl_device_inline, make_float3(), min, float3::x, float3::y, and float3::z.

◆ mix()

ccl_device_inline float3 mix ( const float3 a,
const float3 b,
const float t )

Definition at line 376 of file math_float3.h.

References b, and ccl_device_inline.

◆ normalize()

ccl_device_inline float3 normalize ( const float3 a)

Definition at line 282 of file math_float3.h.

References ccl_device_inline, len, and norm().

◆ normalize_len()

ccl_device_inline float3 normalize_len ( const float3 a,
ccl_private float * t )

Definition at line 429 of file math_float3.h.

References ccl_device_inline, ccl_private, len, and x.

◆ one_float3()

◆ operator!=()

ccl_device_inline bool operator!= ( const float3 a,
const float3 b )

Definition at line 204 of file math_float3.h.

References b, and ccl_device_inline.

◆ operator*() [1/3]

ccl_device_inline float3 operator* ( const float f,
const float3 a )

Definition at line 73 of file math_float3.h.

References ccl_device_inline, make_float3(), float3::x, float3::y, and float3::z.

◆ operator*() [2/3]

ccl_device_inline float3 operator* ( const float3 a,
const float f )

Definition at line 64 of file math_float3.h.

References ccl_device_inline, make_float3(), float3::x, float3::y, and float3::z.

◆ operator*() [3/3]

ccl_device_inline float3 operator* ( const float3 a,
const float3 b )

Definition at line 55 of file math_float3.h.

References b, ccl_device_inline, make_float3(), float3::x, float3::y, and float3::z.

◆ operator*=() [1/4]

ccl_device_inline float3 operator*= ( float3 & a,
const float f )

Definition at line 153 of file math_float3.h.

References ccl_device_inline.

◆ operator*=() [2/4]

ccl_device_inline float3 operator*= ( float3 & a,
const float3 b )

Definition at line 148 of file math_float3.h.

References b, and ccl_device_inline.

◆ operator*=() [3/4]

ccl_device_inline packed_float3 operator*= ( packed_float3 & a,
const float f )

Definition at line 176 of file math_float3.h.

References ccl_device_inline.

◆ operator*=() [4/4]

ccl_device_inline packed_float3 operator*= ( packed_float3 & a,
const float3 b )

Definition at line 170 of file math_float3.h.

References b, and ccl_device_inline.

◆ operator+() [1/2]

ccl_device_inline float3 operator+ ( const float3 a,
const float f )

Definition at line 119 of file math_float3.h.

References ccl_device_inline, and make_float3().

◆ operator+() [2/2]

ccl_device_inline float3 operator+ ( const float3 a,
const float3 b )

Definition at line 110 of file math_float3.h.

References b, ccl_device_inline, make_float3(), float3::x, float3::y, and float3::z.

◆ operator+=()

ccl_device_inline float3 operator+= ( float3 & a,
const float3 b )

Definition at line 138 of file math_float3.h.

References b, and ccl_device_inline.

◆ operator-() [1/3]

ccl_device_inline float3 operator- ( const float3 & a)

Definition at line 46 of file math_float3.h.

References ccl_device_inline, make_float3(), float3::x, float3::y, and float3::z.

◆ operator-() [2/3]

ccl_device_inline float3 operator- ( const float3 a,
const float f )

Definition at line 133 of file math_float3.h.

References ccl_device_inline, and make_float3().

◆ operator-() [3/3]

ccl_device_inline float3 operator- ( const float3 a,
const float3 b )

Definition at line 124 of file math_float3.h.

References b, ccl_device_inline, make_float3(), float3::x, float3::y, and float3::z.

◆ operator-=()

ccl_device_inline float3 operator-= ( float3 & a,
const float3 b )

Definition at line 143 of file math_float3.h.

References b, and ccl_device_inline.

◆ operator/() [1/3]

ccl_device_inline float3 operator/ ( const float f,
const float3 a )

Definition at line 82 of file math_float3.h.

References ccl_device_inline, make_float3(), float3::x, float3::y, and float3::z.

◆ operator/() [2/3]

ccl_device_inline float3 operator/ ( const float3 a,
const float f )

Definition at line 91 of file math_float3.h.

References ccl_device_inline, make_float3(), float3::x, float3::y, and float3::z.

◆ operator/() [3/3]

ccl_device_inline float3 operator/ ( const float3 a,
const float3 b )

Definition at line 101 of file math_float3.h.

References b, ccl_device_inline, make_float3(), float3::x, float3::y, and float3::z.

◆ operator/=() [1/4]

ccl_device_inline float3 operator/= ( float3 & a,
const float f )

Definition at line 163 of file math_float3.h.

References ccl_device_inline.

◆ operator/=() [2/4]

ccl_device_inline float3 operator/= ( float3 & a,
const float3 b )

Definition at line 158 of file math_float3.h.

References b, and ccl_device_inline.

◆ operator/=() [3/4]

ccl_device_inline packed_float3 operator/= ( packed_float3 & a,
const float f )

Definition at line 188 of file math_float3.h.

References ccl_device_inline.

◆ operator/=() [4/4]

ccl_device_inline packed_float3 operator/= ( packed_float3 & a,
const float3 b )

Definition at line 182 of file math_float3.h.

References b, and ccl_device_inline.

◆ operator==()

ccl_device_inline bool operator== ( const float3 a,
const float3 b )

Definition at line 195 of file math_float3.h.

References b, ccl_device_inline, float3::x, float3::y, and float3::z.

◆ operator>=()

ccl_device_inline int3 operator>= ( const float3 a,
const float3 b )

Definition at line 209 of file math_float3.h.

References b, ccl_device_inline, make_int3(), float3::x, float3::y, and float3::z.

◆ power()

ccl_device_inline float3 power ( const float3 v,
const float e )

Definition at line 534 of file math_float3.h.

References ccl_device_inline, e, make_float3(), powf, and v.

◆ precise_angle()

ccl_device_inline float precise_angle ( const float3 a,
const float3 b )

Definition at line 626 of file math_float3.h.

References atan2f, b, ccl_device_inline, and len.

Referenced by pdf_uniform_cone(), and sky_radiance_nishita().

◆ project()

ccl_device_inline float3 project ( const float3 v,
const float3 v_proj )

Definition at line 423 of file math_float3.h.

References ccl_device_inline, dot(), len_squared(), v, and zero_float3().

◆ reciprocal()

ccl_device_inline float3 reciprocal ( const float3 a)

Definition at line 34 of file math_float3.h.

References ccl_device_inline, make_float3(), float3::x, float3::y, and float3::z.

Referenced by bvh_inverse_direction(), and ray_aabb_intersect().

◆ reduce_add()

ccl_device_inline float reduce_add ( const float3 a)

Definition at line 485 of file math_float3.h.

References ccl_device_inline, float3::x, float3::y, and float3::z.

Referenced by average().

◆ reduce_max()

ccl_device_inline float reduce_max ( const float3 a)

Definition at line 252 of file math_float3.h.

References ccl_device_inline, max, float3::x, float3::y, and float3::z.

◆ reduce_min()

ccl_device_inline float reduce_min ( const float3 a)

Definition at line 247 of file math_float3.h.

References ccl_device_inline, min, float3::x, float3::y, and float3::z.

◆ reflect()

ccl_device_inline float3 reflect ( const float3 incident,
const float3 unit_normal )

Definition at line 401 of file math_float3.h.

References ccl_device_inline, and dot().

◆ refract()

ccl_device_inline float3 refract ( const float3 incident,
const float3 normal,
const float eta )

Definition at line 406 of file math_float3.h.

References ccl_device_inline, dot(), sqrt, and zero_float3().

◆ rotate_around_axis()

ccl_device_inline float3 rotate_around_axis ( const float3 p,
const float3 axis,
const float angle )

◆ safe_divide() [1/2]

ccl_device_inline float3 safe_divide ( const float3 a,
const float b )

Definition at line 461 of file math_float3.h.

References b, ccl_device_inline, and zero_float3().

◆ safe_divide() [2/2]

ccl_device_inline float3 safe_divide ( const float3 a,
const float3 b )

Definition at line 454 of file math_float3.h.

References b, ccl_device_inline, make_float3(), float3::x, float3::y, and float3::z.

◆ safe_normalize()

ccl_device_inline float3 safe_normalize ( const float3 a)

Definition at line 436 of file math_float3.h.

References ccl_device_inline, and len.

◆ safe_normalize_fallback()

◆ safe_normalize_len()

◆ saturate()

ccl_device_inline float3 saturate ( const float3 a)

Definition at line 381 of file math_float3.h.

References ccl_device_inline, make_float3(), saturatef, float3::x, float3::y, and float3::z.

◆ select()

template<class MaskType>
ccl_device_inline float3 select ( const MaskType mask,
const float3 a,
const float3 b )

Definition at line 511 of file math_float3.h.

References b, ccl_device_inline, make_float3(), mask(), float3::x, float3::y, and float3::z.

◆ sqr()

Definition at line 471 of file math_float3.h.

References ccl_device_inline.

◆ sqrt()

ccl_device_inline float3 sqrt ( const float3 a)

Definition at line 349 of file math_float3.h.

References ccl_device_inline, make_float3(), sqrtf, float3::x, float3::y, and float3::z.

◆ tan_angle()

ccl_device_inline float tan_angle ( const float3 a,
const float3 b )

Definition at line 632 of file math_float3.h.

References b, ccl_device_inline, cross, dot(), and len.

Referenced by area_light_spread_attenuation().

◆ triangle_area()

◆ zero_float3()

Definition at line 15 of file math_float3.h.

References ccl_device_inline, and make_float3().

Referenced by BVHBuild::add_references(), Mesh::add_vertex_normals(), attr_create_pointiness(), background_portal_sample(), bsdf_alloc(), bsdf_hair_huang_eval_r(), Camera::Camera(), camera_sample_panorama(), camera_sample_perspective(), Hair::compute_bounds(), Mesh::compute_bounds(), TextureMapping::compute_transform(), BackgroundNode::constant_fold(), BlackbodyNode::constant_fold(), EmissionNode::constant_fold(), VectorDisplacementNode::constant_fold(), VectorMathNode::constant_fold(), HDCYCLES_NAMESPACE_OPEN_SCOPE::convertToCycles< float3 >(), differential3_zero(), GeometryManager::displace(), export_hair_curves(), film_write_data_passes_background(), fisheye_equidistant_to_direction(), fisheye_equisolid_to_direction(), fisheye_lens_polynomial_to_direction(), flatten_closure_tree(), get_background_attribute(), OSLRenderServices::get_background_attribute(), guiding_record_bssrdf_segment(), guiding_record_bssrdf_weight(), guiding_record_light_surface_segment(), guiding_record_surface_segment(), guiding_record_volume_segment(), Light::has_contribution(), integrate_camera_sample(), integrator_init_from_bake(), Object::is_traceable(), ConstantFolder::is_zero(), kernel_background_evaluate(), light_sample(), ConstantFolder::make_zero(), make_zero(), mask(), mirrorball_to_direction(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), ObtainCacheParticleData(), osl_closure_microfacet_multi_ggx_glass_setup(), osl_mul_closure_color(), osl_zero_albedo(), output_estimate_emission(), point_density_texture_space(), project(), refract(), safe_divide(), Shader::Shader(), shader_setup_from_background(), shader_setup_from_displace(), shader_setup_from_sample(), shadow_ray_setup(), TextureMapping::skip(), surface_shader_ao(), surface_shader_average_normal(), svm_mix_exclusion(), svm_node_blackbody(), svm_node_closure_bsdf(), svm_node_displacement(), svm_node_principled_volume(), svm_node_set_bump(), svm_node_tangent(), svm_node_tex_coord(), svm_node_tex_coord_bump_dx(), svm_node_tex_coord_bump_dy(), svm_node_tex_voronoi(), svm_node_vector_displacement(), svm_node_vector_map_range(), svm_vector_math(), HdCyclesLight::Sync(), Mesh::tessellate(), TEST_F(), TEST_F(), TEST_F(), texco_normal_from_uv(), transform_perspective(), transform_perspective_deriv(), Camera::update(), HdCyclesSession::UpdateScene(), Camera::world_to_raster_size(), xml_read_transform(), and xyz_to_rgb_clamped().