Skip to content

Commit f48fe28

Browse files
committed
Consolidate setup options in setup.hpp
1 parent a391bc1 commit f48fe28

File tree

2 files changed

+49
-16
lines changed

2 files changed

+49
-16
lines changed

Diff for: glm/detail/setup.hpp

+33
Original file line numberDiff line numberDiff line change
@@ -892,6 +892,39 @@
892892
# endif
893893
#endif//GLM_MESSAGE
894894

895+
///////////////////////////////////////////////////////////////////////////////////
896+
// Clip control
897+
898+
#ifdef GLM_DEPTH_ZERO_TO_ONE // Legacy 0.9.8 development
899+
# error Define GLM_FORECE_DEPTH_ZERO_TO_ONE instead of GLM_DEPTH_ZERO_TO_ONE to use 0 to 1 clip space.
900+
#endif
901+
902+
#define GLM_DEPTH_ZERO_TO_ONE 0x00000001
903+
#define GLM_DEPTH_NEGATIVE_ONE_TO_ONE 0x00000002
904+
905+
#ifdef GLM_FORCE_DEPTH_ZERO_TO_ONE
906+
# define GLM_DEPTH_CLIP_SPACE GLM_DEPTH_ZERO_TO_ONE
907+
#else
908+
# define GLM_DEPTH_CLIP_SPACE GLM_DEPTH_NEGATIVE_ONE_TO_ONE
909+
#endif
910+
911+
///////////////////////////////////////////////////////////////////////////////////
912+
// Coordinate system, define GLM_FORCE_LEFT_HANDED before including GLM
913+
// to use left handed coordinate system by default.
914+
915+
#ifdef GLM_LEFT_HANDED // Legacy 0.9.8 development
916+
# error Define GLM_FORCE_LEFT_HANDED instead of GLM_LEFT_HANDED left handed coordinate system by default.
917+
#endif
918+
919+
#define GLM_LEFT_HANDED 0x00000001 // For DirectX, Metal, Vulkan
920+
#define GLM_RIGHT_HANDED 0x00000002 // For OpenGL, default in GLM
921+
922+
#ifdef GLM_FORCE_LEFT_HANDED
923+
# define GLM_COORDINATE_SYSTEM GLM_LEFT_HANDED
924+
#else
925+
# define GLM_COORDINATE_SYSTEM GLM_RIGHT_HANDED
926+
#endif
927+
895928
///////////////////////////////////////////////////////////////////////////////////
896929
// Qualifiers
897930

Diff for: glm/gtc/matrix_transform.inl

+16-16
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ namespace glm
155155
T zNear, T zFar
156156
)
157157
{
158-
# ifdef GLM_LEFT_HANDED
158+
# if GLM_COORDINATE_SYSTEM == GLM_LEFT_HANDED
159159
return orthoLH(left, right, bottom, top, zNear, zFar);
160160
# else
161161
return orthoRH(left, right, bottom, top, zNear, zFar);
@@ -176,7 +176,7 @@ namespace glm
176176
Result[3][0] = - (right + left) / (right - left);
177177
Result[3][1] = - (top + bottom) / (top - bottom);
178178

179-
# ifdef GLM_DEPTH_ZERO_TO_ONE
179+
# if GLM_DEPTH_CLIP_SPACE == GLM_DEPTH_ZERO_TO_ONE
180180
Result[2][2] = static_cast<T>(1) / (zFar - zNear);
181181
Result[3][2] = - zNear / (zFar - zNear);
182182
# else
@@ -201,7 +201,7 @@ namespace glm
201201
Result[3][0] = - (right + left) / (right - left);
202202
Result[3][1] = - (top + bottom) / (top - bottom);
203203

204-
# ifdef GLM_DEPTH_ZERO_TO_ONE
204+
# if GLM_DEPTH_CLIP_SPACE == GLM_DEPTH_ZERO_TO_ONE
205205
Result[2][2] = - static_cast<T>(1) / (zFar - zNear);
206206
Result[3][2] = - zNear / (zFar - zNear);
207207
# else
@@ -236,7 +236,7 @@ namespace glm
236236
T nearVal, T farVal
237237
)
238238
{
239-
# ifdef GLM_LEFT_HANDED
239+
# if GLM_COORDINATE_SYSTEM == GLM_LEFT_HANDED
240240
return frustumLH(left, right, bottom, top, nearVal, farVal);
241241
# else
242242
return frustumRH(left, right, bottom, top, nearVal, farVal);
@@ -258,7 +258,7 @@ namespace glm
258258
Result[2][1] = (top + bottom) / (top - bottom);
259259
Result[2][3] = static_cast<T>(1);
260260

261-
# ifdef GLM_DEPTH_ZERO_TO_ONE
261+
# if GLM_DEPTH_CLIP_SPACE == GLM_DEPTH_ZERO_TO_ONE
262262
Result[2][2] = farVal / (farVal - nearVal);
263263
Result[3][2] = -(farVal * nearVal) / (farVal - nearVal);
264264
# else
@@ -284,7 +284,7 @@ namespace glm
284284
Result[2][1] = (top + bottom) / (top - bottom);
285285
Result[2][3] = static_cast<T>(-1);
286286

287-
# ifdef GLM_DEPTH_ZERO_TO_ONE
287+
# if GLM_DEPTH_CLIP_SPACE == GLM_DEPTH_ZERO_TO_ONE
288288
Result[2][2] = farVal / (nearVal - farVal);
289289
Result[3][2] = -(farVal * nearVal) / (farVal - nearVal);
290290
# else
@@ -304,7 +304,7 @@ namespace glm
304304
T zFar
305305
)
306306
{
307-
# ifdef GLM_LEFT_HANDED
307+
# if GLM_COORDINATE_SYSTEM == GLM_LEFT_HANDED
308308
return perspectiveLH(fovy, aspect, zNear, zFar);
309309
# else
310310
return perspectiveRH(fovy, aspect, zNear, zFar);
@@ -328,7 +328,7 @@ namespace glm
328328
Result[1][1] = static_cast<T>(1) / (tanHalfFovy);
329329
Result[2][3] = - static_cast<T>(1);
330330

331-
# ifdef GLM_DEPTH_ZERO_TO_ONE
331+
# if GLM_DEPTH_CLIP_SPACE == GLM_DEPTH_ZERO_TO_ONE
332332
Result[2][2] = zFar / (zNear - zFar);
333333
Result[3][2] = -(zFar * zNear) / (zFar - zNear);
334334
# else
@@ -356,7 +356,7 @@ namespace glm
356356
Result[1][1] = static_cast<T>(1) / (tanHalfFovy);
357357
Result[2][3] = static_cast<T>(1);
358358

359-
# ifdef GLM_DEPTH_ZERO_TO_ONE
359+
# if GLM_DEPTH_CLIP_SPACE == GLM_DEPTH_ZERO_TO_ONE
360360
Result[2][2] = zFar / (zFar - zNear);
361361
Result[3][2] = -(zFar * zNear) / (zFar - zNear);
362362
# else
@@ -375,7 +375,7 @@ namespace glm
375375
T zNear, T zFar
376376
)
377377
{
378-
# ifdef GLM_LEFT_HANDED
378+
# if GLM_COORDINATE_SYSTEM == GLM_LEFT_HANDED
379379
return perspectiveFovLH(fov, width, height, zNear, zFar);
380380
# else
381381
return perspectiveFovRH(fov, width, height, zNear, zFar);
@@ -403,7 +403,7 @@ namespace glm
403403
Result[1][1] = h;
404404
Result[2][3] = - static_cast<T>(1);
405405

406-
# ifdef GLM_DEPTH_ZERO_TO_ONE
406+
# if GLM_DEPTH_CLIP_SPACE == GLM_DEPTH_ZERO_TO_ONE
407407
Result[2][2] = zFar / (zNear - zFar);
408408
Result[3][2] = -(zFar * zNear) / (zFar - zNear);
409409
# else
@@ -435,7 +435,7 @@ namespace glm
435435
Result[1][1] = h;
436436
Result[2][3] = static_cast<T>(1);
437437

438-
# ifdef GLM_DEPTH_ZERO_TO_ONE
438+
# if GLM_DEPTH_CLIP_SPACE == GLM_DEPTH_ZERO_TO_ONE
439439
Result[2][2] = zFar / (zFar - zNear);
440440
Result[3][2] = -(zFar * zNear) / (zFar - zNear);
441441
# else
@@ -454,7 +454,7 @@ namespace glm
454454
T zNear
455455
)
456456
{
457-
# ifdef GLM_LEFT_HANDED
457+
# if GLM_COORDINATE_SYSTEM == GLM_LEFT_HANDED
458458
return infinitePerspectiveLH(fovy, aspect, zNear);
459459
# else
460460
return infinitePerspectiveRH(fovy, aspect, zNear);
@@ -557,7 +557,7 @@ namespace glm
557557
tmp = proj * tmp;
558558

559559
tmp /= tmp.w;
560-
# ifdef GLM_DEPTH_ZERO_TO_ONE
560+
# if GLM_DEPTH_CLIP_SPACE == GLM_DEPTH_ZERO_TO_ONE
561561
tmp.x = tmp.x * T(0.5) + T(0.5);
562562
tmp.y = tmp.y * T(0.5) + T(0.5);
563563
# else
@@ -583,7 +583,7 @@ namespace glm
583583
tvec4<T, P> tmp = tvec4<T, P>(win, T(1));
584584
tmp.x = (tmp.x - T(viewport[0])) / T(viewport[2]);
585585
tmp.y = (tmp.y - T(viewport[1])) / T(viewport[3]);
586-
# ifdef GLM_DEPTH_ZERO_TO_ONE
586+
# if GLM_DEPTH_CLIP_SPACE == GLM_DEPTH_ZERO_TO_ONE
587587
tmp.x = tmp.x * T(2) - T(1);
588588
tmp.y = tmp.y * T(2) - T(1);
589589
# else
@@ -628,7 +628,7 @@ namespace glm
628628
tvec3<T, P> const & up
629629
)
630630
{
631-
# ifdef GLM_LEFT_HANDED
631+
# if GLM_COORDINATE_SYSTEM == GLM_LEFT_HANDED
632632
return lookAtLH(eye, center, up);
633633
# else
634634
return lookAtRH(eye, center, up);

0 commit comments

Comments
 (0)