54 return curve_attribute<T>(kg, sd, desc, dfdx, dfdy);
59 return point_attribute<T>(kg, sd, desc, dfdx, dfdy);
91 if (primitive_is_volume_attribute(sd, desc)) {
92 return volume_attribute_value<T>(volume_attribute_float4(kg, sd, desc));
129 kg, sd, desc_face_id,
nullptr,
nullptr);
132 *face_id = (int)face_id_f;
141#if defined(__HAIR__) || defined(__POINTCLOUD__)
176#if defined(__HAIR__) || defined(__POINTCLOUD__)
178 if (is_curve_or_point) {
182# if defined(__HAIR__)
183 center = curve_motion_center_location(kg, sd);
187# if defined(__POINTCLOUD__)
188 center = point_motion_center_location(kg, sd);
202 float3 motion_pre = center;
203 float3 motion_post = center;
212#if defined(__HAIR__) || defined(__POINTCLOUD__)
213 if (is_curve_or_point) {
296 motion_pre = motion_pre - motion_center;
297 motion_post = motion_center - motion_post;
299 return make_float4(motion_pre.
x, motion_pre.
y, motion_post.
x, motion_post.
y);
BMesh const char void * data
ccl_device_inline float2 direction_to_panorama(ccl_constant KernelCamera *cam, const float3 dir)
CCL_NAMESPACE_END CCL_NAMESPACE_BEGIN ccl_device_inline float3 transform_perspective(const ccl_private ProjectionTransform *t, const float3 a)
#define ccl_device_forceinline
#define kernel_data_fetch(name, index)
const ThreadKernelGlobalsCPU * KernelGlobals
#define ccl_device_inline
#define CCL_NAMESPACE_END
ccl_device T triangle_attribute(KernelGlobals kg, const ccl_private ShaderData *sd, const AttributeDescriptor desc, ccl_private T *dfdx, ccl_private T *dfdy)
VecBase< float, 4 > float4
VecBase< float, D > normalize(VecOp< float, D >) RET
VecBase< float, 3 > cross(VecOp< float, 3 >, VecOp< float, 3 >) RET
ccl_device_inline T attribute_data_fetch(KernelGlobals kg, int offset)
ccl_device_inline void object_position_transform(KernelGlobals kg, const ccl_private ShaderData *sd, ccl_private float3 *P)
ccl_device_inline void object_normal_transform(KernelGlobals kg, const ccl_private ShaderData *sd, ccl_private float3 *N)
ccl_device_inline Transform object_fetch_motion_pass_transform(KernelGlobals kg, const int object, enum ObjectVectorTransform type)
@ OBJECT_PASS_MOTION_POST
@ ATTR_STD_MOTION_VERTEX_POSITION
@ SD_OBJECT_TRANSFORM_APPLIED
@ SD_OBJECT_HAS_VERTEX_MOTION
ccl_device_inline T make_zero()
CCL_NAMESPACE_BEGIN ccl_device_forceinline T primitive_surface_attribute(KernelGlobals kg, const ccl_private ShaderData *sd, const AttributeDescriptor desc, ccl_private T *dfdx, ccl_private T *dfdy)
ccl_device_forceinline float3 primitive_uv(KernelGlobals kg, const ccl_private ShaderData *sd)
ccl_device_forceinline float4 primitive_motion_vector(KernelGlobals kg, const ccl_private ShaderData *sd)
ccl_device float3 primitive_tangent(KernelGlobals kg, ccl_private ShaderData *sd)
ccl_device bool primitive_ptex(KernelGlobals kg, ccl_private ShaderData *sd, ccl_private float2 *uv, ccl_private int *face_id)
static bool find_attribute(const std::string &attributes, const char *search_attribute)