Implemented animated simplex noise

This commit is contained in:
Robert committed 2019-12-05 20:19:40 +01:00
1 parent 33d0fca15e
commit 8430f28fa7
7 files changed
+621 -130

No files matched your search

+43 -29
View File
@@ -68,33 +68,35 @@ namespace Artemis.Core.Models.Profile
return;
canvas.Save();
foreach (var layerElement in LayerElements)
layerElement.RenderPreProcess(surface, canvas);
_renderCanvas.Clear();
foreach (var layerElement in LayerElements)
layerElement.Render(surface, _renderCanvas);
var baseShader = SKShader.CreateBitmap(_renderBitmap, SKShaderTileMode.Repeat, SKShaderTileMode.Repeat, SKMatrix.MakeTranslation(RenderRectangle.Left, RenderRectangle.Top));
foreach (var layerElement in LayerElements)
lock (_renderBitmap)
{
var newBaseShader = layerElement.RenderPostProcess(surface, _renderBitmap, baseShader);
if (newBaseShader == null)
continue;
foreach (var layerElement in LayerElements)
layerElement.RenderPreProcess(surface, canvas);
// Dispose the old base shader if the layer element provided a new one
if (!ReferenceEquals(baseShader, newBaseShader))
baseShader.Dispose();
_renderCanvas.Clear();
foreach (var layerElement in LayerElements)
layerElement.Render(surface, _renderCanvas);
baseShader = newBaseShader;
var baseShader = SKShader.CreateBitmap(_renderBitmap, SKShaderTileMode.Repeat, SKShaderTileMode.Repeat, SKMatrix.MakeTranslation(RenderRectangle.Left, RenderRectangle.Top));
foreach (var layerElement in LayerElements)
{
var newBaseShader = layerElement.RenderPostProcess(surface, _renderBitmap, baseShader);
if (newBaseShader == null)
continue;
// Dispose the old base shader if the layer element provided a new one
if (!ReferenceEquals(baseShader, newBaseShader))
baseShader.Dispose();
baseShader = newBaseShader;
}
canvas.ClipPath(RenderPath);
canvas.DrawRect(RenderRectangle, new SKPaint {Shader = baseShader, FilterQuality = SKFilterQuality.Low});
baseShader.Dispose();
canvas.Restore();
}
canvas.ClipPath(RenderPath);
canvas.DrawRect(RenderRectangle, new SKPaint {Shader = baseShader, FilterQuality = SKFilterQuality.Low});
baseShader.Dispose();
canvas.Restore();
}
internal override void ApplyToEntity()
@@ -206,12 +208,24 @@ namespace Artemis.Core.Models.Profile
RenderPath = path;
var oldBitmap = _renderBitmap;
var oldCanvas = _renderCanvas;
_renderBitmap = new SKBitmap(new SKImageInfo((int) RenderRectangle.Width, (int) RenderRectangle.Height));
_renderCanvas = new SKCanvas(_renderBitmap);
oldBitmap?.Dispose();
oldCanvas?.Dispose();
if (_renderBitmap != null)
{
lock (_renderBitmap)
{
var oldBitmap = _renderBitmap;
var oldCanvas = _renderCanvas;
_renderBitmap = new SKBitmap(new SKImageInfo((int) RenderRectangle.Width, (int) RenderRectangle.Height));
_renderCanvas = new SKCanvas(_renderBitmap);
oldBitmap?.Dispose();
oldCanvas?.Dispose();
}
}
else
{
_renderBitmap = new SKBitmap(new SKImageInfo((int) RenderRectangle.Width, (int) RenderRectangle.Height));
_renderCanvas = new SKCanvas(_renderBitmap);
}
OnRenderPropertiesUpdated();
}