Ejemplo n.º 1
0
        void drawingThread()
        {
            int threadId = activeThreads;

            activeThreads++;
            //Console.WriteLine ($"Drawing thread strart {Thread.CurrentThread.ManagedThreadId}");
            lock (vkvgSurf) {
                using (vkvg.Context ctx = new vkvg.Context(vkvgSurf)) {
                    //Console.WriteLine ($"{threadId}:draw");

                    for (int i = 0; i < iterations; i++)
                    {
                        float x1 = (float)(rnd.NextDouble() * Width);
                        float y1 = (float)(rnd.NextDouble() * Height);
                        float x2 = (float)(rnd.NextDouble() * Width) + 1.0f;
                        float y2 = (float)(rnd.NextDouble() * Height) + 1.0f;
                        randomize_color(ctx);
                        ctx.MoveTo(x1, y1);
                        ctx.LineTo(x2, y2);
                        ctx.Stroke();
                    }
                }
            }

            //Console.WriteLine ($"Drawing thread end {Thread.CurrentThread.ManagedThreadId}");
            activeThreads--;

            //Console.WriteLine ($"{threadId}:signal");
            countdown.Signal();
        }
Ejemplo n.º 2
0
        public override void Update()
        {
            using (vkvg.Context ctx = new vkvg.Context(vkvgSurf))
            {
                ctx.SetSource(1, 1, 1);
                ctx.Paint();


                ctx.LineWidth = 6;
                ctx.SetSource(0.1, 0.1, 0.1, 0.8);

                ctx.MoveTo(points [0]);
                ctx.CurveTo(points [1].X, points [1].Y, points [2].X, points [2].Y, points [3].X, points [3].Y);
                ctx.Stroke();

                ctx.LineWidth = 1;
                ctx.SetSource(0.2, 0.2, 0.2, 1);

                ctx.MoveTo(points[0]);
                ctx.LineTo(points[1]);
                ctx.MoveTo(points[2]);
                ctx.LineTo(points[3]);
                ctx.Stroke();

                ctx.SetSource(0.5, 0.5, 1, 0.9);
                for (int i = 0; i < points.Length; i++)
                {
                    if (i == curPoint)
                    {
                        continue;
                    }
                    ctx.Arc(points[i].X, points [i].Y, cpRadius, 0, Math.PI * 2.0);
                }
                ctx.FillPreserve();
                ctx.Stroke();

                if (curPoint < 0)
                {
                    return;
                }

                ctx.SetSource(1, 0.4, 0.4, 0.9);
                ctx.Arc(points [curPoint].X, points [curPoint].Y, selRadius, 0, Math.PI * 2.0);
                ctx.FillPreserve();
                ctx.Stroke();
            }
        }
Ejemplo n.º 3
0
        static void DrawRoundedRectangle(vkvg.Context gr, double x, double y, double width, double height, double radius)
        {
            if ((radius > height / 2) || (radius > width / 2))
            {
                radius = Math.Min(height / 2, width / 2);
            }

            gr.MoveTo(x, y + radius);
            gr.Arc(x + radius, y + radius, radius, Math.PI, -Math.PI / 2);
            gr.LineTo(x + width - radius, y);
            gr.Arc(x + width - radius, y + radius, radius, -Math.PI / 2, 0);
            gr.LineTo(x + width, y + height - radius);
            gr.Arc(x + width - radius, y + height - radius, radius, 0, Math.PI / 2);
            gr.LineTo(x + radius, y + height);
            gr.Arc(x + radius, y + height - radius, radius, Math.PI / 2, Math.PI);
            gr.ClosePath();
        }
Ejemplo n.º 4
0
        void vkvgDraw()
        {
            using (vkvg.Context ctx = new vkvg.Context(vkvgSurf)) {
                ctx.Operator = vkvg.Operator.Clear;
                ctx.Paint();
                ctx.Operator = vkvg.Operator.Over;

                ctx.LineWidth = 1;
                ctx.SetSource(0.1, 0.1, 0.1, 0.3);
                ctx.Rectangle(5.5, 5.5, 400, 250);
                ctx.FillPreserve();
                ctx.Flush();
                ctx.SetSource(0.8, 0.8, 0.8);
                ctx.Stroke();

                ctx.FontFace = "mono";
                ctx.FontSize = 10;
                int x = 16;
                int y = 40, dy = 16;
                ctx.MoveTo(x, y);
                ctx.ShowText(string.Format($"fps:     {fps,5} "));
                ctx.MoveTo(x + 200, y - 0.5);
                ctx.Rectangle(x + 200, y - 8.5, 0.1 * fps, 10);
                ctx.SetSource(0.1, 0.9, 0.1);
                ctx.Fill();
                ctx.SetSource(0.8, 0.8, 0.8);
                y += dy;
                ctx.MoveTo(x, y);
                ctx.ShowText(string.Format($"Exposure:{matrices.exposure,5} "));
                y += dy;
                ctx.MoveTo(x, y);
                ctx.ShowText(string.Format($"Gamma:   {matrices.gamma,5} "));
                if (results == null)
                {
                    return;
                }

                y += dy * 2;
                ctx.MoveTo(x, y);
                ctx.ShowText("Pipeline Statistics");
                ctx.MoveTo(x - 2, 2.5 + y);
                ctx.LineTo(x + 160, 2.5 + y);
                ctx.Stroke();
                y += 4;
                x += 20;

                for (int i = 0; i < statPool.RequestedStats.Length; i++)
                {
                    y += dy;
                    ctx.MoveTo(x, y);
                    ctx.ShowText(string.Format($"{statPool.RequestedStats[i].ToString(),-30} :{results[i],12:0,0} "));
                }

                y += dy;
                ctx.MoveTo(x, y);
                ctx.ShowText(string.Format($"{"Elapsed microsecond",-20} :{timestampQPool.ElapsedMiliseconds:0.0000} "));
            }
        }
Ejemplo n.º 5
0
        public override void Update()
        {
            using (vkvg.Context ctx = new vkvg.Context(vkvgSurf))
            {
                ctx.Clear();

                for (int i = 0; i < iterations; i++)
                {
                    float x1 = (float)(rnd.NextDouble() * Width);
                    float y1 = (float)(rnd.NextDouble() * Height);
                    float x2 = (float)(rnd.NextDouble() * Width) + 1.0f;
                    float y2 = (float)(rnd.NextDouble() * Height) + 1.0f;
                    randomize_color(ctx);
                    ctx.MoveTo(x1, y1);
                    ctx.LineTo(x2, y2);
                    ctx.Stroke();
                }
            }
        }
Ejemplo n.º 6
0
        void vkvgDraw()
        {
            using (vkvg.Context ctx = new vkvg.Context(vkvgSurf)) {
                ctx.Operator = vkvg.Operator.Clear;
                ctx.Paint();
                ctx.Operator = vkvg.Operator.Over;

                ctx.LineWidth = 1;
                ctx.SetSource(0.1, 0.1, 0.1, 0.8);
                ctx.Rectangle(5.5, 5.5, 320, 300);
                ctx.FillPreserve();
                ctx.Flush();
                ctx.SetSource(0.8, 0.8, 0.8);
                ctx.Stroke();

                ctx.FontFace = "mono";
                ctx.FontSize = 8;
                int x = 16;
                int y = 40, dy = 16;
                ctx.MoveTo(x, y);
                ctx.ShowText(string.Format($"fps:     {fps,5} "));
                ctx.MoveTo(x + 200, y - 0.5);
                ctx.Rectangle(x + 200, y - 8.5, 0.1 * fps, 10);
                ctx.SetSource(0.1, 0.9, 0.1);
                ctx.Fill();
                ctx.SetSource(0.8, 0.8, 0.8);
                y += dy;
                ctx.MoveTo(x, y);
                ctx.ShowText(string.Format($"Exposure:{pbrPipeline.matrices.exposure,5} "));
                y += dy;
                ctx.MoveTo(x, y);
                ctx.ShowText(string.Format($"Gamma:   {pbrPipeline.matrices.gamma,5} "));
                y += dy;
                ctx.MoveTo(x, y);
                ctx.ShowText(string.Format($"Light pos:   {lightPos.ToString()} "));

#if PIPELINE_STATS
                if (results == null)
                {
                    return;
                }

                y += dy * 2;
                ctx.MoveTo(x, y);
                ctx.ShowText("Pipeline Statistics");
                ctx.MoveTo(x - 2, 4.5 + y);
                ctx.LineTo(x + 160, 4.5 + y);
                ctx.Stroke();
                y += 4;
                x += 20;

                for (int i = 0; i < statPool.RequestedStats.Length; i++)
                {
                    y += dy;
                    ctx.MoveTo(x, y);
                    ctx.ShowText(string.Format($"{statPool.RequestedStats[i].ToString(),-30} :{results[i],12:0,0} "));
                }

                /*y += dy;
                 * ctx.MoveTo (x, y);
                 * ctx.ShowText (string.Format ($"{"Elapsed microsecond",-20} :{timestampQPool.ElapsedMiliseconds:0.0000} "));*/
#endif
                y += dy;
                ctx.MoveTo(x, y);
                ctx.ShowText(string.Format($"{"Debug draw (numpad 0->6)",-30} : {currentDebugView.ToString ()} "));
                y += dy;
                ctx.MoveTo(x, y);
                ctx.ShowText(string.Format($"{"Debug Prefil Face: (f)",-30} : {pbrPipeline.envCube.debugFace.ToString ()} "));
                y += dy;
                ctx.MoveTo(x, y);
                ctx.ShowText(string.Format($"{"Debug Prefil Mip: (m)",-30} : {pbrPipeline.envCube.debugMip.ToString ()} "));
            }
        }