| 2395 | } |
| 2396 | |
| 2397 | VerifyApplication::TestReturnValue run(VerifyApplication* state, bool silent) |
| 2398 | { |
| 2399 | std::string cfg = state->rtcore + ",isa="+stringOfISA(isa); |
| 2400 | RTCDeviceRef device = rtcNewDevice(cfg.c_str()); |
| 2401 | errorHandler(nullptr,rtcGetDeviceError(device)); |
| 2402 | |
| 2403 | size_t M = num_interpolation_hair_vertices*N+16; // pads the arrays with some valid data |
| 2404 | |
| 2405 | RTCGeometry geom = rtcNewGeometry(device, RTC_GEOMETRY_TYPE_ROUND_BEZIER_CURVE); |
| 2406 | AssertNoError(device); |
| 2407 | rtcSetGeometryVertexAttributeCount(geom,2); |
| 2408 | |
| 2409 | rtcSetSharedGeometryBuffer(geom, RTC_BUFFER_TYPE_INDEX, 0, RTC_FORMAT_UINT, interpolation_hair_indices, 0, sizeof(unsigned int), num_interpolation_hairs); |
| 2410 | AssertNoError(device); |
| 2411 | |
| 2412 | std::vector<float> vertices0(M); |
| 2413 | for (size_t i=0; i<M; i++) vertices0[i] = random_float(); |
| 2414 | rtcSetSharedGeometryBuffer(geom, RTC_BUFFER_TYPE_VERTEX, 0, RTC_FORMAT_FLOAT4, vertices0.data(), 0, N*sizeof(float), num_interpolation_hair_vertices); |
| 2415 | AssertNoError(device); |
| 2416 | |
| 2417 | /*std::vector<float> vertices1(M); |
| 2418 | for (size_t i=0; i<M; i++) vertices1[i] = random_float(); |
| 2419 | rtcSetSharedGeometryBuffer(geom, RTC_BUFFER_TYPE_VERTEX, 1, RTC_FORMAT_FLOAT4, vertices1.data(), 0, N*sizeof(float), num_interpolation_hair_vertices); |
| 2420 | AssertNoError(device);*/ |
| 2421 | |
| 2422 | std::vector<float> user_vertices0(M); |
| 2423 | for (size_t i=0; i<M; i++) user_vertices0[i] = random_float(); |
| 2424 | rtcSetSharedGeometryBuffer(geom, RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE, 0, RTCFormat(RTC_FORMAT_FLOAT+N), user_vertices0.data(), 0, N*sizeof(float), num_interpolation_hair_vertices); |
| 2425 | AssertNoError(device); |
| 2426 | |
| 2427 | std::vector<float> user_vertices1(M); |
| 2428 | for (size_t i=0; i<M; i++) user_vertices1[i] = random_float(); |
| 2429 | rtcSetSharedGeometryBuffer(geom, RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE, 1, RTCFormat(RTC_FORMAT_FLOAT+N), user_vertices1.data(), 0, N*sizeof(float), num_interpolation_hair_vertices); |
| 2430 | AssertNoError(device); |
| 2431 | |
| 2432 | rtcDisableGeometry(geom); |
| 2433 | AssertNoError(device); |
| 2434 | rtcCommitGeometry(geom); |
| 2435 | AssertNoError(device); |
| 2436 | |
| 2437 | bool passed = true; |
| 2438 | if (N >= 4) { |
| 2439 | passed &= checkHairInterpolation(geom,RTC_BUFFER_TYPE_VERTEX,0,vertices0.data(),4,N); |
| 2440 | //passed &= checkHairInterpolation(geom,RTC_BUFFER_TYPE_VERTEX,1,vertices1.data(),4,N); |
| 2441 | } |
| 2442 | passed &= checkHairInterpolation(geom,RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE,0,user_vertices0.data(),N,N); |
| 2443 | passed &= checkHairInterpolation(geom,RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE,1,user_vertices1.data(),N,N); |
| 2444 | |
| 2445 | passed &= checkHairInterpolation(geom,RTC_BUFFER_TYPE_VERTEX,0,vertices0.data(),1,N); |
| 2446 | //passed &= checkHairInterpolation(geom,RTC_BUFFER_TYPE_VERTEX,1,vertices1.data(),1,N); |
| 2447 | passed &= checkHairInterpolation(geom,RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE,0,user_vertices0.data(),1,N); |
| 2448 | passed &= checkHairInterpolation(geom,RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE,1,user_vertices1.data(),1,N); |
| 2449 | |
| 2450 | rtcReleaseGeometry(geom); |
| 2451 | AssertNoError(device); |
| 2452 | |
| 2453 | return (VerifyApplication::TestReturnValue) passed; |
| 2454 | } |
nothing calls this directly
no test coverage detected