52template<u
int node_feature_mask>
67 if (primitive_is_volume_attribute(sd, desc)) {
68 const float4 value = volume_attribute_float4(kg, sd, desc);
71 const float f = volume_attribute_value<float>(value);
75 const float3 f = volume_attribute_value<float3>(value);
79 const float f = volume_attribute_alpha(value);
163 const float bump_filter_width)
170 const float bump_filter_width)
188 if (primitive_is_volume_attribute(sd, desc)) {
224 const float f_x = f + dfdx * bump_filter_width;
238 const float2 f_x = f + dfdx * bump_filter_width;
252 const float4 f_x = f + dfdx * bump_filter_width;
266 const float3 f_x = f + dfdx * bump_filter_width;
292 if (primitive_is_volume_attribute(sd, desc)) {
328 const float f_y = f + dfdy * bump_filter_width;
342 const float2 f_y = f + dfdy * bump_filter_width;
356 const float4 f_y = f + dfdy * bump_filter_width;
370 const float3 f_y = f + dfdy * bump_filter_width;
ccl_device_inline void stack_store_float(ccl_private float *stack, const uint a, const float f)
ccl_device_inline void stack_store_float3(ccl_private float *stack, const uint a, const float3 f)
ccl_device_forceinline void svm_unpack_node_uchar2(const uint i, ccl_private uint *x, ccl_private uint *y)
#define ccl_device_forceinline
#define IF_KERNEL_NODES_FEATURE(feature)
const ThreadKernelGlobalsCPU * KernelGlobals
#define ccl_device_noinline
#define CCL_NAMESPACE_END
ccl_device_forceinline differential3 differential_from_compact(const float3 D, const float dD)
VecBase< float, 4 > float4
CCL_NAMESPACE_BEGIN ccl_device_inline AttributeDescriptor attribute_not_found()
ccl_device_inline void object_inverse_position_transform(KernelGlobals kg, const ccl_private ShaderData *sd, ccl_private float3 *P)
ccl_device_forceinline float3 svm_node_bump_P_dx(const ccl_private ShaderData *sd, const float bump_filter_width)
ccl_device_forceinline float3 svm_node_bump_P_dy(const ccl_private ShaderData *sd, const float bump_filter_width)
CCL_NAMESPACE_BEGIN ccl_device AttributeDescriptor svm_node_attr_init(KernelGlobals kg, ccl_private ShaderData *sd, const uint4 node, ccl_private NodeAttributeOutputType *type, ccl_private uint *out_offset)
ccl_device_noinline void svm_node_attr_bump_dx(KernelGlobals kg, ccl_private ShaderData *sd, ccl_private float *stack, const uint4 node)
ccl_device_noinline void svm_node_attr_bump_dy(KernelGlobals kg, ccl_private ShaderData *sd, ccl_private float *stack, const uint4 node)
ccl_device_noinline void svm_node_attr(KernelGlobals kg, ccl_private ShaderData *sd, ccl_private float *stack, const uint4 node)
@ NODE_ATTR_OUTPUT_FLOAT3
ccl_device_inline float average(const float2 a)
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)
static bool find_attribute(const std::string &attributes, const char *search_attribute)