Blender
V3.3
|
#include "BLI_sys_types.h"
#include "MEM_guardedalloc.h"
#include "BLI_math.h"
#include "BLI_task.h"
#include "BLI_utildefines.h"
#include "CCGSubSurf.h"
#include "CCGSubSurf_intern.h"
Go to the source code of this file.
Classes | |
struct | CCGSubSurfCalcSubdivData |
Macros | |
#define | FACE_calcIFNo(f, lvl, S, x, y, no) _face_calcIFNo(f, lvl, S, x, y, no, subdivLevels, vertDataSize) |
Typedefs | |
typedef struct CCGSubSurfCalcSubdivData | CCGSubSurfCalcSubdivData |
Functions | |
static void * | _edge_getCoVert (CCGEdge *e, CCGVert *v, int lvl, int x, int dataSize) |
static int | _edge_isBoundary (const CCGEdge *e) |
static bool | _vert_isBoundary (const CCGVert *v) |
static CCGVert * | _edge_getOtherVert (CCGEdge *e, CCGVert *vQ) |
static float * | _face_getIFNoEdge (CCGFace *f, CCGEdge *e, int f_ed_idx, int lvl, int eX, int eY, int levels, int dataSize, int normalDataOffset) |
static void | _face_calcIFNo (CCGFace *f, int lvl, int S, int x, int y, float no[3], int levels, int dataSize) |
static int | VERT_seam (const CCGVert *v) |
static float | EDGE_getSharpness (CCGEdge *e, int lvl) |
static void | ccgSubSurf__calcVertNormals_faces_accumulate_cb (void *__restrict userdata, const int ptrIdx, const TaskParallelTLS *__restrict UNUSED(tls)) |
static void | ccgSubSurf__calcVertNormals_faces_finalize_cb (void *__restrict userdata, const int ptrIdx, const TaskParallelTLS *__restrict UNUSED(tls)) |
static void | ccgSubSurf__calcVertNormals_edges_accumulate_cb (void *__restrict userdata, const int ptrIdx, const TaskParallelTLS *__restrict UNUSED(tls)) |
static void | ccgSubSurf__calcVertNormals (CCGSubSurf *ss, CCGVert **effectedV, CCGEdge **effectedE, CCGFace **effectedF, int numEffectedV, int numEffectedE, int numEffectedF) |
static void | ccgSubSurf__calcSubdivLevel_interior_faces_edges_midpoints_cb (void *__restrict userdata, const int ptrIdx, const TaskParallelTLS *__restrict UNUSED(tls)) |
static void | ccgSubSurf__calcSubdivLevel_interior_faces_edges_centerpoints_shift_cb (void *__restrict userdata, const int ptrIdx, const TaskParallelTLS *__restrict UNUSED(tls)) |
static void | ccgSubSurf__calcSubdivLevel_verts_copydata_cb (void *__restrict userdata, const int ptrIdx, const TaskParallelTLS *__restrict UNUSED(tls)) |
static void | ccgSubSurf__calcSubdivLevel (CCGSubSurf *ss, CCGVert **effectedV, CCGEdge **effectedE, CCGFace **effectedF, const int numEffectedV, const int numEffectedE, const int numEffectedF, const int curLvl) |
void | ccgSubSurf__sync_legacy (CCGSubSurf *ss) |
CCGError | ccgSubSurf_updateNormals (CCGSubSurf *ss, CCGFace **effectedF, int numEffectedF) |
CCGError | ccgSubSurf_updateLevels (CCGSubSurf *ss, int lvl, CCGFace **effectedF, int numEffectedF) |
#define FACE_calcIFNo | ( | f, | |
lvl, | |||
S, | |||
x, | |||
y, | |||
no | |||
) | _face_calcIFNo(f, lvl, S, x, y, no, subdivLevels, vertDataSize) |
Definition at line 17 of file CCGSubSurf_legacy.c.
typedef struct CCGSubSurfCalcSubdivData CCGSubSurfCalcSubdivData |
Definition at line 21 of file CCGSubSurf_legacy.c.
References ccg_edgebase(), e, EDGE_getLevelData(), v, and x.
Referenced by ccgSubSurf__calcSubdivLevel(), ccgSubSurf__calcSubdivLevel_verts_copydata_cb(), and ccgSubSurf__sync_legacy().
Definition at line 46 of file CCGSubSurf_legacy.c.
References e.
Referenced by ccgSubSurf__sync_legacy().
|
static |
Definition at line 31 of file CCGSubSurf_legacy.c.
References e.
Referenced by _vert_isBoundary(), ccgSubSurf__calcSubdivLevel(), and ccgSubSurf__sync_legacy().
|
static |
Definition at line 69 of file CCGSubSurf_legacy.c.
References Freestyle::a, usdtokens::b(), Freestyle::c, ccg_face_getIFCo(), Normalize(), x, and y.
|
static |
Definition at line 55 of file CCGSubSurf_legacy.c.
References ccg_face_getIFCoEdge(), and e.
Referenced by ccgSubSurf__calcVertNormals(), and ccgSubSurf__calcVertNormals_edges_accumulate_cb().
Definition at line 36 of file CCGSubSurf_legacy.c.
References _edge_isBoundary(), and v.
Referenced by ccgSubSurf__calcSubdivLevel(), and ccgSubSurf__sync_legacy().
|
static |
Definition at line 646 of file CCGSubSurf_legacy.c.
References _edge_getCoVert(), _edge_isBoundary(), _vert_isBoundary(), BLI_parallel_range_settings_defaults(), BLI_task_parallel_range(), ccg_edgesize(), ccg_face_getEdgeIndex(), ccg_face_getIFCoEdge(), ccg_face_getVertIndex(), CCG_TASK_LIMIT, ccgSubSurf__calcSubdivLevel_interior_faces_edges_centerpoints_shift_cb(), ccgSubSurf__calcSubdivLevel_interior_faces_edges_midpoints_cb(), ccgSubSurf__calcSubdivLevel_verts_copydata_cb(), data, e, EDGE_getCo, EDGE_getSharpness(), FACE_getIFCo, CCGSubSurf::meshIFC, TaskParallelSettings::min_iter_per_thread, CCGSubSurf::q, CCGSubSurf::r, r, CCGMeshIFC::simpleSubdiv, CCGSubSurf::subdivLevels, v, VERT_getCo, VERT_seam(), VertDataAdd(), VertDataCopy(), VertDataMulN(), CCGMeshIFC::vertDataSize, VertDataSub(), VertDataZero(), and x.
Referenced by ccgSubSurf__sync_legacy(), and ccgSubSurf_updateLevels().
|
static |
Definition at line 495 of file CCGSubSurf_legacy.c.
References ccg_gridsize(), data, FACE_getCenterData(), FACE_getIECo, FACE_getIFCo, CCGSubSurf::meshIFC, CCGFace::numVerts, CCGSubSurf::subdivLevels, VertDataAdd(), VertDataAvg4(), VertDataCopy(), VertDataMulN(), CCGMeshIFC::vertDataSize, VertDataSub(), VertDataZero(), x, and y.
Referenced by ccgSubSurf__calcSubdivLevel().
|
static |
Definition at line 407 of file CCGSubSurf_legacy.c.
References ccg_gridsize(), data, FACE_getIECo, FACE_getIFCo, CCGSubSurf::meshIFC, CCGFace::numVerts, CCGSubSurf::subdivLevels, VertDataAvg4(), CCGMeshIFC::vertDataSize, x, and y.
Referenced by ccgSubSurf__calcSubdivLevel().
|
static |
Definition at line 601 of file CCGSubSurf_legacy.c.
References _edge_getCoVert(), ccg_gridsize(), data, e, EDGE_getCo, FACE_getCenterData(), FACE_getEdges(), FACE_getIECo, FACE_getIFCo, FACE_getVerts(), CCGSubSurf::meshIFC, CCGFace::numVerts, CCGSubSurf::subdivLevels, VERT_getCo, VertDataCopy(), CCGMeshIFC::vertDataSize, and x.
Referenced by ccgSubSurf__calcSubdivLevel().
|
static |
Definition at line 303 of file CCGSubSurf_legacy.c.
References _face_getIFNoEdge(), BLI_parallel_range_settings_defaults(), BLI_task_parallel_range(), ccg_edgesize(), ccg_face_getEdgeIndex(), ccg_face_getVertIndex(), ccg_gridsize(), CCG_TASK_LIMIT, ccgSubSurf__calcVertNormals_edges_accumulate_cb(), ccgSubSurf__calcVertNormals_faces_accumulate_cb(), ccgSubSurf__calcVertNormals_faces_finalize_cb(), data, e, EDGE_getCo, EDGE_getNo, FACE_getIFNo, CCGSubSurf::meshIFC, TaskParallelSettings::min_iter_per_thread, NormAdd, CCGSubSurf::normalDataOffset, Normalize(), NormCopy, NormZero, CCGSubSurf::subdivLevels, UNLIKELY, v, VERT_getCo, VERT_getNo, CCGMeshIFC::vertDataSize, and x.
Referenced by ccgSubSurf__sync_legacy(), and ccgSubSurf_updateNormals().
|
static |
Definition at line 255 of file CCGSubSurf_legacy.c.
References _face_getIFNoEdge(), ccg_edgesize(), ccg_face_getEdgeIndex(), data, e, CCGSubSurf::meshIFC, NormAdd, CCGSubSurf::normalDataOffset, NormCopy, CCGSubSurf::subdivLevels, CCGMeshIFC::vertDataSize, and x.
Referenced by ccgSubSurf__calcVertNormals().
|
static |
Definition at line 117 of file CCGSubSurf_legacy.c.
References ccg_gridsize(), data, Edge_eEffected, FACE_calcIFNo, FACE_getEdges(), FACE_getIFNo, FACE_getVerts(), CCGEdge::flags, K, CCGSubSurf::meshIFC, NormAdd, CCGSubSurf::normalDataOffset, NormZero, CCGFace::numVerts, CCGSubSurf::subdivLevels, Vert_eEffected, CCGMeshIFC::vertDataSize, x, and y.
Referenced by ccgSubSurf__calcVertNormals().
|
static |
Definition at line 216 of file CCGSubSurf_legacy.c.
References ccg_gridsize(), data, FACE_getCenterData(), FACE_getIENo, FACE_getIFNo, CCGSubSurf::meshIFC, CCGSubSurf::normalDataOffset, Normalize(), NormCopy, CCGFace::numVerts, CCGSubSurf::subdivLevels, VertDataCopy(), CCGMeshIFC::vertDataSize, x, and y.
Referenced by ccgSubSurf__calcVertNormals().
void ccgSubSurf__sync_legacy | ( | CCGSubSurf * | ss | ) |
Definition at line 1003 of file CCGSubSurf_legacy.c.
References _edge_getCoVert(), _edge_getOtherVert(), _edge_isBoundary(), _vert_isBoundary(), _EHash::buckets, CCGSubSurf::calcVertNormals, ccgSubSurf__calcSubdivLevel(), ccgSubSurf__calcVertNormals(), ccgSubSurf_getEdgeUserData(), ccgSubSurf_getFaceUserData(), ccgSubSurf_getVertUserData(), CCGSubSurf::currentAge, _EHash::curSize, e, Edge_eEffected, EDGE_getCo, EDGE_getSharpness(), CCGSubSurf::edgeUserAgeOffset, CCGSubSurf::eMap, Face_eEffected, FACE_getCenterData(), FACE_getEdges(), FACE_getIECo, FACE_getIFCo, FACE_getVerts(), CCGSubSurf::faceUserAgeOffset, CCGFace::flags, CCGSubSurf::fMap, MEM_freeN, MEM_mallocN, CCGSubSurf::meshIFC, _EHash::numEntries, CCGFace::numVerts, CCGSubSurf::q, CCGSubSurf::r, r, CCGMeshIFC::simpleSubdiv, CCGSubSurf::subdivLevels, CCGSubSurf::useAgeCounts, v, Vert_eEffected, VERT_getCo, VERT_seam(), VertDataAdd(), VertDataCopy(), VertDataMulN(), CCGMeshIFC::vertDataSize, VertDataSub(), VertDataZero(), CCGSubSurf::vertUserAgeOffset, and CCGSubSurf::vMap.
Referenced by ccgSubSurf__sync().
CCGError ccgSubSurf_updateLevels | ( | CCGSubSurf * | ss, |
int | lvl, | ||
CCGFace ** | effectedF, | ||
int | numEffectedF | ||
) |
Compute subdivision levels from a given starting point, used by multi-res subdivide/propagate, by filling in coordinates at a certain level, and then subdividing that up to the highest level.
Definition at line 1332 of file CCGSubSurf_legacy.c.
References ccgSubSurf__allFaces(), ccgSubSurf__calcSubdivLevel(), ccgSubSurf__effectedFaceNeighbors(), eCCGError_None, CCGVert::flags, CCGEdge::flags, CCGFace::flags, MEM_freeN, and CCGSubSurf::subdivLevels.
Referenced by multires_modifier_update_mdisps().
CCGError ccgSubSurf_updateNormals | ( | CCGSubSurf * | ss, |
CCGFace ** | effectedF, | ||
int | numEffectedF | ||
) |
Update normals for specified faces.
Definition at line 1298 of file CCGSubSurf_legacy.c.
References CCGSubSurf::calcVertNormals, ccgSubSurf__allFaces(), ccgSubSurf__calcVertNormals(), ccgSubSurf__effectedFaceNeighbors(), eCCGError_None, CCGVert::flags, CCGEdge::flags, CCGFace::flags, and MEM_freeN.
Referenced by multiresModifier_disp_run().
Definition at line 91 of file CCGSubSurf_legacy.c.
References e.
Referenced by ccgSubSurf__calcSubdivLevel(), and ccgSubSurf__sync_legacy().
|
static |
Definition at line 86 of file CCGSubSurf_legacy.c.
References v, and Vert_eSeam.
Referenced by ccgSubSurf__calcSubdivLevel(), and ccgSubSurf__sync_legacy().