41 Mesh(
const NodeType *node_type_,
Type geom_type_);
54 const size_t num_verts,
55 const size_t num_steps,
61 const size_t num_verts,
62 const size_t num_steps,
73 Triangle tri = {{triangles[
i * 3 + 0], triangles[
i * 3 + 1], triangles[
i * 3 + 2]}};
79 return triangles.size() / 3;
109 s.
v[0] = subd_creases_edge[
i * 2];
110 s.
v[1] = subd_creases_edge[
i * 2 + 1];
111 s.
crease = subd_creases_weight[
i];
183 size_t num_subd_added_verts;
184 size_t num_subd_faces;
200 void resize_mesh(const
int numverts, const
int numtris);
201 void reserve_mesh(const
int numverts, const
int numtris);
209 void add_triangle(const
int v0, const
int v1, const
int v2, const
int shader,
bool smooth);
210 void add_subd_face(const
int *corners, const
int num_corners, const
int shader_,
bool smooth_);
237 return num_subd_faces;
241 num_subd_faces = num_subd_faces_;
245 return verts.size() - num_subd_added_verts;
249 void clear(
bool preserve_shaders,
bool preserve_voxel_data);
ATTR_WARN_UNUSED_RESULT const BMVert * v2
ATTR_WARN_UNUSED_RESULT const BMVert * v
int motion_step(const float time) const
#define CCL_NAMESPACE_END
VecBase< float, D > step(VecOp< float, D >, VecOp< float, D >) RET
#define NODE_SOCKET_API_ARRAY(type_, name)
#define NODE_SOCKET_API(type_, name)
ccl_gpu_kernel_postfix ccl_global KernelWorkTile * tiles
int num_ptex_faces() const
float3 normal(const Mesh *mesh) const
bool valid(const float3 *verts) const
void bounds_grow(const float3 *verts, BoundBox &bounds) const
void motion_verts(const float3 *verts, const float3 *vert_steps, const size_t num_verts, const size_t num_steps, const float time, float3 r_verts[3]) const
float3 compute_normal(const float3 *verts) const
void verts_for_step(const float3 *verts, const float3 *vert_steps, const size_t num_verts, const size_t num_steps, const size_t step, float3 r_verts[3]) const
void tessellate(SubdParams ¶ms)
size_t get_num_subd_faces() const
void add_undisplaced(Scene *scene)
@ SUBDIVISION_ADAPTIVE_SPACE_OBJECT
@ SUBDIVISION_ADAPTIVE_SPACE_PIXEL
void add_triangle(const int v0, const int v1, const int v2, const int shader, bool smooth)
size_t get_num_subd_base_verts() const
void reserve_subd_creases(const size_t num_creases)
friend class BVHSpatialSplit
void compute_bounds() override
void add_vertex_normals()
friend class GeometryManager
AttributeSet subd_attributes
void copy_center_to_motion_step(const int motion_step)
Mesh(const NodeType *node_type_, Type geom_type_)
void clear(bool preserve_shaders=false) override
void set_num_subd_faces(const size_t num_subd_faces_)
void add_vertex_slow(const float3 P)
bool has_motion_blur() const override
void pack_verts(packed_float3 *tri_verts, packed_uint3 *tri_vindex)
friend class ObjectManager
SubdivisionFVarInterpolation
@ SUBDIVISION_FVAR_LINEAR_NONE
@ SUBDIVISION_FVAR_LINEAR_CORNERS_PLUS2
@ SUBDIVISION_FVAR_LINEAR_CORNERS_ONLY
@ SUBDIVISION_FVAR_LINEAR_ALL
@ SUBDIVISION_FVAR_LINEAR_BOUNDARIES
@ SUBDIVISION_FVAR_LINEAR_CORNERS_PLUS1
void add_vertex_crease(const int v, const float weight)
SubdFace get_subd_face(const size_t index) const
void reserve_mesh(const int numverts, const int numtris)
@ SUBDIVISION_CATMULL_CLARK
void add_subd_face(const int *corners, const int num_corners, const int shader_, bool smooth_)
size_t num_triangles() const
void resize_subd_faces(const int numfaces, const int numcorners)
void pack_normals(packed_float3 *vnormal)
void add_vertex(const float3 P)
void get_uv_tiles(ustring map, unordered_set< int > &tiles) override
void resize_mesh(const int numverts, const int numtris)
void update_generated(Scene *scene)
Triangle get_triangle(const size_t i) const
void pack_shaders(Scene *scene, uint *shader)
PrimitiveType primitive_type() const override
void reserve_subd_faces(const int numfaces, const int numcorners)
SubdEdgeCrease get_subd_crease(const size_t i) const
void add_edge_crease(const int v0, const int v1, const float weight)
void update_tangents(Scene *scene, bool undisplaced)
void apply_transform(const Transform &tfm, const bool apply_to_motion) override
SubdivisionBoundaryInterpolation
@ SUBDIVISION_BOUNDARY_EDGE_ONLY
@ SUBDIVISION_BOUNDARY_EDGE_AND_CORNER
@ SUBDIVISION_BOUNDARY_NONE