mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-19 20:24:49 +00:00
Add a workaround for the 16 vertex attribute limit on nvidia gl
This commit is contained in:
parent
6283a6b9da
commit
ace01a313c
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in a new issue