$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: [boost] Is there any need for a math library doing vectors and matrices operations?
From: Christophe Riccio (g.truc.creation_at_[hidden])
Date: 2008-11-03 12:26:27
Hi,
For a 3D programmers using vectors and matrices is as common as using
integers. Actually, it's probably even more common!
For this reason, every 3D programmer relies on a math library but as they
usually don't need much
they implement their own basic math library and
that fine. However, most of the time a single graphics software could uses
several math libraries because it uses several external libraries that each
of them use there own math library.
It involves:
- A lot of unnecessary copy and conversion of data.
- Different meanings for overloaded operators.
- Unspecified conventions: row major matrix, column major matrix, left or
right handed?
- Use of poor math libraries.
- Several libraries to understand, to learn: a waste of time for trivial and
common need!
GPU programmers get some really convenient languages to do graphics on GPU.
Cg:
http://developer.download.nvidia.com/cg/Cg_2.0/2.1.0012/Cg-2.1_October2008_LanguageSpecification.pdf
HLSL: http://msdn.microsoft.com/en-us/library/bb509561(VS.85).aspx<http://msdn.microsoft.com/en-us/library/bb509561%28VS.85%29.aspx>
GLSL:
http://www.opengl.org/registry/doc/GLSLangSpec.Full.1.30.08.withchanges.pdf
These languages are the result of a lot of experimented developers in 3D
graphics and are basically the same. I decided to build a C++ math library
based on all the rules that those developers agreed to be good rules and it
result in GLM: http://glm.g-truc.net.
However, those GPU languages provide good features but limited features: No
quaternion, no transformation, lot of limitation on types and rules that
couldn't apply directly in C++ (swizzle operators). GLM has limitations
because it results of too few developers to think about it. I would like to
get more feedback and makes it even more useful. I would lie to making it
better find more agreement so that one day it could be ready to be
integrated to Boost and hopefully to C++ standard.
I'm afraid that such kind of library already have been submitted and
rejected, I know it need more work but I believe on my approach and I'm not
afraid to change the library so that everyone agree it's good.
Thanks,
Christophe Riccio