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);
|
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);
|
mCtrlDeferred->setEnabled(can_defer);
|
||||||
mCtrlSunShadow->setEnabled(can_defer && gSavedSettings.getBOOL("RenderDeferred"));
|
mCtrlSunShadow->setEnabled(can_defer && gSavedSettings.getBOOL("RenderDeferred"));
|
||||||
|
mCtrlAvatarCloth->setValue(gSavedSettings.getBOOL("RenderAvatarVP")); //Enabling RenderDeferred changes this setting behind this floaters back.
|
||||||
|
|
||||||
// Vertex Shaders
|
// Vertex Shaders
|
||||||
// mCtrlShaderEnable->setEnabled(LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable"));
|
// mCtrlShaderEnable->setEnabled(LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable"));
|
||||||
|
|||||||
@@ -310,7 +310,9 @@ void LLViewerShaderMgr::setShaders()
|
|||||||
S32 deferred_class = 0;
|
S32 deferred_class = 0;
|
||||||
|
|
||||||
if (LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&
|
if (LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&
|
||||||
gSavedSettings.getBOOL("RenderDeferred"))
|
gSavedSettings.getBOOL("RenderDeferred") &&
|
||||||
|
LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders") &&
|
||||||
|
gSavedSettings.getBOOL("WindLightUseAtmosShaders"))
|
||||||
{
|
{
|
||||||
deferred_class = 1;
|
deferred_class = 1;
|
||||||
|
|
||||||
@@ -319,9 +321,6 @@ void LLViewerShaderMgr::setShaders()
|
|||||||
|
|
||||||
//make sure hardware skinning is enabled
|
//make sure hardware skinning is enabled
|
||||||
gSavedSettings.setBOOL("RenderAvatarVP", TRUE);
|
gSavedSettings.setBOOL("RenderAvatarVP", TRUE);
|
||||||
|
|
||||||
//make sure atmospheric shaders are enabled
|
|
||||||
gSavedSettings.setBOOL("WindLightUseAtmosShaders", TRUE);
|
|
||||||
}
|
}
|
||||||
if (!(LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders")
|
if (!(LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders")
|
||||||
&& gSavedSettings.getBOOL("WindLightUseAtmosShaders")))
|
&& gSavedSettings.getBOOL("WindLightUseAtmosShaders")))
|
||||||
|
|||||||
@@ -563,6 +563,7 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
|
|||||||
void LLPipeline::updateRenderDeferred()
|
void LLPipeline::updateRenderDeferred()
|
||||||
{
|
{
|
||||||
sRenderDeferred = (gSavedSettings.getBOOL("RenderDeferred") &&
|
sRenderDeferred = (gSavedSettings.getBOOL("RenderDeferred") &&
|
||||||
|
LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&
|
||||||
LLRenderTarget::sUseFBO &&
|
LLRenderTarget::sUseFBO &&
|
||||||
gSavedSettings.getBOOL("VertexShaderEnable") &&
|
gSavedSettings.getBOOL("VertexShaderEnable") &&
|
||||||
gSavedSettings.getBOOL("RenderAvatarVP") &&
|
gSavedSettings.getBOOL("RenderAvatarVP") &&
|
||||||
|
|||||||
Reference in New Issue
Block a user