public void Renderer()
        {
            MyAsyncRenderContext aRC = this;
            RenderWindow         rw  = aRC.RenderWindow;

            if (null != rw)
            {
                Size size = rw.Size();
                using (RenderWindow.Channel channel = rw.OpenChannel(Rhino.Render.RenderWindow.StandardChannels.RGBA))
                {
                    for (int x = 0; x < size.Width; x++)
                    {
                        for (int y = 0; y < size.Height; y++)
                        {
                            Rhino.Display.Color4f color = new Rhino.Display.Color4f(y / (float)size.Width, x / (float)size.Height, 1.0f, 1.0f);
                            channel.SetValue(x, y, color);
                            rw.Invalidate();
                            Thread.Sleep(0);
                        }
                        float progress = x / (float)size.Width;
                        rw.SetProgress(String.Format("Rendering C# rendering {0:d}% complete", (int)(progress * 100.0f)), progress);
                        Thread.Sleep(1);

                        if (aRC.CancelRender)
                        {
                            break;
                        }
                    }
                    rw.SetProgress("Rendering complete", 1.0f);
                    Thread.Sleep(10);
                }

                rw.EndAsyncRender(RenderWindow.RenderSuccessCode.Completed);
            }
        }
        protected override Result Render(RhinoDoc doc, RunMode mode, bool fastPreview)
        {
            AsyncRenderContext aRC = new MyAsyncRenderContext();

            RenderPipeline pipe = new MyRenderPipeline(doc, mode, this, ref aRC);

            ((MyAsyncRenderContext)aRC).RenderWindow = pipe.GetRenderWindow();
            ((MyAsyncRenderContext)aRC).RenderWindow.SetSize(RenderPipeline.RenderSize(doc));

            RenderPipeline.RenderReturnCode rc = pipe.Render();

            if (RenderPipeline.RenderReturnCode.Ok != rc)
            {
                RhinoApp.WriteLine("Render start failed:" + rc.ToString());
            }
            else
            {
                RhinoApp.WriteLine("Rendering started!", (int)rc);
            }

            return(Rhino.Commands.Result.Success);
        }
 public MyRenderPipeline(RhinoDoc doc, Rhino.Commands.RunMode mode, Rhino.PlugIns.RenderPlugIn plugin, ref AsyncRenderContext aRC)
     : base(doc, mode, plugin, RenderPipeline.RenderSize(doc),
            "RdkTest", Rhino.Render.RenderWindow.StandardChannels.RGBA, false, false, ref aRC)
 {
     m_asyncRenderContext = (MyAsyncRenderContext)aRC;
 }