| 'use strict'; |
| |
| // import * as XrConstants from 'resources/webxr_test_constants.js' |
| // import * as XrAsserts from 'resources/webxr_test_asserts.js' |
| |
| // TODO: Expand the WebXrTestApi to specify a viewGeometry that this can validate |
| // as well. |
| const depthViewGeometryTestGenerator = (matchDepthView) => { |
| return (session, controller, t, sessionObjects) => { |
| |
| return session.requestReferenceSpace('viewer').then((viewerSpace) => new Promise((resolve) => { |
| |
| const isCpuOptimized = session.depthUsage === 'cpu-optimized'; |
| const glBinding = new XRWebGLBinding(session, sessionObjects.gl); |
| |
| const rafCb = function(time, frame) { |
| const pose = frame.getViewerPose(viewerSpace); |
| for(const view of pose.views) { |
| const depthInformation = isCpuOptimized ? frame.getDepthInformation(view) |
| : glBinding.getDepthInformation(view); |
| if (matchDepthView) { |
| t.step(()=> { |
| assert_matrix_approx_equals(view.projectionMatrix, depthInformation.projectionMatrix); |
| assert_transform_approx_equals(view.transform, depthInformation.transform); |
| }); |
| } else { |
| t.step(() => { |
| assert_matrix_significantly_not_equals(view.projectionMatrix, depthInformation.projectionMatrix); |
| assert_transform_significantly_not_equals(view.transform, depthInformation.transform); |
| }); |
| } |
| } |
| resolve(); |
| } |
| |
| session.requestAnimationFrame(rafCb); |
| })); // Promise |
| }; // Test Func |
| }; // Generator Func |