| @@ -37,7 +37,7 @@ LOLUNIT_FIXTURE(CameraTest) | |||||
| void SetUp() | void SetUp() | ||||
| { | { | ||||
| eye = vec3(0.f, 50.f, 50.f); | |||||
| eye = vec3(0.f, 0.f, 50.f); | |||||
| target = vec3(0.f); | target = vec3(0.f); | ||||
| up = vec3(0.f, 1.f, 0.f); | up = vec3(0.f, 1.f, 0.f); | ||||
| m_lookat = mat4::lookat(eye, target, up); | m_lookat = mat4::lookat(eye, target, up); | ||||
| @@ -79,6 +79,9 @@ LOLUNIT_FIXTURE(CameraTest) | |||||
| TEST_VECTOR(eye, tc.GetPosition()); | TEST_VECTOR(eye, tc.GetPosition()); | ||||
| TEST_VECTOR(target, tc.GetTarget()); | TEST_VECTOR(target, tc.GetTarget()); | ||||
| TEST_VECTOR(up, tc.GetUp()); | TEST_VECTOR(up, tc.GetUp()); | ||||
| tc.UseTarget(false); | |||||
| TEST_VECTOR(vec3(0.f, 0.f, 49.f), tc.GetTarget()); | |||||
| } | } | ||||
| #define TEST_MATRIX(m0, m1) \ | #define TEST_MATRIX(m0, m1) \ | ||||
| @@ -105,28 +108,28 @@ LOLUNIT_FIXTURE(CameraTest) | |||||
| LOLUNIT_TEST(SetProjectionTest) | LOLUNIT_TEST(SetProjectionTest) | ||||
| { | { | ||||
| mat4 refmx = mat4::perspective(fov, screen_size, screen_ratio, near, far); | |||||
| tc.SetProjection(refmx); | |||||
| TEST_MATRIX(refmx, tc.GetProjection()); | |||||
| mat4 refmx = mat4::perspective(fov, screen_size, screen_size * screen_ratio, near, far); | |||||
| tc.SetProjection(fov, near, far); | |||||
| tc.SetProjection(fov, near, far, screen_size, screen_ratio); | |||||
| TEST_MATRIX(refmx, tc.GetProjection()); | TEST_MATRIX(refmx, tc.GetProjection()); | ||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(fov, tc.GetFov(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(fov, tc.GetFov(), 1.e-5f); | ||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(screen_size, tc.GetScreenSize(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(screen_size, tc.GetScreenSize(), 1.e-5f); | ||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(screen_ratio, tc.GetScreenRatio(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(screen_ratio, tc.GetScreenRatio(), 1.e-5f); | ||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(near, tc.GetNear(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(near, tc.GetNear(), 1.e-5f); | ||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(far, tc.GetFar(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(far, tc.GetFar(), 1.e-5f); | ||||
| LOLUNIT_ASSERT(is_shifted != tc.IsShifted()); | |||||
| LOLUNIT_ASSERT(is_shifted == tc.IsShifted()); | |||||
| tc.SetProjection(fov, near, far, screen_size, screen_ratio); | |||||
| tc.SetProjection(fov, near, far); | |||||
| TEST_MATRIX(refmx, tc.GetProjection()); | TEST_MATRIX(refmx, tc.GetProjection()); | ||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(fov, tc.GetFov(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(fov, tc.GetFov(), 1.e-5f); | ||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(screen_size, tc.GetScreenSize(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(screen_size, tc.GetScreenSize(), 1.e-5f); | ||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(screen_ratio, tc.GetScreenRatio(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(screen_ratio, tc.GetScreenRatio(), 1.e-5f); | ||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(near, tc.GetNear(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(near, tc.GetNear(), 1.e-5f); | ||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(far, tc.GetFar(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(far, tc.GetFar(), 1.e-5f); | ||||
| LOLUNIT_ASSERT(is_shifted != tc.IsShifted()); | |||||
| LOLUNIT_ASSERT(is_shifted == tc.IsShifted()); | |||||
| tc.SetProjection(refmx); | |||||
| TEST_MATRIX(refmx, tc.GetProjection()); | |||||
| tc.SetFov(fov); | tc.SetFov(fov); | ||||
| TEST_MATRIX(refmx, tc.GetProjection()); | TEST_MATRIX(refmx, tc.GetProjection()); | ||||
| @@ -135,7 +138,7 @@ LOLUNIT_FIXTURE(CameraTest) | |||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(screen_ratio, tc.GetScreenRatio(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(screen_ratio, tc.GetScreenRatio(), 1.e-5f); | ||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(near, tc.GetNear(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(near, tc.GetNear(), 1.e-5f); | ||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(far, tc.GetFar(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(far, tc.GetFar(), 1.e-5f); | ||||
| LOLUNIT_ASSERT(is_shifted != tc.IsShifted()); | |||||
| LOLUNIT_ASSERT(is_shifted == tc.IsShifted()); | |||||
| tc.SetScreenInfos(screen_size); | tc.SetScreenInfos(screen_size); | ||||
| TEST_MATRIX(refmx, tc.GetProjection()); | TEST_MATRIX(refmx, tc.GetProjection()); | ||||
| @@ -144,7 +147,7 @@ LOLUNIT_FIXTURE(CameraTest) | |||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(screen_ratio, tc.GetScreenRatio(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(screen_ratio, tc.GetScreenRatio(), 1.e-5f); | ||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(near, tc.GetNear(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(near, tc.GetNear(), 1.e-5f); | ||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(far, tc.GetFar(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(far, tc.GetFar(), 1.e-5f); | ||||
| LOLUNIT_ASSERT(is_shifted != tc.IsShifted()); | |||||
| LOLUNIT_ASSERT(is_shifted == tc.IsShifted()); | |||||
| tc.SetScreenInfos(screen_size, screen_ratio); | tc.SetScreenInfos(screen_size, screen_ratio); | ||||
| TEST_MATRIX(refmx, tc.GetProjection()); | TEST_MATRIX(refmx, tc.GetProjection()); | ||||
| @@ -153,7 +156,7 @@ LOLUNIT_FIXTURE(CameraTest) | |||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(screen_ratio, tc.GetScreenRatio(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(screen_ratio, tc.GetScreenRatio(), 1.e-5f); | ||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(near, tc.GetNear(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(near, tc.GetNear(), 1.e-5f); | ||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(far, tc.GetFar(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(far, tc.GetFar(), 1.e-5f); | ||||
| LOLUNIT_ASSERT(is_shifted != tc.IsShifted()); | |||||
| LOLUNIT_ASSERT(is_shifted == tc.IsShifted()); | |||||
| tc.SetDrawInfos(far); | tc.SetDrawInfos(far); | ||||
| TEST_MATRIX(refmx, tc.GetProjection()); | TEST_MATRIX(refmx, tc.GetProjection()); | ||||
| @@ -162,7 +165,7 @@ LOLUNIT_FIXTURE(CameraTest) | |||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(screen_ratio, tc.GetScreenRatio(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(screen_ratio, tc.GetScreenRatio(), 1.e-5f); | ||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(near, tc.GetNear(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(near, tc.GetNear(), 1.e-5f); | ||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(far, tc.GetFar(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(far, tc.GetFar(), 1.e-5f); | ||||
| LOLUNIT_ASSERT(is_shifted != tc.IsShifted()); | |||||
| LOLUNIT_ASSERT(is_shifted == tc.IsShifted()); | |||||
| tc.SetDrawInfos(near, far); | tc.SetDrawInfos(near, far); | ||||
| TEST_MATRIX(refmx, tc.GetProjection()); | TEST_MATRIX(refmx, tc.GetProjection()); | ||||
| @@ -171,7 +174,7 @@ LOLUNIT_FIXTURE(CameraTest) | |||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(screen_ratio, tc.GetScreenRatio(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(screen_ratio, tc.GetScreenRatio(), 1.e-5f); | ||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(near, tc.GetNear(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(near, tc.GetNear(), 1.e-5f); | ||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(far, tc.GetFar(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(far, tc.GetFar(), 1.e-5f); | ||||
| LOLUNIT_ASSERT(is_shifted != tc.IsShifted()); | |||||
| LOLUNIT_ASSERT(is_shifted == tc.IsShifted()); | |||||
| is_shifted = true; | is_shifted = true; | ||||
| refmx = mat4::shifted_perspective(fov, screen_size, screen_ratio, far - near); | refmx = mat4::shifted_perspective(fov, screen_size, screen_ratio, far - near); | ||||
| @@ -183,7 +186,7 @@ LOLUNIT_FIXTURE(CameraTest) | |||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(screen_ratio, tc.GetScreenRatio(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(screen_ratio, tc.GetScreenRatio(), 1.e-5f); | ||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(near, tc.GetNear(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(near, tc.GetNear(), 1.e-5f); | ||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(far, tc.GetFar(), 1.e-5f); | LOLUNIT_ASSERT_DOUBLES_EQUAL(far, tc.GetFar(), 1.e-5f); | ||||
| LOLUNIT_ASSERT(is_shifted != tc.IsShifted()); | |||||
| LOLUNIT_ASSERT(is_shifted == tc.IsShifted()); | |||||
| } | } | ||||
| }; | }; | ||||