14 const float phi =
atan2f(dir.
y, dir.
x);
38 return p.
x *
X + p.
y *
Y;
44 return p.
x *
X + p.
y *
Y + p.
z *
Z;
86#if !defined(__KERNEL_METAL__)
99 const float w =
dot(t->w,
b);
108 a.
x * t->y.x + a.
y * t->y.y + a.
z * t->y.z,
109 a.
x * t->z.x + a.
y * t->z.y + a.
z * t->z.z);
125 const float w =
dot(t->w,
b);
198#ifndef __KERNEL_GPU__
230#if !defined(__KERNEL_METAL__)
237 memcpy(
R, (
const float *)&tfmR,
sizeof(
R));
238 memcpy(
M, (
const float *)&tfm,
sizeof(
M));
244 memcpy((
void *)&tfmR,
R,
sizeof(
R));
264#ifndef __KERNEL_GPU__
290 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, f / (f - n), -f * n / (f - n), 0, 0, 1, 0);
292 const float inv_angle = 1.0f /
tanf(0.5f * fov);
296 return scale * persp;
MINLINE float safe_sqrtf(float a)
MINLINE float safe_acosf(float a)
ATTR_WARN_UNUSED_RESULT const BMLoop * l
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
ccl_device_inline float cos_theta(const float3 w)
ccl_device_inline float sin_theta(const float3 w)
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
dot(value.rgb, luminance_coefficients)") DEFINE_VALUE("REDUCE(lhs
ccl_device_inline float3 transform_perspective_direction(const ccl_private ProjectionTransform *t, const float3 a)
CCL_NAMESPACE_END CCL_NAMESPACE_BEGIN ccl_device_inline float3 transform_perspective(const ccl_private ProjectionTransform *t, const float3 a)
ccl_device float3 spherical_cos_to_direction(const float cos_theta, const float phi)
CCL_NAMESPACE_BEGIN ccl_device float2 direction_to_spherical(const float3 dir)
ccl_device_inline float3 disk_to_hemisphere(const float2 p)
ccl_device_inline T to_global(const float2 p, const T X, const T Y)
ccl_device_inline float3 transform_perspective_deriv(const ccl_private ProjectionTransform *t, const float3 a, const float3 dx, const float3 dy, ccl_private float3 &out_dx, ccl_private float3 &out_dy)
ccl_device_inline ProjectionTransform operator*(const ProjectionTransform a, const ProjectionTransform b)
ccl_device_inline Transform projection_to_transform(const ProjectionTransform &a)
ccl_device_inline float2 to_local(const T p, const T X, const T Y)
ccl_device_inline ProjectionTransform projection_identity()
ccl_device float3 spherical_to_direction(const float theta, const float phi)
ccl_device_inline ProjectionTransform projection_transpose(const ProjectionTransform a)
ccl_device_inline ProjectionTransform make_projection(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, const float m, const float n, const float o, const float p)
ccl_device_inline ProjectionTransform projection_inverse(const ProjectionTransform tfm)
ccl_device_inline ProjectionTransform projection_perspective(const float fov, const float n, float f)
ccl_device_inline void print_projection(const char *label, const ProjectionTransform &t)
ccl_device_inline ProjectionTransform projection_orthographic(const float znear, const float zfar)
ccl_device_inline float2 polar_to_cartesian(const float r, const float phi)
#define ccl_device_inline
#define CCL_NAMESPACE_END
ccl_device_inline float sin_from_cos(const float c)
ccl_device_inline float len_squared(const float2 a)
CCL_NAMESPACE_BEGIN ccl_device_inline float3 zero_float3()
CCL_NAMESPACE_BEGIN ccl_device_forceinline bool projection_inverse_impl(ccl_private float R[4][4], ccl_private float M[4][4])
ccl_device_inline void print_float4(const ccl_private char *label, const float4 a)