34# ifdef __RAY_DIFFERENTIALS__
36 *dx = sd->du.dx * (f1 - f0);
41 return (1.0f - sd->u) * f0 + sd->u * f1;
44# ifdef __RAY_DIFFERENTIALS__
76# ifdef __RAY_DIFFERENTIALS__
78 *dx = sd->du.dx * (f1 - f0);
83 return (1.0f - sd->u) * f0 + sd->u * f1;
90# ifdef __RAY_DIFFERENTIALS__
122# ifdef __RAY_DIFFERENTIALS__
124 *dx = sd->du.dx * (f1 - f0);
129 return (1.0f - sd->u) * f0 + sd->u * f1;
132# ifdef __RAY_DIFFERENTIALS__
164# ifdef __RAY_DIFFERENTIALS__
166 *dx = sd->du.dx * (f1 - f0);
171 return (1.0f - sd->u) * f0 + sd->u * f1;
174# ifdef __RAY_DIFFERENTIALS__
205# ifdef __OBJECT_MOTION__
207 motion_curve_keys_linear(kg, sd->object, sd->time, k0, k1, P_curve);
216 r = (P_curve[1].w - P_curve[0].w) * sd->u + P_curve[0].w;
259 tgN = -(-sd->wi - sd->dPdu * (
dot(sd->dPdu, -sd->wi) /
len_squared(sd->dPdu)));
284 float halfdiscroot = (p2 * p2 - 3 * p3 * p1);
291 *lower = (p0 + p1) + (p2 + p3);
295 if (*lower >= *upper) {
300 if (halfdiscroot >= 0) {
301 float inv3p3 = (1.0f / 3.0f) / p3;
302 halfdiscroot =
sqrtf(halfdiscroot);
303 ta = (-p2 - halfdiscroot) * inv3p3;
304 tb = (-p2 + halfdiscroot) * inv3p3;
310 if (ta > 0.0f && ta < 1.0f) {
314 *extrema = p3 * t3 + p2 * t2 + p1 * ta + p0;
316 *upper =
fmaxf(*extrema, *upper);
317 *lower =
fminf(*extrema, *lower);
320 if (tb > 0.0f && tb < 1.0f) {
324 *extremb = p3 * t3 + p2 * t2 + p1 * tb + p0;
326 *upper =
fmaxf(*extremb, *upper);
327 *lower =
fminf(*extremb, *lower);
SIMD_FORCE_INLINE btVector3 & normalize()
Normalize this vector x^2 + y^2 + z^2 = 1.
additional_info("compositor_sum_squared_difference_float_shared") .push_constant(Type output_img float dot(value.rgb, luminance_coefficients)") .define("LOAD(value)"
const KernelGlobalsCPU *ccl_restrict KernelGlobals
#define kernel_data_fetch(name, index)
#define ccl_device_inline
#define CCL_NAMESPACE_END
#define PRIMITIVE_UNPACK_SEGMENT(type)
@ ATTR_ELEMENT_CURVE_KEY_MOTION
ccl_device_inline float len_squared(const float2 a)
CCL_NAMESPACE_BEGIN ccl_device_inline float4 zero_float4()
VecBase< float, 4 > float4
CCL_NAMESPACE_BEGIN void curvebounds(float *lower, float *upper, float3 *p, int dim)
static bool find_attribute(const std::string &attributes, const char *search_attribute)
ccl_device_inline float3 float4_to_float3(const float4 a)