13 return (1 << (level - 1)) + 1;
20 return 1 + (1 << level);
28 return 1 << (high_level - low_level);
35 return level + (1 << level) - 1;
42 return (
byte *)(&(
v)[1]);
47 return (
byte *)(&(
e)[1]);
94 dataSize * (1 + S * (maxGridSize + maxGridSize * maxGridSize));
95 return &gridBase[dataSize *
x * spacing];
99 CCGFace *f,
int lvl,
int S,
int x,
int levels,
int dataSize,
int normalDataOffset)
104 dataSize * (1 + S * (maxGridSize + maxGridSize * maxGridSize));
105 return &gridBase[dataSize *
x * spacing + normalDataOffset];
109 CCGFace *f,
int lvl,
int S,
int x,
int y,
int levels,
int dataSize)
114 dataSize * (1 + S * (maxGridSize + maxGridSize * maxGridSize));
115 return &gridBase[dataSize * (maxGridSize + (
y * maxGridSize +
x) * spacing)];
119 CCGFace *f,
int lvl,
int S,
int x,
int y,
int levels,
int dataSize,
int normalDataOffset)
124 dataSize * (1 + S * (maxGridSize + maxGridSize * maxGridSize));
125 return (
float *)&gridBase[dataSize * (maxGridSize + (
y * maxGridSize +
x) * spacing) +
131 for (
int i = 0; i < f->
numVerts; i++) {
141 for (
int i = 0; i < f->
numVerts; i++) {
150 CCGFace *f,
CCGEdge *
e,
int f_ed_idx,
int lvl,
int eX,
int eY,
int levels,
int dataSize)
161 eX = (maxGridSize * 2 - 1) - 1 - eX;
163 y = maxGridSize - 1 - eX;
164 x = maxGridSize - 1 - eY;
171 f_ed_idx = (f_ed_idx + 1) % f->
numVerts;
184 const float length =
sqrtf(no[0] * no[0] + no[1] * no[1] + no[2] * no[2]);
187 const float length_inv = 1.0f /
length;
251 v[i] = (
a[i] +
b[i] +
c[i] + d[i]) * 0.25f;
BLI_INLINE void * ccg_face_getIENo(CCGFace *f, int lvl, int S, int x, int levels, int dataSize, int normalDataOffset)
BLI_INLINE int ccg_edgesize(int level)
BLI_INLINE void Normalize(float no[3])
BLI_INLINE void * ccg_face_getIECo(CCGFace *f, int lvl, int S, int x, int levels, int dataSize)
BLI_INLINE float * ccg_vert_getNo(CCGVert *v, int lvl, int dataSize, int normalDataOffset)
BLI_INLINE int ccg_gridsize(int level)
BLI_INLINE float * ccg_face_getIFNo(CCGFace *f, int lvl, int S, int x, int y, int levels, int dataSize, int normalDataOffset)
BLI_INLINE void VertDataZero(float v[], const CCGSubSurf *ss)
BLI_INLINE void * ccg_face_getIFCo(CCGFace *f, int lvl, int S, int x, int y, int levels, int dataSize)
BLI_INLINE bool VertDataEqual(const float a[], const float b[], const CCGSubSurf *ss)
BLI_INLINE void * ccg_vert_getCo(CCGVert *v, int lvl, int dataSize)
BLI_INLINE int ccg_edgebase(int level)
BLI_INLINE int ccg_face_getEdgeIndex(CCGFace *f, CCGEdge *e)
BLI_INLINE int ccg_spacing(int high_level, int low_level)
BLI_INLINE void * ccg_edge_getCo(CCGEdge *e, int lvl, int x, int dataSize)
BLI_INLINE void VertDataSub(float a[], const float b[], const CCGSubSurf *ss)
BLI_INLINE void VertDataCopy(float dst[], const float src[], const CCGSubSurf *ss)
BLI_INLINE int ccg_face_getVertIndex(CCGFace *f, CCGVert *v)
BLI_INLINE byte * VERT_getLevelData(CCGVert *v)
BLI_INLINE byte * FACE_getCenterData(CCGFace *f)
BLI_INLINE CCGEdge ** FACE_getEdges(CCGFace *f)
BLI_INLINE void * ccg_face_getIFCoEdge(CCGFace *f, CCGEdge *e, int f_ed_idx, int lvl, int eX, int eY, int levels, int dataSize)
BLI_INLINE void VertDataMulN(float v[], float f, const CCGSubSurf *ss)
BLI_INLINE CCGVert ** FACE_getVerts(CCGFace *f)
BLI_INLINE float * ccg_edge_getNo(CCGEdge *e, int lvl, int x, int dataSize, int normalDataOffset)
BLI_INLINE void VertDataAvg4(float v[], const float a[], const float b[], const float c[], const float d[], const CCGSubSurf *ss)
BLI_INLINE void VertDataAdd(float a[], const float b[], const CCGSubSurf *ss)
BLI_INLINE byte * EDGE_getLevelData(CCGEdge *e)
#define CCGSUBSURF_LEVEL_MAX
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
ATTR_WARN_UNUSED_RESULT const BMVert * v
SyclQueue void void * src
T length(const vec_base< T, Size > &a)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)