Browse Source

Fixed create image chunk resolution bug

Krzysztof Krysiński 2 months ago
parent
commit
57af365db2

+ 8 - 3
src/PixiEditor.ChangeableDocument/Changeables/Graph/Nodes/CreateImageNode.cs

@@ -57,6 +57,7 @@ public class CreateImageNode : Node, IPreviewRenderable
     private Texture Render(RenderContext context)
     private Texture Render(RenderContext context)
     {
     {
         var surface = textureCache.RequestTexture(0, (VecI)(Size.Value * context.ChunkResolution.Multiplier()), context.ProcessingColorSpace, false);
         var surface = textureCache.RequestTexture(0, (VecI)(Size.Value * context.ChunkResolution.Multiplier()), context.ProcessingColorSpace, false);
+        surface.DrawingSurface.Canvas.SetMatrix(Matrix3X3.Identity);
 
 
         if (Fill.Value is ColorPaintable colorPaintable)
         if (Fill.Value is ColorPaintable colorPaintable)
         {
         {
@@ -72,11 +73,15 @@ public class CreateImageNode : Node, IPreviewRenderable
         int saved = surface.DrawingSurface.Canvas.Save();
         int saved = surface.DrawingSurface.Canvas.Save();
 
 
         RenderContext ctx = new RenderContext(surface.DrawingSurface, context.FrameTime, context.ChunkResolution,
         RenderContext ctx = new RenderContext(surface.DrawingSurface, context.FrameTime, context.ChunkResolution,
-            context.RenderOutputSize, context.DocumentSize, context.ProcessingColorSpace);
+            surface.Size, context.DocumentSize, context.ProcessingColorSpace);
+        ctx.FullRerender = context.FullRerender;
+        ctx.TargetOutput = context.TargetOutput;
 
 
-        surface.DrawingSurface.Canvas.SetMatrix(surface.DrawingSurface.Canvas.TotalMatrix.Concat(ContentMatrix.Value));
+        float chunkMultiplier = (float)context.ChunkResolution.Multiplier();
 
 
-        surface.DrawingSurface.Canvas.Scale((float)context.ChunkResolution.Multiplier());
+        surface.DrawingSurface.Canvas.SetMatrix(
+            surface.DrawingSurface.Canvas.TotalMatrix.Concat(
+                Matrix3X3.CreateScale(chunkMultiplier, chunkMultiplier).Concat(ContentMatrix.Value)));
 
 
         Content.Value?.Paint(ctx, surface.DrawingSurface);
         Content.Value?.Paint(ctx, surface.DrawingSurface);