From 3cf8a1ce6e81c30cf7231a5ab045bbc45c6757e2 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Fri, 20 Feb 2015 12:56:45 -0500 Subject: Clean up impostors and visual muting Rename the settings that control them to be more descriptive Remove the separate boolean setting (RenderUseImpostors) that governed both Establish default values based on gpu class for impostors and visual muting --- indra/newview/lldrawpoolavatar.cpp | 7 ------- 1 file changed, 7 deletions(-) (limited to 'indra/newview/lldrawpoolavatar.cpp') diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index e1d3d1a905..e58c2c1037 100755 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -1281,13 +1281,6 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass) return; } - llassert(LLPipeline::sImpostorRender || !avatarp->isVisuallyMuted()); - - /*if (single_avatar && avatarp->mSpecialRenderMode >= 1) // 1=anim preview, 2=image preview, 3=morph view - { - gPipeline.enableLightsAvatarEdit(LLColor4(.5f, .5f, .5f, 1.f)); - }*/ - if (pass == 1) { // render rigid meshes (eyeballs) first -- cgit v1.2.3 From 91d6b088279443abf08285e225b29317d90c8e95 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Fri, 15 May 2015 15:31:29 -0400 Subject: additional debugging code for the problem with rendering too-complex avatars --- indra/newview/lldrawpoolavatar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview/lldrawpoolavatar.cpp') diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index e58c2c1037..706918273f 100755 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -1244,7 +1244,7 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass) return; } - BOOL impostor = avatarp->isImpostor() && !single_avatar; + BOOL impostor = (avatarp->isImpostor() || avatarp->isTooComplex()) && !single_avatar; if (impostor && pass != 0) { //don't draw anything but the impostor for impostored avatars -- cgit v1.2.3 From 0dba9289203080fe420d3112a8c3f0a01a2450dd Mon Sep 17 00:00:00 2001 From: Drake Arconis Date: Tue, 30 Jun 2015 10:48:34 -0400 Subject: Fix impostors. --- indra/newview/lldrawpoolavatar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview/lldrawpoolavatar.cpp') diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index 706918273f..e58c2c1037 100755 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -1244,7 +1244,7 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass) return; } - BOOL impostor = (avatarp->isImpostor() || avatarp->isTooComplex()) && !single_avatar; + BOOL impostor = avatarp->isImpostor() && !single_avatar; if (impostor && pass != 0) { //don't draw anything but the impostor for impostored avatars -- cgit v1.2.3 From 2ee30986cdf79813add265cfc678f96461b52107 Mon Sep 17 00:00:00 2001 From: vyacheslavsproductengine Date: Thu, 10 Sep 2015 22:31:06 +0300 Subject: MAINT-5022 FIXED (don't perform material if an avatar isTooComplex()) [QuickGraphics] Materials should not be applied to simple imposters. --- indra/newview/lldrawpoolavatar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview/lldrawpoolavatar.cpp') diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index 42a23faa49..6d98c2feda 100755 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -1265,7 +1265,7 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass) if (impostor) { - if (LLPipeline::sRenderDeferred && !LLPipeline::sReflectionRender && avatarp->mImpostor.isComplete()) + if (LLPipeline::sRenderDeferred && !LLPipeline::sReflectionRender && avatarp->mImpostor.isComplete() && !avatarp->isTooComplex()) { if (normal_channel > -1) { -- cgit v1.2.3 From ae7d13ff2c6c6778509d463e2d8fffa40f4d143c Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Wed, 23 Sep 2015 11:38:11 -0400 Subject: revert change for MAINT-5022; it is causing other rendering problems that are worse (it looks like reflections or shinyness on all muted avatars, and the colors become very very dark) --- indra/newview/lldrawpoolavatar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview/lldrawpoolavatar.cpp') diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index 6d98c2feda..42a23faa49 100755 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -1265,7 +1265,7 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass) if (impostor) { - if (LLPipeline::sRenderDeferred && !LLPipeline::sReflectionRender && avatarp->mImpostor.isComplete() && !avatarp->isTooComplex()) + if (LLPipeline::sRenderDeferred && !LLPipeline::sReflectionRender && avatarp->mImpostor.isComplete()) { if (normal_channel > -1) { -- cgit v1.2.3 From c8726aba303bcf1207b730a344536e25491420bc Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Tue, 10 Nov 2015 09:48:56 -0500 Subject: remove execute permission from many files that should not have it --- indra/newview/lldrawpoolavatar.cpp | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 indra/newview/lldrawpoolavatar.cpp (limited to 'indra/newview/lldrawpoolavatar.cpp') diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp old mode 100755 new mode 100644 -- cgit v1.2.3 From d4cb7f450d3173a3b40d352ec52f8d82036266b2 Mon Sep 17 00:00:00 2001 From: ruslantproductengine Date: Fri, 19 Feb 2016 18:03:34 +0200 Subject: MAINT-5022 [QuickGraphics] Materials should not be applied to simple imposters Fixe based on that texture with assetd id: "3b39cc01-c2d1-e194-1181-e4404978b20c" will exist on data server. --- indra/newview/lldrawpoolavatar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview/lldrawpoolavatar.cpp') diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index 6693c5e033..c200ecfaf8 100755 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -1804,7 +1804,7 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow) { //order is important here LLRender::DIFFUSE_MAP should be last, becouse it change //(gGL).mCurrTextureUnitIndex - gGL.getTexUnit(specular_channel)->bind(face->getTexture(LLRender::SPECULAR_MAP)); + gGL.getTexUnit(specular_channel)->bind(LLPipeline::sImpostorRender ? LLViewerTextureManager::findTexture(IMG_BLACK_SQUARE_MALEVICH) : face->getTexture(LLRender::SPECULAR_MAP)); gGL.getTexUnit(normal_channel)->bind(face->getTexture(LLRender::NORMAL_MAP)); gGL.getTexUnit(sDiffuseChannel)->bind(face->getTexture(LLRender::DIFFUSE_MAP), false, true); -- cgit v1.2.3 From 0ffc4f2667806653d1f0548fdda7eb91bdea5025 Mon Sep 17 00:00:00 2001 From: ruslantproductengine Date: Wed, 2 Mar 2016 18:35:43 +0200 Subject: MAINT-5700 [QuickGraphics-RC] Blocked avatars should always be derendered --- indra/newview/lldrawpoolavatar.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'indra/newview/lldrawpoolavatar.cpp') diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index c200ecfaf8..63e4abb308 100755 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -472,7 +472,9 @@ void LLDrawPoolAvatar::renderShadow(S32 pass) } BOOL impostor = avatarp->isImpostor(); - if (impostor) + if (impostor + && LLVOAvatar::AV_DO_NOT_RENDER != avatarp->getVisualMuteSettings() + && LLVOAvatar::AV_ALWAYS_RENDER != avatarp->getVisualMuteSettings()) { return; } @@ -1246,7 +1248,9 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass) BOOL impostor = avatarp->isImpostor() && !single_avatar; - if (impostor && pass != 0) + if (( avatarp->isInMuteList() + || impostor + || (LLVOAvatar::AV_DO_NOT_RENDER == avatarp->getVisualMuteSettings() && !avatarp->needsImpostorUpdate()) ) && pass != 0) { //don't draw anything but the impostor for impostored avatars return; } @@ -1263,7 +1267,7 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass) LLVOAvatar::sNumVisibleAvatars++; } - if (impostor) + if (impostor || (LLVOAvatar::AV_DO_NOT_RENDER == avatarp->getVisualMuteSettings() && !avatarp->needsImpostorUpdate())) { if (LLPipeline::sRenderDeferred && !LLPipeline::sReflectionRender && avatarp->mImpostor.isComplete()) { -- cgit v1.2.3 From ded162be6084e77dd4d4cb13a62d6e2303507dac Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Tue, 22 Mar 2016 16:30:59 -0400 Subject: fix merge error for specular rendering on impostors --- indra/newview/lldrawpoolavatar.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'indra/newview/lldrawpoolavatar.cpp') diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index 63e4abb308..d4f37e51ef 100644 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -1808,7 +1808,25 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow) { //order is important here LLRender::DIFFUSE_MAP should be last, becouse it change //(gGL).mCurrTextureUnitIndex - gGL.getTexUnit(specular_channel)->bind(LLPipeline::sImpostorRender ? LLViewerTextureManager::findTexture(IMG_BLACK_SQUARE_MALEVICH) : face->getTexture(LLRender::SPECULAR_MAP)); + LLViewerTexture* specular = NULL; + if (LLPipeline::sImpostorRender) + { + std::vector found; + LLViewerTextureManager::findFetchedTextures(IMG_BLACK_SQUARE, found); + if (1 <= found.size()) + { + specular = found[0]; + } + } + else + { + specular = face->getTexture(LLRender::SPECULAR_MAP); + } + if (specular) + { + gGL.getTexUnit(specular_channel)->bind(specular); + } + gGL.getTexUnit(normal_channel)->bind(face->getTexture(LLRender::NORMAL_MAP)); gGL.getTexUnit(sDiffuseChannel)->bind(face->getTexture(LLRender::DIFFUSE_MAP), false, true); -- cgit v1.2.3 From 503dc6ee656bdf579107ff9712ae8e960dd91100 Mon Sep 17 00:00:00 2001 From: ruslantproductengine Date: Thu, 21 Apr 2016 12:47:49 +0300 Subject: MAINT-6317 [QuickGraphics-RC] Some rigged mesh attachments render fully on jellybaby avatars when ALM is enabled FIXED - remove global identifier for the black texture - add black texture 2x2x3 localy on apllication startup - add special flag to LLViewerFetchedTexture for protect from removing --- indra/newview/lldrawpoolavatar.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'indra/newview/lldrawpoolavatar.cpp') diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index d4f37e51ef..f44e19dbe4 100644 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -50,6 +50,7 @@ #include "llrendersphere.h" #include "llviewerpartsim.h" #include "llviewercontrol.h" // for gSavedSettings +#include "llviewertexturelist.h" static U32 sDataMask = LLDrawPoolAvatar::VERTEX_DATA_MASK; static U32 sBufferUsage = GL_STREAM_DRAW_ARB; @@ -63,6 +64,7 @@ BOOL LLDrawPoolAvatar::sSkipTransparent = FALSE; S32 LLDrawPoolAvatar::sDiffuseChannel = 0; F32 LLDrawPoolAvatar::sMinimumAlpha = 0.2f; +LLUUID gBlackSquareID; static bool is_deferred_render = false; static bool is_post_deferred_render = false; @@ -1811,12 +1813,8 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow) LLViewerTexture* specular = NULL; if (LLPipeline::sImpostorRender) { - std::vector found; - LLViewerTextureManager::findFetchedTextures(IMG_BLACK_SQUARE, found); - if (1 <= found.size()) - { - specular = found[0]; - } + specular = LLViewerTextureManager::findFetchedTexture(gBlackSquareID, TEX_LIST_DISCARD); + llassert(NULL != specular); } else { -- cgit v1.2.3 From 7f077a5e3a34e68fc8e209884fa9a1d15c57e740 Mon Sep 17 00:00:00 2001 From: ruslantproductengine Date: Thu, 21 Apr 2016 22:09:40 +0300 Subject: MAINT-6326 [QuickGraphics-RC] Blingposter avatars are all full bright white when basic shaders are disabled. --- indra/newview/lldrawpoolavatar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview/lldrawpoolavatar.cpp') diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index f44e19dbe4..d1944856cb 100644 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -1282,7 +1282,7 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass) avatarp->mImpostor.bindTexture(1, specular_channel); } } - avatarp->renderImpostor(LLColor4U(255,255,255,255), sDiffuseChannel); + avatarp->renderImpostor(avatarp->getMutedAVColor(), sDiffuseChannel); } return; } -- cgit v1.2.3