Ejemplo n.º 1
0
        public async Task Render_SimpleText_SimpleSingleColor()
        {
            await TestUtilities.InitializeWithGraphicsAsync();

            using (var solidBrush = new SolidBrushResource(Color4.RedColor))
                using (var textFormat = new TextFormatResource("Arial", 70))
                    using (var memRenderTarget = new MemoryRenderTarget(1024, 1024))
                    {
                        // Perform rendering
                        memRenderTarget.ClearColor = Color4.CornflowerBlue;
                        await memRenderTarget.RenderLoop.Register2DDrawingLayerAsync(graphics =>
                        {
                            // 2D rendering is made here
                            graphics.DrawText(
                                $"Just a dummy text ;){Environment.NewLine}Just a dummy text ;)",
                                textFormat,
                                new RectangleF(10, 10, 512, 512),
                                solidBrush);
                        });

                        await memRenderTarget.AwaitRenderAsync();

                        // Take screenshot
                        var screenshot = await memRenderTarget.RenderLoop.GetScreenshotGdiAsync();

                        // TestUtilities.DumpToDesktop(screenshot, "Blub.png");

                        // Calculate and check difference
                        var diff = BitmapComparison.CalculatePercentageDifference(
                            screenshot, TestUtilities.LoadBitmapFromResource("Drawing2D", "SimpleText_SingleColor.png"));
                        Assert.IsTrue(diff < 0.2, "Difference to reference image is to big!");
                    }
        }
Ejemplo n.º 2
0
        public async Task Render_SimpleGeometry_Ellipse()
        {
            await TestUtilities.InitializeWithGraphicsAsync();

            using (var solidBrush = new SolidBrushResource(Color4.LightGray))
                using (var solidBrushBorder = new SolidBrushResource(Color4.Gray))
                    using (var ellipseGeometry = new EllipseGeometryResource(new Vector2(512, 512), 400f, 300f))
                        using (var memRenderTarget = new MemoryRenderTarget(1024, 1024))
                        {
                            // Perform rendering
                            memRenderTarget.ClearColor = Color4.CornflowerBlue;

                            await memRenderTarget.RenderLoop.Register2DDrawingLayerAsync(graphics =>
                            {
                                // 2D rendering is made here
                                graphics.DrawGeometry(ellipseGeometry, solidBrushBorder, 3f);
                                graphics.FillGeometry(ellipseGeometry, solidBrush);
                            });

                            await memRenderTarget.AwaitRenderAsync();

                            // Take screenshot
                            var screenshot = await memRenderTarget.RenderLoop.GetScreenshotGdiAsync();

                            // TestUtilities.DumpToDesktop(screenshot, "Blub.png");

                            // Calculate and check difference
                            var diff = BitmapComparison.CalculatePercentageDifference(
                                screenshot, TestUtilities.LoadBitmapFromResource("Drawing2D", "SimpleGeometry2D_Ellipse.png"));
                            Assert.IsTrue(diff < 0.2, "Difference to reference image is to big!");
                        }
        }
Ejemplo n.º 3
0
        public async Task Render_SimpleBitmap_WithTransparency()
        {
            await TestUtilities.InitializeWithGraphicsAsync();

            using (var solidBrush = new SolidBrushResource(Color4.LightGray))
                using (var bitmap = new StandardBitmapResource(new AssemblyResourceLink(this.GetType(), "Resources.Bitmaps.Logo.png")))
                    using (var memRenderTarget = new MemoryRenderTarget(1024, 1024))
                    {
                        // Perform rendering
                        memRenderTarget.ClearColor = Color4.CornflowerBlue;

                        await memRenderTarget.RenderLoop.Register2DDrawingLayerAsync(graphics =>
                        {
                            // 2D rendering is made here
                            graphics.FillRectangle(graphics.ScreenBounds, solidBrush);
                            graphics.DrawBitmap(bitmap, new Vector2(100f, 100f));
                        });

                        await memRenderTarget.AwaitRenderAsync();

                        // Take screenshot
                        var screenshot = await memRenderTarget.RenderLoop.GetScreenshotGdiAsync();

                        // TestUtilities.DumpToDesktop(screenshot, "Blub.png");

                        // Calculate and check difference
                        var diff = BitmapComparison.CalculatePercentageDifference(
                            screenshot, TestUtilities.LoadBitmapFromResource("Drawing2D", "SimpleBitmap_Transparency.png"));
                        Assert.IsTrue(diff < 0.02, "Difference to reference image is to big!");
                    }
        }
Ejemplo n.º 4
0
        public async Task Render_SimpleRoundedRect_Filled_Solid()
        {
            await TestUtilities.InitializeWithGraphicsAsync();

            using (var solidBrush = new SolidBrushResource(Color4.Gray))
                using (var memRenderTarget = new MemoryRenderTarget(1024, 1024))
                {
                    // Perform rendering
                    memRenderTarget.ClearColor = Color4.CornflowerBlue;
                    await memRenderTarget.RenderLoop.Register2DDrawingLayerAsync(graphics =>
                    {
                        // 2D rendering is made here
                        graphics.FillRoundedRectangle(
                            new RectangleF(10, 10, 512, 512), 30, 30,
                            solidBrush);
                    });

                    await memRenderTarget.AwaitRenderAsync();

                    // Take screenshot
                    var screenshot = await memRenderTarget.RenderLoop.GetScreenshotGdiAsync();

                    // TestUtilities.DumpToDesktop(screenshot, "Blub.png");

                    // Calculate and check difference
                    var diff = BitmapComparison.CalculatePercentageDifference(
                        screenshot, TestUtilities.LoadBitmapFromResource("Drawing2D", "SimpleRoundedRectFilled.png"));
                    Assert.IsTrue(diff < 0.2, "Difference to reference image is to big!");
                }
        }
Ejemplo n.º 5
0
        public async Task Render_SimpleRoundedRect_Filled_Over3D()
        {
            await TestUtilities.InitializeWithGraphicsAsync();

            var brushColor = Color4.Gray;

            brushColor.ChangeAlphaTo(0.5f);

            using (var solidBrush = new SolidBrushResource(brushColor))
                using (var memRenderTarget = new MemoryRenderTarget(1024, 1024))
                {
                    memRenderTarget.ClearColor = Color4.CornflowerBlue;

                    // Get and configure the camera
                    var camera = (PerspectiveCamera3D)memRenderTarget.Camera;
                    camera.Position = new Vector3(0f, 5f, -5f);
                    camera.Target   = new Vector3(0f, 1f, 0f);
                    camera.UpdateCamera();

                    // Define scene
                    await memRenderTarget.Scene.ManipulateSceneAsync(manipulator =>
                    {
                        // Define object
                        var resGeometry = manipulator.AddResource(
                            _ => new GeometryResource(new CubeGeometryFactory()));
                        var resMaterial = manipulator.AddResource(
                            _ => new StandardMaterialResource(enableShaderGeneratedBorder: true));

                        var newMesh           = manipulator.AddMeshObject(resGeometry, resMaterial);
                        newMesh.RotationEuler = new Vector3(0f, EngineMath.RAD_90DEG / 2f, 0f);
                        newMesh.Scaling       = new Vector3(2f, 2f, 2f);
                        newMesh.Color         = Color4.Goldenrod;
                    });

                    // Define 2D overlay
                    await memRenderTarget.RenderLoop.Register2DDrawingLayerAsync(graphics =>
                    {
                        // 2D rendering is made here
                        graphics.FillRoundedRectangle(
                            new RectangleF(10, 10, 512, 512), 30, 30,
                            solidBrush);
                    });

                    await memRenderTarget.AwaitRenderAsync();

                    // Take screenshot
                    var screenshot = await memRenderTarget.RenderLoop.GetScreenshotGdiAsync();

                    // TestUtilities.DumpToDesktop(screenshot, "Blub.png");

                    // Calculate and check difference
                    var diff = BitmapComparison.CalculatePercentageDifference(
                        screenshot, TestUtilities.LoadBitmapFromResource("Drawing2D", "RoundedRectOver3D.png"));
                    Assert.IsTrue(diff < 0.2, "Difference to reference image is to big!");
                }

            // Finishing checks
            Assert.IsTrue(GraphicsCore.Current.MainLoop !.RegisteredRenderLoopCount == 0, "RenderLoops where not disposed correctly!");
        }
 public void BitmapComparison_Negative_BlackWhite()
 {
     using (var leftBitmap = TestUtilities.LoadBitmapFromResource("BitmapComparison", "WhiteScreen.png"))
         using (var rightBitmap = TestUtilities.LoadBitmapFromResource("BitmapComparison", "BlackScreen.png"))
         {
             var comparisonResult = BitmapComparison.CalculatePercentageDifference(leftBitmap, rightBitmap);
             Assert.IsTrue(EngineMath.EqualsWithTolerance(comparisonResult, 1.0f));
         }
 }
 public void BitmapComparison_Positive()
 {
     using (var leftBitmap = TestUtilities.LoadBitmapFromResource("BitmapComparison", "FlatShadedObject.png"))
         using (var rightBitmap = TestUtilities.LoadBitmapFromResource("BitmapComparison", "FlatShadedObject.png"))
         {
             Assert.IsTrue(
                 EngineMath.EqualsWithTolerance(BitmapComparison.CalculatePercentageDifference(leftBitmap, rightBitmap), 0f));
         }
 }
Ejemplo n.º 8
0
 public void BitmapComparison_Positive()
 {
     using (GDI.Bitmap leftBitmap = Properties.Resources.FlatShadedObject)
         using (GDI.Bitmap rightBitmap = Properties.Resources.FlatShadedObject)
         {
             Assert.True(
                 BitmapComparison.CalculatePercentageDifference(leftBitmap, rightBitmap) == 0f);
         }
 }
Ejemplo n.º 9
0
 public void BitmapComparison_Negative_BlackWhite()
 {
     using (GDI.Bitmap leftBitmap = Properties.Resources.WhiteScreen)
         using (GDI.Bitmap rightBitmap = Properties.Resources.BlackScreen)
         {
             float comparisonResult = BitmapComparison.CalculatePercentageDifference(leftBitmap, rightBitmap);
             Assert.True(comparisonResult == 1.0f);
         }
 }
 public void BitmapComparison_Negative_Smaller()
 {
     using (var leftBitmap = TestUtilities.LoadBitmapFromResource("BitmapComparison", "FlatShadedObject.png"))
         using (var rightBitmap = TestUtilities.LoadBitmapFromResource("BitmapComparison", "FlatShadedObject_Smaller.png"))
         {
             var comparisonResult = BitmapComparison.CalculatePercentageDifference(leftBitmap, rightBitmap);
             Assert.IsTrue(comparisonResult > 0.1);
             Assert.IsTrue(comparisonResult < 0.4);
         }
 }
Ejemplo n.º 11
0
 public void BitmapComparison_Negative_Enlighted()
 {
     using (GDI.Bitmap leftBitmap = Properties.Resources.FlatShadedObject)
         using (GDI.Bitmap rightBitmap = Properties.Resources.FlatShadedObject_Enlighted)
         {
             float comparisonResult = BitmapComparison.CalculatePercentageDifference(leftBitmap, rightBitmap);
             Assert.True(comparisonResult > 0.1);
             Assert.True(comparisonResult < 0.4);
         }
 }
 public void BitmapComparison_Negative_Without_Model()
 {
     using (var leftBitmap = TestUtilities.LoadBitmapFromResource("BitmapComparison", "ClearedScreen.png"))
         using (var rightBitmap = TestUtilities.LoadBitmapFromResource("BitmapComparison", "FlatShadedObject.png"))
         {
             var comparisonResult = BitmapComparison.CalculatePercentageDifference(leftBitmap, rightBitmap);
             Assert.IsTrue(comparisonResult > 0.25f);
             Assert.IsTrue(comparisonResult < 0.6f);
         }
 }
Ejemplo n.º 13
0
 public void BitmapComparison_Negative_Inversed_Image()
 {
     using (GDI.Bitmap leftBitmap = Properties.Resources.FlatShadedObject)
         using (GDI.Bitmap rightBitmap = Properties.Resources.FlatShadedObject_Negative)
         {
             float comparisonResult = BitmapComparison.CalculatePercentageDifference(leftBitmap, rightBitmap);
             Assert.True(comparisonResult > 0.9f);
             Assert.True(comparisonResult <= 1.0f);
         }
 }
Ejemplo n.º 14
0
 public void BitmapComparison_Negative_Without_Model()
 {
     using (GDI.Bitmap leftBitmap = Properties.Resources.ClearedScreen)
         using (GDI.Bitmap rightBitmap = Properties.Resources.FlatShadedObject)
         {
             float comparisonResult = BitmapComparison.CalculatePercentageDifference(leftBitmap, rightBitmap);
             Assert.True(comparisonResult > 0.25f);
             Assert.True(comparisonResult < 0.6f);
         }
 }
Ejemplo n.º 15
0
        public async Task Render_SimpleRoundedRect_Filled_LinearGradient()
        {
            await TestUtilities.InitializeWithGraphicsAsync();

            using (var gradientBrush = new LinearGradientBrushResource(
                       new Vector2(0f, 0f),
                       new Vector2(512f, 0f),
                       new[]
            {
                new GradientStop {
                    Color = Color4.Gray, Position = 0f
                },
                new GradientStop {
                    Color = Color4.White, Position = 0.6f
                },
                new GradientStop {
                    Color = Color4.Black, Position = 1f
                }
            },
                       ExtendMode.Mirror))
                using (var memRenderTarget = new MemoryRenderTarget(1024, 1024))
                {
                    // Perform rendering
                    memRenderTarget.ClearColor = Color4.CornflowerBlue;

                    await memRenderTarget.RenderLoop.Register2DDrawingLayerAsync(graphics =>
                    {
                        // 2D rendering is made here
                        graphics.FillRoundedRectangle(
                            new RectangleF(10, 10, 900, 900), 30, 30,
                            gradientBrush);
                    });

                    await memRenderTarget.AwaitRenderAsync();

                    // Take screenshot
                    var screenshot = await memRenderTarget.RenderLoop.GetScreenshotGdiAsync();

                    // TestUtilities.DumpToDesktop(screenshot, "Blub.png");

                    // Calculate and check difference
                    var diff = BitmapComparison.CalculatePercentageDifference(
                        screenshot, TestUtilities.LoadBitmapFromResource("Drawing2D", "SimpleRoundedRectFilled_LinearGradient.png"));
                    Assert.IsTrue(diff < 0.2, "Difference to reference image is to big!");
                }
        }
Ejemplo n.º 16
0
        public async Task Render_SimpleBitmap_Animated()
        {
            await TestUtilities.InitializeWithGraphicsAsync();

            using (var bitmap = new StandardBitmapResource(
                       new AssemblyResourceLink(this.GetType(), "Resources.Bitmaps.Boom.png"),
                       8, 8))
                using (var memRenderTarget = new MemoryRenderTarget(1024, 1024))
                {
                    // Perform rendering
                    memRenderTarget.ClearColor = Color4.CornflowerBlue;

                    await memRenderTarget.RenderLoop.Register2DDrawingLayerAsync(graphics =>
                    {
                        // 2D rendering is made here
                        for (var loop = 0; loop < 8; loop++)
                        {
                            graphics.DrawBitmap(bitmap, new Vector2(100f * loop, 10f), frameIndex: 7);
                            graphics.DrawBitmap(bitmap, new Vector2(100f * loop, 100f), frameIndex: 15);
                            graphics.DrawBitmap(bitmap, new Vector2(100f * loop, 200f), frameIndex: 23);
                            graphics.DrawBitmap(bitmap, new Vector2(100f * loop, 300f), frameIndex: 31);
                            graphics.DrawBitmap(bitmap, new Vector2(100f * loop, 400f), frameIndex: 39);
                            graphics.DrawBitmap(bitmap, new Vector2(100f * loop, 500f), frameIndex: 47);
                            graphics.DrawBitmap(bitmap, new Vector2(100f * loop, 600f), frameIndex: 55);
                            graphics.DrawBitmap(bitmap, new Vector2(100f * loop, 700f), frameIndex: 63);
                        }
                    });

                    //await AsyncResourceLoader.Current.WaitForAllFinishedAsync();
                    await memRenderTarget.AwaitRenderAsync();

                    // Take screenshot
                    var screenshot = await memRenderTarget.RenderLoop.GetScreenshotGdiAsync();

                    // TestUtilities.DumpToDesktop(screenshot, "Blub.png");

                    // Calculate and check difference
                    var diff = BitmapComparison.CalculatePercentageDifference(
                        screenshot, TestUtilities.LoadBitmapFromResource("Drawing2D", "SimpleBitmap_Animated.png"));
                    Assert.IsTrue(diff < 0.02, "Difference to reference image is to big!");
                }
        }
Ejemplo n.º 17
0
        public async Task Render_DebugLayer()
        {
            await TestUtilities.InitializeWithGraphicsAsync();

            using (var debugLayer = new DebugDrawingLayer())
                using (var memRenderTarget = new MemoryRenderTarget(1024, 1024))
                {
                    // Perform rendering
                    memRenderTarget.ClearColor = Color4.CornflowerBlue;
                    await memRenderTarget.RenderLoop.Register2DDrawingLayerAsync(debugLayer);

                    await memRenderTarget.AwaitRenderAsync();

                    // Take screenshot
                    var screenshot = await memRenderTarget.RenderLoop.GetScreenshotGdiAsync();

                    // TestUtilities.DumpToDesktop(screenshot, "Blub.png");

                    // Calculate and check difference
                    var diff = BitmapComparison.CalculatePercentageDifference(
                        screenshot, TestUtilities.LoadBitmapFromResource("Drawing2D", "DebugDrawingLayer.png"));
                    Assert.IsTrue(diff < 0.2, "Difference to reference image is to big!");
                }
        }