アップ。

こんな感じになりました。

#include 

using namespace gslib::glsl_math;

vec2 a( 1, 2 );
vec2 b( 2, 3 );
vec2 c = a + b; // = ( 3, 5 )
vec2 d = a * b; // = ( 2, 6 )

//  column major ( same as GLSL )
mat2 m( 1, 3,   // 1 2
        2, 4 ); // 3 4

vec2 e = m * a; // = ( 7, 10 ) right hand system ( OpenGL )
vec2 f = a * m; // = ( 5, 11 ) left hand system ( DirectX )

vec4 v4( 1, 2, 3, 4 );
vec2& v4_xy = v4.xy(); // = ( 1, 2 ) simplified swizzle function. return reference
vec2& v4_zw = v4.zw(); // swizzle function is only continuous combination. xy, yz, zw are ok! but xz yx xx don't exist.

//  rotate 90 around z axis
quat q( vec3( 0, 0, 1 ), radians( 90 ) );
quat x( 1, 0, 0, 0 );
quat y = q * x * conj( q ); // = ( 0, 1, 0, 0 )

https://sourceforge.jp/projects/gslib/

から .zip を落とせます。
.zip の中にいろいろありますけど、それは大人の事情です。実質的には、一ファイルしかないんで、

http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/gslib/GSLib/Code/gslib/glsl_math/glsl_math.h

を見れば、全部見れます。ヘッダだけのお気軽なのはいいんですが、「実装速度最優先」が今回の最大目標だったので、テンプレート使いまくりにつき、コンパイル速度が遅かったりするかもしれません。実行速度は目も当てられないぐらい、遅いと思います。基本的に boost をインストールしないと使えませんが、使っているのは BOOST_ASSERT だけなので、assert に置きかえれば、それだけで boost も要らなくなります。

[ GLSL 仕様内実装済み機能 ]

  • vec2
  • vec3
  • vec4
  • mat2
  • mat3
  • mat4
  • 各クラスのコンストラクタと、4則演算子
  • dot
  • cross
  • length
  • distance
  • normalize
  • 制限された swizzle 演算子っぽい cast 関数
  • radians ( float のみ )
  • degrees ( float のみ )

[ 独自機能(実装済み)]

nv_math や gems を参考にしました。

  • quat と4則演算子
  • conj
  • inverse
  • transpose
  • det
  • lerp
  • slerp
  • spline

[ GLSL 仕様内未実装機能 ]

とりあえず、後回し

  • ivecX
  • bvecX
  • ivec, bvec 関連関数の全て
  • GLSLangSpec.Full.1.10.59.pdf の 8.3 Common Functions 全て
  • GLSLangSpec.Full.1.10.59.pdf の 8.6 Vector Relat ional Functions 全て
  • GLSLangSpec.Full.1.10.59.pdf の 8.5 Mat rix Functions 全て
  • radians ( float 以外 )
  • degrees ( float 以外 )
  • reflect
  • refract