mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-13 15:44:36 +00:00
Add a workaround for the 16 vertex attribute limit on nvidia gl
This commit is contained in:
parent
6283a6b9da
commit
ace01a313c
4 changed files with 11 additions and 19 deletions
|
|
@ -455,14 +455,6 @@ bool GFXGLShader::_init()
|
||||||
glBindAttribLocation(mProgram, Torque::GL_VertexAttrib_Tangent, "vTangent");
|
glBindAttribLocation(mProgram, Torque::GL_VertexAttrib_Tangent, "vTangent");
|
||||||
glBindAttribLocation(mProgram, Torque::GL_VertexAttrib_TangentW, "vTangentW");
|
glBindAttribLocation(mProgram, Torque::GL_VertexAttrib_TangentW, "vTangentW");
|
||||||
glBindAttribLocation(mProgram, Torque::GL_VertexAttrib_Binormal, "vBinormal");
|
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_TexCoord0, "vTexCoord0");
|
||||||
glBindAttribLocation(mProgram, Torque::GL_VertexAttrib_TexCoord1, "vTexCoord1");
|
glBindAttribLocation(mProgram, Torque::GL_VertexAttrib_TexCoord1, "vTexCoord1");
|
||||||
glBindAttribLocation(mProgram, Torque::GL_VertexAttrib_TexCoord2, "vTexCoord2");
|
glBindAttribLocation(mProgram, Torque::GL_VertexAttrib_TexCoord2, "vTexCoord2");
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,6 @@ namespace Torque
|
||||||
GL_VertexAttrib_Tangent,
|
GL_VertexAttrib_Tangent,
|
||||||
GL_VertexAttrib_TangentW,
|
GL_VertexAttrib_TangentW,
|
||||||
GL_VertexAttrib_Binormal,
|
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_TexCoord0,
|
||||||
GL_VertexAttrib_TexCoord1,
|
GL_VertexAttrib_TexCoord1,
|
||||||
GL_VertexAttrib_TexCoord2,
|
GL_VertexAttrib_TexCoord2,
|
||||||
|
|
@ -29,8 +21,11 @@ namespace Torque
|
||||||
GL_VertexAttrib_TexCoord7,
|
GL_VertexAttrib_TexCoord7,
|
||||||
GL_VertexAttrib_TexCoord8,
|
GL_VertexAttrib_TexCoord8,
|
||||||
GL_VertexAttrib_TexCoord9,
|
GL_VertexAttrib_TexCoord9,
|
||||||
|
GL_VertexAttrib_COUNT,
|
||||||
|
|
||||||
GL_VertexAttrib_LAST = GL_VertexAttrib_TexCoord9,
|
GL_VertexAttrib_LAST = GL_VertexAttrib_TexCoord9,
|
||||||
GL_VertexAttrib_COUNT
|
GL_VertexAttrib_BlendWeight0 = GL_VertexAttrib_TexCoord6,
|
||||||
|
GL_VertexAttrib_BlendIndex0 = GL_VertexAttrib_TexCoord2,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -105,6 +105,8 @@ void GFXGLVertexDecl::_initVerticesFormat(U32 stream)
|
||||||
if(element.getStreamIndex() != stream)
|
if(element.getStreamIndex() != stream)
|
||||||
continue;
|
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();
|
vertexSize += element.getSizeInBytes();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@
|
||||||
#include "shaderGen/shaderComp.h"
|
#include "shaderGen/shaderComp.h"
|
||||||
#include "shaderGen/langElement.h"
|
#include "shaderGen/langElement.h"
|
||||||
#include "gfx/gfxDevice.h"
|
#include "gfx/gfxDevice.h"
|
||||||
|
#include "gfx/gl/gfxGLVertexAttribLocation.h"
|
||||||
|
|
||||||
|
|
||||||
Var * AppVertConnectorGLSL::getElement( RegisterType type,
|
Var * AppVertConnectorGLSL::getElement( RegisterType type,
|
||||||
|
|
@ -107,7 +108,8 @@ Var * AppVertConnectorGLSL::getElement( RegisterType type,
|
||||||
newVar->constNum = mCurBlendIndicesElem;
|
newVar->constNum = mCurBlendIndicesElem;
|
||||||
mElementList.push_back(newVar);
|
mElementList.push_back(newVar);
|
||||||
char out[32];
|
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;
|
mCurBlendIndicesElem += 1;
|
||||||
newVar->setConnectName(out);
|
newVar->setConnectName(out);
|
||||||
return newVar;
|
return newVar;
|
||||||
|
|
@ -119,7 +121,8 @@ Var * AppVertConnectorGLSL::getElement( RegisterType type,
|
||||||
newVar->constNum = mCurBlendWeightsElem;
|
newVar->constNum = mCurBlendWeightsElem;
|
||||||
mElementList.push_back(newVar);
|
mElementList.push_back(newVar);
|
||||||
char out[32];
|
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;
|
mCurBlendWeightsElem += 1;
|
||||||
newVar->setConnectName(out);
|
newVar->setConnectName(out);
|
||||||
return newVar;
|
return newVar;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue