Automated merge with https://bitbucket.org/don_linden/viewer-thx-runway-shared-1
commit
51f89c8def
|
|
@ -3647,6 +3647,47 @@ void renderShadowFrusta(LLDrawInfo* params)
|
|||
gGL.setSceneBlendType(LLRender::BT_ALPHA);
|
||||
}
|
||||
|
||||
void renderTexelDensity(LLDrawInfo* params)
|
||||
{
|
||||
LLGLEnable _(GL_BLEND);
|
||||
if (LLViewerTexture::sDebugTexelsMode == LLViewerTexture::DEBUG_TEXELS_OFF
|
||||
|| LLViewerTexture::sCheckerBoardImagep.isNull())
|
||||
{
|
||||
return;
|
||||
}
|
||||
LLViewerTexture* texturep = params->mTexture.get();
|
||||
LLMatrix4 checkboard_matrix;
|
||||
S32 discard_level = -1;
|
||||
switch(LLViewerTexture::sDebugTexelsMode)
|
||||
{
|
||||
case LLViewerTexture::DEBUG_TEXELS_CURRENT:
|
||||
discard_level = -1;
|
||||
break;
|
||||
case LLViewerTexture::DEBUG_TEXELS_DESIRED:
|
||||
{
|
||||
LLViewerFetchedTexture* fetched_texturep = dynamic_cast<LLViewerFetchedTexture*>(texturep);
|
||||
discard_level = fetched_texturep ? fetched_texturep->getDesiredDiscardLevel() : -1;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
case LLViewerTexture::DEBUG_TEXELS_FULL:
|
||||
discard_level = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
checkboard_matrix.initScale(LLVector3(texturep->getWidth(discard_level) / 8, texturep->getHeight(discard_level) / 8, 1.f));
|
||||
gGL.getTexUnit(0)->activate();
|
||||
gGL.matrixMode(LLRender::MM_TEXTURE);
|
||||
gGL.loadMatrix((GLfloat*) checkboard_matrix.mMatrix);
|
||||
|
||||
gGL.getTexUnit(0)->bind(LLViewerTexture::sCheckerBoardImagep, TRUE);
|
||||
|
||||
pushVerts(params, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0);
|
||||
|
||||
gGL.loadIdentity();
|
||||
gGL.matrixMode(LLRender::MM_MODELVIEW);
|
||||
}
|
||||
|
||||
|
||||
void renderLights(LLDrawable* drawablep)
|
||||
{
|
||||
|
|
@ -4097,6 +4138,10 @@ public:
|
|||
{
|
||||
renderShadowFrusta(draw_info);
|
||||
}
|
||||
if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_TEXEL_DENSITY))
|
||||
{
|
||||
renderTexelDensity(draw_info);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -4291,7 +4336,8 @@ void LLSpatialPartition::renderDebug()
|
|||
LLPipeline::RENDER_DEBUG_AGENT_TARGET |
|
||||
//LLPipeline::RENDER_DEBUG_BUILD_QUEUE |
|
||||
LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA |
|
||||
LLPipeline::RENDER_DEBUG_RENDER_COMPLEXITY))
|
||||
LLPipeline::RENDER_DEBUG_RENDER_COMPLEXITY |
|
||||
LLPipeline::RENDER_DEBUG_TEXEL_DENSITY))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -845,6 +845,73 @@ class LLAdvancedCheckFeature : public view_listener_t
|
|||
}
|
||||
};
|
||||
|
||||
class LLAdvancedCheckDisplayTextureDensity : public view_listener_t
|
||||
{
|
||||
bool handleEvent(const LLSD& userdata)
|
||||
{
|
||||
std::string mode = userdata.asString();
|
||||
if (!gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_TEXEL_DENSITY))
|
||||
{
|
||||
return mode == "none";
|
||||
}
|
||||
if (mode == "current")
|
||||
{
|
||||
return LLViewerTexture::sDebugTexelsMode == LLViewerTexture::DEBUG_TEXELS_CURRENT;
|
||||
}
|
||||
else if (mode == "desired")
|
||||
{
|
||||
return LLViewerTexture::sDebugTexelsMode == LLViewerTexture::DEBUG_TEXELS_DESIRED;
|
||||
}
|
||||
else if (mode == "full")
|
||||
{
|
||||
return LLViewerTexture::sDebugTexelsMode == LLViewerTexture::DEBUG_TEXELS_FULL;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
class LLAdvancedSetDisplayTextureDensity : public view_listener_t
|
||||
{
|
||||
bool handleEvent(const LLSD& userdata)
|
||||
{
|
||||
std::string mode = userdata.asString();
|
||||
if (mode == "none")
|
||||
{
|
||||
if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_TEXEL_DENSITY) == TRUE)
|
||||
{
|
||||
gPipeline.toggleRenderDebug((void*)LLPipeline::RENDER_DEBUG_TEXEL_DENSITY);
|
||||
}
|
||||
LLViewerTexture::sDebugTexelsMode = LLViewerTexture::DEBUG_TEXELS_OFF;
|
||||
}
|
||||
else if (mode == "current")
|
||||
{
|
||||
if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_TEXEL_DENSITY) == FALSE)
|
||||
{
|
||||
gPipeline.toggleRenderDebug((void*)LLPipeline::RENDER_DEBUG_TEXEL_DENSITY);
|
||||
}
|
||||
LLViewerTexture::sDebugTexelsMode = LLViewerTexture::DEBUG_TEXELS_CURRENT;
|
||||
}
|
||||
else if (mode == "desired")
|
||||
{
|
||||
if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_TEXEL_DENSITY) == FALSE)
|
||||
{
|
||||
gPipeline.toggleRenderDebug((void*)LLPipeline::RENDER_DEBUG_TEXEL_DENSITY);
|
||||
}
|
||||
gPipeline.setRenderDebugFeatureControl(LLPipeline::RENDER_DEBUG_TEXEL_DENSITY, true);
|
||||
LLViewerTexture::sDebugTexelsMode = LLViewerTexture::DEBUG_TEXELS_DESIRED;
|
||||
}
|
||||
else if (mode == "full")
|
||||
{
|
||||
if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_TEXEL_DENSITY) == FALSE)
|
||||
{
|
||||
gPipeline.toggleRenderDebug((void*)LLPipeline::RENDER_DEBUG_TEXEL_DENSITY);
|
||||
}
|
||||
LLViewerTexture::sDebugTexelsMode = LLViewerTexture::DEBUG_TEXELS_FULL;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
//////////////////
|
||||
// INFO DISPLAY //
|
||||
|
|
@ -959,6 +1026,10 @@ U32 info_display_from_string(std::string info_display)
|
|||
{
|
||||
return LLPipeline::RENDER_DEBUG_WIND_VECTORS;
|
||||
}
|
||||
else if ("texel density" == info_display)
|
||||
{
|
||||
return LLPipeline::RENDER_DEBUG_TEXEL_DENSITY;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
|
|
@ -8104,6 +8175,10 @@ void initialize_menus()
|
|||
//// Advanced > Render > Features
|
||||
view_listener_t::addMenu(new LLAdvancedToggleFeature(), "Advanced.ToggleFeature");
|
||||
view_listener_t::addMenu(new LLAdvancedCheckFeature(), "Advanced.CheckFeature");
|
||||
|
||||
view_listener_t::addMenu(new LLAdvancedCheckDisplayTextureDensity(), "Advanced.CheckDisplayTextureDensity");
|
||||
view_listener_t::addMenu(new LLAdvancedSetDisplayTextureDensity(), "Advanced.SetDisplayTextureDensity");
|
||||
|
||||
// Advanced > Render > Info Displays
|
||||
view_listener_t::addMenu(new LLAdvancedToggleInfoDisplay(), "Advanced.ToggleInfoDisplay");
|
||||
view_listener_t::addMenu(new LLAdvancedCheckInfoDisplay(), "Advanced.CheckInfoDisplay");
|
||||
|
|
|
|||
|
|
@ -67,6 +67,7 @@
|
|||
// statics
|
||||
LLPointer<LLViewerTexture> LLViewerTexture::sNullImagep = NULL;
|
||||
LLPointer<LLViewerTexture> LLViewerTexture::sBlackImagep = NULL;
|
||||
LLPointer<LLViewerTexture> LLViewerTexture::sCheckerBoardImagep = NULL;
|
||||
LLPointer<LLViewerFetchedTexture> LLViewerFetchedTexture::sMissingAssetImagep = NULL;
|
||||
LLPointer<LLViewerFetchedTexture> LLViewerFetchedTexture::sWhiteImagep = NULL;
|
||||
LLPointer<LLViewerFetchedTexture> LLViewerFetchedTexture::sDefaultImagep = NULL;
|
||||
|
|
@ -96,6 +97,7 @@ S32 LLViewerTexture::sMaxSmallImageSize = MAX_CACHED_RAW_IMAGE_AREA ;
|
|||
BOOL LLViewerTexture::sFreezeImageScalingDown = FALSE ;
|
||||
F32 LLViewerTexture::sCurrentTime = 0.0f ;
|
||||
BOOL LLViewerTexture::sUseTextureAtlas = FALSE ;
|
||||
LLViewerTexture::EDebugTexels LLViewerTexture::sDebugTexelsMode = LLViewerTexture::DEBUG_TEXELS_OFF;
|
||||
|
||||
const F32 desired_discard_bias_min = -2.0f; // -max number of levels to improve image quality by
|
||||
const F32 desired_discard_bias_max = (F32)MAX_DISCARD_LEVEL; // max number of levels to reduce image quality by
|
||||
|
|
@ -347,6 +349,21 @@ void LLViewerTextureManager::init()
|
|||
LLViewerFetchedTexture::sSmokeImagep = LLViewerTextureManager::getFetchedTexture(IMG_SMOKE, TRUE, LLViewerTexture::BOOST_UI);
|
||||
LLViewerFetchedTexture::sSmokeImagep->setNoDelete() ;
|
||||
|
||||
image_raw = new LLImageRaw(32,32,3);
|
||||
data = image_raw->getData();
|
||||
|
||||
for (S32 i = 0; i < (32*32*3); i+=3)
|
||||
{
|
||||
S32 x = (i % (32*3)) / (3*16);
|
||||
S32 y = i / (32*3*16);
|
||||
U8 color = ((x + y) % 2) * 255;
|
||||
data[i] = color;
|
||||
data[i+1] = color;
|
||||
data[i+2] = color;
|
||||
}
|
||||
|
||||
LLViewerTexture::sCheckerBoardImagep = LLViewerTextureManager::getLocalTexture(image_raw.get(), TRUE);
|
||||
|
||||
LLViewerTexture::initClass() ;
|
||||
|
||||
if (LLMetricPerformanceTesterBasic::isMetricLogRequested(sTesterName) && !LLMetricPerformanceTesterBasic::getTester(sTesterName))
|
||||
|
|
|
|||
|
|
@ -139,6 +139,7 @@ public:
|
|||
OTHER,
|
||||
MAX_GL_IMAGE_CATEGORY
|
||||
};
|
||||
|
||||
static S32 getTotalNumOfCategories() ;
|
||||
static S32 getIndexFromCategory(S32 category) ;
|
||||
static S32 getCategoryFromIndex(S32 index) ;
|
||||
|
|
@ -330,8 +331,19 @@ public:
|
|||
static F32 sCurrentTime ;
|
||||
static BOOL sUseTextureAtlas ;
|
||||
|
||||
enum EDebugTexels
|
||||
{
|
||||
DEBUG_TEXELS_OFF,
|
||||
DEBUG_TEXELS_CURRENT,
|
||||
DEBUG_TEXELS_DESIRED,
|
||||
DEBUG_TEXELS_FULL
|
||||
};
|
||||
|
||||
static EDebugTexels sDebugTexelsMode;
|
||||
|
||||
static LLPointer<LLViewerTexture> sNullImagep; // Null texture for non-textured objects.
|
||||
static LLPointer<LLViewerTexture> sBlackImagep; // Texture to show NOTHING (pure black)
|
||||
static LLPointer<LLViewerTexture> sCheckerBoardImagep; // Texture to show NOTHING (pure black)
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -461,6 +461,7 @@ public:
|
|||
RENDER_DEBUG_LOD_INFO = 0x04000000,
|
||||
RENDER_DEBUG_RENDER_COMPLEXITY = 0x08000000,
|
||||
RENDER_DEBUG_ATTACHMENT_BYTES = 0x10000000,
|
||||
RENDER_DEBUG_TEXEL_DENSITY = 0x20000000
|
||||
};
|
||||
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -2410,6 +2410,52 @@
|
|||
function="Advanced.ToggleInfoDisplay"
|
||||
parameter="sculpt" />
|
||||
</menu_item_check>
|
||||
<menu
|
||||
create_jump_keys="true"
|
||||
label="Display Texture Density"
|
||||
name="Display Texture Density"
|
||||
tear_off="true">
|
||||
<menu_item_check
|
||||
label="None"
|
||||
name="None">
|
||||
<menu_item_check.on_check
|
||||
function="Advanced.CheckDisplayTextureDensity"
|
||||
parameter="none" />
|
||||
<menu_item_check.on_click
|
||||
function="Advanced.SetDisplayTextureDensity"
|
||||
parameter="none" />
|
||||
</menu_item_check>
|
||||
<menu_item_check
|
||||
label="Current"
|
||||
name="Current">
|
||||
<menu_item_check.on_check
|
||||
function="Advanced.CheckDisplayTextureDensity"
|
||||
parameter="current" />
|
||||
<menu_item_check.on_click
|
||||
function="Advanced.SetDisplayTextureDensity"
|
||||
parameter="current" />
|
||||
</menu_item_check>
|
||||
<menu_item_check
|
||||
label="Desired"
|
||||
name="Desired">
|
||||
<menu_item_check.on_check
|
||||
function="Advanced.CheckDisplayTextureDensity"
|
||||
parameter="desired" />
|
||||
<menu_item_check.on_click
|
||||
function="Advanced.SetDisplayTextureDensity"
|
||||
parameter="desired" />
|
||||
</menu_item_check>
|
||||
<menu_item_check
|
||||
label="Full"
|
||||
name="Full">
|
||||
<menu_item_check.on_check
|
||||
function="Advanced.CheckDisplayTextureDensity"
|
||||
parameter="full" />
|
||||
<menu_item_check.on_click
|
||||
function="Advanced.SetDisplayTextureDensity"
|
||||
parameter="full" />
|
||||
</menu_item_check>
|
||||
</menu>
|
||||
</menu>
|
||||
<menu
|
||||
create_jump_keys="true"
|
||||
|
|
|
|||
Loading…
Reference in New Issue