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); }
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); }
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); }
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); }
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); }