Disabled convexhull shadow caching
This commit is contained in:
@@ -7,7 +7,7 @@ using System.Linq;
|
|||||||
|
|
||||||
namespace Barotrauma.Lights
|
namespace Barotrauma.Lights
|
||||||
{
|
{
|
||||||
class CachedShadow : IDisposable
|
/*class CachedShadow : IDisposable
|
||||||
{
|
{
|
||||||
public VertexBuffer ShadowBuffer;
|
public VertexBuffer ShadowBuffer;
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@ namespace Barotrauma.Lights
|
|||||||
{
|
{
|
||||||
ShadowBuffer.Dispose();
|
ShadowBuffer.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
|
|
||||||
class ConvexHullList
|
class ConvexHullList
|
||||||
{
|
{
|
||||||
@@ -71,7 +71,9 @@ namespace Barotrauma.Lights
|
|||||||
static BasicEffect shadowEffect;
|
static BasicEffect shadowEffect;
|
||||||
static BasicEffect penumbraEffect;
|
static BasicEffect penumbraEffect;
|
||||||
|
|
||||||
private Dictionary<LightSource, CachedShadow> cachedShadows;
|
//private Dictionary<LightSource, CachedShadow> cachedShadows;
|
||||||
|
|
||||||
|
public VertexBuffer ShadowBuffer;
|
||||||
|
|
||||||
private Vector2[] vertices;
|
private Vector2[] vertices;
|
||||||
private Vector2[] losVertices;
|
private Vector2[] losVertices;
|
||||||
@@ -124,7 +126,7 @@ namespace Barotrauma.Lights
|
|||||||
|
|
||||||
parentEntity = parent;
|
parentEntity = parent;
|
||||||
|
|
||||||
cachedShadows = new Dictionary<LightSource, CachedShadow>();
|
//cachedShadows = new Dictionary<LightSource, CachedShadow>();
|
||||||
|
|
||||||
shadowVertices = new VertexPositionColor[6 * 2];
|
shadowVertices = new VertexPositionColor[6 * 2];
|
||||||
penumbraVertices = new VertexPositionTexture[6];
|
penumbraVertices = new VertexPositionTexture[6];
|
||||||
@@ -191,8 +193,6 @@ namespace Barotrauma.Lights
|
|||||||
|
|
||||||
public void Move(Vector2 amount)
|
public void Move(Vector2 amount)
|
||||||
{
|
{
|
||||||
ClearCachedShadows();
|
|
||||||
|
|
||||||
for (int i = 0; i < vertices.Length; i++)
|
for (int i = 0; i < vertices.Length; i++)
|
||||||
{
|
{
|
||||||
vertices[i] += amount;
|
vertices[i] += amount;
|
||||||
@@ -204,8 +204,6 @@ namespace Barotrauma.Lights
|
|||||||
|
|
||||||
public void SetVertices(Vector2[] points)
|
public void SetVertices(Vector2[] points)
|
||||||
{
|
{
|
||||||
ClearCachedShadows();
|
|
||||||
|
|
||||||
vertices = points;
|
vertices = points;
|
||||||
losVertices = points;
|
losVertices = points;
|
||||||
|
|
||||||
@@ -231,7 +229,7 @@ namespace Barotrauma.Lights
|
|||||||
CalculateDimensions();
|
CalculateDimensions();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RemoveCachedShadow(Lights.LightSource light)
|
/*private void RemoveCachedShadow(Lights.LightSource light)
|
||||||
{
|
{
|
||||||
CachedShadow shadow = null;
|
CachedShadow shadow = null;
|
||||||
cachedShadows.TryGetValue(light, out shadow);
|
cachedShadows.TryGetValue(light, out shadow);
|
||||||
@@ -251,7 +249,7 @@ namespace Barotrauma.Lights
|
|||||||
cachedShadow.Value.Dispose();
|
cachedShadow.Value.Dispose();
|
||||||
}
|
}
|
||||||
cachedShadows.Clear();
|
cachedShadows.Clear();
|
||||||
}
|
}*/
|
||||||
|
|
||||||
public bool Intersects(Rectangle rect)
|
public bool Intersects(Rectangle rect)
|
||||||
{
|
{
|
||||||
@@ -468,29 +466,13 @@ namespace Barotrauma.Lights
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CachedShadow cachedShadow = null;
|
CalculateShadowVertices(lightSourcePos, los);
|
||||||
if (!cachedShadows.TryGetValue(light, out cachedShadow) ||
|
ShadowBuffer = new VertexBuffer(GameMain.CurrGraphicsDevice, VertexPositionColor.VertexDeclaration, 6 * 2, BufferUsage.None);
|
||||||
Vector2.DistanceSquared(lightSourcePos, cachedShadow.LightPos) > 1.0f)
|
ShadowBuffer.SetData(shadowVertices, 0, shadowVertices.Length);
|
||||||
{
|
|
||||||
CalculateShadowVertices(lightSourcePos, los);
|
graphicsDevice.SetVertexBuffer(ShadowBuffer);
|
||||||
|
shadowVertexCount = shadowVertices.Length;
|
||||||
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;
|
|
||||||
|
|
||||||
DrawShadows(graphicsDevice, cam, transform, los);
|
DrawShadows(graphicsDevice, cam, transform, los);
|
||||||
}
|
}
|
||||||
@@ -546,8 +528,6 @@ namespace Barotrauma.Lights
|
|||||||
|
|
||||||
public void Remove()
|
public void Remove()
|
||||||
{
|
{
|
||||||
ClearCachedShadows();
|
|
||||||
|
|
||||||
var chList = HullLists.Find(x => x.Submarine == parentEntity.Submarine);
|
var chList = HullLists.Find(x => x.Submarine == parentEntity.Submarine);
|
||||||
|
|
||||||
if (chList != null)
|
if (chList != null)
|
||||||
@@ -559,8 +539,6 @@ namespace Barotrauma.Lights
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user