diff --git a/Engine/source/gfx/gl/gfxGLShader.cpp b/Engine/source/gfx/gl/gfxGLShader.cpp index 6d641aa52..b30f76837 100644 --- a/Engine/source/gfx/gl/gfxGLShader.cpp +++ b/Engine/source/gfx/gl/gfxGLShader.cpp @@ -455,14 +455,6 @@ bool GFXGLShader::_init() glBindAttribLocation(mProgram, Torque::GL_VertexAttrib_Tangent, "vTangent"); glBindAttribLocation(mProgram, Torque::GL_VertexAttrib_TangentW, "vTangentW"); glBindAttribLocation(mProgram, Torque::GL_VertexAttrib_Binormal, "vBinormal"); - glBindAttribLocation(mProgram, Torque::GL_VertexAttrib_BlendIndex0, "vBlendIndex0"); - glBindAttribLocation(mProgram, Torque::GL_VertexAttrib_BlendIndex1, "vBlendIndex1"); - glBindAttribLocation(mProgram, Torque::GL_VertexAttrib_BlendIndex2, "vBlendIndex2"); - glBindAttribLocation(mProgram, Torque::GL_VertexAttrib_BlendIndex3, "vBlendIndex3"); - glBindAttribLocation(mProgram, Torque::GL_VertexAttrib_BlendWeight0, "vBlendWeight0"); - glBindAttribLocation(mProgram, Torque::GL_VertexAttrib_BlendWeight1, "vBlendWeight1"); - glBindAttribLocation(mProgram, Torque::GL_VertexAttrib_BlendWeight2, "vBlendWeight2"); - glBindAttribLocation(mProgram, Torque::GL_VertexAttrib_BlendWeight3, "vBlendWeight3"); glBindAttribLocation(mProgram, Torque::GL_VertexAttrib_TexCoord0, "vTexCoord0"); glBindAttribLocation(mProgram, Torque::GL_VertexAttrib_TexCoord1, "vTexCoord1"); glBindAttribLocation(mProgram, Torque::GL_VertexAttrib_TexCoord2, "vTexCoord2"); diff --git a/Engine/source/gfx/gl/gfxGLVertexAttribLocation.h b/Engine/source/gfx/gl/gfxGLVertexAttribLocation.h index aced0abe9..7eee7120d 100644 --- a/Engine/source/gfx/gl/gfxGLVertexAttribLocation.h +++ b/Engine/source/gfx/gl/gfxGLVertexAttribLocation.h @@ -11,14 +11,6 @@ namespace Torque GL_VertexAttrib_Tangent, GL_VertexAttrib_TangentW, GL_VertexAttrib_Binormal, - GL_VertexAttrib_BlendIndex0, - GL_VertexAttrib_BlendIndex1, - GL_VertexAttrib_BlendIndex2, - GL_VertexAttrib_BlendIndex3, - GL_VertexAttrib_BlendWeight0, - GL_VertexAttrib_BlendWeight1, - GL_VertexAttrib_BlendWeight2, - GL_VertexAttrib_BlendWeight3, GL_VertexAttrib_TexCoord0, GL_VertexAttrib_TexCoord1, GL_VertexAttrib_TexCoord2, @@ -29,8 +21,11 @@ namespace Torque GL_VertexAttrib_TexCoord7, GL_VertexAttrib_TexCoord8, GL_VertexAttrib_TexCoord9, + GL_VertexAttrib_COUNT, + GL_VertexAttrib_LAST = GL_VertexAttrib_TexCoord9, - GL_VertexAttrib_COUNT + GL_VertexAttrib_BlendWeight0 = GL_VertexAttrib_TexCoord6, + GL_VertexAttrib_BlendIndex0 = GL_VertexAttrib_TexCoord2, }; } diff --git a/Engine/source/gfx/gl/gfxGLVertexDecl.cpp b/Engine/source/gfx/gl/gfxGLVertexDecl.cpp index 2c19f756b..64195164e 100644 --- a/Engine/source/gfx/gl/gfxGLVertexDecl.cpp +++ b/Engine/source/gfx/gl/gfxGLVertexDecl.cpp @@ -105,6 +105,8 @@ void GFXGLVertexDecl::_initVerticesFormat(U32 stream) if(element.getStreamIndex() != stream) continue; + AssertFatal(!mFormat->hasBlendIndices() || !element.isSemantic(GFXSemantic::TEXCOORD) || (mFormat->hasBlendIndices() && element.isSemantic(GFXSemantic::TEXCOORD) && element.getSemanticIndex() < 2), "skinning with more than 2 used texcoords!"); + vertexSize += element.getSizeInBytes(); } diff --git a/Engine/source/shaderGen/GLSL/shaderCompGLSL.cpp b/Engine/source/shaderGen/GLSL/shaderCompGLSL.cpp index a6e55271b..66d746ebe 100644 --- a/Engine/source/shaderGen/GLSL/shaderCompGLSL.cpp +++ b/Engine/source/shaderGen/GLSL/shaderCompGLSL.cpp @@ -26,6 +26,7 @@ #include "shaderGen/shaderComp.h" #include "shaderGen/langElement.h" #include "gfx/gfxDevice.h" +#include "gfx/gl/gfxGLVertexAttribLocation.h" Var * AppVertConnectorGLSL::getElement( RegisterType type, @@ -107,7 +108,8 @@ Var * AppVertConnectorGLSL::getElement( RegisterType type, newVar->constNum = mCurBlendIndicesElem; mElementList.push_back(newVar); char out[32]; - dSprintf((char*)out, sizeof(out), "vBlendIndex%d", mCurBlendIndicesElem); + const U32 blendIndicesOffset = Torque::GL_VertexAttrib_BlendIndex0 - Torque::GL_VertexAttrib_TexCoord0; + dSprintf((char*)out, sizeof(out), "vTexCoord%d", blendIndicesOffset + mCurBlendIndicesElem); mCurBlendIndicesElem += 1; newVar->setConnectName(out); return newVar; @@ -119,7 +121,8 @@ Var * AppVertConnectorGLSL::getElement( RegisterType type, newVar->constNum = mCurBlendWeightsElem; mElementList.push_back(newVar); char out[32]; - dSprintf((char*)out, sizeof(out), "vBlendWeight%d", mCurBlendWeightsElem); + const U32 blendWeightsOffset = Torque::GL_VertexAttrib_BlendWeight0 - Torque::GL_VertexAttrib_TexCoord0; + dSprintf((char*)out, sizeof(out), "vTexCoord%d", blendWeightsOffset + mCurBlendWeightsElem); mCurBlendWeightsElem += 1; newVar->setConnectName(out); return newVar;