MCPcopy Create free account
hub / github.com/RenderKit/embree / ISPCSubdivMesh

Method ISPCSubdivMesh

tutorials/common/tutorial/scene_device.cpp:389–440  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

387 }
388
389 ISPCSubdivMesh::ISPCSubdivMesh (RTCDevice device, TutorialScene* scene_in, Ref<SceneGraph::SubdivMeshNode> in)
390 : geom(SUBDIV_MESH), positions(nullptr), normals(nullptr)
391 {
392 geom.geometry = rtcNewGeometry(device, RTC_GEOMETRY_TYPE_SUBDIVISION);
393
394 positions = new Vec3fa*[in->numTimeSteps()];
395 for (size_t i=0; i<in->numTimeSteps(); i++)
396 positions[i] = in->positions[i].data();
397
398 if (in->normals.size()) {
399 normals = new Vec3fa*[in->numTimeSteps()];
400 for (size_t i=0; i<in->numTimeSteps(); i++)
401 normals[i] = in->normals[i].data();
402 }
403
404 texcoords = in->texcoords.data();
405 position_indices = in->position_indices.data();
406 normal_indices = in->normal_indices.data();
407 texcoord_indices = in->texcoord_indices.data();
408 position_subdiv_mode = in->position_subdiv_mode;
409 normal_subdiv_mode = in->normal_subdiv_mode;
410 texcoord_subdiv_mode = in->texcoord_subdiv_mode;
411 verticesPerFace = in->verticesPerFace.data();
412 holes = in->holes.data();
413 edge_creases = in->edge_creases.data();
414 edge_crease_weights = in->edge_crease_weights.data();
415 vertex_creases = in->vertex_creases.data();
416 vertex_crease_weights = in->vertex_crease_weights.data();
417 startTime = in->time_range.lower;
418 endTime = in->time_range.upper;
419 numTimeSteps = unsigned(in->numTimeSteps());
420 numVertices = unsigned(in->numPositions());
421 numFaces = unsigned(in->numPrimitives());
422 numEdges = unsigned(in->position_indices.size());
423 numEdgeCreases = unsigned(in->edge_creases.size());
424 numVertexCreases = unsigned(in->vertex_creases.size());
425 numHoles = unsigned(in->holes.size());
426 numNormals = unsigned(in->numNormals());
427 numTexCoords = unsigned(in->texcoords.size());
428 geom.materialID = scene_in->materialID(in->material);
429 size_t numEdges = in->position_indices.size();
430 size_t numFaces = in->verticesPerFace.size();
431 subdivlevel = new float[numEdges];
432 face_offsets = new unsigned[numFaces];
433 for (size_t i=0; i<numEdges; i++) subdivlevel[i] = 1.0f;
434 int offset = 0;
435 for (size_t i=0; i<numFaces; i++)
436 {
437 face_offsets[i] = offset;
438 offset+=verticesPerFace[i];
439 }
440 }
441
442 ISPCSubdivMesh::~ISPCSubdivMesh ()
443 {

Callers

nothing calls this directly

Calls 7

numPositionsMethod · 0.80
numNormalsMethod · 0.80
materialIDMethod · 0.80
numTimeStepsMethod · 0.45
dataMethod · 0.45
sizeMethod · 0.45
numPrimitivesMethod · 0.45

Tested by

no test coverage detected