diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index d3c4e3f57c..eab78b98a8 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -18420,6 +18420,17 @@ Change of this parameter will affect the layout of buttons in notification toast Value 0 + fsregioncornerbeacons + + Comment + Show beacons at region corners to help avoid region boundary disconnects + Persist + 1 + Type + Boolean + Value + 0 + renderhighlights Comment diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 11d7d02fe7..7e04055073 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -11584,6 +11584,13 @@ class LLViewToggleBeacon : public view_listener_t LLPipeline::toggleRenderSoundBeacons(); gSavedSettings.setBOOL( "soundsbeacon", LLPipeline::getRenderSoundBeacons() ); } + // FIRE-33085 Region corner markers + else if (beacon == "fsregioncornerbeacons") + { + LLPipeline::toggleRenderRegionCornerBeacons(); + gSavedSettings.setBOOL( "fsregioncornerbeacons", LLPipeline::getRenderRegionCornerBeacons() ); + } + // else if (beacon == "particlesbeacon") { LLPipeline::toggleRenderParticleBeacons(); @@ -11661,6 +11668,13 @@ class LLViewCheckBeaconEnabled : public view_listener_t new_value = gSavedSettings.getBOOL( "soundsbeacon"); LLPipeline::setRenderSoundBeacons(new_value); } + // FIRE-33085 Region corner markers + else if (beacon == "fsregioncornerbeacons") + { + new_value = gSavedSettings.getBOOL( "fsregioncornerbeacons"); + LLPipeline::setRenderRegionCornerBeacons(new_value); + } + // else if (beacon == "particlesbeacon") { new_value = gSavedSettings.getBOOL( "particlesbeacon"); diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 006eafdb89..e64615c478 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -491,6 +491,7 @@ public: static const std::string beacon_scripted = LLTrans::getString("BeaconScripted"); static const std::string beacon_scripted_touch = LLTrans::getString("BeaconScriptedTouch"); static const std::string beacon_sound = LLTrans::getString("BeaconSound"); + static const std::string beacon_region_corners = LLTrans::getString("BeaconRegionCorners"); // FIRE-33085 Region corner markers static const std::string beacon_media = LLTrans::getString("BeaconMedia"); static const std::string beacon_sun = LLTrans::getString("BeaconSun"); static const std::string beacon_moon = LLTrans::getString("BeaconMoon"); @@ -920,6 +921,14 @@ public: ypos += y_inc; } + // FIRE-33085 Region corner markers + if (LLPipeline::getRenderRegionCornerBeacons()) + { + addText(xpos, ypos, beacon_region_corners); + ypos += y_inc; + } + // + if (LLPipeline::getRenderScriptedBeacons()) { addText(xpos, ypos, beacon_scripted); diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 7196dbfadb..e54b358848 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -328,6 +328,7 @@ bool LLPipeline::sRenderScriptedBeacons = false; bool LLPipeline::sRenderScriptedTouchBeacons = true; bool LLPipeline::sRenderParticleBeacons = false; bool LLPipeline::sRenderSoundBeacons = false; +bool LLPipeline::sRenderRegionCornerBeacons = false; // FIRE-33085 Region corner markers bool LLPipeline::sRenderBeacons = false; bool LLPipeline::sRenderHighlight = true; LLRender::eTexIndex LLPipeline::sRenderHighlightTextureChannel = LLRender::DIFFUSE_MAP; @@ -470,6 +471,7 @@ void LLPipeline::init() sRenderScriptedTouchBeacons = gSavedSettings.getBOOL("scripttouchbeacon"); sRenderParticleBeacons = gSavedSettings.getBOOL("particlesbeacon"); sRenderSoundBeacons = gSavedSettings.getBOOL("soundsbeacon"); + sRenderRegionCornerBeacons = gSavedSettings.getBOOL("fsregioncornerbeacons"); // FIRE-33085 Region corner markers sRenderBeacons = gSavedSettings.getBOOL("renderbeacons"); sRenderHighlight = gSavedSettings.getBOOL("renderhighlights"); @@ -663,6 +665,9 @@ void LLPipeline::init() connectRefreshCachedSettingsSafe("FSFocusPointFollowsPointer"); connectRefreshCachedSettingsSafe("FSFocusPointLocked"); // + // FIRE-33085 Region corner markers + connectRefreshCachedSettingsSafe("fsregioncornerbeacons"); + // LLPointer cntrl_ptr = gSavedSettings.getControl("CollectFontVertexBuffers"); if (cntrl_ptr.notNull()) @@ -1168,6 +1173,9 @@ void LLPipeline::refreshCachedSettings() LLPipeline::sRenderAttachedLights = gSavedSettings.getBOOL("RenderAttachedLights"); LLPipeline::sRenderAttachedParticles = gSavedSettings.getBOOL("RenderAttachedParticles"); // + // FIRE-33085 Region corner markers + LLPipeline::sRenderRegionCornerBeacons = gSavedSettings.getBOOL("fsregioncornerbeacons"); + // LLPipeline::sUseOcclusion = (!gUseWireframe @@ -3917,6 +3925,39 @@ void LLPipeline::postSort(LLCamera &camera) // now deal with highlights for all those seeable sound sources forAllVisibleDrawables(renderSoundHighlights); } + + // FIRE-33085 Region corner markers + if (sRenderRegionCornerBeacons) + { + LLViewerRegion* region = gAgent.getRegion(); + if (!region) + { + return; + } + + LLVector3 origin = region->getOriginAgent(); + F32 width = region->getWidth(); + + LLVector3 corner1 = origin; // Southwest + LLVector3 corner2 = origin + LLVector3(width, 0, 0); // Southeast + LLVector3 corner3 = origin + LLVector3(0, width, 0); // Northwest + LLVector3 corner4 = origin + LLVector3(width, width, 0); // Northeast + + corner1.mV[VZ] = region->getLandHeightRegion(LLVector3(0, 0, 0)); + corner2.mV[VZ] = region->getLandHeightRegion(LLVector3(width, 0, 0)); + corner3.mV[VZ] = region->getLandHeightRegion(LLVector3(0, width, 0)); + corner4.mV[VZ] = region->getLandHeightRegion(LLVector3(width, width, 0)); + + LLColor4 corner_color(1.0f, 1.0f, 0.0f, 0.8f); + LLColor4 text_color(1.0f, 1.0f, 1.0f, 1.0f); + + gObjectList.addDebugBeacon(corner1, "SW", corner_color, text_color, DebugBeaconLineWidth); + gObjectList.addDebugBeacon(corner2, "SE", corner_color, text_color, DebugBeaconLineWidth); + gObjectList.addDebugBeacon(corner3, "NW", corner_color, text_color, DebugBeaconLineWidth); + gObjectList.addDebugBeacon(corner4, "NE", corner_color, text_color, DebugBeaconLineWidth); + } + // + } } LL_PUSH_CALLSTACKS(); @@ -6709,6 +6750,23 @@ bool LLPipeline::getRenderHighlights() return sRenderHighlight; } +// FIRE-33085 Region corner markers +void LLPipeline::setRenderRegionCornerBeacons(bool val) +{ + sRenderRegionCornerBeacons = val; +} + +void LLPipeline::toggleRenderRegionCornerBeacons() +{ + sRenderRegionCornerBeacons = !sRenderRegionCornerBeacons; +} + +bool LLPipeline::getRenderRegionCornerBeacons() +{ + return sRenderRegionCornerBeacons; +} +// + // static void LLPipeline::setRenderHighlightTextureChannel(LLRender::eTexIndex channel) { @@ -8821,12 +8879,12 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, LLRenderTarget* light_ shader.uniform1f(LLShaderMgr::DEFERRED_BLUR_SIZE, RenderShadowBlurSize); // Compute scale factor to match AO appearance between view and snapshot. - F32 screen_to_target_scale_factor = (F32)gViewerWindow->getWindowHeightRaw() / deferred_target->getHeight(); - //shader.uniform1f(LLShaderMgr::DEFERRED_SSAO_RADIUS, RenderSSAOScale); - shader.uniform1f(LLShaderMgr::DEFERRED_SSAO_RADIUS, RenderSSAOScale / screen_to_target_scale_factor); - //shader.uniform1f(LLShaderMgr::DEFERRED_SSAO_MAX_RADIUS, (GLfloat)RenderSSAOMaxScale); - shader.uniform1f(LLShaderMgr::DEFERRED_SSAO_MAX_RADIUS, RenderSSAOMaxScale / screen_to_target_scale_factor); - // + F32 screen_to_target_scale_factor = (F32)gViewerWindow->getWindowHeightRaw() / deferred_target->getHeight(); + //shader.uniform1f(LLShaderMgr::DEFERRED_SSAO_RADIUS, RenderSSAOScale); + shader.uniform1f(LLShaderMgr::DEFERRED_SSAO_RADIUS, RenderSSAOScale / screen_to_target_scale_factor); + //shader.uniform1f(LLShaderMgr::DEFERRED_SSAO_MAX_RADIUS, (GLfloat)RenderSSAOMaxScale); + shader.uniform1f(LLShaderMgr::DEFERRED_SSAO_MAX_RADIUS, RenderSSAOMaxScale / screen_to_target_scale_factor); + // F32 ssao_factor = RenderSSAOFactor; shader.uniform1f(LLShaderMgr::DEFERRED_SSAO_FACTOR, ssao_factor); diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index 323cc92355..0abac4c4c4 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -436,6 +436,12 @@ public: static void toggleRenderSoundBeacons(); static bool getRenderSoundBeacons(); + // FIRE-33085 Region corner markers + static void setRenderRegionCornerBeacons(bool val); + static void toggleRenderRegionCornerBeacons(); + static bool getRenderRegionCornerBeacons(); + // + static void setRenderMOAPBeacons(bool val); static void toggleRenderMOAPBeacons(); static bool getRenderMOAPBeacons(); @@ -1023,6 +1029,7 @@ protected: static bool sRenderScriptedBeacons; static bool sRenderParticleBeacons; static bool sRenderSoundBeacons; + static bool sRenderRegionCornerBeacons; // FIRE-33085 Region corner markers public: static bool sRenderBeacons; static bool sRenderHighlight; diff --git a/indra/newview/skins/default/xui/en/floater_beacons.xml b/indra/newview/skins/default/xui/en/floater_beacons.xml index 221751cd90..b28f1428a1 100644 --- a/indra/newview/skins/default/xui/en/floater_beacons.xml +++ b/indra/newview/skins/default/xui/en/floater_beacons.xml @@ -1,7 +1,7 @@ + + + + Viewing scripted object beacons (red) Viewing scripted object with touch function beacons (red) Viewing sound beacons (yellow) + Viewing region corners (yellow) Viewing media beacons (white) Viewing sun direction beacon (orange) Viewing moon direction beacon (purple) diff --git a/indra/newview/skins/default/xui/pl/floater_beacons.xml b/indra/newview/skins/default/xui/pl/floater_beacons.xml index 1598822687..4c48bc055c 100644 --- a/indra/newview/skins/default/xui/pl/floater_beacons.xml +++ b/indra/newview/skins/default/xui/pl/floater_beacons.xml @@ -5,6 +5,7 @@ Pokaż: + diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml index 8eee1514be..46f39a575c 100644 --- a/indra/newview/skins/default/xui/pl/strings.xml +++ b/indra/newview/skins/default/xui/pl/strings.xml @@ -5329,6 +5329,9 @@ Spróbuj załączyć ścieżkę do edytora w cytowaniu. Emitery dźwięków (żółty) + + Narożniki regionu (żółty) + Emitery mediów (biały)