Exemple #1
0
        protected override void CreateSizeDependentResources(D3DApplicationBase app)
        {
            base.CreateSizeDependentResources(app);

            // Initialize camera
            Camera.ZNear       = 0.5f;
            Camera.ZFar        = 100f;
            Camera.FOV         = (float)Math.PI / 3f;
            Camera.AspectRatio = Width / (float)Height;

            // Reinitialize the projection matrix
            ProjectionMatrix = Matrix.PerspectiveFovRH(Camera.FOV, Camera.AspectRatio, Camera.ZNear, Camera.ZFar);
        }
        protected override void CreateSizeDependentResources(D3DApplicationBase app)
        {
            base.CreateSizeDependentResources(app);

            //// Create a viewport descriptor of the render size.
            //this.Viewport = new SharpDX.ViewportF(
            //    (float)RenderTargetBounds.X + 100,
            //    (float)RenderTargetBounds.Y + 100,
            //    (float)RenderTargetBounds.Width - 200,
            //    (float)RenderTargetBounds.Height - 200,
            //    0.0f,   // min depth
            //    1.0f);  // max depth

            //// Set the current viewport for the rasterizer.
            //this.DeviceManager.Direct3DContext.Rasterizer.SetViewport(Viewport);
        }
        protected override void CreateSizeDependentResources(D3DApplicationBase app)
        {
            // Clear the render targets of any deferred contexts before
            // processing a resize.
            if (contextList != null)
            {
                foreach (var context in contextList)
                {
                    if (context != null && context.TypeInfo == DeviceContextType.Deferred)
                    {
                        context.OutputMerger.ResetTargets();
                        context.Dispose();
                    }
                }
            }

            base.CreateSizeDependentResources(app);
        }
Exemple #4
0
        protected override void CreateSizeDependentResources(D3DApplicationBase app)
        {
            RemoveAndDispose(ref renderTargetSRV);
            RemoveAndDispose(ref resolvedTargetSRV);
            RemoveAndDispose(ref altRenderTargetRTV);
            RemoveAndDispose(ref altRenderTargetSRV);
            RemoveAndDispose(ref altRenderTargetUAV);
            RemoveAndDispose(ref altRenderTargetUIntUAV);
            RemoveAndDispose(ref renderTarget);
            RemoveAndDispose(ref resolvedTarget);

            base.CreateSizeDependentResources(app);

            #region Image Processing
            var device = this.DeviceManager.Direct3DDevice;
            renderTarget = ToDispose(RenderTargetView.ResourceAs <Texture2D>());
            {
                renderTarget.DebugName = "Render Target";
                renderTargetSRV        = ToDispose(new ShaderResourceView(device, renderTarget));

                // Initialize a target to resolve multi-sampled render target
                var resolvedDesc = renderTarget.Description;
                resolvedDesc.BindFlags         = BindFlags.ShaderResource;
                resolvedDesc.SampleDescription = new SampleDescription(1, 0);

                resolvedTarget = ToDispose(new Texture2D(device, resolvedDesc));
                {
                    resolvedTargetSRV = ToDispose(new ShaderResourceView(device, resolvedTarget));
                }

                // Create two alternative render targets
                // These are specially configured so they can be bound as SRV, RTV, and UAV
                // and also as a R32_UInt UAV (read/write to texture resource support)
                var rtDesc = renderTarget.Description;
                rtDesc.BindFlags         = BindFlags.ShaderResource | BindFlags.RenderTarget | BindFlags.UnorderedAccess;
                rtDesc.SampleDescription = new SampleDescription(1, 0);
                rtDesc.Format            = Format.R8G8B8A8_Typeless; // so it can be bound to the R32_UInt UAV
                rtDesc.MipLevels         = 0;

                using (var altTarget = new Texture2D(device, rtDesc))
                {
                    altRenderTargetRTV = ToDispose(new RenderTargetView(device, altTarget
                                                                        , new RenderTargetViewDescription
                    {
                        Format    = Format.R8G8B8A8_UNorm,
                        Dimension = RenderTargetViewDimension.Texture2D
                    }
                                                                        ));
                    altRenderTargetSRV = ToDispose(new ShaderResourceView(device, altTarget
                                                                          , new ShaderResourceViewDescription
                    {
                        Dimension = SharpDX.Direct3D.ShaderResourceViewDimension.Texture2D,
                        Format    = Format.R8G8B8A8_UNorm,
                        Texture2D = new ShaderResourceViewDescription.Texture2DResource
                        {
                            MipLevels       = 1,
                            MostDetailedMip = 0
                        }
                    }
                                                                          ));
                    altRenderTargetUAV = ToDispose(new UnorderedAccessView(device, altTarget
                                                                           , new UnorderedAccessViewDescription
                    {
                        Dimension = UnorderedAccessViewDimension.Texture2D,
                        Format    = Format.R8G8B8A8_UNorm,
                    }
                                                                           ));
                    altRenderTargetUIntUAV = ToDispose(new UnorderedAccessView(device, altTarget
                                                                               , new UnorderedAccessViewDescription
                    {
                        Dimension = UnorderedAccessViewDimension.Texture2D,
                        Format    = Format.R32_UInt,
                    }
                                                                               ));
                }

                using (var alt2Target = new Texture2D(device, rtDesc))
                {
                    alt2RenderTargetRTV = ToDispose(new RenderTargetView(device, alt2Target
                                                                         , new RenderTargetViewDescription
                    {
                        Format    = Format.R8G8B8A8_UNorm,
                        Dimension = RenderTargetViewDimension.Texture2D
                    }
                                                                         ));
                    alt2RenderTargetSRV = ToDispose(new ShaderResourceView(device, alt2Target
                                                                           , new ShaderResourceViewDescription
                    {
                        Dimension = SharpDX.Direct3D.ShaderResourceViewDimension.Texture2D,
                        Format    = Format.R8G8B8A8_UNorm,
                        Texture2D = new ShaderResourceViewDescription.Texture2DResource
                        {
                            MipLevels       = 1,
                            MostDetailedMip = 0
                        }
                    }
                                                                           ));
                    alt2RenderTargetUAV = ToDispose(new UnorderedAccessView(device, alt2Target
                                                                            , new UnorderedAccessViewDescription
                    {
                        Dimension = UnorderedAccessViewDimension.Texture2D,
                        Format    = Format.R8G8B8A8_UNorm,
                    }
                                                                            ));
                    alt2RenderTargetUIntUAV = ToDispose(new UnorderedAccessView(device, alt2Target
                                                                                , new UnorderedAccessViewDescription
                    {
                        Dimension = UnorderedAccessViewDimension.Texture2D,
                        Format    = Format.R32_UInt,
                    }
                                                                                ));
                }
            }
            #endregion
        }
Exemple #5
0
 protected override void CreateSizeDependentResources(D3DApplicationBase app)
 {
     base.CreateSizeDependentResources(app);
 }