21 #if defined(__HAIR__) || defined(__POINTCLOUD__)
28 float pixelwidth = 1.0f;
49 float pixelwidth_x =
len(sd->dP.dx -
dot(sd->dP.dx, sd->I) * sd->I);
50 float pixelwidth_y =
len(sd->dP.dy -
dot(sd->dP.dy, sd->I) * sd->I);
52 pixelwidth = (pixelwidth_x + pixelwidth_y) * 0.5f;
57 pixelwidth *= 0.5f *
size;
58 pixelwidth *= pixelwidth;
59 for (
int i = 0; i < np; i++) {
60 int i2 = i ? i - 1 : np - 1;
62 float3 edge = Co[i] - Co[i2];
67 if (
dot(crs, crs) < (
dot(edge, edge) * pixelwidth))
81 uint use_pixel_size, bump_offset;
86 int pixel_size = (int)use_pixel_size;
93 float3 Px = sd->P - sd->dP.dx;
97 float3 Py = sd->P - sd->dP.dy;
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
#define ccl_device_inline
#define ccl_device_noinline
#define CCL_NAMESPACE_END
const KernelGlobalsCPU *ccl_restrict KernelGlobals
ccl_device_inline void object_position_transform(KernelGlobals kg, ccl_private const ShaderData *sd, ccl_private float3 *P)
ccl_device_forceinline void svm_unpack_node_uchar2(uint i, ccl_private uint *x, ccl_private uint *y)
ccl_device_inline void stack_store_float(ccl_private float *stack, uint a, float f)
ccl_device_inline float stack_load_float(ccl_private float *stack, uint a)
ccl_device_inline bool stack_valid(uint a)
@ SD_OBJECT_TRANSFORM_APPLIED
ccl_device_inline void motion_triangle_vertices(KernelGlobals kg, int object, int prim, float time, float3 verts[3])
T dot(const vec_base< T, Size > &a, const vec_base< T, Size > &b)
vec_base< T, 3 > cross(const vec_base< T, 3 > &a, const vec_base< T, 3 > &b)
ccl_device_inline void triangle_vertices(KernelGlobals kg, int prim, float3 P[3])
ccl_device_noinline void svm_node_wireframe(KernelGlobals kg, ccl_private ShaderData *sd, ccl_private float *stack, uint4 node)
CCL_NAMESPACE_BEGIN ccl_device_inline float wireframe(KernelGlobals kg, ccl_private ShaderData *sd, float size, int pixel_size, ccl_private float3 *P)