--- /dev/null
+varying vec3 vpos, vdir, normal;
+#ifdef USE_SHADOWMAP
+varying vec4 shadow_tc;
+#endif
+#ifdef USE_CUBEMAP
+varying vec3 wdir;
+uniform mat4 envmap_matrix;
+#endif
+
+void main()
+{
+ gl_Position = ftransform();
+
+ vpos = (gl_ModelViewMatrix * gl_Vertex).xyz;
+ normal = gl_NormalMatrix * gl_Normal;
+ vdir = -vpos;
+#ifdef USE_CUBEMAP
+ wdir = (envmap_matrix * vec4(vdir, 1.0)).xyz; // bring back to world space
+#endif
+#ifdef USE_TEXMAP
+ gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+#endif
+
+#ifdef USE_SHADOWMAP
+ mat4 offmat = mat4(0.5, 0.0, 0.0, 0.0,
+ 0.0, 0.5, 0.0, 0.0,
+ 0.0, 0.0, 0.5, 0.0,
+ 0.5, 0.5, 0.5, 1.0);
+ mat4 tex_matrix = offmat * gl_TextureMatrix[1];
+
+ shadow_tc = tex_matrix * vec4(vpos, 1.0);
+#endif
+}