| 3021 | } |
| 3022 | |
| 3023 | VerifyApplication::TestReturnValue run(VerifyApplication* state, bool silent) |
| 3024 | { |
| 3025 | std::string cfg = state->rtcore + ",isa="+stringOfISA(isa); |
| 3026 | RTCDeviceRef device = rtcNewDevice(cfg.c_str()); |
| 3027 | errorHandler(nullptr,rtcGetDeviceError(device)); |
| 3028 | |
| 3029 | Ref<SceneGraph::Node> sphere = SceneGraph::createQuadSphere(Vec3fa(0.f), 1.f, 32); |
| 3030 | |
| 3031 | sflags.sflags = sflags.sflags | RTC_SCENE_FLAG_FILTER_FUNCTION_IN_ARGUMENTS; |
| 3032 | |
| 3033 | VerifyScene bl_scene(device, sflags); |
| 3034 | bl_scene.addGeometry(quality, sphere); |
| 3035 | rtcCommitScene(bl_scene); |
| 3036 | AssertNoError(device); |
| 3037 | |
| 3038 | bool passed = true; |
| 3039 | { |
| 3040 | std::vector<AffineSpace3fa> transforms; |
| 3041 | for (int i = 1; i < 16; ++i) { |
| 3042 | transforms.push_back(AffineSpace3fa::translate(Vec3fa(i * 5.f, 0.f, 0.f))); |
| 3043 | } |
| 3044 | |
| 3045 | RTCScene tl_scene = rtcNewScene(device); |
| 3046 | RTCGeometry instance_array = rtcNewGeometry (device, RTC_GEOMETRY_TYPE_INSTANCE_ARRAY); |
| 3047 | rtcSetSharedGeometryBuffer(instance_array, RTC_BUFFER_TYPE_TRANSFORM, 0, RTC_FORMAT_FLOAT4X4_COLUMN_MAJOR, (void*)transforms.data(), 0, sizeof(AffineSpace3fa), transforms.size()); |
| 3048 | rtcSetGeometryInstancedScene(instance_array, bl_scene); |
| 3049 | rtcAttachGeometry(tl_scene,instance_array); |
| 3050 | rtcReleaseGeometry(instance_array); |
| 3051 | rtcCommitGeometry(instance_array); |
| 3052 | rtcCommitScene(tl_scene); |
| 3053 | AssertNoError(device); |
| 3054 | |
| 3055 | passed &= doIntersectionTests(tl_scene); |
| 3056 | assert(passed); |
| 3057 | rtcReleaseScene(tl_scene); |
| 3058 | } |
| 3059 | |
| 3060 | { |
| 3061 | std::vector<AffineSpace3f> transforms; |
| 3062 | for (int i = 1; i < 16; ++i) { |
| 3063 | transforms.push_back(AffineSpace3f::translate(Vec3f(i * 5.f, 0.f, 0.f))); |
| 3064 | } |
| 3065 | |
| 3066 | RTCScene tl_scene = rtcNewScene(device); |
| 3067 | RTCGeometry instance_array = rtcNewGeometry (device, RTC_GEOMETRY_TYPE_INSTANCE_ARRAY); |
| 3068 | rtcSetSharedGeometryBuffer(instance_array, RTC_BUFFER_TYPE_TRANSFORM, 0, RTC_FORMAT_FLOAT3X4_COLUMN_MAJOR, (void*)transforms.data(), 0, sizeof(AffineSpace3f), transforms.size()); |
| 3069 | rtcSetGeometryInstancedScene(instance_array, bl_scene); |
| 3070 | rtcAttachGeometry(tl_scene,instance_array); |
| 3071 | rtcReleaseGeometry(instance_array); |
| 3072 | rtcCommitGeometry(instance_array); |
| 3073 | rtcCommitScene(tl_scene); |
| 3074 | AssertNoError(device); |
| 3075 | |
| 3076 | passed &= doIntersectionTests(tl_scene); |
| 3077 | assert(passed); |
| 3078 | rtcReleaseScene(tl_scene); |
| 3079 | } |
| 3080 |
nothing calls this directly
no test coverage detected