static void MainViewport_RenderUI()
        {
            //configure cursor file name
            EngineApp.SystemCursorFileName = "Base\\UI\\Cursors\\DefaultSystem.cur";

            //!!!!
            //Draw UI controls
            MainViewport.UIContainer.PerformRenderUI(MainViewport.CanvasRenderer);

            // Process screen messages.
            ScreenMessages.PerformRenderUI(MainViewport);

            //viewport statistics
            if (DisplayViewportStatistics)
            {
                var statistics = MainViewport.RenderingContext?.UpdateStatisticsPrevious;
                if (statistics != null)
                {
                    var lines = new List <string>();
                    lines.Add("FPS: " + statistics.FPS.ToString("F1"));
                    lines.Add("Triangles: " + statistics.Triangles.ToString());
                    lines.Add("Lines: " + statistics.Lines.ToString());
                    lines.Add("Draw calls: " + statistics.DrawCalls.ToString());
                    lines.Add("Render targets: " + statistics.RenderTargets.ToString());
                    lines.Add("Dynamic textures: " + statistics.DynamicTextures.ToString());
                    lines.Add("Lights: " + statistics.Lights.ToString());
                    lines.Add("Reflection probes: " + statistics.ReflectionProbes.ToString());

                    var renderer = MainViewport.CanvasRenderer;
                    var fontSize = renderer.DefaultFontSize;
                    var offset   = new Vector2(fontSize * renderer.AspectRatioInv * 0.8, fontSize * 0.6);

                    CanvasRendererUtility.AddTextLinesWithShadow(MainViewport, null, fontSize, lines, new Rectangle(offset.X, offset.Y, 1, 1), EHorizontalAlignment.Left, EVerticalAlignment.Top, new ColorValue(1, 1, 1));
                }
            }

            //Engine console
            EngineConsole.PerformRenderUI();
        }