fixed shader rendering

This commit is contained in:
Michele 2021-01-15 11:11:28 +00:00
parent d3f8fd23f4
commit 8e840ece27
5 changed files with 240 additions and 14 deletions

View file

@ -95,13 +95,19 @@ namespace Sledgemapper
base.Initialize();
}
private void ResetRenderTarget()
{
rendertarget = new RenderTarget2D(GraphicsDevice, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height, false, SurfaceFormat.Color, DepthFormat.None, 0, RenderTargetUsage.DiscardContents);
}
private void OnClientSizeChanged(object sender, EventArgs e)
{
rendertarget?.Dispose();
try
{
rendertarget = new RenderTarget2D(GraphicsDevice, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height, true, SurfaceFormat.Alpha8, DepthFormat.Depth16, 0, RenderTargetUsage.DiscardContents);
ResetRenderTarget();
// rendertarget = new RenderTarget2D(GraphicsDevice, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height, true, SurfaceFormat.Alpha8, DepthFormat.Depth16, 0, RenderTargetUsage.DiscardContents);
//rendertarget = new RenderTarget2D(GraphicsDevice, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height);
}
@ -135,8 +141,10 @@ namespace Sledgemapper
{
_spriteBatch = new SpriteBatch(GraphicsDevice);
outlineShader = Content.Load<Effect>("shaders/OutlineShader");
outlineShader2 = Content.Load<Effect>("shaders/OutlineShader2");
MyraEnvironment.Game = this;
rendertarget = new RenderTarget2D(GraphicsDevice, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height, true, SurfaceFormat.Alpha8, DepthFormat.Depth16, 0, RenderTargetUsage.DiscardContents);
ResetRenderTarget();
// rendertarget = new RenderTarget2D(GraphicsDevice, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height, true, SurfaceFormat.Alpha8, DepthFormat.Depth16, 0, RenderTargetUsage.DiscardContents);
_mainWidget = new MainWidget();
@ -575,6 +583,8 @@ namespace Sledgemapper
_spriteBatch.Begin(depthStencilState: DepthStencilState.None,
transformMatrix: Matrix.CreateTranslation(_viewportCenter),
blendState: BlendState.Opaque,
//rasterizerState:RasterizerState.CullClockwise,
samplerState:SamplerState.PointClamp,
sortMode: SpriteSortMode.Deferred);
@ -607,17 +617,17 @@ namespace Sledgemapper
GraphicsDevice.SetRenderTarget(null);
Vector2 texelSize = new Vector2((float)rendertarget.Width, (float)rendertarget.Height);
Vector2 texelSize = new Vector2((float)rendertarget.Width, (float)rendertarget.Height);
outlineShader.Parameters["ImageSize"].SetValue(texelSize);
//outlineShader.Parameters["BorderSize"].SetValue((int)(_state.TileSize / 100f *10f));
outlineShader.Parameters["BorderSize"].SetValue((int)(_state.TileSize / 100f *10f));
outlineShader.Parameters["R"].SetValue(_settings.OverlayTintColor.R / 255.0f);
outlineShader.Parameters["G"].SetValue(_settings.OverlayTintColor.G / 255.0f);
outlineShader.Parameters["B"].SetValue(_settings.OverlayTintColor.B / 255.0f);
// outlineShader2.Parameters["ScreenSize"].SetValue(texelSize);
_spriteBatch.Begin(
effect: outlineShader,
blendState: BlendState.AlphaBlend,
blendState: BlendState.NonPremultiplied,
sortMode: SpriteSortMode.Deferred);
GraphicsDevice.Clear(_settings.BackgroundColor);
_spriteBatch.Draw(rendertarget, Vector2.Zero, null, Color.White);
@ -1302,8 +1312,9 @@ namespace Sledgemapper
}
}
Effect outlineShader; // Outline shader effect
private Effect outlineShader2;
private void DrawDelete(Room tile)
private void DrawDelete(Room tile)
{
var posX = tile.Start.X * _state.TileSize;
var posY = tile.Start.Y * _state.TileSize;