Skip to content
Snippets Groups Projects
Commit 476e317c authored by David Parks's avatar David Parks
Browse files

FITMESH-6, FITMESH-20 Fix for some objects disappearing when hardware...

FITMESH-6, FITMESH-20  Fix for some objects disappearing when hardware skinning enabled and ALM disabled.
parent f1bb5c5a
No related branches found
No related tags found
No related merge requests found
...@@ -22,17 +22,14 @@ ...@@ -22,17 +22,14 @@
* $/LicenseInfo$ * $/LicenseInfo$
*/ */
ATTRIBUTE vec4 weight4; ATTRIBUTE vec4 weight4;
uniform mat3 matrixPalette[64]; uniform mat3 matrixPalette[52];
uniform vec3 translationPalette[64]; uniform vec3 translationPalette[52];
mat4 getObjectSkinnedTransform() mat4 getObjectSkinnedTransform()
{ {
int i; int i;
vec4 w = fract(weight4); vec4 w = fract(weight4);
vec4 index = floor(weight4); vec4 index = floor(weight4);
......
...@@ -55,6 +55,7 @@ static U32 sDataMask = LLDrawPoolAvatar::VERTEX_DATA_MASK; ...@@ -55,6 +55,7 @@ static U32 sDataMask = LLDrawPoolAvatar::VERTEX_DATA_MASK;
static U32 sBufferUsage = GL_STREAM_DRAW_ARB; static U32 sBufferUsage = GL_STREAM_DRAW_ARB;
static U32 sShaderLevel = 0; static U32 sShaderLevel = 0;
#define JOINT_COUNT 52
LLGLSLShader* LLDrawPoolAvatar::sVertexProgram = NULL; LLGLSLShader* LLDrawPoolAvatar::sVertexProgram = NULL;
BOOL LLDrawPoolAvatar::sSkipOpaque = FALSE; BOOL LLDrawPoolAvatar::sSkipOpaque = FALSE;
...@@ -1582,7 +1583,7 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace* ...@@ -1582,7 +1583,7 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace*
LLVector4a* norm = has_normal ? (LLVector4a*) normal.get() : NULL; LLVector4a* norm = has_normal ? (LLVector4a*) normal.get() : NULL;
//build matrix palette //build matrix palette
LLMatrix4a mp[64]; LLMatrix4a mp[JOINT_COUNT];
LLMatrix4* mat = (LLMatrix4*) mp; LLMatrix4* mat = (LLMatrix4*) mp;
for (U32 j = 0; j < skin->mJointNames.size(); ++j) for (U32 j = 0; j < skin->mJointNames.size(); ++j)
...@@ -1642,6 +1643,7 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace* ...@@ -1642,6 +1643,7 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace*
LLVector4a& n = vol_face.mNormals[j]; LLVector4a& n = vol_face.mNormals[j];
bind_shape_matrix.rotate(n, t); bind_shape_matrix.rotate(n, t);
final_mat.rotate(t, dst); final_mat.rotate(t, dst);
dst.normalize3fast();
norm[j] = dst; norm[j] = dst;
} }
} }
...@@ -1708,9 +1710,9 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow) ...@@ -1708,9 +1710,9 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow)
{ {
if (sShaderLevel > 0) if (sShaderLevel > 0)
{ //upload matrix palette to shader { //upload matrix palette to shader
LLMatrix4 mat[64]; LLMatrix4 mat[JOINT_COUNT];
U32 count = llmin((U32) skin->mJointNames.size(), (U32) 64); U32 count = llmin((U32) skin->mJointNames.size(), (U32) JOINT_COUNT);
for (U32 i = 0; i < count; ++i) for (U32 i = 0; i < count; ++i)
{ {
...@@ -1724,9 +1726,9 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow) ...@@ -1724,9 +1726,9 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow)
stop_glerror(); stop_glerror();
F32 mp[64*9]; F32 mp[JOINT_COUNT*9];
F32 transp[64*3]; F32 transp[JOINT_COUNT*3];
for (U32 i = 0; i < count; ++i) for (U32 i = 0; i < count; ++i)
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment