diff options
author | cosmic-linden <111533034+cosmic-linden@users.noreply.github.com> | 2024-08-13 10:34:35 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-13 10:34:35 -0700 |
commit | d696010cea1dd0abf6821d6756bc1f33a955cb3f (patch) | |
tree | 43e1ed90604e83704c0140bce6836dc427f56190 /indra/newview/llviewermenu.cpp | |
parent | 50e05c70d38c0e9da654cbc0f1758809e7159744 (diff) | |
parent | f1fac8127fb7ea7107c2f5af39b9933523fbadca (diff) |
Merge pull request #2210 from secondlife/v-1883
secondlife/viewer#1883: Local-only PBR terrain paintmap with developer tools
Diffstat (limited to 'indra/newview/llviewermenu.cpp')
-rw-r--r-- | indra/newview/llviewermenu.cpp | 82 |
1 files changed, 67 insertions, 15 deletions
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index e3b92598f7..529d6f97ca 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -42,6 +42,7 @@ #include "llnotifications.h" #include "llnotificationsutil.h" #include "llviewereventrecorder.h" +#include "v4coloru.h" // newview includes #include "llagent.h" @@ -105,6 +106,7 @@ #include "llsidepanelappearance.h" #include "llspellcheckmenuhandler.h" #include "llstatusbar.h" +#include "llterrainpaintmap.h" #include "lltextureview.h" #include "lltoolbarview.h" #include "lltoolcomp.h" @@ -122,6 +124,7 @@ #include "llviewerparcelmgr.h" #include "llviewerstats.h" #include "llviewerstatsrecorder.h" +#include "llvlcomposition.h" #include "llvoavatarself.h" #include "llvoicevivox.h" #include "llworld.h" @@ -1385,6 +1388,65 @@ class LLAdvancedResetInterestLists : public view_listener_t }; +///////////// +// TERRAIN // +///////////// + +class LLAdvancedRebuildTerrain : public view_listener_t +{ + bool handleEvent(const LLSD& userdata) + { + gPipeline.rebuildTerrain(); + return true; + } +}; + +class LLAdvancedTerrainCreateLocalPaintMap : public view_listener_t +{ + bool handleEvent(const LLSD& userdata) + { + LLViewerRegion* region = gAgent.getRegion(); + if (!region) + { + LL_WARNS() << "Agent not in a region" << LL_ENDL; + return false; + } + + U16 dim = (U16)gSavedSettings.getU32("TerrainPaintResolution"); + // Ensure a reasonable image size of power two + const U32 max_resolution = gSavedSettings.getU32("RenderMaxTextureResolution"); + dim = llclamp(dim, 16, max_resolution); + dim = 1 << U32(std::ceil(std::log2(dim))); + LLPointer<LLImageRaw> image_raw = new LLImageRaw(dim,dim,3); + LLPointer<LLViewerTexture> tex = LLViewerTextureManager::getLocalTexture(image_raw.get(), true); + const bool success = LLTerrainPaintMap::bakeHeightNoiseIntoPBRPaintMapRGB(*region, *tex); + // This calls gLocalTerrainMaterials.setPaintType + gSavedSettings.setBOOL("LocalTerrainPaintEnabled", true); + // If baking the paintmap failed, set the paintmap to nullptr. This + // causes LLDrawPoolTerrain to use a blank paintmap instead. + if (!success) { tex = nullptr; } + gLocalTerrainMaterials.setPaintMap(tex); + + return true; + } +}; + +class LLAdvancedTerrainDeleteLocalPaintMap : public view_listener_t +{ + bool handleEvent(const LLSD& userdata) + { + // This calls gLocalTerrainMaterials.setPaintType + gSavedSettings.setBOOL("LocalTerrainPaintEnabled", false); + gLocalTerrainMaterials.setPaintMap(nullptr); + + return true; + } +}; + + +///////////// + + class LLAdvancedBuyCurrencyTest : public view_listener_t { bool handleEvent(const LLSD& userdata) @@ -2240,20 +2302,6 @@ class LLAdvancedPurgeShaderCache : public view_listener_t } }; -///////////////////// -// REBUILD TERRAIN // -///////////////////// - - -class LLAdvancedRebuildTerrain : public view_listener_t -{ - bool handleEvent(const LLSD& userdata) - { - gPipeline.rebuildTerrain(); - return true; - } -}; - //////////////////// // EVENT Recorder // /////////////////// @@ -9849,7 +9897,6 @@ void initialize_menus() view_listener_t::addMenu(new LLAdvancedClickGLTFEdit(), "Advanced.ClickGLTFEdit"); view_listener_t::addMenu(new LLAdvancedClickResizeWindow(), "Advanced.ClickResizeWindow"); view_listener_t::addMenu(new LLAdvancedPurgeShaderCache(), "Advanced.ClearShaderCache"); - view_listener_t::addMenu(new LLAdvancedRebuildTerrain(), "Advanced.RebuildTerrain"); #ifdef TOGGLE_HACKED_GODLIKE_VIEWER view_listener_t::addMenu(new LLAdvancedHandleToggleHackedGodmode(), "Advanced.HandleToggleHackedGodmode"); @@ -9866,6 +9913,11 @@ void initialize_menus() view_listener_t::addMenu(new LLAdvancedCheckInterestList360Mode(), "Advanced.CheckInterestList360Mode"); view_listener_t::addMenu(new LLAdvancedResetInterestLists(), "Advanced.ResetInterestLists"); + // Develop > Terrain + view_listener_t::addMenu(new LLAdvancedRebuildTerrain(), "Advanced.RebuildTerrain"); + view_listener_t::addMenu(new LLAdvancedTerrainCreateLocalPaintMap(), "Advanced.TerrainCreateLocalPaintMap"); + view_listener_t::addMenu(new LLAdvancedTerrainDeleteLocalPaintMap(), "Advanced.TerrainDeleteLocalPaintMap"); + // Advanced > UI commit.add("Advanced.WebBrowserTest", boost::bind(&handle_web_browser_test, _2)); // sigh! this one opens the MEDIA browser commit.add("Advanced.WebContentTest", boost::bind(&handle_web_content_test, _2)); // this one opens the Web Content floater |