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

Method addGeometry

tutorials/verify/verify.cpp:169–304  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

167 }
168
169 unsigned addGeometry(const RTCBuildQuality quality, const Ref<SceneGraph::Node>& node)
170 {
171 nodes.push_back(node);
172
173 if (Ref<SceneGraph::TriangleMeshNode> mesh = node.dynamicCast<SceneGraph::TriangleMeshNode>())
174 {
175 RTCGeometry geom = rtcNewGeometry (device, RTC_GEOMETRY_TYPE_TRIANGLE);
176 AssertNoError(device);
177 rtcSetGeometryTimeStepCount(geom,(unsigned int)mesh->numTimeSteps());
178 rtcSetGeometryBuildQuality(geom,quality);
179 AssertNoError(device);
180 rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_INDEX,0,RTC_FORMAT_UINT3,mesh->triangles.data(),0,sizeof(SceneGraph::TriangleMeshNode::Triangle), mesh->triangles.size());
181 for (unsigned int t=0; t<mesh->numTimeSteps(); t++)
182 rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_VERTEX,t,RTC_FORMAT_FLOAT3,mesh->positions[t].data(),0,sizeof(SceneGraph::TriangleMeshNode::Vertex), mesh->positions[t].size());
183 AssertNoError(device);
184 rtcCommitGeometry(geom);
185 unsigned int geomID = rtcAttachGeometry(scene,geom);
186 rtcReleaseGeometry(geom);
187 return geomID;
188 }
189 else if (Ref<SceneGraph::QuadMeshNode> mesh = node.dynamicCast<SceneGraph::QuadMeshNode>())
190 {
191 RTCGeometry geom = rtcNewGeometry (device, RTC_GEOMETRY_TYPE_QUAD);
192 AssertNoError(device);
193 rtcSetGeometryTimeStepCount(geom, (unsigned int)mesh->numTimeSteps());
194 rtcSetGeometryBuildQuality(geom,quality);
195 AssertNoError(device);
196 rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_INDEX,0,RTC_FORMAT_UINT4,mesh->quads.data(),0,sizeof(SceneGraph::QuadMeshNode::Quad), mesh->quads.size());
197 for (unsigned int t=0; t<mesh->numTimeSteps(); t++)
198 rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_VERTEX,t,RTC_FORMAT_FLOAT3,mesh->positions[t].data(),0,sizeof(SceneGraph::QuadMeshNode::Vertex), mesh->positions[t].size());
199 AssertNoError(device);
200 rtcCommitGeometry(geom);
201 unsigned int geomID = rtcAttachGeometry(scene,geom);
202 rtcReleaseGeometry(geom);
203 return geomID;
204 }
205 else if (Ref<SceneGraph::GridMeshNode> mesh = node.dynamicCast<SceneGraph::GridMeshNode>())
206 {
207 RTCGeometry geom = rtcNewGeometry (device, RTC_GEOMETRY_TYPE_GRID);
208 AssertNoError(device);
209 rtcSetGeometryTimeStepCount(geom, (unsigned int)mesh->numTimeSteps());
210 rtcSetGeometryBuildQuality(geom,quality);
211 AssertNoError(device);
212 rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_GRID,0,RTC_FORMAT_GRID,mesh->grids.data(),0,sizeof(SceneGraph::GridMeshNode::Grid), mesh->grids.size());
213 for (unsigned int t=0; t<mesh->numTimeSteps(); t++)
214 rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_VERTEX,t,RTC_FORMAT_FLOAT3,mesh->positions[t].data(),0,sizeof(SceneGraph::GridMeshNode::Vertex), mesh->positions[t].size());
215 AssertNoError(device);
216 rtcCommitGeometry(geom);
217 unsigned int geomID = rtcAttachGeometry(scene,geom);
218 rtcReleaseGeometry(geom);
219 return geomID;
220 }
221 else if (Ref<SceneGraph::SubdivMeshNode> mesh = node.dynamicCast<SceneGraph::SubdivMeshNode>())
222 {
223 RTCGeometry geom = rtcNewGeometry (device, RTC_GEOMETRY_TYPE_SUBDIVISION);
224 AssertNoError(device);
225 rtcSetGeometryTimeStepCount(geom, (unsigned int)mesh->numTimeSteps());
226 rtcSetGeometryBuildQuality(geom,quality);

Callers 15

runMethod · 0.80
runMethod · 0.80
runMethod · 0.80
runMethod · 0.80
run_buildMethod · 0.80
runMethod · 0.80
runMethod · 0.80
runMethod · 0.80
runMethod · 0.80
runMethod · 0.80
runMethod · 0.80
runMethod · 0.80

Calls 15

AssertNoErrorFunction · 0.85
rtcCommitGeometryFunction · 0.85
rtcAttachGeometryFunction · 0.85
rtcReleaseGeometryFunction · 0.85
rtcCommitSceneFunction · 0.85
rtcSetGeometryTransformFunction · 0.85

Tested by

no test coverage detected