Esempio n. 1
0
        public void TestUVMapping()
        {
            var asset = Engine.AssetLoader.Get <TextureAsset>("Images/logoAsymmetric.png");

            Runner.ExecuteAsLoop(_ =>
            {
                RenderComposer composer = Engine.Renderer.StartFrame();

                composer.RenderSprite(new Vector3(10, 10, 0), new Vector2(100, 100), Color.White, asset.Texture, null, true);
                composer.RenderSprite(new Vector3(100, 10, 0), new Vector2(100, 100), Color.White, asset.Texture, null, false, true);
                composer.RenderSprite(new Vector3(200, 10, 0), new Vector2(100, 100), Color.White, asset.Texture, null, true, true);

                composer.FlushRenderStream();
                asset.Texture.Tile = false;

                composer.RenderSprite(new Vector3(10, 100, 0), new Vector2(100, 100), Color.White, asset.Texture, null, true);
                composer.RenderSprite(new Vector3(100, 100, 0), new Vector2(100, 100), Color.White, asset.Texture, null, false, true);
                composer.RenderSprite(new Vector3(200, 100, 0), new Vector2(100, 100), Color.White, asset.Texture, null, true, true);

                composer.RenderSprite(new Vector3(10, 200, 0), new Vector2(100, 100), Color.White, asset.Texture, new Rectangle(0, 0, 50, 50), true);
                composer.RenderSprite(new Vector3(100, 200, 0), new Vector2(100, 100), Color.White, asset.Texture, new Rectangle(0, 0, 50, 50), false, true);
                composer.RenderSprite(new Vector3(200, 200, 0), new Vector2(100, 100), Color.White, asset.Texture, new Rectangle(0, 0, 50, 50), true, true);

                composer.FlushRenderStream();
                asset.Texture.Tile = true;
                Engine.Renderer.EndFrame();
                Runner.VerifyScreenshot(ResultDb.TestUVMapping);
            }).WaitOne();
        }
Esempio n. 2
0
        public void RenderComposerRandomInvalidation()
        {
            Runner.ExecuteAsLoop(_ =>
            {
                RenderComposer composer = Engine.Renderer.StartFrame();

                const int count = ushort.MaxValue * 2;
                const int size  = 1;

                var y        = 0;
                var x        = 0;
                var elements = 0;

                // Generate the locations at which an invalidation will occur.
                var invalidationIdx = new List <int>();
                for (var i = 0; i < 10; i++)
                {
                    invalidationIdx.Add(Helpers.GenerateRandomNumber(100, count - 100));
                }

                while (elements < count)
                {
                    if (invalidationIdx.IndexOf(elements) != -1)
                    {
                        Engine.Log.Info($"Invalidation of batch at element - {elements}", TestRunnerLogger.TestRunnerSrc);
                        composer.FlushRenderStream();
                    }

                    var c = new Color(elements, 255 - elements, elements < ushort.MaxValue ? 255 : 0);

                    composer.RenderSprite(new Vector3(x * size, y * size, 0), new Vector2(size, size), c);
                    x++;
                    elements++;

                    if (x * size < Engine.Renderer.CurrentTarget.Size.X)
                    {
                        continue;
                    }
                    y++;
                    x = 0;
                }

                Engine.Renderer.EndFrame();
                Runner.VerifyScreenshot(ResultDb.RenderComposerSpriteLimitTest);
            }).WaitOne();
        }