From d21fc254a795ddbb0604fd6a542327dbd92b036d Mon Sep 17 00:00:00 2001 From: Graham Madarasz Date: Sat, 1 Jun 2013 13:43:52 -0700 Subject: BUG-2707 hunt for infos call crashing Kat --- indra/llappearance/llavatarjointmesh.cpp | 3 ++- indra/llappearance/llpolymesh.cpp | 16 ++++++++-------- indra/llappearance/lltexlayer.cpp | 8 ++++---- indra/llappearance/lltexlayerparams.cpp | 4 ++-- 4 files changed, 16 insertions(+), 15 deletions(-) (limited to 'indra/llappearance') diff --git a/indra/llappearance/llavatarjointmesh.cpp b/indra/llappearance/llavatarjointmesh.cpp index 4a5cff1dc3..debdf416cd 100644 --- a/indra/llappearance/llavatarjointmesh.cpp +++ b/indra/llappearance/llavatarjointmesh.cpp @@ -89,7 +89,8 @@ BOOL LLSkinJoint::setupSkinJoint( LLAvatarJoint *joint) mJoint = joint; if ( !mJoint ) { - llinfos << "Can't find joint" << llendl; + //llinfos << "Can't find joint" << llendl; + return FALSE; } // compute the inverse root skin matrix diff --git a/indra/llappearance/llpolymesh.cpp b/indra/llappearance/llpolymesh.cpp index a01457246e..907aa21279 100644 --- a/indra/llappearance/llpolymesh.cpp +++ b/indra/llappearance/llpolymesh.cpp @@ -889,10 +889,10 @@ void LLPolyMesh::dumpDiagInfo() std::string buf; - llinfos << "-----------------------------------------------------" << llendl; - llinfos << " Global PolyMesh Table (DEBUG only)" << llendl; - llinfos << " Verts Faces Mem(KB) Name" << llendl; - llinfos << "-----------------------------------------------------" << llendl; + LL_DEBUGS("LLPolyMesh") << "-----------------------------------------------------" << llendl; + LL_DEBUGS("LLPolyMesh") << " Global PolyMesh Table (DEBUG only)" << llendl; + LL_DEBUGS("LLPolyMesh") << " Verts Faces Mem(KB) Name" << llendl; + LL_DEBUGS("LLPolyMesh") << "-----------------------------------------------------" << llendl; // print each loaded mesh, and it's memory usage for(LLPolyMeshSharedDataTable::iterator iter = sGlobalSharedMeshList.begin(); @@ -906,17 +906,17 @@ void LLPolyMesh::dumpDiagInfo() U32 num_kb = mesh->getNumKB(); buf = llformat("%8d %8d %8d %s", num_verts, num_faces, num_kb, mesh_name.c_str()); - llinfos << buf << llendl; + LL_DEBUGS("LLPolyMesh") << buf << llendl; total_verts += num_verts; total_faces += num_faces; total_kb += num_kb; } - llinfos << "-----------------------------------------------------" << llendl; + LL_DEBUGS("LLPolyMesh") << "-----------------------------------------------------" << llendl; buf = llformat("%8d %8d %8d TOTAL", total_verts, total_faces, total_kb ); - llinfos << buf << llendl; - llinfos << "-----------------------------------------------------" << llendl; + LL_DEBUGS("LLPolyMesh") << buf << llendl; + LL_DEBUGS("LLPolyMesh") << "-----------------------------------------------------" << llendl; } //----------------------------------------------------------------------------- diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp index f951a982e5..e40a2ab200 100644 --- a/indra/llappearance/lltexlayer.cpp +++ b/indra/llappearance/lltexlayer.cpp @@ -1203,7 +1203,7 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height) } else { - llinfos << "lto not defined or image not defined: " << getInfo()->getLocalTexture() << " lto: " << mLocalTextureObject << llendl; + LL_DEBUGS("LLTexLayer") << "lto not defined or image not defined: " << getInfo()->getLocalTexture() << " lto: " << mLocalTextureObject << llendl; } // if( mTexLayerSet->getAvatarAppearance()->getLocalTextureGL((ETextureIndex)getInfo()->mLocalTexture, &image_gl ) ) { @@ -1291,7 +1291,7 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height) if( !success ) { - llinfos << "LLTexLayer::render() partial: " << getInfo()->mName << llendl; + LL_DEBUGS("LLTexLayer") << "LLTexLayer::render() partial: " << getInfo()->mName << llendl; } return success; } @@ -1891,7 +1891,7 @@ LLTexLayerStaticImageList::~LLTexLayerStaticImageList() void LLTexLayerStaticImageList::dumpByteCount() const { - llinfos << "Avatar Static Textures " << + LL_DEBUGS("LLTexLayerStaticImageList") << "Avatar Static Textures " << "KB GL:" << (mGLBytes / 1024) << "KB TGA:" << (mTGABytes / 1024) << "KB" << llendl; } @@ -1900,7 +1900,7 @@ void LLTexLayerStaticImageList::deleteCachedImages() { if( mGLBytes || mTGABytes ) { - llinfos << "Clearing Static Textures " << + LL_DEBUGS("LLTexLayerStaticImageList") << "Clearing Static Textures " << "KB GL:" << (mGLBytes / 1024) << "KB TGA:" << (mTGABytes / 1024) << "KB" << llendl; diff --git a/indra/llappearance/lltexlayerparams.cpp b/indra/llappearance/lltexlayerparams.cpp index 6aae9a8cc1..49e0546544 100644 --- a/indra/llappearance/lltexlayerparams.cpp +++ b/indra/llappearance/lltexlayerparams.cpp @@ -86,7 +86,7 @@ void LLTexLayerParamAlpha::dumpCacheByteCount() { S32 gl_bytes = 0; getCacheByteCount( &gl_bytes); - llinfos << "Processed Alpha Texture Cache GL:" << (gl_bytes/1024) << "KB" << llendl; + LL_DEBUGS("LLTexLayerParamAlpha") << "Processed Alpha Texture Cache GL:" << (gl_bytes/1024) << "KB" << llendl; } // static @@ -481,7 +481,7 @@ void LLTexLayerParamColor::setWeight(F32 weight, BOOL upload_bake) } } -// llinfos << "param " << mName << " = " << new_weight << llendl; +// LL_DEBUGS(LLTexLayerParamAlpha) << "param " << mName << " = " << new_weight << llendl; } } -- cgit v1.2.3 From cf3d2a06a13528cca1327becfb9e8dcb5ff4614a Mon Sep 17 00:00:00 2001 From: Graham Madarasz Date: Sat, 1 Jun 2013 19:36:38 -0700 Subject: BUG-2707 turn off more LL_DEBUGS to narrow down Kat's crashing cuplrit --- indra/llappearance/llpolymesh.cpp | 16 ++++++++-------- indra/llappearance/lltexlayer.cpp | 16 ++++++++-------- indra/llappearance/lltexlayerparams.cpp | 3 ++- 3 files changed, 18 insertions(+), 17 deletions(-) (limited to 'indra/llappearance') diff --git a/indra/llappearance/llpolymesh.cpp b/indra/llappearance/llpolymesh.cpp index 907aa21279..e176d0844b 100644 --- a/indra/llappearance/llpolymesh.cpp +++ b/indra/llappearance/llpolymesh.cpp @@ -889,10 +889,10 @@ void LLPolyMesh::dumpDiagInfo() std::string buf; - LL_DEBUGS("LLPolyMesh") << "-----------------------------------------------------" << llendl; - LL_DEBUGS("LLPolyMesh") << " Global PolyMesh Table (DEBUG only)" << llendl; - LL_DEBUGS("LLPolyMesh") << " Verts Faces Mem(KB) Name" << llendl; - LL_DEBUGS("LLPolyMesh") << "-----------------------------------------------------" << llendl; + //LL_DEBUGS("LLPolyMesh") << "-----------------------------------------------------" << llendl; + //LL_DEBUGS("LLPolyMesh") << " Global PolyMesh Table (DEBUG only)" << llendl; + //LL_DEBUGS("LLPolyMesh") << " Verts Faces Mem(KB) Name" << llendl; + //LL_DEBUGS("LLPolyMesh") << "-----------------------------------------------------" << llendl; // print each loaded mesh, and it's memory usage for(LLPolyMeshSharedDataTable::iterator iter = sGlobalSharedMeshList.begin(); @@ -906,17 +906,17 @@ void LLPolyMesh::dumpDiagInfo() U32 num_kb = mesh->getNumKB(); buf = llformat("%8d %8d %8d %s", num_verts, num_faces, num_kb, mesh_name.c_str()); - LL_DEBUGS("LLPolyMesh") << buf << llendl; + //LL_DEBUGS("LLPolyMesh") << buf << llendl; total_verts += num_verts; total_faces += num_faces; total_kb += num_kb; } - LL_DEBUGS("LLPolyMesh") << "-----------------------------------------------------" << llendl; + //LL_DEBUGS("LLPolyMesh") << "-----------------------------------------------------" << llendl; buf = llformat("%8d %8d %8d TOTAL", total_verts, total_faces, total_kb ); - LL_DEBUGS("LLPolyMesh") << buf << llendl; - LL_DEBUGS("LLPolyMesh") << "-----------------------------------------------------" << llendl; + //LL_DEBUGS("LLPolyMesh") << buf << llendl; + //LL_DEBUGS("LLPolyMesh") << "-----------------------------------------------------" << llendl; } //----------------------------------------------------------------------------- diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp index e40a2ab200..228cdcd5ba 100644 --- a/indra/llappearance/lltexlayer.cpp +++ b/indra/llappearance/lltexlayer.cpp @@ -1203,7 +1203,7 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height) } else { - LL_DEBUGS("LLTexLayer") << "lto not defined or image not defined: " << getInfo()->getLocalTexture() << " lto: " << mLocalTextureObject << llendl; + //LL_DEBUGS("LLTexLayer") << "lto not defined or image not defined: " << getInfo()->getLocalTexture() << " lto: " << mLocalTextureObject << llendl; } // if( mTexLayerSet->getAvatarAppearance()->getLocalTextureGL((ETextureIndex)getInfo()->mLocalTexture, &image_gl ) ) { @@ -1291,7 +1291,7 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height) if( !success ) { - LL_DEBUGS("LLTexLayer") << "LLTexLayer::render() partial: " << getInfo()->mName << llendl; + //LL_DEBUGS("LLTexLayer") << "LLTexLayer::render() partial: " << getInfo()->mName << llendl; } return success; } @@ -1891,18 +1891,18 @@ LLTexLayerStaticImageList::~LLTexLayerStaticImageList() void LLTexLayerStaticImageList::dumpByteCount() const { - LL_DEBUGS("LLTexLayerStaticImageList") << "Avatar Static Textures " << - "KB GL:" << (mGLBytes / 1024) << - "KB TGA:" << (mTGABytes / 1024) << "KB" << llendl; + //LL_DEBUGS("LLTexLayerStaticImageList") << "Avatar Static Textures " << + // "KB GL:" << (mGLBytes / 1024) << + // "KB TGA:" << (mTGABytes / 1024) << "KB" << llendl; } void LLTexLayerStaticImageList::deleteCachedImages() { if( mGLBytes || mTGABytes ) { - LL_DEBUGS("LLTexLayerStaticImageList") << "Clearing Static Textures " << - "KB GL:" << (mGLBytes / 1024) << - "KB TGA:" << (mTGABytes / 1024) << "KB" << llendl; + //LL_DEBUGS("LLTexLayerStaticImageList") << "Clearing Static Textures " << + // "KB GL:" << (mGLBytes / 1024) << + // "KB TGA:" << (mTGABytes / 1024) << "KB" << llendl; //mStaticImageLists uses LLPointers, clear() will cause deletion diff --git a/indra/llappearance/lltexlayerparams.cpp b/indra/llappearance/lltexlayerparams.cpp index 49e0546544..6cbc6bdf34 100644 --- a/indra/llappearance/lltexlayerparams.cpp +++ b/indra/llappearance/lltexlayerparams.cpp @@ -86,7 +86,8 @@ void LLTexLayerParamAlpha::dumpCacheByteCount() { S32 gl_bytes = 0; getCacheByteCount( &gl_bytes); - LL_DEBUGS("LLTexLayerParamAlpha") << "Processed Alpha Texture Cache GL:" << (gl_bytes/1024) << "KB" << llendl; + // BUG-2707? + //LL_DEBUGS("LLTexLayerParamAlpha") << "Processed Alpha Texture Cache GL:" << (gl_bytes/1024) << "KB" << llendl; } // static -- cgit v1.2.3 From ea246125619aca35ac6672d6be4b8aa08123666f Mon Sep 17 00:00:00 2001 From: Graham Madarasz Date: Tue, 4 Jun 2013 07:51:27 -0700 Subject: BUG-2707 make use of OsOutputDebugString _DEBUG only on Windows to avoid throwing unhandlable exceptions in coroutines in RelWithDebInfo builds --- indra/llappearance/lltexlayerparams.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'indra/llappearance') diff --git a/indra/llappearance/lltexlayerparams.cpp b/indra/llappearance/lltexlayerparams.cpp index 6cbc6bdf34..49e0546544 100644 --- a/indra/llappearance/lltexlayerparams.cpp +++ b/indra/llappearance/lltexlayerparams.cpp @@ -86,8 +86,7 @@ void LLTexLayerParamAlpha::dumpCacheByteCount() { S32 gl_bytes = 0; getCacheByteCount( &gl_bytes); - // BUG-2707? - //LL_DEBUGS("LLTexLayerParamAlpha") << "Processed Alpha Texture Cache GL:" << (gl_bytes/1024) << "KB" << llendl; + LL_DEBUGS("LLTexLayerParamAlpha") << "Processed Alpha Texture Cache GL:" << (gl_bytes/1024) << "KB" << llendl; } // static -- cgit v1.2.3 From c38204f5e0a9130f0d4d4bfc997da107fd1017ce Mon Sep 17 00:00:00 2001 From: Graham Madarasz Date: Wed, 5 Jun 2013 14:26:27 -0700 Subject: Unwind cruft from hunting for 2707 they won't end up in vwr-dev-mat --- indra/llappearance/llavatarjointmesh.cpp | 3 +-- indra/llappearance/llpolymesh.cpp | 16 ++++++++-------- indra/llappearance/lltexlayer.cpp | 16 ++++++++-------- indra/llappearance/lltexlayerparams.cpp | 4 ++-- 4 files changed, 19 insertions(+), 20 deletions(-) (limited to 'indra/llappearance') diff --git a/indra/llappearance/llavatarjointmesh.cpp b/indra/llappearance/llavatarjointmesh.cpp index debdf416cd..4a5cff1dc3 100644 --- a/indra/llappearance/llavatarjointmesh.cpp +++ b/indra/llappearance/llavatarjointmesh.cpp @@ -89,8 +89,7 @@ BOOL LLSkinJoint::setupSkinJoint( LLAvatarJoint *joint) mJoint = joint; if ( !mJoint ) { - //llinfos << "Can't find joint" << llendl; - return FALSE; + llinfos << "Can't find joint" << llendl; } // compute the inverse root skin matrix diff --git a/indra/llappearance/llpolymesh.cpp b/indra/llappearance/llpolymesh.cpp index e176d0844b..a01457246e 100644 --- a/indra/llappearance/llpolymesh.cpp +++ b/indra/llappearance/llpolymesh.cpp @@ -889,10 +889,10 @@ void LLPolyMesh::dumpDiagInfo() std::string buf; - //LL_DEBUGS("LLPolyMesh") << "-----------------------------------------------------" << llendl; - //LL_DEBUGS("LLPolyMesh") << " Global PolyMesh Table (DEBUG only)" << llendl; - //LL_DEBUGS("LLPolyMesh") << " Verts Faces Mem(KB) Name" << llendl; - //LL_DEBUGS("LLPolyMesh") << "-----------------------------------------------------" << llendl; + llinfos << "-----------------------------------------------------" << llendl; + llinfos << " Global PolyMesh Table (DEBUG only)" << llendl; + llinfos << " Verts Faces Mem(KB) Name" << llendl; + llinfos << "-----------------------------------------------------" << llendl; // print each loaded mesh, and it's memory usage for(LLPolyMeshSharedDataTable::iterator iter = sGlobalSharedMeshList.begin(); @@ -906,17 +906,17 @@ void LLPolyMesh::dumpDiagInfo() U32 num_kb = mesh->getNumKB(); buf = llformat("%8d %8d %8d %s", num_verts, num_faces, num_kb, mesh_name.c_str()); - //LL_DEBUGS("LLPolyMesh") << buf << llendl; + llinfos << buf << llendl; total_verts += num_verts; total_faces += num_faces; total_kb += num_kb; } - //LL_DEBUGS("LLPolyMesh") << "-----------------------------------------------------" << llendl; + llinfos << "-----------------------------------------------------" << llendl; buf = llformat("%8d %8d %8d TOTAL", total_verts, total_faces, total_kb ); - //LL_DEBUGS("LLPolyMesh") << buf << llendl; - //LL_DEBUGS("LLPolyMesh") << "-----------------------------------------------------" << llendl; + llinfos << buf << llendl; + llinfos << "-----------------------------------------------------" << llendl; } //----------------------------------------------------------------------------- diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp index 228cdcd5ba..f951a982e5 100644 --- a/indra/llappearance/lltexlayer.cpp +++ b/indra/llappearance/lltexlayer.cpp @@ -1203,7 +1203,7 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height) } else { - //LL_DEBUGS("LLTexLayer") << "lto not defined or image not defined: " << getInfo()->getLocalTexture() << " lto: " << mLocalTextureObject << llendl; + llinfos << "lto not defined or image not defined: " << getInfo()->getLocalTexture() << " lto: " << mLocalTextureObject << llendl; } // if( mTexLayerSet->getAvatarAppearance()->getLocalTextureGL((ETextureIndex)getInfo()->mLocalTexture, &image_gl ) ) { @@ -1291,7 +1291,7 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height) if( !success ) { - //LL_DEBUGS("LLTexLayer") << "LLTexLayer::render() partial: " << getInfo()->mName << llendl; + llinfos << "LLTexLayer::render() partial: " << getInfo()->mName << llendl; } return success; } @@ -1891,18 +1891,18 @@ LLTexLayerStaticImageList::~LLTexLayerStaticImageList() void LLTexLayerStaticImageList::dumpByteCount() const { - //LL_DEBUGS("LLTexLayerStaticImageList") << "Avatar Static Textures " << - // "KB GL:" << (mGLBytes / 1024) << - // "KB TGA:" << (mTGABytes / 1024) << "KB" << llendl; + llinfos << "Avatar Static Textures " << + "KB GL:" << (mGLBytes / 1024) << + "KB TGA:" << (mTGABytes / 1024) << "KB" << llendl; } void LLTexLayerStaticImageList::deleteCachedImages() { if( mGLBytes || mTGABytes ) { - //LL_DEBUGS("LLTexLayerStaticImageList") << "Clearing Static Textures " << - // "KB GL:" << (mGLBytes / 1024) << - // "KB TGA:" << (mTGABytes / 1024) << "KB" << llendl; + llinfos << "Clearing Static Textures " << + "KB GL:" << (mGLBytes / 1024) << + "KB TGA:" << (mTGABytes / 1024) << "KB" << llendl; //mStaticImageLists uses LLPointers, clear() will cause deletion diff --git a/indra/llappearance/lltexlayerparams.cpp b/indra/llappearance/lltexlayerparams.cpp index 49e0546544..6aae9a8cc1 100644 --- a/indra/llappearance/lltexlayerparams.cpp +++ b/indra/llappearance/lltexlayerparams.cpp @@ -86,7 +86,7 @@ void LLTexLayerParamAlpha::dumpCacheByteCount() { S32 gl_bytes = 0; getCacheByteCount( &gl_bytes); - LL_DEBUGS("LLTexLayerParamAlpha") << "Processed Alpha Texture Cache GL:" << (gl_bytes/1024) << "KB" << llendl; + llinfos << "Processed Alpha Texture Cache GL:" << (gl_bytes/1024) << "KB" << llendl; } // static @@ -481,7 +481,7 @@ void LLTexLayerParamColor::setWeight(F32 weight, BOOL upload_bake) } } -// LL_DEBUGS(LLTexLayerParamAlpha) << "param " << mName << " = " << new_weight << llendl; +// llinfos << "param " << mName << " = " << new_weight << llendl; } } -- cgit v1.2.3 From d2b253f1f6072beead770519849ad3b18a1a4359 Mon Sep 17 00:00:00 2001 From: Graham Madarasz Date: Wed, 12 Jun 2013 09:16:19 -0700 Subject: Changes to protect against use of normalize3fast on degenerate vectors --- indra/llappearance/llpolymorph.cpp | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'indra/llappearance') diff --git a/indra/llappearance/llpolymorph.cpp b/indra/llappearance/llpolymorph.cpp index 8a17819083..5e5813b9ac 100644 --- a/indra/llappearance/llpolymorph.cpp +++ b/indra/llappearance/llpolymorph.cpp @@ -568,6 +568,12 @@ void LLPolyMorphTarget::apply( ESex avatar_sex ) F32 *maskWeightArray = (mVertMask) ? mVertMask->getMorphMaskWeights() : NULL; + LLVector4a default_norm; + LLVector4a default_binorm; + + default_norm.set(0,1,0,1); + default_binorm.set(1,0,0,1); + for(U32 vert_index_morph = 0; vert_index_morph < mMorphData->mNumIndices; vert_index_morph++) { S32 vert_index_mesh = mMorphData->mVertexIndices[vert_index_morph]; @@ -597,19 +603,31 @@ void LLPolyMorphTarget::apply( ESex avatar_sex ) norm.mul(delta_weight*maskWeight*NORMAL_SOFTEN_FACTOR); scaled_normals[vert_index_mesh].add(norm); norm = scaled_normals[vert_index_mesh]; - norm.normalize3fast(); + + // guard against degenerate input data before we create NaNs below! + // + norm.normalize3fast_checked(&default_norm); normals[vert_index_mesh] = norm; // calculate new binormals LLVector4a binorm = mMorphData->mBinormals[vert_index_morph]; + + // guard against degenerate input data before we create NaNs below! + // + if (!binorm.isFinite3() || (binorm.dot3(binorm).getF32() <= F_APPROXIMATELY_ZERO)) + { + binorm.set(1,0,0,1); + } + binorm.mul(delta_weight*maskWeight*NORMAL_SOFTEN_FACTOR); scaled_binormals[vert_index_mesh].add(binorm); LLVector4a tangent; tangent.setCross3(scaled_binormals[vert_index_mesh], norm); LLVector4a& normalized_binormal = binormals[vert_index_mesh]; - normalized_binormal.setCross3(norm, tangent); - normalized_binormal.normalize3fast(); - + + normalized_binormal.setCross3(norm, tangent); + normalized_binormal.normalize3fast_checked(&default_binorm); + tex_coords[vert_index_mesh] += mMorphData->mTexCoords[vert_index_morph] * delta_weight * maskWeight; } -- cgit v1.2.3 From 88553c9eb1aee59d092cbd73c64da82497fd095f Mon Sep 17 00:00:00 2001 From: Graham Madarasz Date: Wed, 12 Jun 2013 12:19:48 -0700 Subject: Cleanup rollback and try point MIPs experiment to see if that's what is hosing the Mac on 10.6.8 --- indra/llappearance/llpolymorph.cpp | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) (limited to 'indra/llappearance') diff --git a/indra/llappearance/llpolymorph.cpp b/indra/llappearance/llpolymorph.cpp index 5e5813b9ac..93c2f15a53 100644 --- a/indra/llappearance/llpolymorph.cpp +++ b/indra/llappearance/llpolymorph.cpp @@ -568,12 +568,6 @@ void LLPolyMorphTarget::apply( ESex avatar_sex ) F32 *maskWeightArray = (mVertMask) ? mVertMask->getMorphMaskWeights() : NULL; - LLVector4a default_norm; - LLVector4a default_binorm; - - default_norm.set(0,1,0,1); - default_binorm.set(1,0,0,1); - for(U32 vert_index_morph = 0; vert_index_morph < mMorphData->mNumIndices; vert_index_morph++) { S32 vert_index_mesh = mMorphData->mVertexIndices[vert_index_morph]; @@ -606,7 +600,7 @@ void LLPolyMorphTarget::apply( ESex avatar_sex ) // guard against degenerate input data before we create NaNs below! // - norm.normalize3fast_checked(&default_norm); + norm.normalize3fast(); normals[vert_index_mesh] = norm; // calculate new binormals @@ -626,7 +620,7 @@ void LLPolyMorphTarget::apply( ESex avatar_sex ) LLVector4a& normalized_binormal = binormals[vert_index_mesh]; normalized_binormal.setCross3(norm, tangent); - normalized_binormal.normalize3fast_checked(&default_binorm); + normalized_binormal.normalize3fast(); tex_coords[vert_index_mesh] += mMorphData->mTexCoords[vert_index_morph] * delta_weight * maskWeight; } -- cgit v1.2.3