35 const bool dx =
false,
36 const bool dy =
false)
47 return curve_attribute<T>(kg, sd, desc, dx, dy);
52 return point_attribute<T>(kg, sd, desc, dx, dy);
76 const bool stochastic)
78 if (primitive_is_volume_attribute(sd)) {
79 return volume_attribute_value<T>(volume_attribute_float4(kg, sd, desc, stochastic));
118 *face_id = (int)face_id_f;
127#if defined(__HAIR__) || defined(__POINTCLOUD__)
162#if defined(__HAIR__) || defined(__POINTCLOUD__)
164 if (is_curve_or_point) {
168# if defined(__HAIR__)
169 center = curve_motion_center_location(kg, sd);
173# if defined(__POINTCLOUD__)
174 center = point_motion_center_location(kg, sd);
188 float3 motion_pre = center;
189 float3 motion_post = center;
198#if defined(__HAIR__) || defined(__POINTCLOUD__)
199 if (is_curve_or_point) {
280 motion_pre = motion_pre - motion_center;
281 motion_post = motion_center - motion_post;
283 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 dual< T > triangle_attribute(KernelGlobals kg, const ccl_private ShaderData *sd, const AttributeDescriptor desc, const bool dx=false, const bool dy=false)
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_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)
ccl_device_inline void object_position_transform(KernelGlobals kg, const ccl_private ShaderData *sd, ccl_private T *P)
@ 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_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_NAMESPACE_BEGIN ccl_device_forceinline dual< T > primitive_surface_attribute(KernelGlobals kg, const ccl_private ShaderData *sd, const AttributeDescriptor desc, const bool dx=false, const bool dy=false)
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)