Changed how the enabled state for the deferred checkbox is handled in the graphics floater
It now is disabled if: -Lacking hardware support for FBOs -RenderDeferred not permitted in gpu feature table -RenderAvatarVP not permitted in gpu feature table -VertexShaderEnable is enabled and permitted in gpu feature table -WindLightUseAtmosShaders is enabled and permitted in gpu feature table Enabling deferred now requires WindLightUseAtmosShaders to be on beforehand, instead of blindly enabling it.
This commit is contained in:
@@ -490,9 +490,19 @@ void LLPanelDisplay::refreshEnabledState()
|
||||
mCtrlAvatarCloth->setEnabled(true);
|
||||
}
|
||||
|
||||
BOOL can_defer = gSavedSettings.getBOOL("RenderUseFBO");
|
||||
//I actually recommend RenderUseFBO:FALSE for ati users when not using deferred, so RenderUseFBO shouldn't control visibility of the element.
|
||||
// Instead, gGLManager.mHasFramebufferObject seems better as it is determined by hardware and not current user settings. -Shyotl
|
||||
//Enabling deferred will force RenderUseFBO to TRUE.
|
||||
BOOL can_defer = gGLManager.mHasFramebufferObject &&
|
||||
LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") && //Ensure it's enabled in the gpu feature table
|
||||
LLFeatureManager::getInstance()->isFeatureAvailable("RenderAvatarVP") && //Hardware Skinning. Deferred forces RenderAvatarVP to true
|
||||
LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable") && gSavedSettings.getBOOL("VertexShaderEnable") && //Basic Shaders
|
||||
LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders") && gSavedSettings.getBOOL("WindLightUseAtmosShaders"); //Atmospheric Shaders
|
||||
|
||||
|
||||
mCtrlDeferred->setEnabled(can_defer);
|
||||
mCtrlSunShadow->setEnabled(can_defer && gSavedSettings.getBOOL("RenderDeferred"));
|
||||
mCtrlAvatarCloth->setValue(gSavedSettings.getBOOL("RenderAvatarVP")); //Enabling RenderDeferred changes this setting behind this floaters back.
|
||||
|
||||
// Vertex Shaders
|
||||
// mCtrlShaderEnable->setEnabled(LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable"));
|
||||
|
||||
@@ -310,7 +310,9 @@ void LLViewerShaderMgr::setShaders()
|
||||
S32 deferred_class = 0;
|
||||
|
||||
if (LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&
|
||||
gSavedSettings.getBOOL("RenderDeferred"))
|
||||
gSavedSettings.getBOOL("RenderDeferred") &&
|
||||
LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders") &&
|
||||
gSavedSettings.getBOOL("WindLightUseAtmosShaders"))
|
||||
{
|
||||
deferred_class = 1;
|
||||
|
||||
@@ -319,9 +321,6 @@ void LLViewerShaderMgr::setShaders()
|
||||
|
||||
//make sure hardware skinning is enabled
|
||||
gSavedSettings.setBOOL("RenderAvatarVP", TRUE);
|
||||
|
||||
//make sure atmospheric shaders are enabled
|
||||
gSavedSettings.setBOOL("WindLightUseAtmosShaders", TRUE);
|
||||
}
|
||||
if (!(LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders")
|
||||
&& gSavedSettings.getBOOL("WindLightUseAtmosShaders")))
|
||||
|
||||
@@ -563,6 +563,7 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
|
||||
void LLPipeline::updateRenderDeferred()
|
||||
{
|
||||
sRenderDeferred = (gSavedSettings.getBOOL("RenderDeferred") &&
|
||||
LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&
|
||||
LLRenderTarget::sUseFBO &&
|
||||
gSavedSettings.getBOOL("VertexShaderEnable") &&
|
||||
gSavedSettings.getBOOL("RenderAvatarVP") &&
|
||||
|
||||
Reference in New Issue
Block a user