Example #1
0
            public override void Draw(Renderer renderer)
            {
                KeyboardState keyboard = Keyboard.GetState();

                if (keyboard.IsKeyDown(Keys.Space) && previousKeyboard.IsKeyUp(Keys.Space))
                {
                    drawGBuffer = !drawGBuffer;
                }
                previousKeyboard = keyboard;

                var metadata   = renderer.Data;
                var resolution = renderer.Data.Get <Vector2>("resolution").Value;
                var targetInfo = new RenderTargetInfo()
                {
                    Width = (int)resolution.X, Height = (int)resolution.Y, SurfaceFormat = SurfaceFormat.Rgba64
                };
                var target = RenderTargetManager.GetTarget(renderer.Device, targetInfo);

                renderer.Device.SetRenderTarget(target);

                var depth   = metadata.Get <Texture2D>("gbuffer_depth").Value;
                var normals = metadata.Get <Texture2D>("gbuffer_normals").Value;
                var diffuse = metadata.Get <Texture2D>("gbuffer_diffuse").Value;
                var light   = metadata.Get <Texture2D>("lightbuffer").Value;

                //using (var stream = File.Create("lightbuffer.jpg"))
                //    light.SaveAsJpeg(stream, light.Width, light.Height);

                var halfWidth  = (int)(resolution.X / 2);
                var halfHeight = (int)(resolution.Y / 2);

                batch.GraphicsDevice.Clear(Color.Black);
                batch.Begin(SpriteSortMode.Immediate, BlendState.Opaque);

                if (drawGBuffer)
                {
                    batch.GraphicsDevice.SamplerStates[0] = SamplerState.PointClamp;
                    batch.Draw(depth, new Rectangle(0, 0, halfWidth, halfHeight), Color.White);
                    batch.Draw(light, new Rectangle(halfWidth, halfHeight, halfWidth, halfHeight), Color.White);
                    batch.GraphicsDevice.SamplerStates[0] = SamplerState.LinearClamp;

                    batch.Draw(normals, new Rectangle(halfWidth, 0, halfWidth, halfHeight), Color.White);
                    batch.Draw(diffuse, new Rectangle(0, halfHeight, halfWidth, halfHeight), Color.White);
                }
                else
                {
                    batch.GraphicsDevice.SamplerStates[0] = SamplerState.PointClamp;
                    batch.Draw(light, new Rectangle(0, 0, (int)resolution.X, (int)resolution.Y), Color.White);
                    batch.GraphicsDevice.SamplerStates[0] = SamplerState.LinearClamp;
                }

                batch.End();

                Output("scene", target);
            }
Example #2
0
            public override void Draw(Renderer renderer)
            {
                var resolution = renderer.Data.Get <Vector2>("resolution").Value;
                var targetInfo = new RenderTargetInfo()
                {
                    Width = (int)resolution.X, Height = (int)resolution.Y
                };
                var target = RenderTargetManager.GetTarget(renderer.Device, targetInfo);

                renderer.Device.SetRenderTarget(target);

                batch.Begin();
                batch.DrawString(Font, "This is being drawn by a RenderPhase!", new Vector2(640, 360), Color.White);
                batch.End();

                Output("scene", target);
            }
Example #3
0
            public override void Draw(Renderer renderer)
            {
                var metadata   = renderer.Data;
                var resolution = renderer.Data.Get <Vector2>("resolution").Value;
                var targetInfo = new RenderTargetInfo()
                {
                    Width = (int)resolution.X, Height = (int)resolution.Y, SurfaceFormat = SurfaceFormat.Rgba64, DepthFormat = DepthFormat.Depth24Stencil8
                };
                var target = RenderTargetManager.GetTarget(renderer.Device, targetInfo);

                renderer.Device.SetRenderTarget(target);

                var light     = metadata.Get <Texture2D>("tonemapped").Value;
                var luminance = metadata.Get <Texture2D>("luminancemap").Value;

                //using (var stream = File.Create("luminance.jpg"))
                //    light.SaveAsJpeg(stream, light.Width, light.Height);

                var width  = (int)resolution.X;
                var height = (int)resolution.Y;

                batch.GraphicsDevice.Clear(Color.Black);
                batch.Begin(SpriteSortMode.Immediate, BlendState.Opaque);

                if (drawScene)
                {
                    batch.GraphicsDevice.SamplerStates[0] = SamplerState.PointClamp;
                    batch.Draw(light, new Rectangle(0, 0, width, height), Color.White);
                    //batch.Draw(luminance, new Rectangle(50, height - (height / 5) - 50, height / 5, height / 5), Color.White);
                    //batch.Draw(toneMap.AdaptedLuminance, new Rectangle(50 + 20 + (height / 5), height - (height / 5) - 50, height / 5, height / 5), Color.White);
                    batch.GraphicsDevice.SamplerStates[0] = SamplerState.LinearClamp;
                }
                else
                {
                    batch.GraphicsDevice.SamplerStates[0] = SamplerState.PointClamp;
                    batch.Draw(luminance, new Rectangle(0, 0, width, height), Color.White);
                    batch.GraphicsDevice.SamplerStates[0] = SamplerState.LinearClamp;
                }

                batch.End();

                Output("scene", target);
            }
Example #4
0
        public override void Draw(Renderer renderer)
        {
            var resolution = renderer.Data.Get <Vector2>("resolution").Value;
            var targetInfo = new RenderTargetInfo()
            {
                Width            = (int)resolution.X,
                Height           = (int)resolution.Y,
                SurfaceFormat    = SurfaceFormat.Color,
                DepthFormat      = DepthFormat.None,
                MultiSampleCount = 4
            };

            var target = RenderTargetManager.GetTarget(renderer.Device, targetInfo);

            renderer.Device.SetRenderTarget(target);
            renderer.Device.Clear(Colour);

            Output("scene", target);
        }
Example #5
0
            public override void Draw(Renderer renderer)
            {
                var metadata   = renderer.Data;
                var resolution = renderer.Data.Get <Vector2>("resolution").Value;
                var targetInfo = new RenderTargetInfo()
                {
                    Width = (int)resolution.X, Height = (int)resolution.Y
                };
                var target = RenderTargetManager.GetTarget(renderer.Device, targetInfo);

                renderer.Device.SetRenderTarget(target);

                var depth   = metadata.Get <Texture2D>("gbuffer_depth").Value;
                var normals = metadata.Get <Texture2D>("gbuffer_normals").Value;
                var diffuse = metadata.Get <Texture2D>("gbuffer_diffuse").Value;

                //Save(depth, "depth.jpg");
                //Save(normals, "normal.jpg");
                //Save(diffuse, "diffuse.jpg");

                var halfWidth  = (int)(resolution.X / 2);
                var halfHeight = (int)(resolution.Y / 2);

                batch.GraphicsDevice.Clear(Color.Black);
                batch.Begin(SpriteSortMode.Immediate, BlendState.Opaque);

                batch.GraphicsDevice.SamplerStates[0] = SamplerState.PointClamp;
                batch.Draw(depth, new Rectangle(0, 0, halfWidth, halfHeight), Color.White);
                batch.GraphicsDevice.SamplerStates[0] = SamplerState.LinearClamp;

                batch.Draw(normals, new Rectangle(halfWidth, 0, halfWidth, halfHeight), Color.White);
                batch.Draw(diffuse, new Rectangle(0, halfHeight, halfWidth, halfHeight), Color.White);
                batch.End();

                Output("scene", target);
            }