46 const uint32_t path_flag,
52 const uint type = node.
y;
53 const uint out_offset = node.
z;
112 data = volume_normalized_position(kg, sd,
data);
157 const uint32_t path_flag,
162#ifdef __RAY_DIFFERENTIALS__
164 const uint type = node.
y;
165 const uint out_offset = node.
z;
188 kg, sd, sd->u + sd->du.dx * bump_filter_width, sd->v + sd->dv.dx * bump_filter_width);
225 data = volume_normalized_position(kg, sd,
data);
241 const uint32_t path_flag,
246#ifdef __RAY_DIFFERENTIALS__
248 const uint type = node.
y;
249 const uint out_offset = node.
z;
272 kg, sd, sd->u + sd->du.dy * bump_filter_width, sd->v + sd->dv.dy * bump_filter_width);
309 data = volume_normalized_position(kg, sd,
data);
329 uint strength_offset;
335 color = 2.0f *
make_float3(color.
x - 0.5f, color.
y - 0.5f, color.
z - 0.5f);
340 bool linear_interpolate_strength =
false;
373 linear_interpolate_strength =
true;
390 if (!linear_interpolate_strength) {
409 linear_interpolate_strength =
true;
434 if (linear_interpolate_strength && strength != 1.0f) {
435 strength =
max(strength, 0.0f);
462 attribute_value.
x = value.
x;
463 attribute_value.
y = value.
y;
464 attribute_value.
z = 0.0f;
477 tangent = attribute_value;
487 generated = attribute_value;
491 tangent =
make_float3(0.0f, -(generated.
z - 0.5f), (generated.
y - 0.5f));
494 tangent =
make_float3(-(generated.
z - 0.5f), 0.0f, (generated.
x - 0.5f));
497 tangent =
make_float3(-(generated.
y - 0.5f), (generated.
x - 0.5f), 0.0f);
BMesh const char void * data
ATTR_WARN_UNUSED_RESULT const BMVert * v
ccl_device_inline float stack_load_float(const ccl_private float *stack, const uint a)
ccl_device_inline float4 read_node_float(KernelGlobals kg, ccl_private int *const offset)
ccl_device_inline void stack_store_float3(ccl_private float *stack, const uint a, const float3 f)
ccl_device_forceinline void svm_unpack_node_uchar3(const uint i, ccl_private uint *x, ccl_private uint *y, ccl_private uint *z)
ccl_device_forceinline void svm_unpack_node_uchar4(const uint i, ccl_private uint *x, ccl_private uint *y, ccl_private uint *z, ccl_private uint *w)
CCL_NAMESPACE_BEGIN ccl_device_inline float3 stack_load_float3(const ccl_private float *stack, const uint a)
ccl_device_inline T to_global(const float2 p, const T X, const T Y)
const ThreadKernelGlobalsCPU * KernelGlobals
#define ccl_device_inline
#define ccl_device_noinline
#define CCL_NAMESPACE_END
ccl_device_inline float3 triangle_smooth_normal(KernelGlobals kg, const float3 Ng, const int prim, const float u, float v)
ccl_device_inline float3 triangle_smooth_normal_unnormalized(KernelGlobals kg, const ccl_private ShaderData *sd, const float3 Ng, const int prim, const float u, float v)
VecBase< T, D > reflect(VecOp< T, D >, VecOp< T, D >) RET
VecBase< float, D > normalize(VecOp< float, D >) RET
VecBase< float, 3 > cross(VecOp< float, 3 >, VecOp< float, 3 >) RET
ccl_device_inline float3 camera_position(KernelGlobals kg)
ccl_device_inline float3 camera_world_to_ndc(KernelGlobals kg, ccl_private ShaderData *sd, float3 P)
ccl_device_inline float3 object_dupli_uv(KernelGlobals kg, const int object)
ccl_device_inline void object_inverse_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 float3 object_dupli_generated(KernelGlobals kg, const int object)
ccl_device_inline void object_inverse_normal_transform(KernelGlobals kg, const ccl_private ShaderData *sd, ccl_private float3 *N)
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)
@ NODE_TEXCO_VOLUME_GENERATED
@ NODE_TEXCO_OBJECT_WITH_TRANSFORM
@ NODE_TEXCO_DUPLI_GENERATED
@ NODE_NORMAL_MAP_TANGENT
@ NODE_NORMAL_MAP_BLENDER_WORLD
@ NODE_NORMAL_MAP_BLENDER_OBJECT
@ ATTR_STD_NORMAL_UNDISPLACED
@ SD_OBJECT_TRANSFORM_APPLIED
ccl_device_inline bool isfinite_safe(const float f)
ccl_device_inline bool is_zero(const float2 a)
ccl_device_inline float2 safe_normalize(const float2 a)
CCL_NAMESPACE_BEGIN ccl_device_inline float3 zero_float3()
ccl_device_inline float3 motion_triangle_smooth_normal(KernelGlobals kg, const float3 Ng, const int object, const uint3 tri_vindex, const int numsteps, const int step, const float t, const float u, const float v)
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)
ccl_device_noinline void svm_node_tangent(KernelGlobals kg, ccl_private ShaderData *sd, ccl_private float *stack, const uint4 node)
ccl_device_inline float3 svm_texco_camera(KernelGlobals kg, const ccl_private ShaderData *sd, const ccl_private float3 &P)
ccl_device_noinline int svm_node_tex_coord_bump_dx(KernelGlobals kg, ccl_private ShaderData *sd, const uint32_t path_flag, ccl_private float *stack, const uint4 node, int offset)
ccl_device_noinline int svm_node_tex_coord(KernelGlobals kg, ccl_private ShaderData *sd, const uint32_t path_flag, ccl_private float *stack, const uint4 node, int offset)
CCL_NAMESPACE_BEGIN ccl_device_inline float3 svm_texco_reflection(const ccl_private ShaderData *sd)
ccl_device_noinline int svm_node_tex_coord_bump_dy(KernelGlobals kg, ccl_private ShaderData *sd, const uint32_t path_flag, ccl_private float *stack, const uint4 node, int offset)
ccl_device_inline float3 texco_normal_from_uv(KernelGlobals kg, ccl_private ShaderData *sd, const float u, const float v)
ccl_device_noinline void svm_node_normal_map(KernelGlobals kg, ccl_private ShaderData *sd, ccl_private float *stack, const uint4 node)