X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=libs%2Fcgmath%2Fcgmmisc.inl;fp=libs%2Fcgmath%2Fcgmmisc.inl;h=a3cdfb5da9f640aeb9390b5b27bb90e8802fbb0a;hb=15a4548ff09afb37dd33786cafd50b060a64f840;hp=2ef8a11b3ae9d010eb5a83c78dcfeb541951c6e0;hpb=d6c18f77cb710c5e4069fd12fde0dbed76f3a131;p=retroray diff --git a/libs/cgmath/cgmmisc.inl b/libs/cgmath/cgmmisc.inl index 2ef8a11..a3cdfb5 100644 --- a/libs/cgmath/cgmmisc.inl +++ b/libs/cgmath/cgmmisc.inl @@ -1,5 +1,5 @@ /* gph-cmath - C graphics math library - * Copyright (C) 2018 John Tsiombikas + * Copyright (C) 2018-2023 John Tsiombikas * * This program is free software. Feel free to use, modify, and/or redistribute * it under the terms of the MIT/X11 license. See LICENSE for details. @@ -133,8 +133,9 @@ static CGM_INLINE void cgm_glu_unproject(float winx, float winy, float winz, cgm_vec3 npos, res; float inv_pv[16]; - cgm_mcopy(inv_pv, proj); - cgm_mmul(inv_pv, view); + cgm_mcopy(inv_pv, view); + cgm_mmul(inv_pv, proj); + cgm_minverse(inv_pv); npos.x = (winx - vp[0]) / vp[2]; npos.y = (winy - vp[1]) / vp[4]; @@ -153,8 +154,9 @@ static CGM_INLINE void cgm_pick_ray(cgm_ray *ray, float nx, float ny, cgm_vec3 npos, farpt; float inv_pv[16]; - cgm_mcopy(inv_pv, projmat); - cgm_mmul(inv_pv, viewmat); + cgm_mcopy(inv_pv, viewmat); + cgm_mmul(inv_pv, projmat); + cgm_minverse(inv_pv); cgm_vcons(&npos, nx, ny, 0.0f); cgm_unproject(&ray->origin, &npos, inv_pv);