浏览代码

Fixed invalid render state

Krzysztof Krysiński 1 月之前
父节点
当前提交
569ac56f30
共有 1 个文件被更改,包括 8 次插入4 次删除
  1. 8 4
      src/PixiEditor/Models/Rendering/SceneRenderer.cs

+ 8 - 4
src/PixiEditor/Models/Rendering/SceneRenderer.cs

@@ -61,7 +61,8 @@ internal class SceneRenderer
         });
         });
     }
     }
 
 
-    public void RenderSync(Dictionary<Guid, ViewportInfo> stateViewports, AffectedArea affectedAreasMainImageArea, bool updateDelayed, Dictionary<Guid, List<PreviewRenderRequest>>? previewTextures)
+    public void RenderSync(Dictionary<Guid, ViewportInfo> stateViewports, AffectedArea affectedAreasMainImageArea,
+        bool updateDelayed, Dictionary<Guid, List<PreviewRenderRequest>>? previewTextures)
     {
     {
         Render(stateViewports, affectedAreasMainImageArea, updateDelayed, previewTextures);
         Render(stateViewports, affectedAreasMainImageArea, updateDelayed, previewTextures);
     }
     }
@@ -78,7 +79,7 @@ internal class SceneRenderer
                 continue;
                 continue;
             }
             }
 
 
-            if (viewport.Value.RealDimensions.ShortestAxis <= 0) continue;
+            if (viewport.Value.RealDimensions.ShortestAxis <= 0 || Math.Abs(viewport.Value.RealDimensions.LongestAxis - double.MaxValue) < double.Epsilon) continue;
 
 
             var rendered = RenderScene(viewport.Value, affectedArea, previewTextures);
             var rendered = RenderScene(viewport.Value, affectedArea, previewTextures);
             if (DocumentViewModel.SceneTextures.TryGetValue(viewport.Key, out var texture) && texture != rendered)
             if (DocumentViewModel.SceneTextures.TryGetValue(viewport.Key, out var texture) && texture != rendered)
@@ -130,6 +131,7 @@ internal class SceneRenderer
          */
          */
 
 
         VecI renderTargetSize = (VecI)viewport.RealDimensions;
         VecI renderTargetSize = (VecI)viewport.RealDimensions;
+
         Matrix3X3 targetMatrix = viewport.ViewportData.Transform;
         Matrix3X3 targetMatrix = viewport.ViewportData.Transform;
         Guid viewportId = viewport.Id;
         Guid viewportId = viewport.Id;
         ChunkResolution resolution = viewport.Resolution;
         ChunkResolution resolution = viewport.Resolution;
@@ -170,7 +172,8 @@ internal class SceneRenderer
         }
         }
 
 
         bool shouldRerender =
         bool shouldRerender =
-            ShouldRerender(renderTargetSize, isFullViewportRender ? Matrix3X3.Identity : targetMatrix, resolution, viewportId, targetOutput, finalGraph,
+            ShouldRerender(renderTargetSize, isFullViewportRender ? Matrix3X3.Identity : targetMatrix, resolution,
+                viewportId, targetOutput, finalGraph,
                 previewTextures, visibleDocumentRegion, oversizeFactor, out bool fullAffectedArea);
                 previewTextures, visibleDocumentRegion, oversizeFactor, out bool fullAffectedArea);
 
 
         if (shouldRerender)
         if (shouldRerender)
@@ -206,7 +209,8 @@ internal class SceneRenderer
         Texture? renderTexture = null;
         Texture? renderTexture = null;
         int restoreCanvasTo;
         int restoreCanvasTo;
 
 
-        VecI finalSize = SolveRenderOutputSize(targetOutput, finalGraph, Document.Size, renderTargetSize, out bool isFullViewportRender);
+        VecI finalSize = SolveRenderOutputSize(targetOutput, finalGraph, Document.Size, renderTargetSize,
+            out bool isFullViewportRender);
         if (isFullViewportRender)
         if (isFullViewportRender)
         {
         {
             renderTexture =
             renderTexture =