| 5781 | } |
| 5782 | |
| 5783 | bool setup(VerifyApplication* state) |
| 5784 | { |
| 5785 | if (!ParallelIntersectBenchmark::setup(state)) |
| 5786 | return false; |
| 5787 | |
| 5788 | std::string cfg = state->rtcore + ",isa="+stringOfISA(isa); |
| 5789 | device = rtcNewDevice(cfg.c_str()); |
| 5790 | errorHandler(nullptr,rtcGetDeviceError(device)); |
| 5791 | rtcSetDeviceErrorFunction(device,errorHandler,nullptr); |
| 5792 | |
| 5793 | scene = new VerifyScene(device,sflags); |
| 5794 | switch (gtype) { |
| 5795 | case TRIANGLE_MESH: scene->addGeometry(quality,SceneGraph::createTriangleSphere(zero,one,numPhi)); break; |
| 5796 | case TRIANGLE_MESH_MB: scene->addGeometry(quality,SceneGraph::createTriangleSphere(zero,one,numPhi)->set_motion_vector(random_motion_vector2(0.01f))); break; |
| 5797 | case QUAD_MESH: scene->addGeometry(quality,SceneGraph::createQuadSphere(zero,one,numPhi)); break; |
| 5798 | case QUAD_MESH_MB: scene->addGeometry(quality,SceneGraph::createQuadSphere(zero,one,numPhi)->set_motion_vector(random_motion_vector2(0.01f))); break; |
| 5799 | case SUBDIV_MESH: scene->addGeometry(quality,SceneGraph::createSubdivSphere(zero,one,8,float(numPhi)/8.0f)); break; |
| 5800 | case SUBDIV_MESH_MB: scene->addGeometry(quality,SceneGraph::createSubdivSphere(zero,one,8,float(numPhi)/8.0f)->set_motion_vector(random_motion_vector2(0.01f))); break; |
| 5801 | case SPHERE_GEOMETRY: scene->addGeometry(quality,SceneGraph::createPointSphere(zero, one, float(one)/100.f, numPhi, SceneGraph::SPHERE)); break; |
| 5802 | case SPHERE_GEOMETRY_MB: scene->addGeometry(quality,SceneGraph::createPointSphere(zero, one, float(one)/100.f, numPhi, SceneGraph::SPHERE)->set_motion_vector(random_motion_vector2(0.01f))); break; |
| 5803 | case DISC_GEOMETRY: scene->addGeometry(quality,SceneGraph::createPointSphere(zero, one, float(one)/100.f, numPhi, SceneGraph::DISC)); break; |
| 5804 | case DISC_GEOMETRY_MB: scene->addGeometry(quality,SceneGraph::createPointSphere(zero, one, float(one)/100.f, numPhi, SceneGraph::DISC)->set_motion_vector(random_motion_vector2(0.01f))); break; |
| 5805 | case ORIENTED_DISC_GEOMETRY: scene->addGeometry(quality,SceneGraph::createPointSphere(zero, one, float(one)/100.f, numPhi, SceneGraph::ORIENTED_DISC)); break; |
| 5806 | case ORIENTED_DISC_GEOMETRY_MB: scene->addGeometry(quality,SceneGraph::createPointSphere(zero, one, float(one)/100.f, numPhi, SceneGraph::ORIENTED_DISC)->set_motion_vector(random_motion_vector2(0.01f))); break; |
| 5807 | default: throw std::runtime_error("invalid geometry for benchmark"); |
| 5808 | } |
| 5809 | rtcCommitScene (*scene); |
| 5810 | AssertNoError(device); |
| 5811 | |
| 5812 | return true; |
| 5813 | } |
| 5814 | |
| 5815 | void render_block(size_t i, size_t) |
| 5816 | { |
no test coverage detected