diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/app_settings/high_graphics.xml | 9 | ||||
| -rw-r--r-- | indra/newview/app_settings/low_graphics.xml | 9 | ||||
| -rw-r--r-- | indra/newview/app_settings/mid_graphics.xml | 9 | ||||
| -rw-r--r-- | indra/newview/app_settings/settings.xml | 11 | ||||
| -rw-r--r-- | indra/newview/app_settings/ultra_graphics.xml | 9 | ||||
| -rw-r--r-- | indra/newview/featuretable.txt | 38 | ||||
| -rw-r--r-- | indra/newview/llfloaterpreference.cpp | 60 | ||||
| -rw-r--r-- | indra/newview/llviewercontrol.cpp | 10 | ||||
| -rw-r--r-- | indra/newview/llviewershadermgr.cpp | 39 | ||||
| -rw-r--r-- | indra/newview/llviewerstats.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/pipeline.cpp | 13 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml | 80 | 
12 files changed, 198 insertions, 91 deletions
| diff --git a/indra/newview/app_settings/high_graphics.xml b/indra/newview/app_settings/high_graphics.xml index c3fa2ab75e..93d39c8414 100644 --- a/indra/newview/app_settings/high_graphics.xml +++ b/indra/newview/app_settings/high_graphics.xml @@ -12,8 +12,6 @@  	<RenderFlexTimeFactor value="1"/>  	<!--256... but they don't use this-->  	<RenderGlowResolutionPow value="9"/> -	<!--Sun/Moon only--> -	<RenderLightingDetail value="1"/>  	<!--Low number-->  	<RenderMaxPartCount value="4096"/>  	<!--bump okay--> @@ -34,4 +32,11 @@  	<VertexShaderEnable value="TRUE"/>  	<!--NO SHADERS-->  	<WindLightUseAtmosShaders value="TRUE"/> +  <!--Deferred Shading--> +  <RenderDeferred value="TRUE"/> +  <!--SSAO Disabled--> +  <RenderDeferredSSAO value="FALSE"/> +  <!--Sun Shadows--> +  <RenderShadowDetail value="1"/> +  </settings> diff --git a/indra/newview/app_settings/low_graphics.xml b/indra/newview/app_settings/low_graphics.xml index 54320117fc..a300c8646c 100644 --- a/indra/newview/app_settings/low_graphics.xml +++ b/indra/newview/app_settings/low_graphics.xml @@ -12,8 +12,6 @@  	<RenderFlexTimeFactor value="0.5"/>  	<!--256... but they don't use this-->  	<RenderGlowResolutionPow value="8"/> -	<!--Sun/Moon only--> -	<RenderLightingDetail value="0"/>  	<!--Low number-->  	<RenderMaxPartCount value="1024"/>  	<!--bump okay--> @@ -34,4 +32,11 @@  	<VertexShaderEnable value="FALSE"/>  	<!--NO SHADERS-->  	<WindLightUseAtmosShaders value="FALSE"/> +  <!--No Deferred Shading--> +  <RenderDeferred value="FALSE"/> +  <!--SSAO Disabled--> +  <RenderDeferredSSAO value="FALSE"/> +  <!--No Shadows--> +  <RenderShadowDetail value="0"/> +  </settings> diff --git a/indra/newview/app_settings/mid_graphics.xml b/indra/newview/app_settings/mid_graphics.xml index 422988498d..a1430a58f9 100644 --- a/indra/newview/app_settings/mid_graphics.xml +++ b/indra/newview/app_settings/mid_graphics.xml @@ -12,8 +12,6 @@  	<RenderFlexTimeFactor value="1"/>  	<!--256... but they don't use this-->  	<RenderGlowResolutionPow value="8"/> -	<!--Sun/Moon only--> -	<RenderLightingDetail value="1"/>  	<!--Low number-->  	<RenderMaxPartCount value="2048"/>  	<!--bump okay--> @@ -34,4 +32,11 @@  	<VertexShaderEnable value="TRUE"/>  	<!--NO SHADERS-->  	<WindLightUseAtmosShaders value="FALSE"/> +  <!--No Deferred Shading--> +  <RenderDeferred value="FALSE"/> +  <!--SSAO Disabled--> +  <RenderDeferredSSAO value="FALSE"/> +  <!--No Shadows--> +  <RenderShadowDetail value="0"/> +  </settings> diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 9c1d710551..c570578e63 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -7189,17 +7189,6 @@        <key>Value</key>        <integer>0</integer>      </map> -    <key>RenderLightingDetail</key> -    <map> -      <key>Comment</key> -      <string>Amount of detail for lighting objects/avatars/terrain (0=sun/moon only, 1=enable local lights)</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>S32</string> -      <key>Value</key> -      <integer>1</integer> -    </map>      <key>RenderMaxPartCount</key>      <map>        <key>Comment</key> diff --git a/indra/newview/app_settings/ultra_graphics.xml b/indra/newview/app_settings/ultra_graphics.xml index 149aa32000..f741089ca2 100644 --- a/indra/newview/app_settings/ultra_graphics.xml +++ b/indra/newview/app_settings/ultra_graphics.xml @@ -12,8 +12,6 @@  	<RenderFlexTimeFactor value="1"/>  	<!--256... but they don't use this-->  	<RenderGlowResolutionPow value="9"/> -	<!--Sun/Moon only--> -	<RenderLightingDetail value="1"/>  	<!--Low number-->  	<RenderMaxPartCount value="4096"/>  	<!--bump okay--> @@ -34,4 +32,11 @@  	<VertexShaderEnable value="TRUE"/>  	<!--NO SHADERS-->  	<WindLightUseAtmosShaders value="TRUE"/> +  <!--Deferred Shading--> +  <RenderDeferred value="TRUE"/> +  <!--SSAO Enabled--> +  <RenderDeferredSSAO value="TRUE"/> +  <!--Full Shadows--> +  <RenderShadowDetail value="2"/> +  </settings> diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt index 7f13240e60..1913f52499 100644 --- a/indra/newview/featuretable.txt +++ b/indra/newview/featuretable.txt @@ -35,7 +35,6 @@ RenderFogRatio				1	4.0  RenderGamma					1	0  RenderGlowResolutionPow		1	9  RenderGround				1	1 -RenderLightingDetail		1	1  RenderMaxPartCount			1	8192  RenderNightBrightness		1	1.0  RenderObjectBump			1	1 @@ -55,6 +54,9 @@ Disregard128DefaultDrawDistance	1	1  Disregard96DefaultDrawDistance	1	1  RenderTextureMemoryMultiple		1	1.0  RenderShaderLightingMaxLevel	1	3 +RenderDeferred				1	1 +RenderDeferredSSAO			1	1 +RenderShadowDetail			1	2  // @@ -68,7 +70,6 @@ RenderAvatarVP				1	0  RenderFarClip				1	64  RenderFlexTimeFactor		1	0.5  RenderGlowResolutionPow		1	8 -RenderLightingDetail		1	0  RenderMaxPartCount			1	1024  RenderObjectBump			1	0  RenderReflectionDetail		1	0 @@ -80,6 +81,10 @@ RenderVolumeLODFactor		1	1.125  VertexShaderEnable			1	0  WindLightUseAtmosShaders	1	0  WLSkyDetail					1	48 +RenderDeferred				1	0 +RenderDeferredSSAO			1	0 +RenderShadowDetail			1	0 +  //  // Mid Graphics Settings @@ -92,7 +97,6 @@ RenderAvatarVP				1	1  RenderFarClip				1	96  RenderFlexTimeFactor		1	1.0  RenderGlowResolutionPow		1	8 -RenderLightingDetail		1	1  RenderMaxPartCount			1	2048  RenderObjectBump			1	1  RenderReflectionDetail		1	0 @@ -104,6 +108,10 @@ RenderVolumeLODFactor		1	1.125  VertexShaderEnable			1	1  WindLightUseAtmosShaders	1	0  WLSkyDetail					1	48 +RenderDeferred				1	0 +RenderDeferredSSAO			1	0 +RenderShadowDetail			1	0 +  //  // High Graphics Settings (purty) @@ -116,7 +124,6 @@ RenderAvatarVP				1	1  RenderFarClip				1	128  RenderFlexTimeFactor		1	1.0  RenderGlowResolutionPow		1	9 -RenderLightingDetail		1	1  RenderMaxPartCount			1	4096  RenderObjectBump			1	1  RenderReflectionDetail		1	2 @@ -128,6 +135,10 @@ RenderVolumeLODFactor		1	1.125  VertexShaderEnable			1	1  WindLightUseAtmosShaders	1	1  WLSkyDetail					1	48 +RenderDeferred				1	1 +RenderDeferredSSAO			1	0 +RenderShadowDetail			1	1 +  //  // Ultra graphics (REALLY PURTY!) @@ -140,7 +151,6 @@ RenderAvatarVP				1	1  RenderFarClip				1	256  RenderFlexTimeFactor		1	1.0  RenderGlowResolutionPow		1	9 -RenderLightingDetail		1	1  RenderMaxPartCount			1	8192  RenderObjectBump			1	1  RenderReflectionDetail		1	4 @@ -152,6 +162,10 @@ RenderVolumeLODFactor		1	2.0  VertexShaderEnable			1	1  WindLightUseAtmosShaders	1	1  WLSkyDetail					1	128 +RenderDeferred				1	1 +RenderDeferredSSAO			1	1 +RenderShadowDetail			1	2 +  //  // Class Unknown Hardware (unknown) @@ -192,6 +206,9 @@ RenderAvatarCloth			0	0  RenderReflectionDetail		0	0  VertexShaderEnable			0	0  WindLightUseAtmosShaders	0	0 +RenderDeferred				0	0 +RenderDeferredSSAO			0	0 +RenderShadowDetail			0	0  //  // No Vertex Shaders available @@ -202,6 +219,10 @@ RenderAvatarCloth			0	0  RenderReflectionDetail		0	0  VertexShaderEnable			0	0  WindLightUseAtmosShaders	0	0 +RenderDeferred				0	0 +RenderDeferredSSAO			0	0 +RenderShadowDetail			0	0 +  // "Default" setups for safe, low, medium, high  // @@ -209,7 +230,6 @@ list safe  RenderAnisotropic			1	0  RenderAvatarCloth			0	0  RenderAvatarVP				0	0 -RenderLightingDetail		1	0  RenderObjectBump			0	0  RenderMaxPartCount			1	1024  RenderTerrainDetail 		1	0 @@ -217,6 +237,10 @@ RenderUseImpostors			0	0  RenderVBOEnable				1	0  RenderReflectionDetail		0	0  WindLightUseAtmosShaders	0	0 +RenderDeferred				0	0 +RenderDeferredSSAO			0	0 +RenderShadowDetail			0	0 +  //  // CPU based feature masks @@ -240,11 +264,9 @@ RenderVBOEnable				1	0  list Intel  RenderAnisotropic			1	0 -RenderLightingDetail		1	0  list GeForce2  RenderAnisotropic			1	0 -RenderLightingDetail		1	0  RenderMaxPartCount			1	2048  RenderTerrainDetail			1	0  RenderVBOEnable				1	1 diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 281bfca188..551884d5a2 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -799,7 +799,7 @@ void LLFloaterPreference::buildPopupLists()  void LLFloaterPreference::refreshEnabledState()  {	 -	LLCheckBoxCtrl* ctrl_reflections = getChild<LLCheckBoxCtrl>("Reflections"); +	LLComboBox* ctrl_reflections = getChild<LLComboBox>("Reflections");  	LLRadioGroup* radio_reflection_detail = getChild<LLRadioGroup>("ReflectionDetailRadio");  	// Reflections @@ -812,7 +812,7 @@ void LLFloaterPreference::refreshEnabledState()  	bool bumpshiny = gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps && LLFeatureManager::getInstance()->isFeatureAvailable("RenderObjectBump");  	getChild<LLCheckBoxCtrl>("BumpShiny")->setEnabled(bumpshiny ? TRUE : FALSE); -	radio_reflection_detail->setEnabled(ctrl_reflections->get() && reflections); +	radio_reflection_detail->setEnabled(reflections);  	// Avatar Mode  	// Enable Avatar Shaders @@ -858,6 +858,26 @@ void LLFloaterPreference::refreshEnabledState()  	// *HACK just checks to see if we can use shaders...   	// maybe some cards that use shaders, but don't support windlight  	ctrl_wind_light->setEnabled(ctrl_shader_enable->getEnabled() && shaders); + +	//Deferred/SSAO/Shadows +	LLCheckBoxCtrl* ctrl_deferred = getChild<LLCheckBoxCtrl>("UseLightShaders"); +	if (LLFeatureManager::getInstance()->isFeatureAvailable("RenderUseFBO") && +		shaders) +	{ +		BOOL enabled = ctrl_wind_light->get() ? TRUE : FALSE; + +		ctrl_deferred->setEnabled(enabled); +	 +		LLCheckBoxCtrl* ctrl_ssao = getChild<LLCheckBoxCtrl>("UseSSAO"); +		LLComboBox* ctrl_shadow = getChild<LLComboBox>("ShadowDetail"); + +		enabled = enabled && (ctrl_deferred->get() ? TRUE : FALSE); +		 +		ctrl_ssao->setEnabled(enabled); +		ctrl_shadow->setEnabled(enabled); +	} + +  	// now turn off any features that are unavailable  	disableUnavailableSettings(); @@ -872,6 +892,9 @@ void LLFloaterPreference::disableUnavailableSettings()  	LLCheckBoxCtrl* ctrl_shader_enable = getChild<LLCheckBoxCtrl>("BasicShaders");  	LLCheckBoxCtrl* ctrl_wind_light    = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders");  	LLCheckBoxCtrl* ctrl_avatar_impostors = getChild<LLCheckBoxCtrl>("AvatarImpostors"); +	LLCheckBoxCtrl* ctrl_deferred = getChild<LLCheckBoxCtrl>("UseLightShaders"); +	LLComboBox* ctrl_shadows = getChild<LLComboBox>("ShadowDetail"); +	LLCheckBoxCtrl* ctrl_ssao = getChild<LLCheckBoxCtrl>("UseSSAO");  	// if vertex shaders off, disable all shader related products  	if(!LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable")) @@ -883,13 +906,22 @@ void LLFloaterPreference::disableUnavailableSettings()  		ctrl_wind_light->setValue(FALSE);  		ctrl_reflections->setEnabled(FALSE); -		ctrl_reflections->setValue(FALSE); +		ctrl_reflections->setValue(0);  		ctrl_avatar_vp->setEnabled(FALSE);  		ctrl_avatar_vp->setValue(FALSE);  		ctrl_avatar_cloth->setEnabled(FALSE);  		ctrl_avatar_cloth->setValue(FALSE); + +		ctrl_shadows->setEnabled(FALSE); +		ctrl_shadows->setValue(0); +		 +		ctrl_ssao->setEnabled(FALSE); +		ctrl_ssao->setValue(FALSE); + +		ctrl_deferred->setEnabled(FALSE); +		ctrl_deferred->setValue(FALSE);  	}  	// disabled windlight @@ -897,6 +929,16 @@ void LLFloaterPreference::disableUnavailableSettings()  	{  		ctrl_wind_light->setEnabled(FALSE);  		ctrl_wind_light->setValue(FALSE); + +		//deferred needs windlight, disable deferred +		ctrl_shadows->setEnabled(FALSE); +		ctrl_shadows->setValue(0); +		 +		ctrl_ssao->setEnabled(FALSE); +		ctrl_ssao->setValue(FALSE); + +		ctrl_deferred->setEnabled(FALSE); +		ctrl_deferred->setValue(FALSE);  	}  	// disabled reflections @@ -914,13 +956,25 @@ void LLFloaterPreference::disableUnavailableSettings()  		ctrl_avatar_cloth->setEnabled(FALSE);  		ctrl_avatar_cloth->setValue(FALSE); + +		//deferred needs AvatarVP, disable deferred +		ctrl_shadows->setEnabled(FALSE); +		ctrl_shadows->setValue(0); +		 +		ctrl_ssao->setEnabled(FALSE); +		ctrl_ssao->setValue(FALSE); + +		ctrl_deferred->setEnabled(FALSE); +		ctrl_deferred->setValue(FALSE);  	} +  	// disabled cloth  	if(!LLFeatureManager::getInstance()->isFeatureAvailable("RenderAvatarCloth"))  	{  		ctrl_avatar_cloth->setEnabled(FALSE);  		ctrl_avatar_cloth->setValue(FALSE);  	} +  	// disabled impostors  	if(!LLFeatureManager::getInstance()->isFeatureAvailable("RenderUseImpostors"))  	{ diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index b773b95917..0a1108c3c3 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -299,15 +299,6 @@ static bool handleWLSkyDetailChanged(const LLSD&)  	return true;  } -static bool handleRenderLightingDetailChanged(const LLSD& newvalue) -{ -	if (gPipeline.isInit()) -	{ -		gPipeline.setLightingDetail(newvalue.asInteger()); -	} -	return true; -} -  static bool handleResetVertexBuffersChanged(const LLSD&)  {  	if (gPipeline.isInit()) @@ -579,7 +570,6 @@ void settings_setup_listeners()  	gSavedSettings.getControl("RenderVBOEnable")->getSignal()->connect(boost::bind(&handleRenderUseVBOChanged, _2));  	gSavedSettings.getControl("RenderUseStreamVBO")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));  	gSavedSettings.getControl("WLSkyDetail")->getSignal()->connect(boost::bind(&handleWLSkyDetailChanged, _2)); -	gSavedSettings.getControl("RenderLightingDetail")->getSignal()->connect(boost::bind(&handleRenderLightingDetailChanged, _2));  	gSavedSettings.getControl("NumpadControl")->getSignal()->connect(boost::bind(&handleNumpadControlChanged, _2));  	gSavedSettings.getControl("JoystickAxis0")->getSignal()->connect(boost::bind(&handleJoystickChanged, _2));  	gSavedSettings.getControl("JoystickAxis1")->getSignal()->connect(boost::bind(&handleJoystickChanged, _2)); diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index c15f93d9aa..a0d0b9d490 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -317,10 +317,16 @@ S32 LLViewerShaderMgr::getVertexShaderLevel(S32 type)  void LLViewerShaderMgr::setShaders()  { -	if (!gPipeline.mInitialized || !sInitialized) +	//setShaders might be called redundantly by gSavedSettings, so return on reentrance +	static bool reentrance = false; +	 +	if (!gPipeline.mInitialized || !sInitialized || reentrance)  	{  		return;  	} + +	reentrance = true; +  	// Make sure the compiled shader map is cleared before we recompile shaders.  	mShaderObjects.clear(); @@ -368,15 +374,8 @@ void LLViewerShaderMgr::setShaders()  		S32 wl_class = 2;  		S32 water_class = 2;  		S32 deferred_class = 0; -		if (!(LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders") -			  && gSavedSettings.getBOOL("WindLightUseAtmosShaders"))) -		{ -			// user has disabled WindLight in their settings, downgrade -			// windlight shaders to stub versions. -			wl_class = 1; -		} - -		if (LLPipeline::sRenderDeferred) +		 +		if (gSavedSettings.getBOOL("RenderDeferred"))  		{  			if (gSavedSettings.getS32("RenderShadowDetail") > 0)  			{ @@ -393,6 +392,24 @@ void LLViewerShaderMgr::setShaders()  			{ //no shadows  				deferred_class = 1;  			} + +			//make sure framebuffer objects are enabled +			gSavedSettings.setBOOL("RenderUseFBO", TRUE); + +			//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"))) +		{ +			// user has disabled WindLight in their settings, downgrade +			// windlight shaders to stub versions. +			wl_class = 1;  		}  		if(!gSavedSettings.getBOOL("EnableRippleWater")) @@ -517,6 +534,8 @@ void LLViewerShaderMgr::setShaders()  		gViewerWindow->setCursor(UI_CURSOR_ARROW);  	}  	gPipeline.createGLBuffers(); + +	reentrance = false;  }  void LLViewerShaderMgr::unloadShaders() diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp index b7c265be59..b0c4b6fc8a 100644 --- a/indra/newview/llviewerstats.cpp +++ b/indra/newview/llviewerstats.cpp @@ -592,7 +592,7 @@ void update_statistics(U32 frame_count)  		}  	}  	LLViewerStats::getInstance()->setStat(LLViewerStats::ST_ENABLE_VBO, (F64)gSavedSettings.getBOOL("RenderVBOEnable")); -	LLViewerStats::getInstance()->setStat(LLViewerStats::ST_LIGHTING_DETAIL, (F64)gSavedSettings.getS32("RenderLightingDetail")); +	LLViewerStats::getInstance()->setStat(LLViewerStats::ST_LIGHTING_DETAIL, (F64)gPipeline.getLightingDetail());  	LLViewerStats::getInstance()->setStat(LLViewerStats::ST_DRAW_DIST, (F64)gSavedSettings.getF32("RenderFarClip"));  	LLViewerStats::getInstance()->setStat(LLViewerStats::ST_CHAT_BUBBLES, (F64)gSavedSettings.getBOOL("UseChatBubbles"));  #if 0 // 1.9.2 diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index fc81241080..21052775bd 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -408,6 +408,8 @@ void LLPipeline::init()  	{  		mSpotLightFade[i] = 1.f;  	} + +	setLightingDetail(-1);  }  LLPipeline::~LLPipeline() @@ -904,13 +906,18 @@ S32 LLPipeline::setLightingDetail(S32 level)  	if (level < 0)  	{ -		level = gSavedSettings.getS32("RenderLightingDetail"); +		if (gSavedSettings.getBOOL("VertexShaderEnable")) +		{ +			level = 1; +		} +		else +		{ +			level = 0; +		}  	}  	level = llclamp(level, 0, getMaxLightingDetail());  	if (level != mLightingDetail)  	{ -		gSavedSettings.setS32("RenderLightingDetail", level); -		  		mLightingDetail = level;  		if (mVertexShadersLoaded == 1) diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml index 96083bd5fa..87502537d3 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml @@ -215,12 +215,15 @@  		control_name="RenderDeferred"  		height="16"  		initial_value="true" -		label="Lighting Shaders" +		label="Lighting and Shadows"  		layout="topleft"  		left_delta="0"  		name="UseLightShaders"  		top_pad="1" -		width="256"/> +		width="256"> +      <check_box.commit_callback +			function="Pref.VertexShaderEnable" /> +    </check_box>      <check_box  		control_name="RenderDeferredSSAO"  		height="16" @@ -230,9 +233,12 @@  		left_delta="0"  		name="UseSSAO"  		top_pad="1" -		width="256"/> +		width="256"> +      <check_box.commit_callback +			function="Pref.VertexShaderEnable" /> +    </check_box> -      <text +     <text      type="string"      length="1"      top_pad="8" @@ -242,72 +248,72 @@      word_wrap="true"      layout="topleft"      left="10" -    name="reflection_label"> -        Water Reflections: +    name="shadows_label"> +        Shadows:        </text>        <combo_box -      control_name="RenderReflectionDetail" +      control_name="RenderShadowDetail"        height="23"        layout="topleft" -      left_="10" -      top_pad ="0"  -      name="Reflections" +      left="10" +      top_pad="0"  +      name="ShadowDetail"        width="150">          <combo_box.item          label="None"          name="0"          value="0"/>          <combo_box.item -        label="Terrain and trees" +        label="Sun/Moon"          name="1"          value="1"/>          <combo_box.item -        label="All static objects" +        label="Sun/Moon + Projectors"          name="2"          value="2"/> -        <combo_box.item -        label="All avatars and objects" -        name="3" -        value="3"/> -        <combo_box.item -        label="Everything" -        name="4" -        value="4"/>        </combo_box>        <text -    type="string" -    length="1" -    top_pad="8" -    follows="top|left" -    height="23" -    width="110" -    word_wrap="true" -    layout="topleft" -    left="10" -    name="shadows_label"> -        Shadows: +  type="string" +  length="1" +  top_pad="8" +  follows="top|left" +  height="23" +  width="110" +  word_wrap="true" +  layout="topleft" +  left="10" +  name="reflection_label"> +        Water Reflections:        </text>        <combo_box -      control_name="RenderShadowDetail" +      control_name="RenderReflectionDetail"        height="23"        layout="topleft" -      left="10" -      top_pad="0"  -      name="ShadowDetailRadio" +      left_="10" +      top_pad ="0" +      name="Reflections"        width="150">          <combo_box.item          label="None"          name="0"          value="0"/>          <combo_box.item -        label="Sun/Moon" +        label="Terrain and trees"          name="1"          value="1"/>          <combo_box.item -        label="Sun/Moon + Projectors" +        label="All static objects"          name="2"          value="2"/> +        <combo_box.item +        label="All avatars and objects" +        name="3" +        value="3"/> +        <combo_box.item +        label="Everything" +        name="4" +        value="4"/>        </combo_box>  		<slider | 
