diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp index dc52ff4f6a..6caecb9dab 100644 --- a/indra/newview/lldrawpoolalpha.cpp +++ b/indra/newview/lldrawpoolalpha.cpp @@ -52,6 +52,7 @@ #include "fsperfstats.h" // performance stats support BOOL LLDrawPoolAlpha::sShowDebugAlpha = FALSE; +BOOL LLDrawPoolAlpha::sShowDebugAlphaRigged = FALSE; #define current_shader (LLGLSLShader::sCurBoundShaderPtr) @@ -300,15 +301,17 @@ void LLDrawPoolAlpha::renderDebugAlpha() gGL.diffuseColor4f(0, 1, 0, 1); pushBatches(LLRenderPass::PASS_INVISIBLE, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, FALSE); - + // FIRE-32132 et al. Allow rigged mesh transparency highlights to be toggled + if (sShowDebugAlphaRigged) + { + // gHighlightProgram.mRiggedVariant->bind(); - gGL.diffuseColor4f(1, 0, 0, 1); - + gGL.diffuseColor4f(0, 1, 0, 1);// FIRE-32132 et al. (can plain PASS_ALPHA_MASK_RIGGED exist?) paint it green if so. pushRiggedBatches(LLRenderPass::PASS_ALPHA_MASK_RIGGED, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, FALSE); pushRiggedBatches(LLRenderPass::PASS_ALPHA_INVISIBLE_RIGGED, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, FALSE); // Material alpha mask - gGL.diffuseColor4f(0, 0, 1, 1); + gGL.diffuseColor4f(0, 1, 1, 1);// FIRE-32132 et al. Allow rigged mesh transparency highlights to be toggled pushRiggedBatches(LLRenderPass::PASS_MATERIAL_ALPHA_MASK_RIGGED, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, FALSE); pushRiggedBatches(LLRenderPass::PASS_NORMMAP_MASK_RIGGED, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, FALSE); pushRiggedBatches(LLRenderPass::PASS_SPECMAP_MASK_RIGGED, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, FALSE); @@ -317,6 +320,9 @@ void LLDrawPoolAlpha::renderDebugAlpha() gGL.diffuseColor4f(0, 1, 0, 1); pushRiggedBatches(LLRenderPass::PASS_INVISIBLE_RIGGED, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, FALSE); + // FIRE-32132 et al. Allow rigged mesh transparency highlights to be toggled + } + // LLGLSLShader::sCurBoundShaderPtr->unbind(); } } @@ -344,16 +350,6 @@ void LLDrawPoolAlpha::renderAlphaHighlight(U32 mask) for (LLSpatialGroup::drawmap_elem_t::iterator k = draw_info.begin(); k != draw_info.end(); ++k) { LLDrawInfo& params = **k; - // Capture render times - if(params.mFace) - { - LLViewerObject* vobj = (LLViewerObject *)params.mFace->getViewerObject(); - if(vobj->isAttachment()) - { - trackAttachments( vobj, params.mFace->isState(LLFace::RIGGED), &ratPtr ); - } - } - // if (params.mParticle) { @@ -361,7 +357,30 @@ void LLDrawPoolAlpha::renderAlphaHighlight(U32 mask) } bool rigged = (params.mAvatar != nullptr); + // Capture render times + if(params.mFace) + { + LLViewerObject* vobj = (LLViewerObject *)params.mFace->getViewerObject(); + if(vobj->isAttachment()) + { + trackAttachments( vobj, rigged, &ratPtr ); + } + } + // gHighlightProgram.bind(rigged); + // FIRE-32132 et al. Allow rigged mesh transparency highlights to be toggled + if (rigged && !sShowDebugAlphaRigged) + { + // if we don't want to show rigged alpha highlights then skip + continue; + } + else if (rigged && sShowDebugAlphaRigged) + { + // if we do and this is rigged then use a different colour + gGL.diffuseColor4f(1, 0.5, 0, 1); + } + else // NB dangling else to drop through to "normal behaviour" + // gGL.diffuseColor4f(1, 0, 0, 1); if (rigged) diff --git a/indra/newview/lldrawpoolalpha.h b/indra/newview/lldrawpoolalpha.h index fa8ef0f227..c6ea0045cb 100644 --- a/indra/newview/lldrawpoolalpha.h +++ b/indra/newview/lldrawpoolalpha.h @@ -66,6 +66,7 @@ public: bool uploadMatrixPalette(const LLDrawInfo& params); static BOOL sShowDebugAlpha; + static BOOL sShowDebugAlphaRigged; private: LLGLSLShader* target_shader; diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 6684b4f69d..c908da3d7e 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -11000,6 +11000,26 @@ class LLViewCheckHighlightTransparent : public view_listener_t return new_value; } }; +// FIRE-32132 et al. Allow rigged mesh transparency highlights to be toggled +class LLViewHighlightTransparentRigged : public view_listener_t +{ + bool handleEvent(const LLSD& userdata) + { + LLDrawPoolAlpha::sShowDebugAlphaRigged = !LLDrawPoolAlpha::sShowDebugAlphaRigged; + gPipeline.resetVertexBuffers(); + return true; + } +}; + +class LLViewCheckHighlightTransparentRigged : public view_listener_t +{ + bool handleEvent(const LLSD& userdata) + { + bool new_value = LLDrawPoolAlpha::sShowDebugAlphaRigged; + return new_value; + } +}; +// class LLViewBeaconWidth : public view_listener_t { @@ -12022,6 +12042,7 @@ void initialize_menus() view_listener_t::addMenu(new LLViewLookAtLastChatter(), "View.LookAtLastChatter"); view_listener_t::addMenu(new LLViewShowHoverTips(), "View.ShowHoverTips"); view_listener_t::addMenu(new LLViewHighlightTransparent(), "View.HighlightTransparent"); + view_listener_t::addMenu(new LLViewHighlightTransparentRigged(), "View.HighlightTransparentRigged"); // FIRE-32132 et al. Allow rigged mesh transparency highlights to be toggled view_listener_t::addMenu(new LLViewToggleRenderType(), "View.ToggleRenderType"); view_listener_t::addMenu(new LLViewShowHUDAttachments(), "View.ShowHUDAttachments"); view_listener_t::addMenu(new LLZoomer(1.2f), "View.ZoomOut"); @@ -12038,6 +12059,7 @@ void initialize_menus() view_listener_t::addMenu(new LLViewCheckJoystickFlycam(), "View.CheckJoystickFlycam"); view_listener_t::addMenu(new LLViewCheckShowHoverTips(), "View.CheckShowHoverTips"); view_listener_t::addMenu(new LLViewCheckHighlightTransparent(), "View.CheckHighlightTransparent"); + view_listener_t::addMenu(new LLViewCheckHighlightTransparentRigged(), "View.CheckHighlightTransparentRigged");// FIRE-32132 et al. Allow rigged mesh transparency highlights to be toggled view_listener_t::addMenu(new LLViewCheckRenderType(), "View.CheckRenderType"); view_listener_t::addMenu(new LLViewStatusAway(), "View.Status.CheckAway"); view_listener_t::addMenu(new LLViewStatusDoNotDisturb(), "View.Status.CheckDoNotDisturb"); diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index b3af6637e9..40e637c5d6 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -2971,6 +2971,16 @@ + + + +