 												float(firstSShort(packedVertex[1])));
 			vertexCoord.w=1;
     		fragTexCoord 			= vec2(float(firstSShort(packedVertex[2]))/4096.,float(secondSShort(packedVertex[2]))/4096.);
-    		gl_Position 			= matrix * vertexCoord;
     		ivec2 fetchPos			= ivec2(gl_VertexID%1024,gl_VertexID/1024);
     		gl_Position.xy			= texelFetch(xyBuffer,fetchPos,0).xy;
+    		gl_Position.z			= texelFetch(zBuffer,fetchPos,0).x;
+    		gl_Position.w			= texelFetch(wBuffer,fetchPos,0).x;
+    		fragTexCoord			= texelFetch(uvBuffer,fetchPos,0).xy;
+    		flatTextureID			= texelFetch(texIDBuffer,fetchPos,0).x;
 			 screenLoc				= (((gl_Position.xy/gl_Position.w)+1)/2);
 			
     		float fragNormalX 			= float(SByte(packedVertex[1],2u))/128;

uniform uint 			renderListPageTable[172];
uniform usamplerBuffer 	rootBuffer; 	//Global memory, as a set of uint vec4s.
uniform mat4 			cameraMatrix;
uniform sampler2D		objectBuffer;
uniform sampler2D		xyBuffer;
uniform uint			logicalVec4Offset;

layout (location = 0) in float dummy;

			mat4 matrixNoCam 	= mat4(uintBitsToFloat(texelFetch(rootBuffer,matrixOffset)),uintBitsToFloat(texelFetch(rootBuffer,matrixOffset+1)),
										uintBitsToFloat(texelFetch(rootBuffer,matrixOffset+2)),uintBitsToFloat(texelFetch(rootBuffer,matrixOffset+3)));
			ivec2 mOff			= ivec2((objectIndex%256)*4,127-(objectIndex/256));
			// objectDef[3] unused.
			uint 	skipCameraMatrix= UNibble(renderMode,PACKED_DATA_RENDER_MODE);
			uvec4 	packedVertex 	= texelFetch(rootBuffer,vertexOffset+intraObjectVertexIndex);
