Index: shader.c
===================================================================
--- shader.c	(revision 478)
+++ shader.c	(revision 479)
@@ -28,6 +28,8 @@
     raydium_shader_shaders[i].id=i;
     }
 
+raydium_shader_active=-1;
+
 if(raydium_shader_support)
     raydium_log("shaders: OK");
 else
@@ -76,8 +78,8 @@
 int ret;
 char *str_vert;
 char *str_frag;
+GLhandleARB curr;
 
-
 if(!raydium_shader_support)
     return -1;
 
@@ -160,10 +162,18 @@
 	return -1;
 	}
 
+    curr=glGetHandleARB(GL_PROGRAM_OBJECT_ARB);
+    glUseProgramObjectARB(raydium_shader_shaders[i].prog);
+    raydium_shader_shaders[i].attrib_tangent=glGetAttribLocationARB(
+					     raydium_shader_shaders[i].prog,
+					     RAYDIUM_SHADER_TANGENT_ATTRIB_NAME);
+    glUseProgramObjectARB(curr);
 
     raydium_shader_shaders[i].state=1;
     strcpy(raydium_shader_shaders[i].name,name);
-    raydium_log("shader: shader %i (%s) loaded (%s,%s)",i,name,file_vert,file_frag);
+    raydium_log("shader: shader %i (%s) loaded (%s,%s%s)",
+		i,name,file_vert,file_frag,
+		((raydium_shader_shaders[i].attrib_tangent==-1)?"":",tangent"));
     return i;
     }
 
@@ -330,6 +340,8 @@
 if(!raydium_shader_support)
     return 0;
 
+raydium_shader_active=shader;
+
 if(shader==-1)
     {
     glUseProgramObjectARB(0);