[Mesa-dev] [PATCH] mesa: loosen small matrix determinant check
Patrick Baggett
baggett.patrick at gmail.com
Mon Jul 30 06:39:52 PDT 2012
On Mon, Jul 30, 2012 at 4:31 AM, Pekka Paalanen <ppaalanen at gmail.com> wrote:
> On Tue, 24 Jul 2012 11:31:59 -0600
> Brian Paul <brianp at vmware.com> wrote:
>
> > When computing a matrix inverse, if the determinant is too small we
> could hit
> > a divide by zero. There's a check to prevent this (we basically give up
> on
> > computing the inverse and return the identity matrix.) This patches
> loosens
> > this test to fix a lighting bug reported by Lars Henning Wendt.
> >
> > NOTE: This is a candidate for the 8.0 branch.
> > ---
> > src/mesa/math/m_matrix.c | 2 +-
> > 1 files changed, 1 insertions(+), 1 deletions(-)
> >
> > diff --git a/src/mesa/math/m_matrix.c b/src/mesa/math/m_matrix.c
> > index 02aedba..ef377ee 100644
> > --- a/src/mesa/math/m_matrix.c
> > +++ b/src/mesa/math/m_matrix.c
> > @@ -513,7 +513,7 @@ static GLboolean invert_matrix_3d_general( GLmatrix
> *mat )
> >
> > det = pos + neg;
> >
> > - if (det*det < 1e-25)
> > + if (det < 1e-25)
> > return GL_FALSE;
> >
> > det = 1.0F / det;
>
> Hi,
>
> just a fly-by question; doesn't that break if determinant is negative?
> I.e. reflection transformations.
>
> Yeah, I think you need a fabsf() there.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20120730/e436ad3c/attachment.html>
More information about the mesa-dev
mailing list