Blender V4.3
transform.h File Reference
#include <string.h>
#include "util/math.h"
#include "util/types.h"
#include "util/system.h"
#include "util/transform_inverse.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
 

Typedefs

typedef CCL_NAMESPACE_BEGIN struct Transform Transform
 
typedef struct DecomposedTransform DecomposedTransform
 

Functions

CCL_NAMESPACE_END CCL_NAMESPACE_BEGIN ccl_device_inline float3 transform_point (ccl_private const Transform *t, const float3 a)
 
ccl_device_inline float3 transform_direction (ccl_private const Transform *t, const float3 a)
 
ccl_device_inline float3 transform_direction_transposed (ccl_private const Transform *t, const float3 a)
 
ccl_device_inline Transform make_transform (float a, float b, float c, float d, float e, float f, float g, float h, float i, float j, float k, 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 (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 (float3 t)
 
ccl_device_inline Transform transform_translate (float x, float y, float z)
 
ccl_device_inline Transform transform_scale (float3 s)
 
ccl_device_inline Transform transform_scale (float x, float y, float z)
 
ccl_device_inline Transform transform_rotate (float angle, float3 axis)
 
ccl_device_inline Transform transform_euler (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, int column)
 
ccl_device_inline void transform_set_column (Transform *t, int column, float3 value)
 
Transform transform_transposed_inverse (const Transform &a)
 
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 (float4 q1, float4 q2, float t)
 
void transform_inverse_cpu_sse42 (const Transform &tfm, Transform &itfm)
 
void transform_inverse_cpu_avx2 (const Transform &tfm, Transform &itfm)
 
ccl_device_inline Transform transform_inverse (const Transform tfm)
 
ccl_device_inline void transform_compose (ccl_private Transform *tfm, ccl_private const DecomposedTransform *decomp)
 
ccl_device void transform_motion_array_interpolate (ccl_private Transform *tfm, ccl_global const DecomposedTransform *motion, uint numsteps, 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, size_t size)
 
Transform transform_from_viewplane (BoundBox2D &viewplane)
 

Macro Definition Documentation

◆ transform_direction_auto

#define transform_direction_auto   transform_direction

Definition at line 536 of file transform.h.

Referenced by object_dir_transform(), and object_inverse_dir_transform().

◆ transform_direction_transposed_auto

#define transform_direction_transposed_auto   transform_direction_transposed

Definition at line 537 of file transform.h.

Referenced by object_inverse_normal_transform(), and object_normal_transform().

◆ transform_point_auto

#define transform_point_auto   transform_point

Typedef Documentation

◆ DecomposedTransform

typedef struct DecomposedTransform DecomposedTransform

◆ Transform

typedef CCL_NAMESPACE_BEGIN struct Transform Transform

Function Documentation

◆ euler_to_transform()

ccl_device_inline Transform euler_to_transform ( const float3 euler)

Definition at line 175 of file transform.h.

References cosf, sinf, float3::x, Transform::x, float3::y, Transform::y, float3::z, and Transform::z.

Referenced by svm_mapping(), and svm_node_vector_rotate().

◆ make_transform() [1/2]

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

Definition at line 164 of file transform.h.

References float3_to_float4(), Transform::x, Transform::y, Transform::z, and z().

◆ make_transform() [2/2]

◆ make_transform_frame()

ccl_device_inline Transform make_transform_frame ( float3 N)

◆ operator!=()

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

Definition at line 306 of file transform.h.

References B.

◆ operator*()

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

Definition at line 212 of file transform.h.

References b, 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 521 of file transform.h.

References B.

◆ operator==() [2/2]

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

Definition at line 301 of file transform.h.

References B.

◆ print_transform()

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

Definition at line 236 of file transform.h.

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

◆ quat_interpolate()

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

Definition at line 392 of file transform.h.

References acosf, clamp(), cosf, dot(), normalize(), q1, 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,
ccl_private const DecomposedTransform * decomp )

Definition at line 442 of file transform.h.

References dot(), make_float3(), make_float4(), and q1.

Referenced by transform_motion_array_interpolate().

◆ transform_decomposed_isfinite_safe()

ccl_device_inline bool transform_decomposed_isfinite_safe ( ccl_private DecomposedTransform * decomp)

Definition at line 511 of file transform.h.

References isfinite_safe().

Referenced by TEST().

◆ transform_direction()

◆ transform_direction_transposed()

◆ transform_empty()

ccl_device_inline Transform transform_empty ( )

Definition at line 383 of file transform.h.

References 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 311 of file transform.h.

References B, and fabsf.

Referenced by ShaderManager::init_xyz_transforms().

◆ transform_euler()

ccl_device_inline Transform transform_euler ( float3 euler)

Definition at line 289 of file transform.h.

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

Referenced by TextureMapping::compute_transform().

◆ 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_cpu_sse42()

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

Definition at line 9 of file transform_sse42.cpp.

References transform_inverse_impl().

Referenced by transform_inverse().

◆ transform_isfinite_safe()

ccl_device_inline bool transform_isfinite_safe ( ccl_private Transform * tfm)

Definition at line 506 of file transform.h.

References isfinite_safe().

◆ transform_motion_array_interpolate()

◆ transform_motion_decompose()

void transform_motion_decompose ( DecomposedTransform * decomp,
const Transform * motion,
size_t size )

◆ transform_negative_scale()

◆ transform_point()

Definition at line 63 of file transform.h.

References b, ccl_private, madd(), make_float3(), w(), x, y, and z().

Referenced by Hair::apply_transform(), Mesh::apply_transform(), PointCloud::apply_transform(), area_light_valid_ray_segment(), Hair::Curve::bounds_grow(), PointCloud::Point::bounds_grow(), bvh_instance_push(), bvh_unaligned_node_intersect_child(), camera_sample_orthographic(), camera_sample_panorama(), camera_sample_perspective(), camera_world_to_ndc(), camera_z_depth(), LightManager::device_update_distribution(), ArmatureBoneDrawStrategyWire::draw_bone(), BVHSpatialSplit::get_unaligned_point(), integrate_surface_ray_offset(), CCL_NAMESPACE_BEGIN::kernel_tex_image_interp_3d(), kernel_tex_image_interp_3d(), kernel_tex_image_interp_3d(), light_tree_to_local_space(), LightTreeEmitter::LightTreeEmitter(), motion_triangle_point_from_uv(), object_inverse_position_transform(), object_position_transform(), ObtainCacheParticleData(), osl_transform_dvmdv(), osl_transform_vmv(), 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_tex_voxel(), svm_node_texture_mapping(), svm_node_vector_transform(), 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 ( float angle,
float3 axis )

Definition at line 264 of file transform.h.

References cosf, make_transform(), normalize(), and sinf.

Referenced by TEST(), transform_euler(), and xml_read_transform().

◆ transform_scale() [1/2]

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

Definition at line 259 of file transform.h.

References make_float3(), transform_scale(), and z().

◆ transform_scale() [2/2]

◆ transform_set_column()

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

Definition at line 331 of file transform.h.

References Transform::x, Transform::y, and Transform::z.

Referenced by transform_clear_scale(), and transform_decompose().

◆ transform_to_quat()

float4 transform_to_quat ( const Transform & tfm)

Definition at line 123 of file transform.cpp.

References double(), float, sqrt(), and w().

Referenced by transform_decompose().

◆ transform_translate() [1/2]

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

Definition at line 249 of file transform.h.

References make_float3(), transform_translate(), and z().

◆ transform_translate() [2/2]

◆ transform_transposed_inverse()

Transform transform_transposed_inverse ( const Transform & a)

◆ transform_uniform_scale()

ccl_device_inline bool transform_uniform_scale ( const Transform & tfm,
float & scale )

◆ transform_zero()

ccl_device_inline Transform transform_zero ( )

Definition at line 230 of file transform.h.

References zero_float4().

Referenced by SocketType::zero_default_value().