public override void Draw(Squared.Render.Frame frame) { const float LightmapScale = 1f; LightmapMaterials.ViewportScale = new Vector2(1f / LightmapScale); LightmapMaterials.ProjectionMatrix = Matrix.CreateOrthographicOffCenter( 0, Width, Height, 0, 0, 1 ); ClearBatch.AddNew(frame, 0, Game.ScreenMaterials.Clear, clearColor: Color.Black); Renderer.RenderLighting(frame, frame, 1); using (var bg = BatchGroup.New(frame, 2)) { var dc = new BitmapDrawCall(TestImage, new Vector2(0, 550), 0.55f); using (var bb = BitmapBatch.New(bg, 0, Renderer.Materials.ScreenSpaceBitmap)) bb.Add(ref dc); dc.Position.X += 600; dc.Textures = new TextureSet(dc.Texture, RampTexture); using (var bb2 = BitmapBatch.New(bg, 1, Renderer.IlluminantMaterials.ScreenSpaceRampBitmap, samplerState2: SamplerState.LinearClamp)) bb2.Add(ref dc); } if (ShowOutlines) { Renderer.RenderOutlines(frame, 2, true); } }
public override void Draw(Squared.Render.Frame frame) { const float LightmapScale = 1f; LightmapMaterials.ViewportScale = new Vector2(1f / LightmapScale); LightmapMaterials.ProjectionMatrix = Matrix.CreateOrthographicOffCenter( 0, Width, Height, 0, 0, 1 ); CreateRenderTargets(); var args = new float[] { MagnitudeScale, MiddleGray, AppliedAverageLuminance, MaximumLuminance }; using (var bg = BatchGroup.ForRenderTarget( frame, -1, Lightmap, (dm, _) => Renderer.IlluminantMaterials.SetGammaCompressionParameters(args[0], args[1], args[2], args[3]) )) { ClearBatch.AddNew(bg, 0, LightmapMaterials.Clear, clearColor: Color.Black, clearZ: 0, clearStencil: 0); Renderer.RenderLighting(frame, bg, 1, intensityScale: 1 / MagnitudeScale); }; ClearBatch.AddNew(frame, 0, Game.ScreenMaterials.Clear, clearColor: Color.Black); using (var bb = BitmapBatch.New( frame, 1, Game.ScreenMaterials.Get(Renderer.IlluminantMaterials.ScreenSpaceGammaCompressedBitmap, blendState: BlendState.Opaque) )) bb.Add(new BitmapDrawCall(Lightmap, Vector2.Zero)); if (ShowOutlines) { Renderer.RenderOutlines(frame, 2, true); } }
public override void Draw(Squared.Render.Frame frame) { const float LightmapScale = 1f; LightmapMaterials.ViewportScale = new Vector2(1f / LightmapScale); LightmapMaterials.ProjectionMatrix = Matrix.CreateOrthographicOffCenter( 0, Width, Height, 0, 0, 1 ); ClearBatch.AddNew(frame, 0, Game.ScreenMaterials.Clear, clearColor: Color.Black); Renderer.RenderLighting(frame, frame, 1); if (ShowOutlines) { Renderer.RenderOutlines(frame, 2, true); } using (var gb = GeometryBatch.New(frame, 3, Game.ScreenMaterials.Get(Game.ScreenMaterials.ScreenSpaceGeometry, blendState: BlendState.Opaque))) for (var i = 0; i < Receivers.Length; i++) { var r = Receivers[i]; if (!r.ReceivedLight.HasValue) { continue; } var size = new Vector2(8, 8); var bounds = new Bounds(r.Position - size, r.Position + size); var color = new Color(r.ReceivedLight.Value.X, r.ReceivedLight.Value.Y, r.ReceivedLight.Value.Z, 1.0f) * r.ReceivedLight.Value.W; // Console.WriteLine("Receiver {0} at {1}: {2}", i, r.Position, r.ReceivedLight); gb.AddFilledQuad(bounds, color); } }