71 const int ptex_face_index,
77 float dummy_P[3], dPdu[3], dPdv[3],
D[3];
101 const int UNUSED(num_vertices),
102 const int UNUSED(num_edges),
103 const int UNUSED(num_loops),
104 const int UNUSED(num_polygons),
105 const int *
UNUSED(subdiv_polygon_offset))
114 const int ptex_face_index,
117 const int coarse_vertex_index,
118 const int UNUSED(coarse_poly_index),
119 const int UNUSED(coarse_corner),
120 const int UNUSED(subdiv_vertex_index))
128 const int ptex_face_index,
131 const int coarse_vertex_index,
132 const int UNUSED(coarse_poly_index),
133 const int UNUSED(coarse_corner),
134 const int UNUSED(subdiv_vertex_index))
138 BLI_assert(coarse_vertex_index < ctx->num_verts);
139 float inv_num_accumulated = 1.0f;
145 float D[3] = {0.0f, 0.0f, 0.0f};
146 float *vertex_co = ctx->
vertex_cos[coarse_vertex_index];
166 memset(foreach_context, 0,
sizeof(*foreach_context));
183 const struct Mesh *coarse_mesh,
184 float (*vertex_cos)[3],
206 subdiv_context.
subdiv = subdiv;
213 foreach_context.
user_data = &subdiv_context;
typedef float(TangentPoint)[2]
CustomData interface, see also DNA_customdata_types.h.
@ SUBDIV_STATS_SUBDIV_TO_MESH_GEOMETRY
@ SUBDIV_STATS_SUBDIV_TO_MESH
void BKE_subdiv_stats_end(SubdivStats *stats, eSubdivStatsValue value)
void BKE_subdiv_stats_begin(SubdivStats *stats, eSubdivStatsValue value)
@ SUBDIV_EVALUATOR_TYPE_CPU
void BKE_subdiv_eval_displacement(struct Subdiv *subdiv, int ptex_face_index, float u, float v, const float dPdu[3], const float dPdv[3], float r_D[3])
void BKE_subdiv_eval_limit_point(struct Subdiv *subdiv, int ptex_face_index, float u, float v, float r_P[3])
bool BKE_subdiv_eval_begin_from_mesh(struct Subdiv *subdiv, const struct Mesh *mesh, const float(*coarse_vertex_cos)[3], eSubdivEvaluatorType evaluator_type, struct OpenSubdiv_EvaluatorCache *evaluator_cache)
void BKE_subdiv_eval_limit_point_and_derivatives(struct Subdiv *subdiv, int ptex_face_index, float u, float v, float r_P[3], float r_dPdu[3], float r_dPdv[3])
bool BKE_subdiv_foreach_subdiv_geometry(struct Subdiv *subdiv, const struct SubdivForeachContext *context, const struct SubdivToMeshSettings *mesh_settings, const struct Mesh *coarse_mesh)
MINLINE void mul_v3_fl(float r[3], float f)
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void add_v3_v3(float r[3], const float a[3])
Read Guarded memory(de)allocation.
ATTR_WARN_UNUSED_RESULT const BMVert * v
void *(* MEM_calloc_arrayN)(size_t len, size_t size, const char *str)
int * accumulated_counters
SubdivForeachTopologyInformationCb topology_info
SubdivForeachVertexFromCornerCb vertex_corner
SubdivForeachVertexFromCornerCb vertex_every_corner
struct SubdivDisplacement * displacement_evaluator
BLI_INLINE float D(const float *data, const int res[3], int x, int y, int z)