From a45e72704942161ea9d86b806f142b80fa544cc2 Mon Sep 17 00:00:00 2001 From: Cinder Biscuits Date: Wed, 6 Aug 2014 16:43:43 +0000 Subject: Add this to contributors.txt --- doc/contributions.txt | 1 + 1 file changed, 1 insertion(+) (limited to 'doc') diff --git a/doc/contributions.txt b/doc/contributions.txt index 7e8ab46b1a..1acdc74d97 100755 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -323,6 +323,7 @@ Cinder Roxley STORM-1951 STORM-2035 STORM-2036 + STORM-2053 Clara Young Coaldust Numbers VWR-1095 -- cgit v1.3 From fc0d618c2f3489e62b28d6e83978d39ea70c1e7e Mon Sep 17 00:00:00 2001 From: Whirly Date: Wed, 20 Aug 2014 23:41:33 +0100 Subject: STORM-2078 Editing an objects rotation with the rotation rings often causes the object to jump to position <0,0,0> on the region and rotation changes to <0,0,0> --- doc/contributions.txt | 3 +++ indra/newview/llmaniprotate.cpp | 10 +++++----- 2 files changed, 8 insertions(+), 5 deletions(-) (limited to 'doc') diff --git a/doc/contributions.txt b/doc/contributions.txt index 7e8ab46b1a..27be861305 100755 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -885,6 +885,8 @@ Mm Alder VWR-4794 VWR-13578 Mo Hax +Moon Metty + STORM-2078 Mourna Biziou Mr Greggan VWR-445 @@ -1358,6 +1360,7 @@ Whirly Fizzle VWR-29543 MAINT-873 STORM-1930 + STORM-2078 Whoops Babii VWR-631 VWR-1640 diff --git a/indra/newview/llmaniprotate.cpp b/indra/newview/llmaniprotate.cpp index 7861573908..50863ac970 100755 --- a/indra/newview/llmaniprotate.cpp +++ b/indra/newview/llmaniprotate.cpp @@ -1241,9 +1241,9 @@ LLQuaternion LLManipRotate::dragUnconstrained( S32 x, S32 y ) LLVector3 axis = mMouseDown % mMouseCur; axis.normVec(); - F32 angle = acos(mMouseDown * mMouseCur); + F32 angle = atan2(sqrtf(axis * axis), mMouseDown * mMouseCur); LLQuaternion sphere_rot( angle, axis ); - + if (is_approx_zero(1.f - mMouseDown * mMouseCur)) { return LLQuaternion::DEFAULT; @@ -1638,9 +1638,9 @@ LLQuaternion LLManipRotate::dragConstrained( S32 x, S32 y ) mInSnapRegime = FALSE; } - angle = acos(mMouseCur * mMouseDown); - - F32 dir = (mMouseDown % mMouseCur) * constraint_axis; // cross product + LLVector3 cross_product = mMouseDown % mMouseCur; + angle = atan2(sqrtf(cross_product * cross_product), mMouseCur * mMouseDown); + F32 dir = cross_product * constraint_axis; // cross product if( dir < 0.f ) { angle *= -1.f; -- cgit v1.3 From 08a4d7a27743792a644c46f8163d973d0524cd79 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Tue, 2 Sep 2014 16:25:49 -0400 Subject: complete contributions for STORM-2069, STORM-2070, STORM-2071, STORM-2072 --- doc/contributions.txt | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'doc') diff --git a/doc/contributions.txt b/doc/contributions.txt index 7e8ab46b1a..c9da414e0c 100755 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -1017,6 +1017,11 @@ Peekay Semyorka VWR-19 VWR-49 VWR-79 +Pell Smit + STORM-2069 + STORM-2070 + STORM-2071 + STORM-2072 Peter Lameth VWR-7331 PeterPunk Mooney -- cgit v1.3 From 7ffa456683ed7babd8abf16d48f0871a7001f3e6 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Tue, 14 Oct 2014 11:22:39 -0400 Subject: STORM-2080: correct fitted mesh rendering on some ATI cards --- doc/contributions.txt | 1 + indra/llrender/llshadermgr.cpp | 13 +++++++++---- .../app_settings/shaders/class1/avatar/avatarSkinV.glsl | 6 ++++++ .../app_settings/shaders/class1/avatar/objectSkinV.glsl | 9 +++++++++ .../app_settings/shaders/class1/deferred/blurLightF.glsl | 6 ++++++ .../shaders/class1/deferred/multiPointLightF.glsl | 8 ++++++++ .../app_settings/shaders/class1/deferred/postgiF.glsl | 6 ++++++ indra/newview/lldrawpoolavatar.cpp | 3 ++- 8 files changed, 47 insertions(+), 5 deletions(-) (limited to 'doc') diff --git a/doc/contributions.txt b/doc/contributions.txt index b5db1fa5a3..ab5eddd92d 100755 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -996,6 +996,7 @@ Nicky Perian STORM-1087 STORM-1090 STORM-1828 + STORM-2080 Nicoladie Gymnast NiranV Dean STORM-2040 diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp index 95a2c8b589..663d3e8b0f 100755 --- a/indra/llrender/llshadermgr.cpp +++ b/indra/llrender/llshadermgr.cpp @@ -670,12 +670,17 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade if (defines) { for (boost::unordered_map::iterator iter = defines->begin(); iter != defines->end(); ++iter) - { - std::string define = "#define " + iter->first + " " + iter->second + "\n"; - text[count++] = (GLcharARB *) strdup(define.c_str()); - } + { + std::string define = "#define " + iter->first + " " + iter->second + "\n"; + text[count++] = (GLcharARB *) strdup(define.c_str()); + } } + if( gGLManager.mIsATI ) + { + text[ count++ ] = strdup( "#define IS_AMD_CARD 1\n" ); + } + if (texture_index_channels > 0 && type == GL_FRAGMENT_SHADER_ARB) { //use specified number of texture channels for indexed texture rendering diff --git a/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl index bc63d07d72..767fad016c 100755 --- a/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl +++ b/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl @@ -40,4 +40,10 @@ mat4 getSkinnedTransform() ret[3] = vec4(0,0,0,1); return ret; + +#ifdef IS_AMD_CARD + // If it's AMD make sure the GLSL compiler sees the arrays referenced once by static index. Otherwise it seems to optimise the storage awawy which leads to unfun crashes and artifacts. + vec4 dummy1 = matrixPalette[0]; + vec4 dummy2 = matrixPalette[44]; +#endif } diff --git a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl index 57129c3bd1..6cd38d8ef5 100755 --- a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl +++ b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl @@ -63,5 +63,14 @@ mat4 getObjectSkinnedTransform() ret[3] = vec4(trans, 1.0); return ret; + +#ifdef IS_AMD_CARD + // If it's AMD make sure the GLSL compiler sees the arrays referenced once by static index. Otherwise it seems to optimise the storage awawy which leads to unfun crashes and artifacts. + mat3 dummy1 = matrixPalette[0]; + vec3 dummy2 = translationPalette[0]; + mat3 dummy3 = matrixPalette[51]; + vec3 dummy4 = translationPalette[51]; +#endif + } diff --git a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl index a4f54dff70..5264d6e1b4 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl @@ -132,5 +132,11 @@ void main() col.y *= col.y; frag_color = col; + +#ifdef IS_AMD_CARD + // If it's AMD make sure the GLSL compiler sees the arrays referenced once by static index. Otherwise it seems to optimise the storage awawy which leads to unfun crashes and artifacts. + vec3 dummy1 = kern[0]; + vec3 dummy2 = kern[3]; +#endif } diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl index 236567219b..1a464fec5d 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl @@ -161,4 +161,12 @@ void main() frag_color.rgb = out_col; frag_color.a = 0.0; + +#ifdef IS_AMD_CARD + // If it's AMD make sure the GLSL compiler sees the arrays referenced once by static index. Otherwise it seems to optimise the storage awawy which leads to unfun crashes and artifacts. + vec4 dummy1 = light[0]; + vec4 dummy2 = light_col[0]; + vec4 dummy3 = light[LIGHT_COUNT-1]; + vec4 dummy4 = light_col[LIGHT_COUNT-1]; +#endif } diff --git a/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl index 96f9628424..018ced4cad 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl @@ -99,4 +99,10 @@ void main() col = col*col*blur_quad.x + col*blur_quad.y + blur_quad.z; frag_color.rgb = col; + +#ifdef IS_AMD_CARD + // If it's AMD make sure the GLSL compiler sees the arrays referenced once by static index. Otherwise it seems to optimise the storage awawy which leads to unfun crashes and artifacts. + vec2 dummy1 = kern[0]; + vec2 dummy2 = kern[31]; +#endif } diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index 90e6dfe351..e7420f32f0 100755 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -1626,7 +1626,8 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace* { F32 w = weight[j][k]; - idx[k] = llclamp((S32) floorf(w), 0, 63); + idx[k] = llclamp((S32) floorf(w), 0, JOINT_COUNT-1); + wght[k] = w - floorf(w); scale += wght[k]; } -- cgit v1.3