diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index c7a23552c2900f70148b63e534fa4186480ff623..837f801add34b63d608d23a0e58270df667e631f 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -9046,16 +9046,16 @@
     <key>Value</key>
     <integer>0</integer>
   </map>
-  <key>RenderLocalLights</key>
+  <key>RenderLocalLightCount</key>
   <map>
     <key>Comment</key>
-    <string>Whether or not to render local lights.</string>
+    <string>Number of local lights to render.</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
-    <string>Boolean</string>
+    <string>S32</string>
     <key>Value</key>
-    <integer>1</integer>
+    <integer>256</integer>
   </map>
   <key>RenderShadowSplitExponent</key>
   <map>
diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt
index 39f7996c7cd5c964a929a68705fd56ef43999e2e..f92d9a2a0ee323b973331382966ac1c104351a82 100644
--- a/indra/newview/featuretable.txt
+++ b/indra/newview/featuretable.txt
@@ -1,4 +1,4 @@
-version 58
+version 59
 // The version number above should be incremented IF AND ONLY IF some
 // change has been made that is sufficiently important to justify
 // resetting the graphics preferences of all users to the recommended
@@ -42,7 +42,7 @@ RenderGamma					1	0
 RenderGlowResolutionPow		1	9
 RenderMaxPartCount			1	8192
 RenderObjectBump			1	1
-RenderLocalLights			1	1
+RenderLocalLightCount		1	4096
 RenderTransparentWater      1   1
 RenderReflectionsEnabled    1   1
 RenderReflectionProbeDetail	1	2
@@ -87,10 +87,10 @@ RenderAvatarMaxComplexity          1	35000
 RenderFarClip				1	64
 RenderFlexTimeFactor		1	0
 RenderGlowResolutionPow		1	8
-RenderLocalLights			1	0
+RenderLocalLightCount		1	8
 RenderMaxPartCount			1	0
 RenderTransparentWater      1   0
-RenderReflectionsEnabled    1   0
+RenderReflectionsEnabled    1   1
 RenderReflectionProbeDetail	1	0
 RenderTerrainDetail			1	0
 RenderTerrainLODFactor		1	1
@@ -117,7 +117,7 @@ RenderFarClip				1	96
 RenderFlexTimeFactor		1	1.0
 RenderGlowResolutionPow		1	8
 RenderMaxPartCount			1	2048
-RenderLocalLights			1	1
+RenderLocalLightCount		1	256
 RenderTransparentWater      1   0
 RenderReflectionsEnabled    1   1
 RenderReflectionProbeDetail	1	0
@@ -146,7 +146,7 @@ RenderFarClip				1	128
 RenderFlexTimeFactor		1	1.0
 RenderGlowResolutionPow		1	9
 RenderMaxPartCount			1	4096
-RenderLocalLights			1	1
+RenderLocalLightCount		1	512
 RenderTransparentWater      1   0
 RenderTerrainDetail			1	1
 RenderTerrainLODFactor		1	2.0
@@ -175,7 +175,7 @@ RenderFarClip				1	128
 RenderFlexTimeFactor		1	1.0
 RenderGlowResolutionPow		1	9
 RenderMaxPartCount			1	4096
-RenderLocalLights			1	1
+RenderLocalLightCount		1	1024
 RenderTransparentWater      1   1
 RenderTerrainDetail			1	1
 RenderTerrainLODFactor		1	2.0
@@ -204,7 +204,7 @@ RenderFarClip				1	128
 RenderFlexTimeFactor		1	1.0
 RenderGlowResolutionPow		1	9
 RenderMaxPartCount			1	4096
-RenderLocalLights			1	1
+RenderLocalLightCount		1	2048
 RenderTransparentWater      1   1
 RenderTerrainDetail			1	1
 RenderTerrainLODFactor		1	2.0
@@ -233,7 +233,7 @@ RenderFarClip				1	128
 RenderFlexTimeFactor		1	1.0
 RenderGlowResolutionPow		1	9
 RenderMaxPartCount			1	4096
-RenderLocalLights			1	1
+RenderLocalLightCount		1	4096
 RenderTerrainDetail			1	1
 RenderTerrainLODFactor		1	2.0
 RenderTransparentWater		1	1
@@ -260,7 +260,7 @@ RenderAvatarPhysicsLODFactor 1	1.0
 RenderFarClip				1	256
 RenderFlexTimeFactor		1	1.0
 RenderGlowResolutionPow		1	9
-RenderLocalLights			1	1
+RenderLocalLightCount		1	8192
 RenderMaxPartCount			1	8192
 RenderTerrainDetail			1	1
 RenderTerrainLODFactor		1	2.0
@@ -299,7 +299,7 @@ list safe
 RenderAnisotropic			1	0
 RenderAvatarMaxNonImpostors 1	16
 RenderAvatarMaxComplexity          1	80000
-RenderLocalLights			1	0
+RenderLocalLightCount		1	0
 RenderMaxPartCount			1	1024
 RenderTerrainDetail 		1	0
 RenderTransparentWater      1   0
diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt
index cce403c7aaf024280445feb836f0802155db3be0..d86412a237959a73d7a5c373eb1b125d7af8a5ab 100644
--- a/indra/newview/featuretable_mac.txt
+++ b/indra/newview/featuretable_mac.txt
@@ -1,4 +1,4 @@
-version 53
+version 54
 // The version number above should be incremented IF AND ONLY IF some
 // change has been made that is sufficiently important to justify
 // resetting the graphics preferences of all users to the recommended
@@ -42,7 +42,7 @@ RenderGamma					1	0
 RenderGlowResolutionPow		1	9
 RenderMaxPartCount			1	8192
 RenderObjectBump			1	1
-RenderLocalLights			1	1
+RenderLocalLightCount		1	4096
 RenderTerrainDetail			1	1
 RenderTerrainLODFactor		1	2.0
 RenderTransparentWater		1	1
@@ -85,7 +85,7 @@ RenderAvatarMaxComplexity          1	35000
 RenderFarClip				1	64
 RenderFlexTimeFactor		1	0
 RenderGlowResolutionPow		1	8
-RenderLocalLights			1	0
+RenderLocalLightCount		1	8
 RenderMaxPartCount			1	0
 RenderTerrainDetail			1	0
 RenderTerrainLODFactor		1	1
@@ -97,7 +97,7 @@ RenderUseAdvancedAtmospherics 1 0
 RenderShadowDetail			1	0
 WLSkyDetail					1	96
 RenderFSAASamples			1	0
-RenderReflectionsEnabled    1   0
+RenderReflectionsEnabled    1   1
 RenderReflectionProbeDetail	1	0
 RenderScreenSpaceReflections 1  0
 RenderReflectionProbeLevel  1   0
@@ -115,7 +115,7 @@ RenderFarClip				1	96
 RenderFlexTimeFactor		1	1.0
 RenderGlowResolutionPow		1	8
 RenderMaxPartCount			1	2048
-RenderLocalLights			1	1
+RenderLocalLightCount		1	256
 RenderTerrainDetail			1	1
 RenderTerrainLODFactor		1	1.0
 RenderTransparentWater		1	1
@@ -144,7 +144,7 @@ RenderFarClip				1	128
 RenderFlexTimeFactor		1	1.0
 RenderGlowResolutionPow		1	9
 RenderMaxPartCount			1	4096
-RenderLocalLights			1	1
+RenderLocalLightCount		1	512
 RenderTerrainDetail			1	1
 RenderTerrainLODFactor		1	2.0
 RenderTransparentWater		1	1
@@ -173,7 +173,7 @@ RenderFarClip				1	128
 RenderFlexTimeFactor		1	1.0
 RenderGlowResolutionPow		1	9
 RenderMaxPartCount			1	4096
-RenderLocalLights			1	1
+RenderLocalLightCount		1	1024
 RenderTerrainDetail			1	1
 RenderTerrainLODFactor		1	2.0
 RenderTransparentWater		1	1
@@ -202,7 +202,7 @@ RenderFarClip				1	128
 RenderFlexTimeFactor		1	1.0
 RenderGlowResolutionPow		1	9
 RenderMaxPartCount			1	4096
-RenderLocalLights			1	1
+RenderLocalLightCount		1	2048
 RenderTerrainDetail			1	1
 RenderTerrainLODFactor		1	2.0
 RenderTransparentWater		1	1
@@ -231,7 +231,7 @@ RenderFarClip				1	128
 RenderFlexTimeFactor		1	1.0
 RenderGlowResolutionPow		1	9
 RenderMaxPartCount			1	4096
-RenderLocalLights			1	1
+RenderLocalLightCount		1	4096
 RenderTerrainDetail			1	1
 RenderTerrainLODFactor		1	2.0
 RenderTransparentWater		1	1
@@ -258,7 +258,7 @@ RenderAvatarMaxNonImpostors 1   16
 RenderFarClip				1	256
 RenderFlexTimeFactor		1	1.0
 RenderGlowResolutionPow		1	9
-RenderLocalLights			1	1
+RenderLocalLightCount		1	8192
 RenderMaxPartCount			1	8192
 RenderTerrainDetail			1	1
 RenderTerrainLODFactor		1	2.0
@@ -298,7 +298,7 @@ list safe
 RenderAnisotropic			1	0
 RenderAvatarMaxNonImpostors 1	16
 RenderAvatarMaxComplexity          1	80000
-RenderLocalLights			1	0
+RenderLocalLightCount		1	0
 RenderMaxPartCount			1	1024
 RenderTerrainDetail 		1	0
 RenderDeferredSSAO			0	0
@@ -313,7 +313,6 @@ RenderDeferredSSAO			1	0
 
 list Intel
 RenderAnisotropic			1	0
-RenderLocalLights			1	0
 RenderFSAASamples			1	0
 
 list GL3
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 9f4287c23d2f46a286019b542b8c88e3b9434129..7738cb904eda10a162d91de41f63b6b3a9a9975f 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -414,12 +414,6 @@ static bool handleRenderDynamicLODChanged(const LLSD& newvalue)
 	return true;
 }
 
-static bool handleRenderLocalLightsChanged(const LLSD& newvalue)
-{
-	gPipeline.setLightingDetail(-1);
-	return true;
-}
-
 static bool handleReflectionProbeDetailChanged(const LLSD& newvalue)
 {
     if (gPipeline.isInit())
@@ -722,7 +716,6 @@ void settings_setup_listeners()
     setting_setup_signal_listener(gSavedSettings, "RenderFogRatio", handleFogRatioChanged);
     setting_setup_signal_listener(gSavedSettings, "RenderMaxPartCount", handleMaxPartCountChanged);
     setting_setup_signal_listener(gSavedSettings, "RenderDynamicLOD", handleRenderDynamicLODChanged);
-    setting_setup_signal_listener(gSavedSettings, "RenderLocalLights", handleRenderLocalLightsChanged);
 	setting_setup_signal_listener(gSavedSettings, "RenderVSyncEnable", handleVSyncChanged);
     setting_setup_signal_listener(gSavedSettings, "RenderDeferredNoise", handleReleaseGLBufferChanged);
     setting_setup_signal_listener(gSavedSettings, "RenderDebugPipeline", handleRenderDebugPipelineChanged);
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index d52f0b68fad5cb3abe0013344620f22015ba96b9..5adc26dc73b697df44de84e5927dcf02de237a04 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -413,9 +413,6 @@ void LLViewerShaderMgr::setShaders()
         gViewerWindow->setCursor(UI_CURSOR_WAIT);
     }
 
-    // Lighting
-    gPipeline.setLightingDetail(-1);
-
     // Shaders
     LL_INFOS("ShaderLoading") << "\n~~~~~~~~~~~~~~~~~~\n Loading Shaders:\n~~~~~~~~~~~~~~~~~~" << LL_ENDL;
     LL_INFOS("ShaderLoading") << llformat("Using GLSL %d.%d", gGLManager.mGLSLVersionMajor, gGLManager.mGLSLVersionMinor) << LL_ENDL;
@@ -580,21 +577,6 @@ std::string LLViewerShaderMgr::loadBasicShaders()
 	
 	S32 sum_lights_class = 3;
 
-	// class one cards will get the lower sum lights
-	// class zero we're not going to think about
-	// since a class zero card COULD be a ridiculous new card
-	// and old cards should have the features masked
-	if(LLFeatureManager::getInstance()->getGPUClass() == GPU_CLASS_1)
-	{
-		sum_lights_class = 2;
-	}
-
-	// If we have sun and moon only checked, then only sum those lights.
-	if (gPipeline.getLightingDetail() == 0)
-	{
-		sum_lights_class = 1;
-	}
-
 #if LL_DARWIN
 	// Work around driver crashes on older Macs when using deferred rendering
 	// NORSPEC-59
diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp
index 490cadee5c889bce093625227745b3ac68702553..6ac94fe4c41092448b3bca383e9aff1dd6a29c31 100644
--- a/indra/newview/llviewerstats.cpp
+++ b/indra/newview/llviewerstats.cpp
@@ -192,7 +192,6 @@ LLTrace::SampleStatHandle<>	FPS_SAMPLE("fpssample"),
 							NUM_OBJECTS("numobjectsstat"),
 							NUM_ACTIVE_OBJECTS("numactiveobjectsstat"),
 							ENABLE_VBO("enablevbo", "Vertex Buffers Enabled"),
-							LIGHTING_DETAIL("lightingdetail", "Lighting Detail"),
 							VISIBLE_AVATARS("visibleavatars", "Visible Avatars"),
 							SHADER_OBJECTS("shaderobjects", "Object Shaders"),
 							DRAW_DISTANCE("drawdistance", "Draw Distance"),
@@ -402,7 +401,6 @@ void update_statistics()
 	record(LLStatViewer::TRIANGLES_DRAWN_PER_FRAME, last_frame_recording.getSum(LLStatViewer::TRIANGLES_DRAWN));
 
 	sample(LLStatViewer::ENABLE_VBO,      (F64)gSavedSettings.getBOOL("RenderVBOEnable"));
-	sample(LLStatViewer::LIGHTING_DETAIL, (F64)gPipeline.getLightingDetail());
 	sample(LLStatViewer::DRAW_DISTANCE,   (F64)gSavedSettings.getF32("RenderFarClip"));
 	sample(LLStatViewer::CHAT_BUBBLES,    gSavedSettings.getBOOL("UseChatBubbles"));
 
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 78d4e65d42e8968fdbe0409cd632b469af3c24dd..9266c84540cc30e2083a8dc602ea5d90ba8edd4b 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -130,7 +130,6 @@ S32 LLPipeline::RenderShadowDetail;
 S32 LLPipeline::RenderShadowSplits;
 bool LLPipeline::RenderDeferredSSAO;
 F32 LLPipeline::RenderShadowResolutionScale;
-bool LLPipeline::RenderLocalLights;
 bool LLPipeline::RenderDelayCreation;
 bool LLPipeline::RenderAnimateRes;
 bool LLPipeline::FreezeTime;
@@ -349,8 +348,7 @@ LLPipeline::LLPipeline() :
 	mResetVertexBuffers(false),
 	mLastRebuildPool(NULL),
 	mLightMask(0),
-	mLightMovingMask(0),
-	mLightingDetail(0)
+	mLightMovingMask(0)
 {
 	mNoiseMap = 0;
 	mTrueNoiseMap = 0;
@@ -471,8 +469,6 @@ void LLPipeline::init()
         mScreenTriangleVB->unmapBuffer();
     }
 
-    setLightingDetail(-1);
-	
 	//
 	// Update all settings to trigger a cached settings refresh
 	//
@@ -491,7 +487,6 @@ void LLPipeline::init()
     connectRefreshCachedSettingsSafe("RenderShadowSplits");
 	connectRefreshCachedSettingsSafe("RenderDeferredSSAO");
 	connectRefreshCachedSettingsSafe("RenderShadowResolutionScale");
-	connectRefreshCachedSettingsSafe("RenderLocalLights");
 	connectRefreshCachedSettingsSafe("RenderDelayCreation");
 	connectRefreshCachedSettingsSafe("RenderAnimateRes");
 	connectRefreshCachedSettingsSafe("FreezeTime");
@@ -982,7 +977,6 @@ void LLPipeline::refreshCachedSettings()
     RenderShadowSplits = gSavedSettings.getS32("RenderShadowSplits");
 	RenderDeferredSSAO = gSavedSettings.getBOOL("RenderDeferredSSAO");
 	RenderShadowResolutionScale = gSavedSettings.getF32("RenderShadowResolutionScale");
-	RenderLocalLights = gSavedSettings.getBOOL("RenderLocalLights");
 	RenderDelayCreation = gSavedSettings.getBOOL("RenderDelayCreation");
 	RenderAnimateRes = gSavedSettings.getBOOL("RenderAnimateRes");
 	FreezeTime = gSavedSettings.getBOOL("FreezeTime");
@@ -1356,39 +1350,6 @@ void LLPipeline::enableShadows(const bool enable_shadows)
 	//should probably do something here to wrangle shadows....	
 }
 
-S32 LLPipeline::getMaxLightingDetail() const
-{
-	/*if (mShaderLevel[SHADER_OBJECT] >= LLDrawPoolSimple::SHADER_LEVEL_LOCAL_LIGHTS)
-	{
-		return 3;
-	}
-	else*/
-	{
-		return 1;
-	}
-}
-
-S32 LLPipeline::setLightingDetail(S32 level)
-{
-	refreshCachedSettings();
-
-	if (level < 0)
-	{
-		if (RenderLocalLights)
-		{
-			level = 1;
-		}
-		else
-		{
-			level = 0;
-		}
-	}
-	level = llclamp(level, 0, getMaxLightingDetail());
-	mLightingDetail = level;
-	
-	return mLightingDetail;
-}
-
 class LLOctreeDirtyTexture : public OctreeTraveler
 {
 public:
@@ -5251,7 +5212,9 @@ void LLPipeline::calcNearbyLights(LLCamera& camera)
 		return;
 	}
 
-	if (mLightingDetail >= 1)
+    static LLCachedControl<S32> local_light_count(gSavedSettings, "RenderLocalLightCount", 256);
+
+	if (local_light_count >= 1)
 	{
 		// mNearbyLight (and all light_set_t's) are sorted such that
 		// begin() == the closest light and rbegin() == the farthest light
@@ -5518,7 +5481,9 @@ void LLPipeline::setupHWLights()
 
 	mLightMovingMask = 0;
 	
-	if (mLightingDetail >= 1)
+    static LLCachedControl<S32> local_light_count(gSavedSettings, "RenderLocalLightCount", 256);
+
+	if (local_light_count >= 1)
 	{
 		for (light_set_t::iterator iter = mNearbyLights.begin();
 			 iter != mNearbyLights.end(); ++iter)
@@ -5661,10 +5626,6 @@ void LLPipeline::enableLights(U32 mask)
 {
 	assertInitialized();
 
-	if (mLightingDetail == 0)
-	{
-		mask &= 0xf003; // sun and backlight only (and fullbright bit)
-	}
 	if (mLightMask != mask)
 	{
 		stop_glerror();
@@ -5692,28 +5653,13 @@ void LLPipeline::enableLights(U32 mask)
 	}
 }
 
-void LLPipeline::enableLightsStatic()
-{
-	assertInitialized();
-	U32 mask = 0x01; // Sun
-	if (mLightingDetail >= 2)
-	{
-		mask |= mLightMovingMask; // Hardware moving lights
-	}
-	else
-	{
-		mask |= 0xff & (~2); // Hardware local lights
-	}
-	enableLights(mask);
-}
-
 void LLPipeline::enableLightsDynamic()
 {
 	assertInitialized();
 	U32 mask = 0xff & (~2); // Local lights
 	enableLights(mask);
 	
-	if (isAgentAvatarValid() && getLightingDetail() <= 0)
+	if (isAgentAvatarValid())
 	{
 		if (gAgentAvatarp->mSpecialRenderMode == 0) // normal
 		{
@@ -7961,9 +7907,9 @@ void LLPipeline::renderDeferredLighting()
             unbindDeferredShader(LLPipeline::sUnderWaterRender ? gDeferredSoftenWaterProgram : gDeferredSoftenProgram);
         }
 
-        bool render_local = RenderLocalLights; // && !gCubeSnapshot;
+        static LLCachedControl<S32> local_light_count(gSavedSettings, "RenderLocalLightCount", 256);
 
-        if (render_local)
+        if (local_light_count > 0)
         {
             gGL.setSceneBlendType(LLRender::BT_ADD);
             std::list<LLVector4>        fullscreen_lights;
@@ -7998,8 +7944,15 @@ void LLPipeline::renderDeferredLighting()
                 // mNearbyLights already includes distance calculation and excludes muted avatars.
                 // It is calculated from mLights
                 // mNearbyLights also provides fade value to gracefully fade-out out of range lights
+                S32 count = 0;
                 for (light_set_t::iterator iter = mNearbyLights.begin(); iter != mNearbyLights.end(); ++iter)
                 {
+                    count++;
+                    if (count > local_light_count)
+                    { //stop collecting lights once we hit the limit
+                        break;
+                    }
+
                     LLDrawable * drawablep = iter->drawable;
                     LLVOVolume * volume = drawablep->getVOVolume();
                     if (!volume)
@@ -8046,24 +7999,20 @@ void LLPipeline::renderDeferredLighting()
                         camera->getOrigin().mV[1] > c[1] + s + 0.2f || camera->getOrigin().mV[1] < c[1] - s - 0.2f ||
                         camera->getOrigin().mV[2] > c[2] + s + 0.2f || camera->getOrigin().mV[2] < c[2] - s - 0.2f)
                     {  // draw box if camera is outside box
-                        if (render_local)
+                        if (volume->isLightSpotlight())
                         {
-                            if (volume->isLightSpotlight())
-                            {
-                                drawablep->getVOVolume()->updateSpotLightPriority();
-                                spot_lights.push_back(drawablep);
-                                continue;
-                            }
+                            drawablep->getVOVolume()->updateSpotLightPriority();
+                            spot_lights.push_back(drawablep);
+                            continue;
+                        }
 
-                            gDeferredLightProgram.uniform3fv(LLShaderMgr::LIGHT_CENTER, 1, c);
-                            gDeferredLightProgram.uniform1f(LLShaderMgr::LIGHT_SIZE, s);
-                            gDeferredLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, col.mV);
-                            gDeferredLightProgram.uniform1f(LLShaderMgr::LIGHT_FALLOFF, volume->getLightFalloff(DEFERRED_LIGHT_FALLOFF));
-                            gGL.syncMatrices();
+                        gDeferredLightProgram.uniform3fv(LLShaderMgr::LIGHT_CENTER, 1, c);
+                        gDeferredLightProgram.uniform1f(LLShaderMgr::LIGHT_SIZE, s);
+                        gDeferredLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, col.mV);
+                        gDeferredLightProgram.uniform1f(LLShaderMgr::LIGHT_FALLOFF, volume->getLightFalloff(DEFERRED_LIGHT_FALLOFF));
+                        gGL.syncMatrices();
 
-                            mCubeVB->drawRange(LLRender::TRIANGLE_FAN, 0, 7, 8, get_box_fan_indices(camera, center));
-                            stop_glerror();
-                        }
+                        mCubeVB->drawRange(LLRender::TRIANGLE_FAN, 0, 7, 8, get_box_fan_indices(camera, center));
                     }
                     else
                     {
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index fe92c69cbb379a634036e93db3cfd059b479245e..d4c6432e55a1a83e712a646a50adcfb36eb4fb96 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -239,12 +239,6 @@ class LLPipeline
     void        releaseSunShadowTargets();
     void        releaseSunShadowTarget(U32 index);
 
-// 	void		setLocalLighting(const bool local_lighting);
-// 	bool		isLocalLightingEnabled() const;
-	S32			setLightingDetail(S32 level);
-	S32			getLightingDetail() const { return mLightingDetail; }
-	S32			getMaxLightingDetail() const;
-		
 	bool		shadersLoaded();
 	bool		canUseWindLightShaders() const;
 	bool		canUseAntiAliasing() const;
@@ -348,7 +342,6 @@ class LLPipeline
 	void setupHWLights();
 	void setupAvatarLights(bool for_edit = false);
 	void enableLights(U32 mask);
-	void enableLightsStatic();
 	void enableLightsDynamic();
 	void enableLightsAvatar();
 	void enableLightsPreview();
@@ -945,7 +938,6 @@ class LLPipeline
 	
 	U32						mLightMask;
 	U32						mLightMovingMask;
-	S32						mLightingDetail;
 		
 	static bool				sRenderPhysicalBeacons;
 	static bool				sRenderMOAPBeacons;
@@ -975,7 +967,6 @@ class LLPipeline
     static S32 RenderShadowSplits;
 	static bool RenderDeferredSSAO;
 	static F32 RenderShadowResolutionScale;
-	static bool RenderLocalLights;
 	static bool RenderDelayCreation;
 	static bool RenderAnimateRes;
 	static bool FreezeTime;
diff --git a/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml b/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml
index fd806739031949c98841f649f8f901c05161c9bd..bc237322af43df49f59c3e39e8cfabf54cda77af 100644
--- a/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml
+++ b/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml
@@ -540,17 +540,6 @@
       function="Pref.RenderOptionUpdate" />
   </check_box>
 
-  <check_box
-    control_name="RenderLocalLights"
-    height="16"
-    initial_value="true"
-    label="Local Lights"
-    layout="topleft"
-    left="420"
-    name="LocalLights"
-    top_delta="16"
-    width="300" />
-
   <slider
     control_name="WLSkyDetail"
     decimal_digits="0"