54 const uint out_offset,
70 const uint out_offset,
86 const uint out_offset,
102 const uint out_offset,
123 const uint out_offset)
133 const float bump_filter_width,
136 const uint out_offset)
139 f.
val += f.
dx * bump_filter_width;
147 const float bump_filter_width,
150 const uint out_offset)
153 f.
val += f.
dy * bump_filter_width;
157template<u
int node_feature_mask>
172 if (primitive_is_volume_attribute(sd)) {
173 const bool stochastic_sample = node.
w;
174 const float4 value = volume_attribute_float4(kg, sd, desc, stochastic_sample);
177 const float f = volume_attribute_value<float>(value);
181 const float3 f = volume_attribute_value<float3>(value);
185 const float f = volume_attribute_alpha(value);
225 const float bump_filter_width)
227 return sd->P +
dPdx(sd) * bump_filter_width;
232 const float bump_filter_width)
234 return sd->P +
dPdy(sd) * bump_filter_width;
250 if (primitive_is_volume_attribute(sd)) {
294 if (primitive_is_volume_attribute(sd)) {
ccl_device_forceinline float3 dPdx(const ccl_private ShaderData *sd)
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)
ccl_device_forceinline float3 dPdy(const ccl_private ShaderData *sd)
#define kernel_assert(cond)
#define ccl_device_forceinline
#define IF_KERNEL_NODES_FEATURE(feature)
const ThreadKernelGlobalsCPU * KernelGlobals
#define ccl_device_inline
#define ccl_device_noinline
#define CCL_NAMESPACE_END
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_device_inline void svm_node_attr_store(const NodeAttributeOutputType type, ccl_private float *stack, const uint out_offset, const float f)
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_inline void svm_surface_attr_dy(KernelGlobals kg, const ccl_private ShaderData *sd, const AttributeDescriptor desc, const float bump_filter_width, const NodeAttributeOutputType type, ccl_private float *stack, const uint out_offset)
ccl_device_inline void svm_surface_attr(KernelGlobals kg, const ccl_private ShaderData *sd, const AttributeDescriptor desc, const NodeAttributeOutputType type, ccl_private float *stack, const uint out_offset)
ccl_device_inline void svm_surface_attr_dx(KernelGlobals kg, const ccl_private ShaderData *sd, const AttributeDescriptor desc, const float bump_filter_width, const NodeAttributeOutputType type, ccl_private float *stack, const uint out_offset)
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_FLOAT_ALPHA
@ NODE_ATTR_OUTPUT_FLOAT3
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)
static bool find_attribute(const std::string &attributes, const char *search_attribute)