From bcabe4ab393ff1bb89316ae90b6399ead98a0053 Mon Sep 17 00:00:00 2001 From: Regalis Date: Sat, 25 Feb 2017 21:50:11 +0200 Subject: [PATCH] Disabled convexhull shadow caching --- Subsurface/Source/Map/Lights/ConvexHull.cs | 52 +++++++--------------- 1 file changed, 15 insertions(+), 37 deletions(-) diff --git a/Subsurface/Source/Map/Lights/ConvexHull.cs b/Subsurface/Source/Map/Lights/ConvexHull.cs index d0e3fb589..f35a96c45 100644 --- a/Subsurface/Source/Map/Lights/ConvexHull.cs +++ b/Subsurface/Source/Map/Lights/ConvexHull.cs @@ -7,7 +7,7 @@ using System.Linq; namespace Barotrauma.Lights { - class CachedShadow : IDisposable + /*class CachedShadow : IDisposable { public VertexBuffer ShadowBuffer; @@ -40,7 +40,7 @@ namespace Barotrauma.Lights { ShadowBuffer.Dispose(); } - } + }*/ class ConvexHullList { @@ -71,7 +71,9 @@ namespace Barotrauma.Lights static BasicEffect shadowEffect; static BasicEffect penumbraEffect; - private Dictionary cachedShadows; + //private Dictionary cachedShadows; + + public VertexBuffer ShadowBuffer; private Vector2[] vertices; private Vector2[] losVertices; @@ -124,7 +126,7 @@ namespace Barotrauma.Lights parentEntity = parent; - cachedShadows = new Dictionary(); + //cachedShadows = new Dictionary(); shadowVertices = new VertexPositionColor[6 * 2]; penumbraVertices = new VertexPositionTexture[6]; @@ -191,8 +193,6 @@ namespace Barotrauma.Lights public void Move(Vector2 amount) { - ClearCachedShadows(); - for (int i = 0; i < vertices.Length; i++) { vertices[i] += amount; @@ -204,8 +204,6 @@ namespace Barotrauma.Lights public void SetVertices(Vector2[] points) { - ClearCachedShadows(); - vertices = points; losVertices = points; @@ -231,7 +229,7 @@ namespace Barotrauma.Lights CalculateDimensions(); } - private void RemoveCachedShadow(Lights.LightSource light) + /*private void RemoveCachedShadow(Lights.LightSource light) { CachedShadow shadow = null; cachedShadows.TryGetValue(light, out shadow); @@ -251,7 +249,7 @@ namespace Barotrauma.Lights cachedShadow.Value.Dispose(); } cachedShadows.Clear(); - } + }*/ public bool Intersects(Rectangle rect) { @@ -468,29 +466,13 @@ namespace Barotrauma.Lights } } - - CachedShadow cachedShadow = null; - if (!cachedShadows.TryGetValue(light, out cachedShadow) || - Vector2.DistanceSquared(lightSourcePos, cachedShadow.LightPos) > 1.0f) - { - CalculateShadowVertices(lightSourcePos, los); - - if (cachedShadow != null) - { - cachedShadow.LightPos = lightSourcePos; - cachedShadow.ShadowBuffer.SetData(shadowVertices, 0, shadowVertices.Length); - cachedShadow.ShadowVertexCount = shadowVertexCount; - } - else - { - cachedShadow = new CachedShadow(shadowVertices, lightSourcePos, shadowVertexCount, 0); - RemoveCachedShadow(light); - cachedShadows.Add(light, cachedShadow); - } - } - - graphicsDevice.SetVertexBuffer(cachedShadow.ShadowBuffer); - shadowVertexCount = cachedShadow.ShadowVertexCount; + + CalculateShadowVertices(lightSourcePos, los); + ShadowBuffer = new VertexBuffer(GameMain.CurrGraphicsDevice, VertexPositionColor.VertexDeclaration, 6 * 2, BufferUsage.None); + ShadowBuffer.SetData(shadowVertices, 0, shadowVertices.Length); + + graphicsDevice.SetVertexBuffer(ShadowBuffer); + shadowVertexCount = shadowVertices.Length; DrawShadows(graphicsDevice, cam, transform, los); } @@ -546,8 +528,6 @@ namespace Barotrauma.Lights public void Remove() { - ClearCachedShadows(); - var chList = HullLists.Find(x => x.Submarine == parentEntity.Submarine); if (chList != null) @@ -559,8 +539,6 @@ namespace Barotrauma.Lights } } } - - } }