Hardware Skinning Support

- Supports GL, D3D9 & D3D11
- Extends vertex formats & shadergen to support blend indices and weights
- Adds basic support for using 4x3 matrices for shader constants
- Supports software fallback
This commit is contained in:
James Urquhart 2015-01-10 19:41:25 +00:00
parent 507c239a87
commit 3496c549b5
72 changed files with 2533 additions and 1327 deletions

View file

@ -121,6 +121,9 @@ const char* ShaderGenComponentFactoryHLSL::typeToString( GFXDeclType type )
case GFXDeclType_Float4:
case GFXDeclType_Color:
return "float4";
case GFXDeclType_UByte4:
return "uint4";
}
}
@ -174,6 +177,22 @@ ShaderComponent* ShaderGenComponentFactoryHLSL::createVertexInputConnector( cons
else
var->setName( String::ToString( "texCoord%d", element.getSemanticIndex() + 1 ) );
}
else if ( element.isSemantic( GFXSemantic::BLENDINDICES ) )
{
var = vertComp->getIndexedElement( element.getSemanticIndex(), RT_BLENDINDICES );
var->setName( String::ToString( "blendIndices%d", element.getSemanticIndex() ) );
}
else if ( element.isSemantic( GFXSemantic::BLENDWEIGHT ) )
{
var = vertComp->getIndexedElement( element.getSemanticIndex(), RT_BLENDWEIGHT );
var->setName( String::ToString( "blendWeight%d", element.getSemanticIndex() ) );
}
else if ( element.isSemantic( GFXSemantic::PADDING ) )
{
var = NULL;
//var = vertComp->getIndexedElement( vertComp->getCurTexElem() + element.getSemanticIndex(), RT_TEXCOORD );
//var->setName( String::ToString( "pad%d", element.getSemanticIndex() + 1 ) );
}
else
{
// Everything else is a texcoord!