Example #1
0
 protected override void BeforeRender(DX11GraphicsRenderer renderer, DX11RenderContext context)
 {
     renderer.EnableDepth  = this.FInDepthBuffer[0];
     renderer.DepthStencil = this.depthmanager.GetDepthStencil(context);
     renderer.DepthMode    = this.depthmanager.Mode;
     renderer.SetRenderTargets(targets[context]);
 }
Example #2
0
        public void Render(DX11RenderContext context)
        {
            Device device = context.Device;

            if (!this.updateddevices.Contains(context))
            {
                this.Update(null, context);
            }

            if (this.rendereddevices.Contains(context))
            {
                return;
            }

            if (this.FInEnabled[0])
            {
                renderer.EnableDepth  = false;
                renderer.DepthStencil = null;
                renderer.DepthMode    = eDepthBufferMode.None;
                renderer.SetRenderTargets(this.swapchain);
                renderer.SetTargets();

                if (this.FInClear[0])
                {
                    //Remove Shader view if bound as is
                    context.CurrentDeviceContext.ClearRenderTargetView(this.swapchain.RTV, this.FInBgColor[0].Color);
                }

                //Only call render if layer connected
                if (this.FInLayer.PluginIO.IsConnected)
                {
                    float cw = (float)this.form.ClientSize.Width;
                    float ch = (float)this.form.ClientSize.Height;

                    settings.ViewportCount  = 1;
                    settings.ViewportIndex  = 0;
                    settings.View           = Matrix.Identity;
                    settings.Projection     = Matrix.Identity;
                    settings.ViewProjection = Matrix.Identity;
                    settings.BackBuffer     = this.swapchain;
                    settings.RenderWidth    = 1920;
                    settings.RenderHeight   = 1200;
                    settings.ResourceSemantics.Clear();
                    settings.CustomSemantics.Clear();

                    //Call render on all layers
                    for (int j = 0; j < this.FInLayer.SliceCount; j++)
                    {
                        this.FInLayer[j][context].Render(this.FInLayer.PluginIO, context, settings);
                    }
                }
                renderer.CleanTargets();
            }
            this.rendereddevices.Add(context);
        }
Example #3
0
 protected override void BeforeRender(DX11GraphicsRenderer renderer, DX11RenderContext context)
 {
     renderer.EnableDepth  = this.FInDepthBuffer[0];
     renderer.DepthStencil = this.depthmanager.GetDepthStencil(context);
     renderer.DepthMode    = this.depthmanager.Mode;
     renderer.SetRenderTargets(targets[context]);
     if (FTAClear[0])
     {
         context.CurrentDeviceContext.ClearUnorderedAccessView(FOutTexArray[0][context].UAV, new [] { (float)FTAClearCol[0].R, (float)FTAClearCol[0].G, (float)FTAClearCol[0].B, (float)FTAClearCol[0].A });
     }
 }
        public void Render(DX11RenderContext context)
        {
            Device device = context.Device;

            if (!this.updateddevices.Contains(context))
            {
                this.Update(context);
            }

            if (this.rendereddevices.Contains(context))
            {
                return;
            }

            if (this.FInEnabled[0])
            {
                renderer.DepthStencil = this.depthmanager.GetDepthStencil(context);
                renderer.EnableDepth  = renderer.DepthStencil != null;
                renderer.DepthMode    = this.depthmanager.Mode;
                renderer.SetRenderTargets(this.swapchain);
                renderer.SetTargets();

                if (this.FInClear[0])
                {
                    //Remove Shader view if bound as is
                    context.CurrentDeviceContext.ClearRenderTargetView(this.swapchain.RTV, this.FInBgColor[0].Color);
                    this.depthmanager.Clear(context);
                }

                //Only call render if layer connected
                if (this.FInLayer.IsConnected)
                {
                    float cw = (float)this.form.ClientSize.Width;
                    float ch = (float)this.form.ClientSize.Height;

                    settings.ViewportCount  = 1;
                    settings.ViewportIndex  = 0;
                    settings.View           = Matrix.Identity;
                    settings.Projection     = Matrix.Identity;
                    settings.ViewProjection = Matrix.Identity;
                    settings.BackBuffer     = this.swapchain;
                    settings.RenderWidth    = this.swapchain.Width;
                    settings.RenderHeight   = this.swapchain.Height;
                    settings.ResourceSemantics.Clear();
                    settings.CustomSemantics.Clear();


                    this.FInLayer.RenderAll(context, settings);
                }
                renderer.CleanTargets();
            }
            this.rendereddevices.Add(context);
        }
Example #5
0
        protected override void BeforeRender(DX11GraphicsRenderer renderer, DX11RenderContext context)
        {
            IDX11RenderTargetView[] rtvs = new IDX11RenderTargetView[this.FOutBuffers.SliceCount];
            for (int i = 0; i < this.FOutBuffers.SliceCount; i++)
            {
                rtvs[i] = this.FOutBuffers[i][context];
            }

            renderer.EnableDepth  = this.FInDepthBuffer[0];
            renderer.DepthStencil = this.depthmanager.GetDepthStencil(context);
            renderer.DepthMode    = this.depthmanager.Mode;
            renderer.SetRenderTargets(rtvs);
        }
Example #6
0
        public void Render(DX11RenderContext context)
        {
            Device device = context.Device;

            if (this.FInEnabled[0])
            {
                renderer.EnableDepth  = false;
                renderer.DepthStencil = null;
                renderer.DepthMode    = eDepthBufferMode.None;
                renderer.SetRenderTargets(this.swapchain);
                renderer.SetTargets();

                if (this.FInClear[0])
                {
                    //Remove Shader view if bound as is
                    context.CurrentDeviceContext.ClearRenderTargetView(this.swapchain.RTV, this.FInBgColor[0].Color);
                }

                //Only call render if layer connected
                if (this.FInLayer.IsConnected)
                {
                    settings.ViewportCount  = 1;
                    settings.ViewportIndex  = 0;
                    settings.View           = Matrix.Identity;
                    settings.Projection     = Matrix.Identity;
                    settings.ViewProjection = Matrix.Identity;
                    settings.BackBuffer     = this.swapchain;
                    settings.RenderWidth    = (int)cw;
                    settings.RenderHeight   = (int)ch;
                    settings.ResourceSemantics.Clear();
                    settings.CustomSemantics.Clear();

                    this.FInLayer.RenderAll(context, settings);
                }
                renderer.CleanTargets();
            }
        }
Example #7
0
        public void Render(DX11RenderContext context)
        {
            Device device = context.Device;

            if (!this.updateddevices.Contains(context))
            {
                this.Update(context);
            }

            if (this.rendereddevices.Contains(context))
            {
                return;
            }

            Exception exception = null;

            if (this.FInEnabled[0])
            {
                if (this.BeginQuery != null)
                {
                    this.BeginQuery(context);
                }

                DX11SwapChain        chain    = this.FOutBackBuffer[0][context];
                DX11GraphicsRenderer renderer = this.renderers[context];

                renderer.EnableDepth  = this.FInDepthBuffer[0];
                renderer.DepthStencil = this.depthmanager.GetDepthStencil(context);
                renderer.DepthMode    = this.depthmanager.Mode;
                renderer.SetRenderTargets(chain);
                renderer.SetTargets();

                try
                {
                    if (this.FInClear[0])
                    {
                        //Remove Shader view if bound as is
                        context.CurrentDeviceContext.ClearRenderTargetView(chain.RTV, this.FInBgColor[0]);
                    }

                    if (this.FInClearDepth[0])
                    {
                        if (this.FInDepthBuffer[0])
                        {
                            this.depthmanager.Clear(context, this.FInClearDepthValue[0]);
                        }
                    }

                    //Only call render if layer connected
                    if (this.FInLayer.IsConnected)
                    {
                        int rtmax = Math.Max(this.FInProjection.SliceCount, this.FInView.SliceCount);
                        rtmax = Math.Max(rtmax, this.FInViewPort.SliceCount);

                        settings.ViewportCount = rtmax;

                        bool viewportpop = this.FInViewPort.IsConnected;

                        for (int i = 0; i < rtmax; i++)
                        {
                            this.RenderSlice(context, settings, i, viewportpop);
                        }
                    }

                    if (this.EndQuery != null)
                    {
                        this.EndQuery(context);
                    }
                }
                catch (Exception ex)
                {
                    exception = ex;
                }
                finally
                {
                    renderer.CleanTargets();
                }
            }

            this.rendereddevices.Add(context);

            //Rethrow
            if (exception != null)
            {
                throw exception;
            }
        }
Example #8
0
        public void Render(DX11RenderContext context)
        {
            Device device = context.Device;

            if (!this.updateddevices.Contains(context))
            {
                this.Update(null, context);
            }

            if (this.rendereddevices.Contains(context))
            {
                return;
            }

            if (this.FInEnabled[0])
            {
                if (this.BeginQuery != null)
                {
                    this.BeginQuery(context);
                }

                DX11SwapChain        chain    = this.FOutBackBuffer[0][context];
                DX11GraphicsRenderer renderer = this.renderers[context];

                renderer.EnableDepth  = this.FInDepthBuffer[0];
                renderer.DepthStencil = this.depthmanager.GetDepthStencil(context);
                renderer.DepthMode    = this.depthmanager.Mode;
                renderer.SetRenderTargets(chain);
                renderer.SetTargets();

                if (this.FInClear[0])
                {
                    //Remove Shader view if bound as is
                    context.CurrentDeviceContext.ClearRenderTargetView(chain.RTV, this.FInBgColor[0].Color);
                }

                if (this.FInClearDepth[0])
                {
                    if (this.FInDepthBuffer[0])
                    {
                        this.depthmanager.Clear(context);
                    }
                }

                //Only call render if layer connected
                if (this.FInLayer.PluginIO.IsConnected)
                {
                    int rtmax = Math.Max(this.FInProjection.SliceCount, this.FInView.SliceCount);
                    rtmax = Math.Max(rtmax, this.FInViewPort.SliceCount);

                    settings.ViewportCount = rtmax;

                    bool viewportpop = this.FInViewPort.PluginIO.IsConnected;

                    float cw = (float)this.ClientSize.Width;
                    float ch = (float)this.ClientSize.Height;

                    for (int i = 0; i < rtmax; i++)
                    {
                        settings.ViewportIndex = i;
                        settings.View          = this.FInView[i];

                        Matrix proj   = this.FInProjection[i];
                        Matrix aspect = Matrix.Invert(this.FInAspect[i]);
                        Matrix crop   = Matrix.Invert(this.FInCrop[i]);


                        settings.Projection     = proj * aspect * crop;
                        settings.ViewProjection = settings.View * settings.Projection;
                        settings.BackBuffer     = this.FOutBackBuffer[0][context];
                        settings.RenderWidth    = this.FOutBackBuffer[0][context].Resource.Description.Width;
                        settings.RenderHeight   = this.FOutBackBuffer[0][context].Resource.Description.Height;
                        settings.ResourceSemantics.Clear();
                        settings.CustomSemantics.Clear();

                        if (viewportpop)
                        {
                            context.RenderTargetStack.PushViewport(this.FInViewPort[i].Normalize(cw, ch));
                        }


                        //Call render on all layers
                        for (int j = 0; j < this.FInLayer.SliceCount; j++)
                        {
                            this.FInLayer[j][context].Render(this.FInLayer.PluginIO, context, settings);
                        }

                        if (viewportpop)
                        {
                            context.RenderTargetStack.PopViewport();
                        }
                    }
                }

                if (this.EndQuery != null)
                {
                    this.EndQuery(context);
                }

                renderer.CleanTargets();
                //OnDevice.RenderTargetStack.Pop();
            }
            this.rendereddevices.Add(context);
        }