29#ifdef __OBJECT_MOTION__
31 sd->ob_tfm_motion = object_fetch_transform_motion(kg, sd->object, time);
51 sd->ray_length = isect->t;
52 sd->type = isect->type;
53 sd->object = isect->object;
55 sd->prim = isect->prim;
61#ifdef __OBJECT_MOTION__
71 curve_shader_setup(kg, sd, ray->P, ray->D, isect->t, isect->prim);
79 point_shader_setup(kg, sd, isect, ray);
108 const bool backfacing = (
dot(sd->Ng, sd->wi) < 0.0f);
115 sd->dPdu = -sd->dPdu;
116 sd->dPdv = -sd->dPdv;
120#ifdef __RAY_DIFFERENTIALS__
142 const bool object_space,
175#ifdef __OBJECT_MOTION__
223 const bool backfacing = (
dot(sd->Ng, sd->wi) < 0.0f);
230 sd->dPdu = -sd->dPdu;
231 sd->dPdv = -sd->dPdv;
236#ifdef __RAY_DIFFERENTIALS__
299 sd->ray_length = 0.0f;
308# ifdef __OBJECT_MOTION__
316 const int k1 = k0 + 1;
330 make_float3(catmull_rom_basis_eval(P_curve, sd->u));
333 make_float3(linear_basis_derivative(P_curve, sd->u)) :
334 make_float3(catmull_rom_basis_derivative(P_curve, sd->u));
350 sd->dPdv =
cross(sd->dPdu, sd->Ng);
354# ifdef __RAY_DIFFERENTIALS__
369 const float ray_time)
379 sd->shader =
kernel_data.background.surface_shader;
397#ifdef __RAY_DIFFERENTIALS__
415 sd->P = ray->P + ray->D * ray->tmin;
422 sd->time = ray->time;
423 sd->ray_length = 0.0f;
439# ifdef __RAY_DIFFERENTIALS__
ATTR_WARN_UNUSED_RESULT const BMVert * v
dot(value.rgb, luminance_coefficients)") DEFINE_VALUE("REDUCE(lhs
#define kernel_assert(cond)
#define PRIMITIVE_PACK_SEGMENT(type, segment)
#define kernel_data_fetch(name, index)
#define PRIMITIVE_UNPACK_SEGMENT(type)
const ThreadKernelGlobalsCPU * KernelGlobals
#define ccl_device_inline
#define CCL_NAMESPACE_END
ccl_device_forceinline float differential_transfer_compact(const float ray_dP, const float3, const float ray_dD, const float ray_t)
ccl_device_forceinline float differential_incoming_compact(const float dD)
ccl_device differential differential_zero()
ccl_device void differential_dudv_compact(ccl_private differential *du, ccl_private differential *dv, const float3 dPdu, const float3 dPdv, const float dP, const float3 Ng)
ccl_device_forceinline float differential_zero_compact()
ccl_device_inline void triangle_dPdudv(KernelGlobals kg, const int prim, ccl_private float3 *dPdu, ccl_private float3 *dPdv)
ccl_device_inline float3 triangle_smooth_normal(KernelGlobals kg, const float3 Ng, const int prim, const float u, float v)
ccl_device_inline void triangle_point_normal(KernelGlobals kg, const int object, const int prim, const float u, const float v, ccl_private float3 *P, ccl_private float3 *Ng, ccl_private int *shader)
VecBase< float, D > normalize(VecOp< float, D >) RET
VecBase< float, 3 > cross(VecOp< float, 3 >, VecOp< float, 3 >) RET
#define object_normal_transform_auto
#define object_position_transform_auto
#define object_dir_transform_auto
@ PRIMITIVE_CURVE_THICK_LINEAR
@ PRIMITIVE_MOTION_TRIANGLE
@ SD_OBJECT_TRANSFORM_APPLIED
CCL_NAMESPACE_BEGIN ccl_device_inline float3 zero_float3()
CCL_NAMESPACE_BEGIN ccl_device_noinline void motion_triangle_shader_setup(KernelGlobals kg, ccl_private ShaderData *sd)
ccl_device_inline void shader_setup_from_sample(KernelGlobals kg, ccl_private ShaderData *ccl_restrict sd, const float3 P, const float3 Ng, const float3 I, const int shader, const int object, const int prim, const float u, const float v, const float t, const float time, const bool object_space, const bool is_lamp)
ccl_device void shader_setup_from_displace(KernelGlobals kg, ccl_private ShaderData *ccl_restrict sd, const int object, const int prim, const float u, const float v)
ccl_device_inline void shader_setup_from_background(KernelGlobals kg, ccl_private ShaderData *ccl_restrict sd, const float3 ray_P, const float3 ray_D, const float ray_time)
ccl_device_inline void shader_setup_from_ray(KernelGlobals kg, ccl_private ShaderData *ccl_restrict sd, const ccl_private Ray *ccl_restrict ray, const ccl_private Intersection *ccl_restrict isect)
CCL_NAMESPACE_BEGIN ccl_device void shader_setup_object_transforms(KernelGlobals kg, ccl_private ShaderData *ccl_restrict sd, const float time)
ccl_device_inline void triangle_shader_setup(KernelGlobals kg, ccl_private ShaderData *sd)