Index: Horde3D/Binaries/Content/shaders/model.shader =================================================================== --- Horde3D/Binaries/Content/shaders/model.shader (revision 193) +++ Horde3D/Binaries/Content/shaders/model.shader (working copy) @@ -77,6 +77,7 @@ #endif uniform vec3 viewer; +attribute vec3 vpos; attribute vec2 texCoords0; attribute vec3 normal; @@ -128,9 +129,9 @@ // Calculate world space position #ifdef _F01_Skinning - pos = calcWorldPos( skinPos( gl_Vertex, skinningMat ) ); + pos = calcWorldPos( skinPos( vec4( vpos, 1.0 ), skinningMat ) ); #else - pos = calcWorldPos( gl_Vertex ); + pos = calcWorldPos( vec4( vpos, 1.0 ) ); #endif vsPos = calcViewPos( pos ); @@ -231,6 +232,8 @@ uniform vec4 lightPos; varying float dist; +attribute vec3 vpos; + #ifdef _F05_AlphaTest attribute vec2 texCoords0; varying vec2 texCoords; @@ -239,9 +242,9 @@ void main( void ) { #ifdef _F01_Skinning - vec4 pos = calcWorldPos( skinPos( gl_Vertex ) ); + vec4 pos = calcWorldPos( skinPos( vec4( vpos, 1.0 ) ) ); #else - vec4 pos = calcWorldPos( gl_Vertex ); + vec4 pos = calcWorldPos( vec4( vpos, 1.0 ) ); #endif #ifdef _F05_AlphaTest Index: Horde3D/Source/Horde3DEngine/egRenderer.cpp =================================================================== --- Horde3D/Source/Horde3DEngine/egRenderer.cpp (revision 193) +++ Horde3D/Source/Horde3DEngine/egRenderer.cpp (working copy) @@ -28,7 +28,7 @@ const char *vsDefColor = "uniform mat4 worldMat;\n" "void main() {\n" - " gl_Position = gl_ModelViewProjectionMatrix * worldMat * gl_Vertex;\n" + " gl_Position = gl_ModelViewProjectionMatrix * worldMat * vpos;\n" "}\n"; const char *fsDefColor = @@ -110,7 +110,7 @@ // Create vertex layouts _vlModel = createVertexLayout( 8 ); - setVertexLayoutElem( _vlModel, 0, "gl_Vertex", 0, 3, 0 ); + setVertexLayoutElem( _vlModel, 0, "vpos", 0, 3, 0 ); setVertexLayoutElem( _vlModel, 1, "tangent", 1, 3, 0 ); setVertexLayoutElem( _vlModel, 2, "bitangent", 2, 3, 0 ); setVertexLayoutElem( _vlModel, 3, "normal", 3, 3, 0 ); @@ -120,7 +120,7 @@ setVertexLayoutElem( _vlModel, 7, "texCoords1", 4, 2, 40 ); _vlParticle = createVertexLayout( 4 ); - setVertexLayoutElem( _vlParticle, 0, "gl_Vertex", 0, 3, 0 ); + setVertexLayoutElem( _vlParticle, 0, "vpos", 0, 3, 0 ); setVertexLayoutElem( _vlParticle, 1, "parIdx", 0, 1, 24 ); setVertexLayoutElem( _vlParticle, 2, "parCornerIdx", 0, 1, 20 ); setVertexLayoutElem( _vlParticle, 3, "texCoords0", 0, 2, 12 ); Index: Horde3D/Source/Horde3DEngine/egRendererBase.cpp =================================================================== --- Horde3D/Source/Horde3DEngine/egRendererBase.cpp (revision 193) +++ Horde3D/Source/Horde3DEngine/egRendererBase.cpp (working copy) @@ -536,9 +536,9 @@ { if( vl.elems[k].semanticName == name ) { - if( vl.elems[k].semanticName == "gl_Vertex" ) - shdData.elemAttribIndices[k] = 0; - else + //if( vl.elems[k].semanticName == "gl_Vertex" ) + // shdData.elemAttribIndices[k] = 0; + //else shdData.elemAttribIndices[k] = glGetAttribLocation( shdObj, name ); found = true; break; @@ -983,7 +983,7 @@ // Find data for the currently bound shader ASSERT( _curShaderObj != 0 ); std::map< uint32, RBVertexLayout::ShaderData >::iterator itr = vl.shaderData.find( _curShaderObj ); - ASSERT( itr != vl.shaderData.end() ); + //ASSERT( itr != vl.shaderData.end() ); if( itr == vl.shaderData.end() ) return; // Set vertex attrib pointers