Index: init.c
===================================================================
--- init.c	(revision 737)
+++ init.c	(revision 738)
@@ -221,7 +221,7 @@
     aniso_user=atof(str);
 else
     aniso_user=999;
-raydium_texture_filter_aniso_levels=raydium_trigo_min(aniso_user,aniso_hard);
+raydium_texture_filter_aniso_levels=raydium_math_min(aniso_user,aniso_hard);
 raydium_log("OpenGL anisotropy max level is %.2f",raydium_texture_filter_aniso_levels);
 
 if(raydium_init_cli_option("compress",NULL))
@@ -500,6 +500,7 @@
         {
                 if(flag_paths==1)
                 {
+                    //TODO Allow to specify base folder.
                                 raydium_path_ext("./data/textures/","tga");
                                 raydium_path_ext("./data/fonts/","tga");
                                 raydium_path_ext("./data/shaders/","vert");
atrix2[5]=up[1];
+	matrix2[9]=up[2];
+	matrix2[13]=0.0;
+
+	matrix2[2]=-forward[0];
+	matrix2[6]=-forward[1];
+	matrix2[10]=-forward[2];
+	matrix2[14]=0.0;
+
+	matrix2[3]=matrix2[7]=matrix2[11]=0.0;
+	matrix2[15]=1.0;
+
+	raydium_math_multiply_matrix4(matrix, matrix2,resultMatrix);
+	raydium_math_translate_matrix4_3f(-eyePosition3D[0], -eyePosition3D[1], -eyePosition3D[2],resultMatrix);
+
+	memcpy(matrix, resultMatrix, 16*sizeof(GLfloat));
+}
+
+void raydium_math_frustum_matrix4 (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat znear, GLfloat zfar,GLfloat *matrix){
+	GLfloat matrix2[16], temp, temp2, temp3, temp4, resultMatrix[16];
+	temp=2.0*znear;
+	temp2=right-left;
+	temp3=top-bottom;
+	temp4=zfar-znear;
+	matrix2[0]=temp/temp2;
+	matrix2[1]=0.0;
+	matrix2[2]=0.0;
+	matrix2[3]=0.0;
+	matrix2[4]=0.0;
+	matrix2[5]=temp/temp3;
+	matrix2[6]=0.0;
+	matrix2[7]=0.0;
+	matrix2[8]=(right+left)/temp2;
+	matrix2[9]=(top+bottom)/temp3;
+	matrix2[10]=(-zfar-znear)/temp4;
+	matrix2[11]=-1.0;
+	matrix2[12]=0.0;
+	matrix2[13]=0.0;
+	matrix2[14]=(-temp*zfar)/temp4;
+	matrix2[15]=0.0;
+	raydium_math_multiply_matrix4(matrix, matrix2,resultMatrix);
+	memcpy(matrix, resultMatrix, 16*sizeof(GLfloat));
+}
+
+void raydium_math_perspective_matrix4(GLfloat fovyInDegrees, GLfloat aspectRatio, GLfloat znear, GLfloat zfar,GLfloat *matrix){
+	GLfloat ymax, xmax;
+	ymax=znear*tanf(fovyInDegrees*M_PI/360.0);
+	xmax=ymax*aspectRatio;
+	raydium_math_frustum_matrix4(-xmax, xmax, -ymax, ymax, znear, zfar, matrix);
+}