summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCosmic Linden <cosmic@lindenlab.com>2024-03-20 13:14:43 -0700
committerCosmic Linden <cosmic@lindenlab.com>2024-03-20 13:14:43 -0700
commitd21813786ae51ba62b906e648908f7feaf6bcb32 (patch)
tree405a8bee62e515d41ce558a8ec182be1320f9059
parentf00cc12c7e5b92c6009c93d00eb7a0f09b2337cc (diff)
secondlife/viewer-issues#83, secondlife/viewer-issues#82: Combine terrain save error notifications
-rw-r--r--indra/newview/llfloaterregioninfo.cpp50
-rw-r--r--indra/newview/llfloaterregioninfo.h2
2 files changed, 29 insertions, 23 deletions
diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
index 65b4feba11..aaae43bdc9 100644
--- a/indra/newview/llfloaterregioninfo.cpp
+++ b/indra/newview/llfloaterregioninfo.cpp
@@ -1313,15 +1313,16 @@ void LLPanelRegionDebugInfo::onClickDebugConsole(void* data)
LLFloaterReg::showInstance("region_debug_console");
}
-BOOL LLPanelRegionTerrainInfo::validateTextureSizes()
+bool LLPanelRegionTerrainInfo::validateTextureSizes()
{
if (mMaterialTypeCtrl)
{
const LLTerrainMaterials::Type material_type = material_type_from_ctrl(mMaterialTypeCtrl);
const bool is_material_selected = material_type == LLTerrainMaterials::Type::PBR;
- if (is_material_selected) { return TRUE; }
+ if (is_material_selected) { return true; }
}
+ bool valid = true;
static LLCachedControl<U32> max_texture_resolution(gSavedSettings, "RenderMaxTextureResolution", 2048);
const S32 max_terrain_texture_size = (S32)max_texture_resolution;
for(S32 i = 0; i < LLTerrainMaterials::ASSET_COUNT; ++i)
@@ -1345,7 +1346,8 @@ BOOL LLPanelRegionTerrainInfo::validateTextureSizes()
args["TEXTURE_BIT_DEPTH"] = llformat("%d",components * 8);
args["MAX_SIZE"] = max_terrain_texture_size;
LLNotificationsUtil::add("InvalidTerrainBitDepth", args);
- return FALSE;
+ valid = false;
+ continue;
}
if (components == 4)
@@ -1358,21 +1360,24 @@ BOOL LLPanelRegionTerrainInfo::validateTextureSizes()
args["TEXTURE_NUM"] = i+1;
args["TEXTURE_BIT_DEPTH"] = llformat("%d",components * 8);
LLNotificationsUtil::add("InvalidTerrainAlphaNotFullyLoaded", args);
- return FALSE;
+ valid = false;
}
- // Slower path: Calculate alpha from raw image pixels (not needed
- // for GLTF materials, which use alphaMode to determine
- // transparency)
- // Raw image is pretty much guaranteed to be saved due to the texture swatches
- LLImageRaw* raw = img->getSavedRawImage();
- if (raw->checkHasTransparentPixels())
+ else
{
- LLSD args;
- args["TEXTURE_NUM"] = i+1;
- LLNotificationsUtil::add("InvalidTerrainAlpha", args);
- return FALSE;
+ // Slower path: Calculate alpha from raw image pixels (not needed
+ // for GLTF materials, which use alphaMode to determine
+ // transparency)
+ // Raw image is pretty much guaranteed to be saved due to the texture swatches
+ LLImageRaw* raw = img->getSavedRawImage();
+ if (raw->checkHasTransparentPixels())
+ {
+ LLSD args;
+ args["TEXTURE_NUM"] = i+1;
+ LLNotificationsUtil::add("InvalidTerrainAlpha", args);
+ valid = false;
+ }
+ LL_WARNS() << "Terrain texture image in slot " << i << " with ID " << image_asset_id << " has alpha channel, but pixels are opaque. Is alpha being optimized away in the texture uploader?" << LL_ENDL;
}
- LL_WARNS() << "Terrain texture image in slot " << i << " with ID " << image_asset_id << " has alpha channel, but pixels are opaque. Is alpha being optimized away in the texture uploader?" << LL_ENDL;
}
if (width > max_terrain_texture_size || height > max_terrain_texture_size)
@@ -1384,12 +1389,11 @@ BOOL LLPanelRegionTerrainInfo::validateTextureSizes()
args["TEXTURE_SIZE_Y"] = height;
args["MAX_SIZE"] = max_terrain_texture_size;
LLNotificationsUtil::add("InvalidTerrainSize", args);
- return FALSE;
-
+ valid = false;
}
}
- return TRUE;
+ return valid;
}
bool LLPanelRegionTerrainInfo::validateMaterials()
@@ -1401,6 +1405,7 @@ bool LLPanelRegionTerrainInfo::validateMaterials()
if (is_texture_selected) { return true; }
}
+ bool valid = true;
for (S32 i = 0; i < LLTerrainMaterials::ASSET_COUNT; ++i)
{
LLTextureCtrl* material_ctrl = mMaterialDetailCtrl[i];
@@ -1424,7 +1429,8 @@ bool LLPanelRegionTerrainInfo::validateMaterials()
args["MATERIAL_NUM"] = i + 1;
LLNotificationsUtil::add("InvalidTerrainMaterialLoadFailed", args);
}
- return false;
+ valid = false;
+ continue;
}
if (material->mDoubleSided)
@@ -1432,7 +1438,7 @@ bool LLPanelRegionTerrainInfo::validateMaterials()
LLSD args;
args["MATERIAL_NUM"] = i + 1;
LLNotificationsUtil::add("InvalidTerrainMaterialDoubleSided", args);
- return false;
+ valid = false;
}
if (material->mAlphaMode != LLGLTFMaterial::ALPHA_MODE_OPAQUE && material->mAlphaMode != LLGLTFMaterial::ALPHA_MODE_MASK)
{
@@ -1441,11 +1447,11 @@ bool LLPanelRegionTerrainInfo::validateMaterials()
const char* alpha_mode = material->getAlphaMode();
args["MATERIAL_ALPHA_MODE"] = alpha_mode;
LLNotificationsUtil::add("InvalidTerrainMaterialAlphaMode", args);
- return false;
+ valid = false;
}
}
- return true;
+ return valid;
}
BOOL LLPanelRegionTerrainInfo::validateTextureHeights()
diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h
index ac3a8fc717..da17212016 100644
--- a/indra/newview/llfloaterregioninfo.h
+++ b/indra/newview/llfloaterregioninfo.h
@@ -253,7 +253,7 @@ public:
bool refreshFromRegion(LLViewerRegion* region) override; // refresh local settings from region update from simulator
void setEnvControls(bool available); // Whether environment settings are available for this region
- BOOL validateTextureSizes();
+ bool validateTextureSizes();
bool validateMaterials();
BOOL validateTextureHeights();