From deffbca3ee209f6aea3358692d9ca6dc7090e748 Mon Sep 17 00:00:00 2001 From: Dave Parks Date: Thu, 28 Apr 2022 15:51:31 +0000 Subject: SL-17281 environment map prototype (stupid slow and hacky, but provides a way to get a "real" environment map for shader development) --- indra/newview/llviewermenu.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index e3de4267dc..f5ea060e82 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -8304,6 +8304,12 @@ void handle_cache_clear_immediately() LLNotificationsUtil::add("ConfirmClearCache", LLSD(), LLSD(), callback_clear_cache_immediately); } +void handle_override_environment_map() +{ + gPipeline.overrideEnvironmentMap(); +} + + void handle_web_content_test(const LLSD& param) { std::string url = param.asString(); @@ -9402,6 +9408,8 @@ void initialize_menus() view_listener_t::addMenu(new LLDevelopTextureFetchDebugger(), "Develop.SetTexFetchDebugger"); //Develop (clear cache immediately) commit.add("Develop.ClearCache", boost::bind(&handle_cache_clear_immediately) ); + //Develop (override environment map) + commit.add("Develop.OverrideEnvironmentMap", boost::bind(&handle_override_environment_map)); // Admin >Object view_listener_t::addMenu(new LLAdminForceTakeCopy(), "Admin.ForceTakeCopy"); -- cgit v1.2.3 From 3400e5fd302c0d9dea6386c4d5bf38876f2cc287 Mon Sep 17 00:00:00 2001 From: Dave Parks Date: Mon, 16 May 2022 17:21:08 +0000 Subject: SL-17284 Reflection probe tuning and optimization take 1 --- indra/newview/llviewermenu.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index f5ea060e82..8732bde35c 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -1081,6 +1081,10 @@ U64 info_display_from_string(std::string info_display) { return LLPipeline::RENDER_DEBUG_IMPOSTORS; } + else if ("reflection probes" == info_display) + { + return LLPipeline::RENDER_DEBUG_REFLECTION_PROBES; + } else { LL_WARNS() << "unrecognized feature name '" << info_display << "'" << LL_ENDL; @@ -8304,9 +8308,9 @@ void handle_cache_clear_immediately() LLNotificationsUtil::add("ConfirmClearCache", LLSD(), LLSD(), callback_clear_cache_immediately); } -void handle_override_environment_map() +void handle_rebuild_reflection_probes() { - gPipeline.overrideEnvironmentMap(); + gPipeline.mReflectionMapManager.rebuild(); } @@ -9409,7 +9413,7 @@ void initialize_menus() //Develop (clear cache immediately) commit.add("Develop.ClearCache", boost::bind(&handle_cache_clear_immediately) ); //Develop (override environment map) - commit.add("Develop.OverrideEnvironmentMap", boost::bind(&handle_override_environment_map)); + commit.add("Develop.RebuildReflectionProbes", boost::bind(&handle_rebuild_reflection_probes)); // Admin >Object view_listener_t::addMenu(new LLAdminForceTakeCopy(), "Admin.ForceTakeCopy"); -- cgit v1.2.3 From dfa71e2bb59e81de93f626fada6975ae46b01bb6 Mon Sep 17 00:00:00 2001 From: Dave Parks Date: Tue, 31 May 2022 11:57:15 -0500 Subject: SL-17490 Only update a subset of textures each frame and remove dead debug code. --- indra/newview/llviewermenu.cpp | 10 ---------- 1 file changed, 10 deletions(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index e3de4267dc..d95948ac04 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2519,14 +2519,6 @@ class LLDevelopSetLoggingLevel : public view_listener_t } }; -class LLDevelopTextureFetchDebugger : public view_listener_t -{ - bool handleEvent(const LLSD& userdata) - { - return gSavedSettings.getBOOL("TextureFetchDebuggerEnabled"); - } -}; - ////////////////// // ADMIN MENU // ////////////////// @@ -9398,8 +9390,6 @@ void initialize_menus() view_listener_t::addMenu(new LLDevelopCheckLoggingLevel(), "Develop.CheckLoggingLevel"); view_listener_t::addMenu(new LLDevelopSetLoggingLevel(), "Develop.SetLoggingLevel"); - //Develop (Texture Fetch Debug Console) - view_listener_t::addMenu(new LLDevelopTextureFetchDebugger(), "Develop.SetTexFetchDebugger"); //Develop (clear cache immediately) commit.add("Develop.ClearCache", boost::bind(&handle_cache_clear_immediately) ); -- cgit v1.2.3 From 8c0163bcb48df56112a625550d411741c20c5846 Mon Sep 17 00:00:00 2001 From: Dave Houlton Date: Wed, 13 Apr 2022 12:32:58 -0600 Subject: SL-17214 initial loader class skeleton --- indra/newview/llviewermenu.cpp | 5 ----- 1 file changed, 5 deletions(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 8732bde35c..9c8a666185 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -267,16 +267,11 @@ void handle_reset_view(); void handle_duplicate_in_place(void*); - void handle_object_owner_self(void*); void handle_object_owner_permissive(void*); void handle_object_lock(void*); void handle_object_asset_ids(void*); void force_take_copy(void*); -#ifdef _CORY_TESTING -void force_export_copy(void*); -void force_import_geometry(void*); -#endif void handle_force_parcel_owner_to_me(void*); void handle_force_parcel_to_content(void*); -- cgit v1.2.3 From 0d9c23372bf8b34387b7d9de89234d3e9a5fd879 Mon Sep 17 00:00:00 2001 From: Dave Parks Date: Thu, 9 Jun 2022 14:09:33 -0500 Subject: SL-17551 Add "Select Reflection Probes" menu option and make invisible objects less annoying when alt-zooming in edit mode. --- indra/newview/llviewermenu.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 9c8a666185..b99299528c 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -7971,6 +7971,18 @@ class LLToolsSelectOnlyMovableObjects : public view_listener_t } }; +class LLToolsSelectReflectionProbes : public view_listener_t +{ + bool handleEvent(const LLSD& userdata) + { + BOOL cur_val = gSavedSettings.getBOOL("SelectReflectionProbes"); + + gSavedSettings.setBOOL("SelectReflectionProbes", !cur_val); + + return true; + } +}; + class LLToolsSelectBySurrounding : public view_listener_t { bool handleEvent(const LLSD& userdata) @@ -9200,6 +9212,7 @@ void initialize_menus() view_listener_t::addMenu(new LLToolsSelectTool(), "Tools.SelectTool"); view_listener_t::addMenu(new LLToolsSelectOnlyMyObjects(), "Tools.SelectOnlyMyObjects"); view_listener_t::addMenu(new LLToolsSelectOnlyMovableObjects(), "Tools.SelectOnlyMovableObjects"); + view_listener_t::addMenu(new LLToolsSelectReflectionProbes(), "Tools.SelectReflectionProbes"); view_listener_t::addMenu(new LLToolsSelectBySurrounding(), "Tools.SelectBySurrounding"); view_listener_t::addMenu(new LLToolsShowHiddenSelection(), "Tools.ShowHiddenSelection"); view_listener_t::addMenu(new LLToolsShowSelectionLightRadius(), "Tools.ShowSelectionLightRadius"); -- cgit v1.2.3 From 03d85bfb33f53e658256d8bedcf0b4262226cf90 Mon Sep 17 00:00:00 2001 From: Dave Parks Date: Thu, 9 Jun 2022 19:43:21 -0500 Subject: SL-17573 Add "dynamic" checkbox, also followup on SL-17551 and do "Select Invisible Objects" checkbox instead of "Select Reflection Probes" --- indra/newview/llviewermenu.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index b99299528c..b7f94a7e0c 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -7971,13 +7971,13 @@ class LLToolsSelectOnlyMovableObjects : public view_listener_t } }; -class LLToolsSelectReflectionProbes : public view_listener_t +class LLToolsSelectInvisibleObjects : public view_listener_t { bool handleEvent(const LLSD& userdata) { - BOOL cur_val = gSavedSettings.getBOOL("SelectReflectionProbes"); + BOOL cur_val = gSavedSettings.getBOOL("SelectInvisibleObjects"); - gSavedSettings.setBOOL("SelectReflectionProbes", !cur_val); + gSavedSettings.setBOOL("SelectInvisibleObjects", !cur_val); return true; } @@ -9212,7 +9212,7 @@ void initialize_menus() view_listener_t::addMenu(new LLToolsSelectTool(), "Tools.SelectTool"); view_listener_t::addMenu(new LLToolsSelectOnlyMyObjects(), "Tools.SelectOnlyMyObjects"); view_listener_t::addMenu(new LLToolsSelectOnlyMovableObjects(), "Tools.SelectOnlyMovableObjects"); - view_listener_t::addMenu(new LLToolsSelectReflectionProbes(), "Tools.SelectReflectionProbes"); + view_listener_t::addMenu(new LLToolsSelectInvisibleObjects(), "Tools.SelectInvisibleObjects"); view_listener_t::addMenu(new LLToolsSelectBySurrounding(), "Tools.SelectBySurrounding"); view_listener_t::addMenu(new LLToolsShowHiddenSelection(), "Tools.ShowHiddenSelection"); view_listener_t::addMenu(new LLToolsShowSelectionLightRadius(), "Tools.ShowSelectionLightRadius"); -- cgit v1.2.3 From 963566821d95d30856cd028983d929fab89f542a Mon Sep 17 00:00:00 2001 From: Dave Parks Date: Mon, 8 Aug 2022 14:55:15 -0500 Subject: SL-17927 Keep people from shooting themselves in the foot by twiddling deprecated settings. --- indra/newview/llviewermenu.cpp | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 69347ae4ce..6aa1c5fece 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2347,21 +2347,6 @@ class LLAdvancedEnableRenderDeferred: public view_listener_t } }; -///////////////////////////////////// -// Enable Deferred Rendering sub-options -///////////////////////////////////// -class LLAdvancedEnableRenderDeferredOptions: public view_listener_t -{ - bool handleEvent(const LLSD& userdata) - { - bool new_value = gGLManager.mHasFramebufferObject && LLViewerShaderMgr::instance()->getShaderLevel(LLViewerShaderMgr::SHADER_WINDLIGHT) > 1 && - LLViewerShaderMgr::instance()->getShaderLevel(LLViewerShaderMgr::SHADER_AVATAR) > 0 && gSavedSettings.getBOOL("RenderDeferred"); - return new_value; - } -}; - - - ////////////////// // ADMIN STATUS // ////////////////// @@ -9354,9 +9339,7 @@ void initialize_menus() view_listener_t::addMenu(new LLAdvancedCheckWireframe(), "Advanced.CheckWireframe"); // Develop > Render view_listener_t::addMenu(new LLAdvancedEnableObjectObjectOcclusion(), "Advanced.EnableObjectObjectOcclusion"); - view_listener_t::addMenu(new LLAdvancedEnableRenderFBO(), "Advanced.EnableRenderFBO"); - view_listener_t::addMenu(new LLAdvancedEnableRenderDeferred(), "Advanced.EnableRenderDeferred"); - view_listener_t::addMenu(new LLAdvancedEnableRenderDeferredOptions(), "Advanced.EnableRenderDeferredOptions"); + view_listener_t::addMenu(new LLAdvancedToggleRandomizeFramerate(), "Advanced.ToggleRandomizeFramerate"); view_listener_t::addMenu(new LLAdvancedCheckRandomizeFramerate(), "Advanced.CheckRandomizeFramerate"); view_listener_t::addMenu(new LLAdvancedTogglePeriodicSlowFrame(), "Advanced.TogglePeriodicSlowFrame"); -- cgit v1.2.3 From 8dc59e5ef37836b15d478fb0d04e3043a9f986de Mon Sep 17 00:00:00 2001 From: Dave Parks Date: Fri, 16 Sep 2022 16:25:26 -0500 Subject: SL-18128 Clear out much OpenGL cruft and switch to core profile on AMD --- indra/newview/llviewermenu.cpp | 40 ---------------------------------------- 1 file changed, 40 deletions(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index dd82d43ab2..f10cb329a9 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2309,44 +2309,6 @@ class LLAdvancedCheckViewAdminOptions : public view_listener_t } }; -///////////////////////////////////// -// Enable Object Object Occlusion /// -///////////////////////////////////// -class LLAdvancedEnableObjectObjectOcclusion: public view_listener_t -{ - bool handleEvent(const LLSD& userdata) - { - - bool new_value = gGLManager.mHasOcclusionQuery; // && LLFeatureManager::getInstance()->isFeatureAvailable(userdata.asString()); - return new_value; -} -}; - -///////////////////////////////////// -// Enable Framebuffer Objects /// -///////////////////////////////////// -class LLAdvancedEnableRenderFBO: public view_listener_t -{ - bool handleEvent(const LLSD& userdata) - { - bool new_value = gGLManager.mHasFramebufferObject; - return new_value; - } -}; - -///////////////////////////////////// -// Enable Deferred Rendering /// -///////////////////////////////////// -class LLAdvancedEnableRenderDeferred: public view_listener_t -{ - bool handleEvent(const LLSD& userdata) - { - bool new_value = gGLManager.mHasFramebufferObject && LLViewerShaderMgr::instance()->getShaderLevel(LLViewerShaderMgr::SHADER_WINDLIGHT) > 1 && - LLViewerShaderMgr::instance()->getShaderLevel(LLViewerShaderMgr::SHADER_AVATAR) > 0; - return new_value; - } -}; - ////////////////// // ADMIN STATUS // ////////////////// @@ -9367,8 +9329,6 @@ void initialize_menus() view_listener_t::addMenu(new LLAdvancedToggleWireframe(), "Advanced.ToggleWireframe"); view_listener_t::addMenu(new LLAdvancedCheckWireframe(), "Advanced.CheckWireframe"); // Develop > Render - view_listener_t::addMenu(new LLAdvancedEnableObjectObjectOcclusion(), "Advanced.EnableObjectObjectOcclusion"); - view_listener_t::addMenu(new LLAdvancedToggleRandomizeFramerate(), "Advanced.ToggleRandomizeFramerate"); view_listener_t::addMenu(new LLAdvancedCheckRandomizeFramerate(), "Advanced.CheckRandomizeFramerate"); view_listener_t::addMenu(new LLAdvancedTogglePeriodicSlowFrame(), "Advanced.TogglePeriodicSlowFrame"); -- cgit v1.2.3 From a2b09df2db69ba8a2e6b587d839d509fbe5abebb Mon Sep 17 00:00:00 2001 From: Dave Parks Date: Fri, 14 Oct 2022 15:52:44 -0500 Subject: SL-18293 Fix for broken wireframe mode. --- indra/newview/llviewermenu.cpp | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 1842c434e7..31c629fae8 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -1210,6 +1210,7 @@ class LLAdvancedCheckFrameTest : public view_listener_t /////////////////////////// // SELECTED TEXTURE INFO // +// /////////////////////////// @@ -1231,24 +1232,6 @@ class LLAdvancedToggleWireframe : public view_listener_t bool handleEvent(const LLSD& userdata) { gUseWireframe = !(gUseWireframe); - gWindowResized = TRUE; - - LLPipeline::updateRenderDeferred(); - - if (gUseWireframe) - { - gInitialDeferredModeForWireframe = LLPipeline::sRenderDeferred; - } - - gPipeline.resetVertexBuffers(); - - if (!gUseWireframe && !gInitialDeferredModeForWireframe && LLPipeline::sRenderDeferred != bool(gInitialDeferredModeForWireframe) && gPipeline.isInit()) - { - LLPipeline::refreshCachedSettings(); - gPipeline.releaseGLBuffers(); - gPipeline.createGLBuffers(); - LLViewerShaderMgr::instance()->setShaders(); - } return true; } @@ -1258,8 +1241,7 @@ class LLAdvancedCheckWireframe : public view_listener_t { bool handleEvent(const LLSD& userdata) { - bool new_value = gUseWireframe; - return new_value; + return gUseWireframe; } }; -- cgit v1.2.3 From a27e701530e3498f71b828d7639024330cd0ccb7 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Mon, 17 Oct 2022 23:33:27 +0300 Subject: SL-18008 Add Save and Edit buttons to right click menu for materials --- indra/newview/llviewermenu.cpp | 159 +++++++++++++++++++++++++++++++++-------- 1 file changed, 131 insertions(+), 28 deletions(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 31c629fae8..8a92d9062f 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -92,6 +92,7 @@ #include "llpanelblockedlist.h" #include "llpanelmaininventory.h" #include "llmarketplacefunctions.h" +#include "llmaterialeditor.h" #include "llmenuoptionpathfindingrebakenavmesh.h" #include "llmoveview.h" #include "llnavigationbar.h" @@ -2781,6 +2782,50 @@ void handle_object_open() LLFloaterReg::showInstance("openobject"); } +bool enable_object_edit_gltf_material() +{ + struct LLSelectedTEGetmatId : public LLSelectedTEGetFunctor + { + LLSelectedTEGetmatId() : mCanModify(true) {} + LLUUID get(LLViewerObject* object, S32 te_index) + { + mCanModify &= (bool)object->permModify(); + // Todo: probabnly should compare material + // pointers instead + return object->getRenderMaterialID(te_index); + } + bool mCanModify; + } func; + LLUUID mat_id; + bool identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue(&func, mat_id); + LL_INFOS() << " Placeholder " << identical << " " << mat_id << LL_ENDL; + // Todo: this is a placeholder for overrides, + // it will have to make sure all selection is identical + return func.mCanModify; +} + +bool enable_object_save_gltf_material() +{ + struct LLSelectedTEGetmatId : public LLSelectedTEGetFunctor + { + LLSelectedTEGetmatId() : mCanCopy(true) {} + LLUUID get(LLViewerObject* object, S32 te_index) + { + mCanCopy &= (bool)object->permCopy(); + // permTransfer probably should be passed to editor instead + mCanCopy &= (bool)object->permTransfer(); + return object->getRenderMaterialID(te_index); + } + bool mCanCopy; + } func; + LLUUID mat_id; + bool identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue(&func, mat_id); + LL_INFOS() << " Placeholder " << identical << " " << mat_id << LL_ENDL; + // Todo: this is a placeholder for overrides, + // it will have to make sure all selection is identical + return func.mCanCopy; +} + bool enable_object_open() { // Look for contents in root object, which is all the LLFloaterOpenObject @@ -2846,37 +2891,42 @@ class LLObjectBuild : public view_listener_t } }; -void handle_object_edit() +void update_camera() { - LLViewerParcelMgr::getInstance()->deselectLand(); + LLViewerParcelMgr::getInstance()->deselectLand(); - if (gAgentCamera.getFocusOnAvatar() && !LLToolMgr::getInstance()->inEdit()) - { - LLFloaterTools::sPreviousFocusOnAvatar = true; - LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection(); + if (gAgentCamera.getFocusOnAvatar() && !LLToolMgr::getInstance()->inEdit()) + { + LLFloaterTools::sPreviousFocusOnAvatar = true; + LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection(); + + if (selection->getSelectType() == SELECT_TYPE_HUD || !gSavedSettings.getBOOL("EditCameraMovement")) + { + // always freeze camera in space, even if camera doesn't move + // so, for example, follow cam scripts can't affect you when in build mode + gAgentCamera.setFocusGlobal(gAgentCamera.calcFocusPositionTargetGlobal(), LLUUID::null); + gAgentCamera.setFocusOnAvatar(FALSE, ANIMATE); + } + else + { + gAgentCamera.setFocusOnAvatar(FALSE, ANIMATE); + LLViewerObject* selected_objectp = selection->getFirstRootObject(); + if (selected_objectp) + { + // zoom in on object center instead of where we clicked, as we need to see the manipulator handles + gAgentCamera.setFocusGlobal(selected_objectp->getPositionGlobal(), selected_objectp->getID()); + gAgentCamera.cameraZoomIn(0.666f); + gAgentCamera.cameraOrbitOver(30.f * DEG_TO_RAD); + gViewerWindow->moveCursorToCenter(); + } + } + } +} + +void handle_object_edit() +{ + update_camera(); - if (selection->getSelectType() == SELECT_TYPE_HUD || !gSavedSettings.getBOOL("EditCameraMovement")) - { - // always freeze camera in space, even if camera doesn't move - // so, for example, follow cam scripts can't affect you when in build mode - gAgentCamera.setFocusGlobal(gAgentCamera.calcFocusPositionTargetGlobal(), LLUUID::null); - gAgentCamera.setFocusOnAvatar(FALSE, ANIMATE); - } - else - { - gAgentCamera.setFocusOnAvatar(FALSE, ANIMATE); - LLViewerObject* selected_objectp = selection->getFirstRootObject(); - if (selected_objectp) - { - // zoom in on object center instead of where we clicked, as we need to see the manipulator handles - gAgentCamera.setFocusGlobal(selected_objectp->getPositionGlobal(), selected_objectp->getID()); - gAgentCamera.cameraZoomIn(0.666f); - gAgentCamera.cameraOrbitOver( 30.f * DEG_TO_RAD ); - gViewerWindow->moveCursorToCenter(); - } - } - } - LLFloaterReg::showInstance("build"); LLToolMgr::getInstance()->setCurrentToolset(gBasicToolset); @@ -2890,6 +2940,54 @@ void handle_object_edit() return; } +void load_life_gltf_material(bool copy) +{ + LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection(); + // All materials are supposed to be identical, so pcik any node + LLViewerObject* object = selection->getFirstNode()->getObject(); + if (!object) + { + return; + } + + // This functionality is a plcaholder for overrides + // so id doesn't load object by id, but instead gets material directly + LLGLTFMaterial * mat = NULL; + + const S32 num_tes = llmin((S32)object->getNumTEs(), (S32)object->getNumFaces()); // avatars have TEs but no faces + for (S32 face = 0; face < num_tes; ++face) + { + LLTextureEntry *te = object->getTE(face); + if (te->isSelected()) + { + mat = te->getGLTFMaterial(); + break; + } + } + + if (mat == NULL) + { + return; + } + + update_camera(); + + LLMaterialEditor::loadLiveMaterial(mat, copy); + + LLViewerJoystick::getInstance()->moveObjects(true); + LLViewerJoystick::getInstance()->setNeedsReset(true); +} + +void handle_object_edit_gltf_material() +{ + load_life_gltf_material(false); +} + +void handle_object_save_gltf_material() +{ + load_life_gltf_material(true); +} + void handle_attachment_edit(const LLUUID& inv_item_id) { if (isAgentAvatarValid()) @@ -9560,10 +9658,15 @@ void initialize_menus() commit.add("Object.Buy", boost::bind(&handle_buy)); commit.add("Object.Edit", boost::bind(&handle_object_edit)); + commit.add("Object.Edit", boost::bind(&handle_object_edit)); + commit.add("Object.EditGLTFMaterial", boost::bind(&handle_object_edit_gltf_material)); + commit.add("Object.SaveGLTFMaterial", boost::bind(&handle_object_save_gltf_material)); commit.add("Object.Inspect", boost::bind(&handle_object_inspect)); commit.add("Object.Open", boost::bind(&handle_object_open)); commit.add("Object.Take", boost::bind(&handle_take)); commit.add("Object.ShowInspector", boost::bind(&handle_object_show_inspector)); + enable.add("Object.EnableEditGLTFMaterial", boost::bind(&enable_object_edit_gltf_material)); + enable.add("Object.EnableSaveGLTFMaterial", boost::bind(&enable_object_save_gltf_material)); enable.add("Object.EnableOpen", boost::bind(&enable_object_open)); enable.add("Object.EnableTouch", boost::bind(&enable_object_touch, _1)); enable.add("Object.EnableDelete", boost::bind(&enable_object_delete)); -- cgit v1.2.3 From 7be33594eaab6b9c0da863778bbdacdb8cbe7838 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Tue, 18 Oct 2022 20:12:38 +0300 Subject: SL-18008 Updated Save and Edit PBR buttons --- indra/newview/llviewermenu.cpp | 86 ++++++++++++++---------------------------- 1 file changed, 29 insertions(+), 57 deletions(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 8a92d9062f..ffa104230e 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2782,47 +2782,36 @@ void handle_object_open() LLFloaterReg::showInstance("openobject"); } -bool enable_object_edit_gltf_material() +struct LLSelectedTEGetmatIdAndPermissions : public LLSelectedTEGetFunctor { - struct LLSelectedTEGetmatId : public LLSelectedTEGetFunctor + LLSelectedTEGetmatIdAndPermissions() : mCanCopy(true), mCanModify(true), mCanTransfer(true) {} + LLUUID get(LLViewerObject* object, S32 te_index) { - LLSelectedTEGetmatId() : mCanModify(true) {} - LLUUID get(LLViewerObject* object, S32 te_index) - { - mCanModify &= (bool)object->permModify(); - // Todo: probabnly should compare material - // pointers instead - return object->getRenderMaterialID(te_index); - } - bool mCanModify; - } func; + mCanCopy &= (bool)object->permCopy(); + mCanTransfer &= (bool)object->permTransfer(); + mCanModify &= (bool)object->permModify(); + // return true if all ids are identical + return object->getRenderMaterialID(te_index); + } + bool mCanCopy; + bool mCanModify; + bool mCanTransfer; +}; + +bool enable_object_edit_gltf_material() +{ + LLSelectedTEGetmatIdAndPermissions func; LLUUID mat_id; - bool identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue(&func, mat_id); - LL_INFOS() << " Placeholder " << identical << " " << mat_id << LL_ENDL; - // Todo: this is a placeholder for overrides, - // it will have to make sure all selection is identical + LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue(&func, mat_id); + return func.mCanModify; } bool enable_object_save_gltf_material() { - struct LLSelectedTEGetmatId : public LLSelectedTEGetFunctor - { - LLSelectedTEGetmatId() : mCanCopy(true) {} - LLUUID get(LLViewerObject* object, S32 te_index) - { - mCanCopy &= (bool)object->permCopy(); - // permTransfer probably should be passed to editor instead - mCanCopy &= (bool)object->permTransfer(); - return object->getRenderMaterialID(te_index); - } - bool mCanCopy; - } func; + LLSelectedTEGetmatIdAndPermissions func; LLUUID mat_id; - bool identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue(&func, mat_id); - LL_INFOS() << " Placeholder " << identical << " " << mat_id << LL_ENDL; - // Todo: this is a placeholder for overrides, - // it will have to make sure all selection is identical + LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue(&func, mat_id); return func.mCanCopy; } @@ -2942,38 +2931,21 @@ void handle_object_edit() void load_life_gltf_material(bool copy) { - LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection(); - // All materials are supposed to be identical, so pcik any node - LLViewerObject* object = selection->getFirstNode()->getObject(); - if (!object) - { - return; - } + update_camera(); - // This functionality is a plcaholder for overrides - // so id doesn't load object by id, but instead gets material directly - LLGLTFMaterial * mat = NULL; + LLSelectedTEGetmatIdAndPermissions func; + LLUUID mat_id; + LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue(&func, mat_id); - const S32 num_tes = llmin((S32)object->getNumTEs(), (S32)object->getNumFaces()); // avatars have TEs but no faces - for (S32 face = 0; face < num_tes; ++face) + if (copy) { - LLTextureEntry *te = object->getTE(face); - if (te->isSelected()) - { - mat = te->getGLTFMaterial(); - break; - } + LLMaterialEditor::loadFromGLTFMaterial(mat_id); } - - if (mat == NULL) + else { - return; + LLMaterialEditor::loadLiveMaterial(mat_id); } - update_camera(); - - LLMaterialEditor::loadLiveMaterial(mat, copy); - LLViewerJoystick::getInstance()->moveObjects(true); LLViewerJoystick::getInstance()->setNeedsReset(true); } -- cgit v1.2.3 From 0b177c27a07344d81cb52806695b2348b6f33b0a Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Tue, 18 Oct 2022 22:08:27 +0300 Subject: SL-18008 Mac build fix --- indra/newview/llviewermenu.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index ffa104230e..4d04c6c85e 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2812,7 +2812,7 @@ bool enable_object_save_gltf_material() LLSelectedTEGetmatIdAndPermissions func; LLUUID mat_id; LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue(&func, mat_id); - return func.mCanCopy; + return func.mCanCopy && mat_id.notNull(); } bool enable_object_open() -- cgit v1.2.3 From 0cd7c3842119f1801872b4db05e17544b4eb7158 Mon Sep 17 00:00:00 2001 From: Dave Parks Date: Fri, 21 Oct 2022 18:05:19 -0500 Subject: SL-18105 Hook up live material editor to current selection set and implicitly open build floater when editing a PBR material. --- indra/newview/llviewermenu.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 5cb63426a8..47b355e554 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2970,7 +2970,7 @@ void load_life_gltf_material(bool copy) } else { - LLMaterialEditor::loadLiveMaterial(mat_id); + LLMaterialEditor::loadLiveMaterialEditor(); } LLViewerJoystick::getInstance()->moveObjects(true); @@ -2979,7 +2979,8 @@ void load_life_gltf_material(bool copy) void handle_object_edit_gltf_material() { - load_life_gltf_material(false); + handle_object_edit(); + LLMaterialEditor::loadLiveMaterialEditor(); } void handle_object_save_gltf_material() -- cgit v1.2.3 From 88659e9fe793a02fb4edcbf8ef07307c25119604 Mon Sep 17 00:00:00 2001 From: Dave Parks Date: Sat, 22 Oct 2022 15:25:03 -0500 Subject: SL-18105 When saving an object's material to inventory, save the version that as overrides applied. --- indra/newview/llviewermenu.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 47b355e554..18d215f9f4 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2970,7 +2970,7 @@ void load_life_gltf_material(bool copy) } else { - LLMaterialEditor::loadLiveMaterialEditor(); + LLMaterialEditor::loadLive(); } LLViewerJoystick::getInstance()->moveObjects(true); @@ -2980,12 +2980,12 @@ void load_life_gltf_material(bool copy) void handle_object_edit_gltf_material() { handle_object_edit(); - LLMaterialEditor::loadLiveMaterialEditor(); + LLMaterialEditor::loadLive(); } void handle_object_save_gltf_material() { - load_life_gltf_material(true); + LLMaterialEditor::loadObjectSave(); } void handle_attachment_edit(const LLUUID& inv_item_id) -- cgit v1.2.3 From d69c814db94c907a1a772e4e63a8b82a293985d2 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Wed, 26 Oct 2022 20:18:33 +0300 Subject: SL-18446 Terse-update selection set from live material editor #1 --- indra/newview/llviewermenu.cpp | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 18d215f9f4..e1b92e5f2e 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2956,30 +2956,20 @@ void handle_object_edit() return; } -void load_life_gltf_material(bool copy) +void handle_object_edit_gltf_material() { - update_camera(); - - LLSelectedTEGetmatIdAndPermissions func; - LLUUID mat_id; - LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue(&func, mat_id); - - if (copy) + if (!LLFloaterReg::instanceVisible("build")) { - LLMaterialEditor::loadFromGLTFMaterial(mat_id); + handle_object_edit(); // does update_camera(); } else { - LLMaterialEditor::loadLive(); - } + update_camera(); - LLViewerJoystick::getInstance()->moveObjects(true); - LLViewerJoystick::getInstance()->setNeedsReset(true); -} + LLViewerJoystick::getInstance()->moveObjects(true); + LLViewerJoystick::getInstance()->setNeedsReset(true); + } -void handle_object_edit_gltf_material() -{ - handle_object_edit(); LLMaterialEditor::loadLive(); } -- cgit v1.2.3 From 414efe56bdf061edddd9026b015f6197c7615577 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Thu, 27 Oct 2022 21:35:46 +0300 Subject: SL-18008 Edit PBR in menu should not be enabled if selection has no pbr materials --- indra/newview/llviewermenu.cpp | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index e1b92e5f2e..3161579482 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2809,37 +2809,39 @@ void handle_object_open() LLFloaterReg::showInstance("openobject"); } -struct LLSelectedTEGetmatIdAndPermissions : public LLSelectedTEGetFunctor +struct LLSelectedTEGetmatIdAndPermissions : public LLSelectedTEFunctor { LLSelectedTEGetmatIdAndPermissions() : mCanCopy(true), mCanModify(true), mCanTransfer(true) {} - LLUUID get(LLViewerObject* object, S32 te_index) + bool apply(LLViewerObject* objectp, S32 te_index) { - mCanCopy &= (bool)object->permCopy(); - mCanTransfer &= (bool)object->permTransfer(); - mCanModify &= (bool)object->permModify(); - // return true if all ids are identical - return object->getRenderMaterialID(te_index); + mCanCopy &= (bool)objectp->permCopy(); + mCanTransfer &= (bool)objectp->permTransfer(); + mCanModify &= (bool)objectp->permModify(); + LLUUID mat_id = objectp->getRenderMaterialID(te_index); + if (mat_id.notNull()) + { + mMaterialId = mat_id; + } + return true; } bool mCanCopy; bool mCanModify; bool mCanTransfer; + LLUUID mMaterialId; }; bool enable_object_edit_gltf_material() { LLSelectedTEGetmatIdAndPermissions func; - LLUUID mat_id; - LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue(&func, mat_id); - - return func.mCanModify; + LLSelectMgr::getInstance()->getSelection()->applyToTEs(&func); + return func.mCanModify && func.mMaterialId.notNull(); } bool enable_object_save_gltf_material() { LLSelectedTEGetmatIdAndPermissions func; - LLUUID mat_id; - LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue(&func, mat_id); - return func.mCanCopy && mat_id.notNull(); + LLSelectMgr::getInstance()->getSelection()->applyToTEs(&func); + return func.mCanCopy && func.mMaterialId.notNull(); } bool enable_object_open() -- cgit v1.2.3 From e73c5e4ee38dee244d56f3b58e9595d7d976834a Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Mon, 31 Oct 2022 23:15:10 +0200 Subject: SL-18448 Do not show editor when saving material inworld, only a name prompt --- indra/newview/llviewermenu.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 3161579482..ca96baee0a 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2977,7 +2977,7 @@ void handle_object_edit_gltf_material() void handle_object_save_gltf_material() { - LLMaterialEditor::loadObjectSave(); + LLMaterialEditor::saveObjectsMaterialAs(); } void handle_attachment_edit(const LLUUID& inv_item_id) -- cgit v1.2.3 From 8d2ac419b22c8c9475f2efb312dd198ac8eb9fb7 Mon Sep 17 00:00:00 2001 From: Dave Parks Date: Wed, 16 Nov 2022 14:49:17 -0600 Subject: SL-18154 Profile guided optimizations vs release viewer. Trim some unused abilities and remove some more fast timers. --- indra/newview/llviewermenu.cpp | 27 --------------------------- 1 file changed, 27 deletions(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index ca96baee0a..c214ea164d 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -1185,31 +1185,6 @@ class LLAdvancedCheckPeriodicSlowFrame : public view_listener_t }; - -//////////////// -// FRAME TEST // -//////////////// - - -class LLAdvancedToggleFrameTest : public view_listener_t -{ - bool handleEvent(const LLSD& userdata) - { - LLPipeline::sRenderFrameTest = !(LLPipeline::sRenderFrameTest); - return true; - } -}; - -class LLAdvancedCheckFrameTest : public view_listener_t -{ - bool handleEvent(const LLSD& userdata) - { - bool new_value = LLPipeline::sRenderFrameTest; - return new_value; - } -}; - - /////////////////////////// // SELECTED TEXTURE INFO // // @@ -9438,8 +9413,6 @@ void initialize_menus() view_listener_t::addMenu(new LLAdvancedCheckRandomizeFramerate(), "Advanced.CheckRandomizeFramerate"); view_listener_t::addMenu(new LLAdvancedTogglePeriodicSlowFrame(), "Advanced.TogglePeriodicSlowFrame"); view_listener_t::addMenu(new LLAdvancedCheckPeriodicSlowFrame(), "Advanced.CheckPeriodicSlowFrame"); - view_listener_t::addMenu(new LLAdvancedToggleFrameTest(), "Advanced.ToggleFrameTest"); - view_listener_t::addMenu(new LLAdvancedCheckFrameTest(), "Advanced.CheckFrameTest"); view_listener_t::addMenu(new LLAdvancedHandleAttachedLightParticles(), "Advanced.HandleAttachedLightParticles"); view_listener_t::addMenu(new LLAdvancedCheckRenderShadowOption(), "Advanced.CheckRenderShadowOption"); view_listener_t::addMenu(new LLAdvancedClickRenderShadowOption(), "Advanced.ClickRenderShadowOption"); -- cgit v1.2.3 From ade79bc6f6b6269dbcb88f3dff2db6584d0c2f53 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Fri, 18 Nov 2022 21:06:48 +0200 Subject: SL-18677 Disable materials UI when materials caps are not available --- indra/newview/llviewermenu.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index c214ea164d..76a5cf8f5e 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2807,6 +2807,11 @@ struct LLSelectedTEGetmatIdAndPermissions : public LLSelectedTEFunctor bool enable_object_edit_gltf_material() { + if (!LLMaterialEditor::capabilitiesAvalaible()) + { + return false; + } + LLSelectedTEGetmatIdAndPermissions func; LLSelectMgr::getInstance()->getSelection()->applyToTEs(&func); return func.mCanModify && func.mMaterialId.notNull(); @@ -2814,6 +2819,11 @@ bool enable_object_edit_gltf_material() bool enable_object_save_gltf_material() { + if (!LLMaterialEditor::capabilitiesAvalaible()) + { + return false; + } + LLSelectedTEGetmatIdAndPermissions func; LLSelectMgr::getInstance()->getSelection()->applyToTEs(&func); return func.mCanCopy && func.mMaterialId.notNull(); -- cgit v1.2.3 From 32984b56ea8fa4f4357379a40627b5e9267d7543 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Thu, 24 Nov 2022 12:16:59 +0200 Subject: SL-18701 llsd is not thread safe, parse it before using --- indra/newview/llviewermenu.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 76a5cf8f5e..c67d76100a 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2807,7 +2807,7 @@ struct LLSelectedTEGetmatIdAndPermissions : public LLSelectedTEFunctor bool enable_object_edit_gltf_material() { - if (!LLMaterialEditor::capabilitiesAvalaible()) + if (!LLMaterialEditor::capabilitiesAvailable()) { return false; } @@ -2819,7 +2819,7 @@ bool enable_object_edit_gltf_material() bool enable_object_save_gltf_material() { - if (!LLMaterialEditor::capabilitiesAvalaible()) + if (!LLMaterialEditor::capabilitiesAvailable()) { return false; } -- cgit v1.2.3 From 9f7967fcdc5ccb60bd72e8e9e1b7652dc2058524 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Tue, 29 Nov 2022 23:35:18 +0200 Subject: SL-18727 Save material to Inventoryshould prioritize picked face --- indra/newview/llviewermenu.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index c67d76100a..8d0dd505bf 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2962,7 +2962,7 @@ void handle_object_edit_gltf_material() void handle_object_save_gltf_material() { - LLMaterialEditor::saveObjectsMaterialAs(); + LLMaterialEditor::savePickedMaterialAs(); } void handle_attachment_edit(const LLUUID& inv_item_id) -- cgit v1.2.3 From 830cb6b66551025285120fb628f0b5ebf3841756 Mon Sep 17 00:00:00 2001 From: Dave Parks Date: Fri, 3 Feb 2023 17:18:39 -0600 Subject: SL-19148 Decruft some forward shaders and drawpools. Fix HUDs being in wrong color space. --- indra/newview/llviewermenu.cpp | 4 ---- 1 file changed, 4 deletions(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index bc722f496f..5a3f2f22b8 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -764,10 +764,6 @@ U32 render_type_from_string(std::string render_type) { return LLPipeline::RENDER_TYPE_WATER; } - else if ("ground" == render_type) - { - return LLPipeline::RENDER_TYPE_GROUND; - } else if ("volume" == render_type) { return LLPipeline::RENDER_TYPE_VOLUME; -- cgit v1.2.3 From 4ec8844f012f27ddd0ab9aa6a3098273c7bb0ac1 Mon Sep 17 00:00:00 2001 From: Dave Parks Date: Mon, 27 Feb 2023 10:42:53 -0600 Subject: DRTVWR-559 Fix for occlusion culling going off the rails when settings change -- remove LLPipeline::resetVertexBuffers and add a sanity check to how long we wait for a query to be "available". --- indra/newview/llviewermenu.cpp | 3 --- 1 file changed, 3 deletions(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 5a3f2f22b8..3a8206ad26 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -8540,7 +8540,6 @@ BOOL get_visibility(void* user_data) return viewp->getVisible(); } -// TomY TODO: Get rid of these? class LLViewShowHoverTips : public view_listener_t { bool handleEvent(const LLSD& userdata) @@ -8559,13 +8558,11 @@ class LLViewCheckShowHoverTips : public view_listener_t } }; -// TomY TODO: Get rid of these? class LLViewHighlightTransparent : public view_listener_t { bool handleEvent(const LLSD& userdata) { LLDrawPoolAlpha::sShowDebugAlpha = !LLDrawPoolAlpha::sShowDebugAlpha; - gPipeline.resetVertexBuffers(); return true; } }; -- cgit v1.2.3 From 413ce656c8e910bf3758afc3fa354e07be2d4561 Mon Sep 17 00:00:00 2001 From: Dave Parks Date: Fri, 7 Apr 2023 14:10:53 -0500 Subject: SL-19538 Clear probes on sky setting slam. Better probe update prioritization. Incidental decruft. --- indra/newview/llviewermenu.cpp | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 3a8206ad26..89538b3bd5 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -8451,12 +8451,6 @@ void handle_cache_clear_immediately() LLNotificationsUtil::add("ConfirmClearCache", LLSD(), LLSD(), callback_clear_cache_immediately); } -void handle_rebuild_reflection_probes() -{ - gPipeline.mReflectionMapManager.rebuild(); -} - - void handle_web_content_test(const LLSD& param) { std::string url = param.asString(); @@ -9550,9 +9544,7 @@ void initialize_menus() //Develop (clear cache immediately) commit.add("Develop.ClearCache", boost::bind(&handle_cache_clear_immediately) ); - //Develop (override environment map) - commit.add("Develop.RebuildReflectionProbes", boost::bind(&handle_rebuild_reflection_probes)); - + // Admin >Object view_listener_t::addMenu(new LLAdminForceTakeCopy(), "Admin.ForceTakeCopy"); view_listener_t::addMenu(new LLAdminHandleObjectOwnerSelf(), "Admin.HandleObjectOwnerSelf"); -- cgit v1.2.3 From 2b2154f0217758b27b544d066024d922ba234d51 Mon Sep 17 00:00:00 2001 From: RunitaiLinden Date: Tue, 11 Apr 2023 15:09:58 -0500 Subject: SL-19564 Rebalance exposure and sky. Hack legacy diffuse map saturation and brightness to allow ACES Hill all the time. --- indra/newview/llviewermenu.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 89538b3bd5..e8b9a22c60 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -8898,6 +8898,12 @@ class LLWorldEnvSettings : public view_listener_t LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::TRANSITION_INSTANT); defocusEnvFloaters(); } + else if (event_name == "legacy noon") + { + LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::KNOWN_SKY_LEGACY_MIDDAY, LLEnvironment::TRANSITION_INSTANT); + LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::TRANSITION_INSTANT); + defocusEnvFloaters(); + } else if (event_name == "sunset") { LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::KNOWN_SKY_SUNSET, LLEnvironment::TRANSITION_INSTANT); @@ -8966,6 +8972,10 @@ class LLWorldEnableEnvSettings : public view_listener_t { result = (skyid == LLEnvironment::KNOWN_SKY_MIDDAY); } + else if (event_name == "legacy noon") + { + result = (skyid == LLEnvironment::KNOWN_SKY_LEGACY_MIDDAY); + } else if (event_name == "sunset") { result = (skyid == LLEnvironment::KNOWN_SKY_SUNSET); -- cgit v1.2.3 From 63c571191489539faafd4c97b3c870fb5e630e97 Mon Sep 17 00:00:00 2001 From: RunitaiLinden Date: Wed, 12 Apr 2023 13:44:41 -0500 Subject: SL-19569 Don't reset probes when crossing parcel borders (whoops) and tone down glare on legacy materials. --- indra/newview/llviewermenu.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index e8b9a22c60..25efe189cb 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -8918,6 +8918,9 @@ class LLWorldEnvSettings : public view_listener_t } else if (event_name == "region") { + // reset probe data when reverting back to region sky setting + gPipeline.mReflectionMapManager.reset(); + LLEnvironment::instance().clearEnvironment(LLEnvironment::ENV_LOCAL); LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::TRANSITION_INSTANT); defocusEnvFloaters(); -- cgit v1.2.3 From c827d32ebedeaa46ed75a91ae779f6547fc0d090 Mon Sep 17 00:00:00 2001 From: RunitaiLinden Date: Wed, 17 May 2023 18:09:36 -0500 Subject: SL-19655 Decruft legacy GLSL shaders and now unused build queues. --- indra/newview/llviewermenu.cpp | 4 ---- 1 file changed, 4 deletions(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index d4dc813bba..d0acac858c 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -1028,10 +1028,6 @@ U64 info_display_from_string(std::string info_display) { return LLPipeline::RENDER_DEBUG_LOD_INFO; } - else if ("build queue" == info_display) - { - return LLPipeline::RENDER_DEBUG_BUILD_QUEUE; - } else if ("lights" == info_display) { return LLPipeline::RENDER_DEBUG_LIGHTS; -- cgit v1.2.3 From 87bda552688bb38fe255cc7e6069c1be6ac20834 Mon Sep 17 00:00:00 2001 From: Rye Mutt Date: Wed, 17 May 2023 19:30:27 -0400 Subject: Add a binary cache for compiled shaders using glProgramBinary (#216) * Add a binary cache for compiled shaders using glProgramBinary * Add additional sanity checking to shader binary save and load, hook up cache clear and menu option * Fix default init of shader cache data struct and clear gl errors before glGetError calls --------- Co-authored-by: RunitaiLinden --- indra/newview/llviewermenu.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index d0acac858c..921620190e 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2079,6 +2079,21 @@ class LLAdvancedPurgeDiskCache : public view_listener_t }; +//////////////////////// +// PURGE SHADER CACHE // +//////////////////////// + + +class LLAdvancedPurgeShaderCache : public view_listener_t +{ + bool handleEvent(const LLSD& userdata) + { + LLViewerShaderMgr::instance()->clearShaderCache(); + LLViewerShaderMgr::instance()->setShaders(); + return true; + } +}; + //////////////////// // EVENT Recorder // /////////////////// @@ -9435,6 +9450,7 @@ void initialize_menus() view_listener_t::addMenu(new LLAdvancedClickRenderShadowOption(), "Advanced.ClickRenderShadowOption"); view_listener_t::addMenu(new LLAdvancedClickRenderProfile(), "Advanced.ClickRenderProfile"); view_listener_t::addMenu(new LLAdvancedClickRenderBenchmark(), "Advanced.ClickRenderBenchmark"); + view_listener_t::addMenu(new LLAdvancedPurgeShaderCache(), "Advanced.ClearShaderCache"); #ifdef TOGGLE_HACKED_GODLIKE_VIEWER view_listener_t::addMenu(new LLAdvancedHandleToggleHackedGodmode(), "Advanced.HandleToggleHackedGodmode"); -- cgit v1.2.3 From fa2c2a516c821dc2abb4f2c73bbb34c430ae0d92 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Tue, 23 May 2023 20:44:31 +0300 Subject: SL-19753 PBR Some changes to the right-click menu --- indra/newview/llviewermenu.cpp | 19 ------------------- 1 file changed, 19 deletions(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 921620190e..b9042b3496 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2831,18 +2831,6 @@ bool enable_object_edit_gltf_material() return func.mCanModify && func.mMaterialId.notNull(); } -bool enable_object_save_gltf_material() -{ - if (!LLMaterialEditor::capabilitiesAvailable()) - { - return false; - } - - LLSelectedTEGetmatIdAndPermissions func; - LLSelectMgr::getInstance()->getSelection()->applyToTEs(&func); - return func.mCanCopy && func.mMaterialId.notNull(); -} - bool enable_object_open() { // Look for contents in root object, which is all the LLFloaterOpenObject @@ -2974,11 +2962,6 @@ void handle_object_edit_gltf_material() LLMaterialEditor::loadLive(); } -void handle_object_save_gltf_material() -{ - LLMaterialEditor::savePickedMaterialAs(); -} - void handle_attachment_edit(const LLUUID& inv_item_id) { if (isAgentAvatarValid()) @@ -9659,14 +9642,12 @@ void initialize_menus() commit.add("Object.Edit", boost::bind(&handle_object_edit)); commit.add("Object.Edit", boost::bind(&handle_object_edit)); commit.add("Object.EditGLTFMaterial", boost::bind(&handle_object_edit_gltf_material)); - commit.add("Object.SaveGLTFMaterial", boost::bind(&handle_object_save_gltf_material)); commit.add("Object.Inspect", boost::bind(&handle_object_inspect)); commit.add("Object.Open", boost::bind(&handle_object_open)); commit.add("Object.Take", boost::bind(&handle_take)); commit.add("Object.ShowInspector", boost::bind(&handle_object_show_inspector)); enable.add("Object.EnableInspect", boost::bind(&enable_object_inspect)); enable.add("Object.EnableEditGLTFMaterial", boost::bind(&enable_object_edit_gltf_material)); - enable.add("Object.EnableSaveGLTFMaterial", boost::bind(&enable_object_save_gltf_material)); enable.add("Object.EnableOpen", boost::bind(&enable_object_open)); enable.add("Object.EnableTouch", boost::bind(&enable_object_touch, _1)); enable.add("Object.EnableDelete", boost::bind(&enable_object_delete)); -- cgit v1.2.3 From 22eecf1018d8adbf214b9f1072b3cd6d3ab3d5ae Mon Sep 17 00:00:00 2001 From: RunitaiLinden Date: Fri, 23 Jun 2023 11:46:09 -0500 Subject: SL-19897 Fix for 100% transparent objects not showing up in highlight transparent until LoD switch. --- indra/newview/llviewermenu.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index b9042b3496..6e5c268c00 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -7826,10 +7826,6 @@ class LLToggleShaderControl : public view_listener_t BOOL checked = gSavedSettings.getBOOL( control_name ); gSavedSettings.setBOOL( control_name, !checked ); LLPipeline::refreshCachedSettings(); - //gPipeline.updateRenderDeferred(); - //gPipeline.releaseGLBuffers(); - //gPipeline.createGLBuffers(); - //gPipeline.resetVertexBuffers(); LLViewerShaderMgr::instance()->setShaders(); return !checked; } @@ -8560,6 +8556,9 @@ class LLViewHighlightTransparent : public view_listener_t bool handleEvent(const LLSD& userdata) { LLDrawPoolAlpha::sShowDebugAlpha = !LLDrawPoolAlpha::sShowDebugAlpha; + + // invisible objects skip building their render batches unless sShowDebugAlpha is true, so rebuild batches whenever toggling this flag + gPipeline.rebuildDrawInfo(); return true; } }; -- cgit v1.2.3 From 5e344813dc9bb4e5ecb8187642f97377c157955f Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Thu, 27 Jul 2023 23:06:26 +0300 Subject: SL-18396 PBR and blinn phong should not be allowed to be edited together --- indra/newview/llviewermenu.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 6e5c268c00..ae04d536f1 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2800,7 +2800,12 @@ bool enable_object_inspect() struct LLSelectedTEGetmatIdAndPermissions : public LLSelectedTEFunctor { - LLSelectedTEGetmatIdAndPermissions() : mCanCopy(true), mCanModify(true), mCanTransfer(true) {} + LLSelectedTEGetmatIdAndPermissions() + : mCanCopy(true) + , mCanModify(true) + , mCanTransfer(true) + , mHasNonPbrFaces(false) + {} bool apply(LLViewerObject* objectp, S32 te_index) { mCanCopy &= (bool)objectp->permCopy(); @@ -2811,11 +2816,16 @@ struct LLSelectedTEGetmatIdAndPermissions : public LLSelectedTEFunctor { mMaterialId = mat_id; } + else + { + mHasNonPbrFaces = true; + } return true; } bool mCanCopy; bool mCanModify; bool mCanTransfer; + bool mHasNonPbrFaces; LLUUID mMaterialId; }; @@ -2828,7 +2838,7 @@ bool enable_object_edit_gltf_material() LLSelectedTEGetmatIdAndPermissions func; LLSelectMgr::getInstance()->getSelection()->applyToTEs(&func); - return func.mCanModify && func.mMaterialId.notNull(); + return func.mCanModify && !func.mHasNonPbrFaces; } bool enable_object_open() -- cgit v1.2.3 From ec1d1f43540bac02e6cd2e814ee14da0cd33a67c Mon Sep 17 00:00:00 2001 From: RunitaiLinden Date: Fri, 28 Jul 2023 19:15:28 -0500 Subject: SL-20094 Add "Select Reflection Probes" checkbox --- indra/newview/llviewermenu.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index ae04d536f1..f84c6fbc3e 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -8128,6 +8128,18 @@ class LLToolsSelectInvisibleObjects : public view_listener_t } }; +class LLToolsSelectReflectionProbes: public view_listener_t +{ + bool handleEvent(const LLSD& userdata) + { + BOOL cur_val = gSavedSettings.getBOOL("SelectReflectionProbes"); + + gSavedSettings.setBOOL("SelectReflectionProbes", !cur_val); + + return true; + } +}; + class LLToolsSelectBySurrounding : public view_listener_t { bool handleEvent(const LLSD& userdata) @@ -9365,6 +9377,7 @@ void initialize_menus() view_listener_t::addMenu(new LLToolsSelectOnlyMyObjects(), "Tools.SelectOnlyMyObjects"); view_listener_t::addMenu(new LLToolsSelectOnlyMovableObjects(), "Tools.SelectOnlyMovableObjects"); view_listener_t::addMenu(new LLToolsSelectInvisibleObjects(), "Tools.SelectInvisibleObjects"); + view_listener_t::addMenu(new LLToolsSelectReflectionProbes(), "Tools.SelectReflectionProbes"); view_listener_t::addMenu(new LLToolsSelectBySurrounding(), "Tools.SelectBySurrounding"); view_listener_t::addMenu(new LLToolsShowHiddenSelection(), "Tools.ShowHiddenSelection"); view_listener_t::addMenu(new LLToolsShowSelectionLightRadius(), "Tools.ShowSelectionLightRadius"); -- cgit v1.2.3 From 09aedbb7a9b4bfa56b7acd3250d10c483a5ac219 Mon Sep 17 00:00:00 2001 From: RunitaiLinden Date: Mon, 16 Oct 2023 13:54:38 -0500 Subject: SL-20258 Fix for LSL spamming new probes into the scene deadlocking probe updater. Add probe update debug display. --- indra/newview/llviewermenu.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 3708ad82e8..553eaaf9b2 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -1089,7 +1089,11 @@ U64 info_display_from_string(std::string info_display) } else if ("reflection probes" == info_display) { - return LLPipeline::RENDER_DEBUG_REFLECTION_PROBES; + return LLPipeline::RENDER_DEBUG_REFLECTION_PROBES; + } + else if ("probe updates" == info_display) + { + return LLPipeline::RENDER_DEBUG_PROBE_UPDATES; } else { -- cgit v1.2.3 From feece92f2bb7525a7b2a99170ed60a40fac7777e Mon Sep 17 00:00:00 2001 From: Maxim Nikolenko Date: Thu, 14 Dec 2023 14:58:20 +0200 Subject: SL-20717 Add PBR to Advanced > Rendering Types --- indra/newview/llviewermenu.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'indra/newview/llviewermenu.cpp') diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 553eaaf9b2..9db9d97ddc 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -787,6 +787,10 @@ U32 render_type_from_string(std::string render_type) { return LLPipeline::RENDER_TYPE_BUMP; } + else if ("pbr" == render_type) + { + return LLPipeline::RENDER_TYPE_GLTF_PBR; + } else { return 0; -- cgit v1.2.3