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

Method run

tutorials/verify/verify.cpp:3623–3689  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3621 : VerifyApplication::IntersectTest(name,isa,imode,VARIANT_INTERSECT,VerifyApplication::TEST_SHOULD_PASS), sflags(sflags), model(model), pos(pos) {}
3622
3623 VerifyApplication::TestReturnValue run(VerifyApplication* state, bool silent)
3624 {
3625 std::string cfg = state->rtcore + ",isa="+stringOfISA(isa);
3626 RTCDeviceRef device = rtcNewDevice(cfg.c_str());
3627 errorHandler(nullptr,rtcGetDeviceError(device));
3628
3629 avector<Vec3fa> motion_vector;
3630 motion_vector.push_back(Vec3fa(0.0f));
3631 motion_vector.push_back(Vec3fa(0.0f));
3632
3633 VerifyScene scene(device,sflags);
3634 size_t size = state->intensity < 1.0f ? 50 : 200;
3635 if (model == "sphere.triangles") scene.addGeometry(RTC_BUILD_QUALITY_MEDIUM,SceneGraph::createTriangleSphere(pos,2.0f,size));
3636 else if (model == "sphere.quads" ) scene.addGeometry(RTC_BUILD_QUALITY_MEDIUM,SceneGraph::createQuadSphere (pos,2.0f,size));
3637 else if (model == "sphere.grids" ) scene.addGeometry(RTC_BUILD_QUALITY_MEDIUM,SceneGraph::createGridSphere (pos,2.0f,size));
3638 else if (model == "sphere.subdiv" ) scene.addGeometry(RTC_BUILD_QUALITY_MEDIUM,SceneGraph::createSubdivSphere (pos,2.0f,4,64));
3639 else if (model == "plane.triangles" ) scene.addGeometry(RTC_BUILD_QUALITY_MEDIUM,SceneGraph::createTrianglePlane (Vec3fa(pos.x,-6.0f,-6.0f),Vec3fa(0.0f,0.0f,12.0f),Vec3fa(0.0f,12.0f,0.0f),size,size));
3640 else if (model == "plane.quads" ) scene.addGeometry(RTC_BUILD_QUALITY_MEDIUM,SceneGraph::createQuadPlane (Vec3fa(pos.x,-6.0f,-6.0f),Vec3fa(0.0f,0.0f,12.0f),Vec3fa(0.0f,12.0f,0.0f),size,size));
3641 else if (model == "plane.grids" ) scene.addGeometry(RTC_BUILD_QUALITY_MEDIUM,SceneGraph::createGridPlane (Vec3fa(pos.x,-6.0f,-6.0f),Vec3fa(0.0f,0.0f,12.0f),Vec3fa(0.0f,12.0f,0.0f),size,size));
3642 else if (model == "plane.subdiv" ) scene.addGeometry(RTC_BUILD_QUALITY_MEDIUM,SceneGraph::createSubdivPlane (Vec3fa(pos.x,-6.0f,-6.0f),Vec3fa(0.0f,0.0f,12.0f),Vec3fa(0.0f,12.0f,0.0f),size,size,2));
3643 else if (model == "sphere.triangles_mb") scene.addGeometry(RTC_BUILD_QUALITY_MEDIUM,SceneGraph::createTriangleSphere(pos,2.0f,size)->set_motion_vector(motion_vector));
3644 else if (model == "sphere.quads_mb" ) scene.addGeometry(RTC_BUILD_QUALITY_MEDIUM,SceneGraph::createQuadSphere (pos,2.0f,size)->set_motion_vector(motion_vector));
3645 else if (model == "sphere.grids_mb" ) scene.addGeometry(RTC_BUILD_QUALITY_MEDIUM,SceneGraph::createGridSphere (pos,2.0f,size)->set_motion_vector(motion_vector));
3646 else if (model == "plane.triangles_mb" ) scene.addGeometry(RTC_BUILD_QUALITY_MEDIUM,SceneGraph::createTrianglePlane (Vec3fa(pos.x,-6.0f,-6.0f),Vec3fa(0.0f,0.0f,12.0f),Vec3fa(0.0f,12.0f,0.0f),size,size)->set_motion_vector(motion_vector));
3647 else if (model == "plane.quads_mb" ) scene.addGeometry(RTC_BUILD_QUALITY_MEDIUM,SceneGraph::createQuadPlane (Vec3fa(pos.x,-6.0f,-6.0f),Vec3fa(0.0f,0.0f,12.0f),Vec3fa(0.0f,12.0f,0.0f),size,size)->set_motion_vector(motion_vector));
3648 else if (model == "plane.grids_mb" ) scene.addGeometry(RTC_BUILD_QUALITY_MEDIUM,SceneGraph::createGridPlane (Vec3fa(pos.x,-6.0f,-6.0f),Vec3fa(0.0f,0.0f,12.0f),Vec3fa(0.0f,12.0f,0.0f),size,size)->set_motion_vector(motion_vector));
3649 else throw std::runtime_error("unsupported mode "+model);
3650 bool plane = model.compare(0,5,"plane") == 0;
3651 rtcCommitScene (scene);
3652 AssertNoError(device);
3653
3654 size_t numTests = 0;
3655 size_t numFailures = 0;
3656 for (auto ivariant : state->intersectVariants)
3657 for (size_t i=0; i<size_t(N*state->intensity); i++)
3658 {
3659 for (unsigned int M=1; M<maxStreamSize; M++)
3660 {
3661 __aligned(16) RTCRayHit rays[maxStreamSize];
3662 for (size_t j=0; j<M; j++)
3663 {
3664 if (plane) {
3665 Vec3fa dir = 2.0f*random_Vec3fa() - Vec3fa(1.0f); dir.x = 1.0f;
3666 rays[j] = makeRay(Vec3fa(pos.x-3.0f,0.0f,0.0f),dir);
3667 } else {
3668 Vec3fa org = 2.0f*random_Vec3fa() - Vec3fa(1.0f);
3669 Vec3fa dir = 2.0f*random_Vec3fa() - Vec3fa(1.0f);
3670 rays[j] = makeRay(pos+org,dir);
3671 }
3672 }
3673 IntersectWithMode(imode,ivariant,scene,rays,M);
3674 for (unsigned int j=0; j<M; j++) {
3675 numTests++;
3676 if (ivariant & VARIANT_INTERSECT)
3677 numFailures += rays[j].hit.geomID == RTC_INVALID_GEOMETRY_ID;
3678 else
3679 numFailures += rays[j].ray.tfar != float(neg_inf);
3680 }

Callers

nothing calls this directly

Calls 15

stringOfISAFunction · 0.85
rtcNewDeviceFunction · 0.85
errorHandlerFunction · 0.85
rtcGetDeviceErrorFunction · 0.85
rtcCommitSceneFunction · 0.85
AssertNoErrorFunction · 0.85
makeRayFunction · 0.85
IntersectWithModeFunction · 0.85
addGeometryMethod · 0.80
compareMethod · 0.80
Vec3faClass · 0.50
__alignedClass · 0.50

Tested by

no test coverage detected