Ejemplo n.º 1
0
        public async void AnimateMandelbrot()
        {
            // Target information
            float offsetX = -0.02f;
            float offsetY = 0.00562f;

            for (int i = 0; i < 500; i++)
            {
                if (_disposing || !MandelbrotInstance.IsActive)
                {
                    break;
                }

                // Set the next areaView size
                areaView[0] = areaView[0] * 0.98f + offsetX;
                areaView[1] = areaView[1] * 0.98f + offsetX;
                areaView[2] = areaView[2] * 0.98f + offsetY;
                areaView[3] = areaView[3] * 0.98f + offsetY;

                // Generate the next frame of this animation.
                RestartWatch();
                int[] data = await MandelbrotInstance.CalculateMandelbrot(areaView[0], areaView[1], areaView[2], areaView[3]); // ILGPU-CPU-Mode

                if (data == null || _disposing)
                {
                    break;
                }
                ExecutionsDetails2 = ElapsedTime($"IL Run - {DeviceName}");



                // Render the generated frame to the canvas.
                RestartWatch();
                await MandelbrotExtensions.Draw(Canvas2D, data, displayPort[0], displayPort[1], maxIterations, Color.Blue);

                StateHasChanged();

                ExecutionsDetails3 = ElapsedTime("Web Server Render");
            }
        }
Ejemplo n.º 2
0
        private async void CanvasInitComplete(BasicCanvas basicCanvas)
        {
            DeviceName = MandelbrotInstance.AcceleratorName();

            displayPort[0] = Canvas2D.Width;
            displayPort[1] = Canvas2D.Height;
            areaView[0]    = -2.0f;
            areaView[1]    = 1.0f;
            areaView[2]    = -1.0f;
            areaView[3]    = 1.0f;
            maxIterations  = 1000;

            if (_disposing || !MandelbrotInstance.IsActive)
            {
                return;
            }
            RestartWatch();
            MandelbrotInstance.SetDisplay(Canvas2D.Width, Canvas2D.Height);
            ExecutionsDetails1 = ElapsedTime($"IL Compile - {DeviceName}");

            if (_disposing || !MandelbrotInstance.IsActive)
            {
                return;
            }
            RestartWatch();
            int[] data = await MandelbrotInstance.CalculateMandelbrot(areaView[0], areaView[1], areaView[2], areaView[3]); // ILGPU-CPU-Mode

            ExecutionsDetails2 = ElapsedTime($"IL Run - {DeviceName}");

            if (data == null || _disposing)
            {
                return;
            }

            await MandelbrotExtensions.Draw(Canvas2D, data, displayPort[0], displayPort[1], maxIterations, Color.Blue);

            DisabledButtons = false;
            StateHasChanged(); // note StateHasChanged will force an update of controls on our razor page.
        }