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

Function updateEdgeLevels

tutorials/viewer/viewer_device.cpp:81–111  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

79#endif
80
81void updateEdgeLevels(ISPCScene* scene_in, const Vec3fa& cam_pos)
82{
83 /* first update small meshes */
84#if defined(ISPC)
85 parallel_for(size_t(0),size_t( scene_in->numGeometries ),[&](const range<size_t>& range) {
86 const int threadIndex = (int)TaskScheduler::threadIndex();
87 for (size_t i=range.begin(); i<range.end(); i++)
88 updateMeshEdgeLevelBufferTask((int)i,threadIndex,scene_in,cam_pos);
89 });
90#endif
91
92 /* now update large meshes */
93 for (unsigned int g=0; g<scene_in->numGeometries; g++)
94 {
95 ISPCGeometry* geometry = g_ispc_scene->geometries[g];
96 if (geometry->type != SUBDIV_MESH) continue;
97 ISPCSubdivMesh* mesh = (ISPCSubdivMesh*) geometry;
98#if defined(ISPC)
99 if (mesh->numFaces < 10000) continue;
100 parallel_for(size_t(0),size_t( (mesh->numFaces+4095)/4096 ),[&](const range<size_t>& range) {
101 const int threadIndex = (int)TaskScheduler::threadIndex();
102 for (size_t i=range.begin(); i<range.end(); i++)
103 updateSubMeshEdgeLevelBufferTask((int)i,threadIndex,mesh,cam_pos);
104 });
105#else
106 updateEdgeLevelBuffer(mesh,cam_pos,0,mesh->numFaces);
107#endif
108 rtcUpdateGeometryBuffer(geometry->geometry, RTC_BUFFER_TYPE_LEVEL, 0);
109 rtcCommitGeometry(geometry->geometry);
110 }
111}
112
113RTCScene convertScene(ISPCScene* scene_in)
114{

Callers 2

device_renderFunction · 0.70

Calls 8

parallel_forFunction · 0.85
rtcUpdateGeometryBufferFunction · 0.85
rtcCommitGeometryFunction · 0.85
updateEdgeLevelBufferFunction · 0.70
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected