Selaa lähdekoodia

Scale scissor used for clears (#3002)

gdkchan 4 vuotta sitten
vanhempi
sitoutus
fb853f13e9

+ 9 - 0
Ryujinx.Graphics.Gpu/Engine/Threed/DrawManager.cs

@@ -535,6 +535,15 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
                     scissorH = Math.Min(scissorH, scissorState.Y2 - scissorState.Y1);
                 }
 
+                float scale = _channel.TextureManager.RenderTargetScale;
+                if (scale != 1f)
+                {
+                    scissorX = (int)(scissorX * scale);
+                    scissorY = (int)(scissorY * scale);
+                    scissorW = (int)MathF.Ceiling(scissorW * scale);
+                    scissorH = (int)MathF.Ceiling(scissorH * scale);
+                }
+
                 _context.Renderer.Pipeline.SetScissor(0, true, scissorX, scissorY, scissorW, scissorH);
             }
 

+ 2 - 2
Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdater.cs

@@ -477,8 +477,8 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
                     {
                         x = (int)(x * scale);
                         y = (int)(y * scale);
-                        width = (int)Math.Ceiling(width * scale);
-                        height = (int)Math.Ceiling(height * scale);
+                        width = (int)MathF.Ceiling(width * scale);
+                        height = (int)MathF.Ceiling(height * scale);
                     }
 
                     _context.Renderer.Pipeline.SetScissor(index, true, x, y, width, height);