44 Mesh(
const NodeType *node_type_,
Type geom_type_);
76 Triangle tri = {{triangles[i * 3 + 0], triangles[i * 3 + 1], triangles[i * 3 + 2]}};
82 return triangles.size() / 3;
112 s.
v[0] = subd_creases_edge[i * 2];
113 s.
v[1] = subd_creases_edge[i * 2 + 1];
114 s.
crease = subd_creases_weight[i];
167 size_t patch_table_offset;
169 size_t corner_offset;
171 size_t num_subd_verts;
172 size_t num_subd_faces;
174 unordered_map<
int,
int> vert_to_stitching_key_map;
175 unordered_multimap<
int,
int>
203 void add_subd_face(const
int *corners,
int num_corners,
int shader_,
bool smooth_);
235 return num_subd_faces;
240 num_subd_faces = num_subd_faces_;
245 return num_subd_verts;
249 void clear(
bool preserve_shaders,
bool preserve_voxel_data);
static void split(const char *text, const char *seps, char ***str, int *count)
ATTR_WARN_UNUSED_RESULT const BMVert * v2
ATTR_WARN_UNUSED_RESULT const BMVert * v
int motion_step(float time) const
#define CCL_NAMESPACE_END
smooth(Type::VEC3, "P") .flat(Type out_color storage_buf(0, Qualifier::READ, "Surfel", "surfels_buf[]") .push_constant(Type smooth(Type::VEC4, "interp_color")
#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 motion_verts(const float3 *verts, const float3 *vert_steps, size_t num_verts, size_t num_steps, float time, float3 r_verts[3]) const
void verts_for_step(const float3 *verts, const float3 *vert_steps, size_t num_verts, size_t num_steps, size_t step, float3 r_verts[3]) const
void bounds_grow(const float3 *verts, BoundBox &bounds) const
float3 compute_normal(const float3 *verts) const
void tessellate(DiagSplit *split)
SubdParams * get_subd_params()
void reserve_subd_faces(int numfaces, int num_ngons, int numcorners)
size_t get_num_subd_faces() const
friend class BVHSpatialSplit
void add_edge_crease(int v0, int v1, float weight)
void reserve_subd_creases(size_t num_creases)
void compute_bounds() override
void add_vertex_normals()
friend class GeometryManager
AttributeSet subd_attributes
Triangle get_triangle(size_t i) const
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 resize_subd_faces(int numfaces, int num_ngons, int numcorners)
void pack_patches(uint *patch_data)
void pack_verts(packed_float3 *tri_verts, packed_uint3 *tri_vindex, uint *tri_patch, float2 *tri_patch_uv)
void reserve_mesh(int numverts, int numfaces)
void add_vertex_slow(float3 P)
friend class ObjectManager
@ SUBDIVISION_CATMULL_CLARK
size_t num_triangles() const
void set_num_subd_faces(size_t num_subd_faces_)
void pack_normals(packed_float3 *vnormal)
void add_vertex(float3 P)
SubdEdgeCrease get_subd_crease(size_t i) const
void get_uv_tiles(ustring map, unordered_set< int > &tiles) override
void add_vertex_crease(int v, float weight)
void add_triangle(int v0, int v1, int v2, int shader, bool smooth)
SubdFace get_subd_face(size_t index) const
void pack_shaders(Scene *scene, uint *shader)
PrimitiveType primitive_type() const override
void resize_mesh(int numverts, int numfaces)
void add_subd_face(const int *corners, int num_corners, int shader_, bool smooth_)
void apply_transform(const Transform &tfm, const bool apply_to_motion) override
size_t get_num_subd_verts()