Blender V5.0
transform.h File Reference
#include <cstring>
#include "util/math.h"
#include "util/types.h"
#include "util/system.h"

Go to the source code of this file.

Classes

struct  Transform
struct  DecomposedTransform

Macros

#define transform_point_auto   transform_point
#define transform_direction_auto   transform_direction
#define transform_direction_transposed_auto   transform_direction_transposed

Functions

ccl_device_inline float3 transform_point (const ccl_private Transform *t, const float3 a)
ccl_device_inline dual3 transform_point (const ccl_private Transform *t, const dual3 a)
ccl_device_inline float3 transform_direction (const ccl_private Transform *t, const float3 a)
ccl_device_inline float3 transform_direction_transposed (const ccl_private Transform *t, const float3 a)
ccl_device_inline Transform make_transform (const float a, const float b, const float c, const float d, const float e, const float f, const float g, const float h, const float i, const float j, const float k, const float l)
ccl_device_inline Transform make_transform (const float3 x, const float3 y, const float3 z)
ccl_device_inline Transform euler_to_transform (const float3 euler)
ccl_device_inline Transform make_transform_frame (const float3 N)
ccl_device_inline Transform operator* (const Transform a, const Transform b)
ccl_device_inline Transform transform_zero ()
ccl_device_inline void print_transform (const char *label, const Transform &t)
ccl_device_inline Transform transform_translate (const float3 t)
ccl_device_inline Transform transform_translate (const float x, const float y, float z)
ccl_device_inline Transform transform_scale (const float3 s)
ccl_device_inline Transform transform_scale (const float x, const float y, float z)
ccl_device_inline Transform transform_rotate (const float angle, float3 axis)
ccl_device_inline Transform transform_euler (const float3 euler)
ccl_device_inline Transform transform_identity ()
ccl_device_inline bool operator== (const Transform &A, const Transform &B)
ccl_device_inline bool operator!= (const Transform &A, const Transform &B)
ccl_device_inline bool transform_equal_threshold (const Transform &A, const Transform &B, const float threshold)
ccl_device_inline float3 transform_get_column (const Transform *t, const int column)
ccl_device_inline void transform_set_column (Transform *t, const int column, const float3 value)
Transform transform_transposed_inverse (const Transform &tfm)
ccl_device_inline bool transform_uniform_scale (const Transform &tfm, float &scale)
ccl_device_inline bool transform_negative_scale (const Transform &tfm)
ccl_device_inline Transform transform_clear_scale (const Transform &tfm)
ccl_device_inline Transform transform_empty ()
ccl_device_inline float4 quat_interpolate (const float4 q1, const float4 q2, const float t)
void transform_inverse_cpu_avx2 (const Transform &tfm, Transform &itfm)
ccl_device_forceinline float3 transform_inverse_cross (const float3 a_, const float3 b_)
ccl_device_forceinline float transform_inverse_dot (const float3 a_, const float3 b_)
ccl_device_forceinline Transform transform_inverse_impl (const Transform tfm)
ccl_device_inline Transform transform_inverse (const Transform tfm)
ccl_device_inline void transform_compose (ccl_private Transform *tfm, const ccl_private DecomposedTransform *decomp)
ccl_device void transform_motion_array_interpolate (ccl_private Transform *tfm, const ccl_global DecomposedTransform *motion, const uint numsteps, const float time)
ccl_device_inline bool transform_isfinite_safe (ccl_private Transform *tfm)
ccl_device_inline bool transform_decomposed_isfinite_safe (ccl_private DecomposedTransform *decomp)
ccl_device_inline bool operator== (const DecomposedTransform &A, const DecomposedTransform &B)
float4 transform_to_quat (const Transform &tfm)
void transform_motion_decompose (DecomposedTransform *decomp, const Transform *motion, const size_t size)
Transform transform_from_viewplane (BoundBox2D &viewplane)

Macro Definition Documentation

◆ transform_direction_auto

#define transform_direction_auto   transform_direction

Definition at line 647 of file device/cpu/globals.h.

◆ transform_direction_transposed_auto

#define transform_direction_transposed_auto   transform_direction_transposed

Definition at line 648 of file device/cpu/globals.h.

◆ transform_point_auto

#define transform_point_auto   transform_point

Definition at line 646 of file device/cpu/globals.h.

Function Documentation

◆ euler_to_transform()

◆ make_transform() [1/2]

◆ make_transform() [2/2]

ccl_device_inline Transform make_transform ( const float3 x,
const float3 y,
const float3 z )

Definition at line 190 of file transform.h.

References ccl_device_inline, make_float4, Transform::x, x, Transform::y, y, Transform::z, and z().

◆ make_transform_frame()

◆ operator!=()

ccl_device_inline bool operator!= ( const Transform & A,
const Transform & B )

Definition at line 334 of file transform.h.

References A, B, and ccl_device_inline.

◆ operator*()

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

Definition at line 238 of file transform.h.

References b, ccl_device_inline, dot(), make_float4, Transform::x, Transform::y, and Transform::z.

◆ operator==() [1/2]

ccl_device_inline bool operator== ( const DecomposedTransform & A,
const DecomposedTransform & B )

Definition at line 630 of file transform.h.

References A, B, and ccl_device_inline.

◆ operator==() [2/2]

ccl_device_inline bool operator== ( const Transform & A,
const Transform & B )

Definition at line 327 of file transform.h.

References A, B, and ccl_device_inline.

◆ print_transform()

ccl_device_inline void print_transform ( const char * label,
const Transform & t )

Definition at line 262 of file transform.h.

References ccl_device_inline, print_float4(), printf, Transform::x, Transform::y, and Transform::z.

◆ quat_interpolate()

ccl_device_inline float4 quat_interpolate ( const float4 q1,
const float4 q2,
const float t )

Definition at line 420 of file transform.h.

References acosf, ccl_device_inline, clamp(), cosf, dot(), normalize, and sinf.

Referenced by transform_motion_array_interpolate().

◆ transform_clear_scale()

ccl_device_inline Transform transform_clear_scale ( const Transform & tfm)

◆ transform_compose()

ccl_device_inline void transform_compose ( ccl_private Transform * tfm,
const ccl_private DecomposedTransform * decomp )

◆ transform_decomposed_isfinite_safe()

ccl_device_inline bool transform_decomposed_isfinite_safe ( ccl_private DecomposedTransform * decomp)

Definition at line 620 of file transform.h.

References ccl_device_inline, ccl_private, and isfinite_safe().

Referenced by TEST().

◆ transform_direction()

◆ transform_direction_transposed()

◆ transform_empty()

ccl_device_inline Transform transform_empty ( )

Definition at line 411 of file transform.h.

References ccl_device_inline, and make_transform().

Referenced by Object::update_motion().

◆ transform_equal_threshold()

ccl_device_inline bool transform_equal_threshold ( const Transform & A,
const Transform & B,
const float threshold )

Definition at line 339 of file transform.h.

References A, B, ccl_device_inline, fabsf, x, and y.

Referenced by ShaderManager::init_xyz_transforms().

◆ transform_euler()

ccl_device_inline Transform transform_euler ( const float3 euler)

◆ transform_from_viewplane()

Transform transform_from_viewplane ( BoundBox2D & viewplane)

◆ transform_get_column()

◆ transform_identity()

◆ transform_inverse()

◆ transform_inverse_cpu_avx2()

void transform_inverse_cpu_avx2 ( const Transform & tfm,
Transform & itfm )

Definition at line 9 of file transform_avx2.cpp.

References transform_inverse_impl().

Referenced by transform_inverse().

◆ transform_inverse_cross()

ccl_device_forceinline float3 transform_inverse_cross ( const float3 a_,
const float3 b_ )

Definition at line 453 of file transform.h.

References b, ccl_device_forceinline, and cross.

Referenced by transform_inverse_impl().

◆ transform_inverse_dot()

ccl_device_forceinline float transform_inverse_dot ( const float3 a_,
const float3 b_ )

Definition at line 471 of file transform.h.

References b, ccl_device_forceinline, and dot().

Referenced by transform_inverse_impl().

◆ transform_inverse_impl()

◆ transform_isfinite_safe()

ccl_device_inline bool transform_isfinite_safe ( ccl_private Transform * tfm)

Definition at line 615 of file transform.h.

References ccl_device_inline, ccl_private, and isfinite_safe().

◆ transform_motion_array_interpolate()

◆ transform_motion_decompose()

◆ transform_negative_scale()

◆ transform_point() [1/2]

◆ transform_point() [2/2]

ccl_device_inline float3 transform_point ( const ccl_private Transform * t,
const float3 a )

Definition at line 56 of file transform.h.

References b, ccl_device_inline, ccl_private, dot(), madd(), make_float3(), make_homogeneous(), w(), float4::x, x, float4::y, y, float4::z, and z().

Referenced by Hair::apply_transform(), Mesh::apply_transform(), PointCloud::apply_transform(), area_light_valid_ray_segment(), bone_draw_wire(), Hair::Curve::bounds_grow(), PointCloud::Point::bounds_grow(), bvh_instance_push(), bvh_unaligned_node_intersect_child(), camera_sample_orthographic(), camera_sample_perspective(), camera_sample_to_ray(), camera_world_to_ndc(), camera_z_depth(), LightManager::device_update_distribution(), BVHSpatialSplit::get_unaligned_point(), integrate_surface_ray_offset(), CCL_NAMESPACE_BEGIN::kernel_tex_image_interp_3d(), kernel_volume_density_evaluate(), light_tree_to_local_space(), LightTreeEmitter::LightTreeEmitter(), mnee_setup_manifold_vertex(), motion_triangle_point_from_uv(), object_inverse_position_transform(), object_position_transform(), ObtainCacheParticleData(), primitive_motion_vector(), blender::eevee::IrradianceBake::raylists_build(), blender::nodes::node_geo_rotate_instances_cc::rotate_instances(), BVHSpatialSplit::split_curve_primitive(), BVHSpatialSplit::split_point_primitive(), BVHSpatialSplit::split_triangle_primitive(), spot_light_valid_ray_segment(), blender::eevee::IrradianceBake::surfel_raster_views_sync(), blender::eevee::IrradianceBake::surfels_create(), svm_node_camera(), svm_node_tex_coord(), svm_node_tex_coord_bump_dx(), svm_node_tex_coord_bump_dy(), svm_node_texture_mapping(), svm_node_vector_transform(), svm_texco_camera(), BlenderObjectCulling::test(), blender::math::to_quaternion_legacy(), BoundBox::transformed(), triangle_point_from_uv(), triangle_world_space_vertices(), and Camera::world_to_raster_size().

◆ transform_rotate()

ccl_device_inline Transform transform_rotate ( const float angle,
float3 axis )

◆ transform_scale() [1/2]

ccl_device_inline Transform transform_scale ( const float x,
const float y,
float z )

Definition at line 285 of file transform.h.

References ccl_device_inline, make_float3(), transform_scale(), x, y, and z().

◆ transform_scale() [2/2]

◆ transform_set_column()

ccl_device_inline void transform_set_column ( Transform * t,
const int column,
const float3 value )

◆ transform_to_quat()

float4 transform_to_quat ( const Transform & tfm)

Definition at line 23 of file transform.cpp.

References float, i, sqrt, float4::w, w(), float4::x, float4::y, and float4::z.

Referenced by transform_decompose().

◆ transform_translate() [1/2]

ccl_device_inline Transform transform_translate ( const float x,
const float y,
float z )

Definition at line 275 of file transform.h.

References ccl_device_inline, make_float3(), transform_translate(), x, y, and z().

◆ transform_translate() [2/2]

◆ transform_transposed_inverse()

Transform transform_transposed_inverse ( const Transform & tfm)

◆ transform_uniform_scale()

◆ transform_zero()

ccl_device_inline Transform transform_zero ( )

Definition at line 254 of file transform.h.

References ccl_device_inline, and zero_float4().

Referenced by SocketType::zero_default_value().