From 640b874bd39a3201b68a77a8f28053d17d7bce75 Mon Sep 17 00:00:00 2001 From: MaxED <j.maxed@gmail.com> Date: Thu, 13 Jun 2013 11:32:00 +0000 Subject: [PATCH] "Toggle Full Brightness" action now works in Classic modes. --- Build/GZBuilder.cfg | 2 +- Source/Core/Rendering/IRenderer2D.cs | 1 + Source/Core/Rendering/Renderer2D.cs | 14 ++++++++------ Source/Core/Rendering/SurfaceManager.cs | 3 ++- Source/Core/Resources/display2d.fx | 10 +++++----- .../BuilderModes/ClassicModes/BaseClassicMode.cs | 11 +++++++++++ Source/Plugins/BuilderModes/Resources/Actions.cfg | 2 +- 7 files changed, 29 insertions(+), 14 deletions(-) diff --git a/Build/GZBuilder.cfg b/Build/GZBuilder.cfg index 00109f4a2..7ab8981a1 100644 --- a/Build/GZBuilder.cfg +++ b/Build/GZBuilder.cfg @@ -52,7 +52,7 @@ shortcuts buildermodes_fliplinedefs = 70; buildermodes_joinsectors = 74; buildermodes_removepoint = 8; - buildermodes_brightnessmode = 66; + buildermodes_brightnessmode = 65602; buildermodes_mergesectors = 65610; buildermodes_splitlinedefs = 0; buildermodes_visualmode = 87; diff --git a/Source/Core/Rendering/IRenderer2D.cs b/Source/Core/Rendering/IRenderer2D.cs index e6ba1db03..9d564564f 100644 --- a/Source/Core/Rendering/IRenderer2D.cs +++ b/Source/Core/Rendering/IRenderer2D.cs @@ -37,6 +37,7 @@ namespace CodeImp.DoomBuilder.Rendering float Scale { get; } int VertexSize { get; } ViewMode ViewMode { get; } + bool FullBrightness { get; set; } //mxd // View methods Vector2D DisplayToMap(Vector2D mousepos); diff --git a/Source/Core/Rendering/Renderer2D.cs b/Source/Core/Rendering/Renderer2D.cs index b3c0b8695..1d846d2ca 100644 --- a/Source/Core/Rendering/Renderer2D.cs +++ b/Source/Core/Rendering/Renderer2D.cs @@ -88,6 +88,9 @@ namespace CodeImp.DoomBuilder.Rendering // Geometry plotter private Plotter plotter; + //mxd. Options + private bool fullbrightness; + // Vertices to present the textures private VertexBuffer screenverts; private FlatVertex[] backimageverts; @@ -140,7 +143,8 @@ namespace CodeImp.DoomBuilder.Rendering public int VertexSize { get { return vertexsize; } } public ViewMode ViewMode { get { return viewmode; } } public SurfaceManager Surfaces { get { return surfaces; } } - public RectangleF Viewport { get { return viewport; } } //mxd + public RectangleF Viewport { get { return viewport; } } //mxd + public bool FullBrightness { get { return fullbrightness; } set { fullbrightness = value; } } //mxd #endregion @@ -1319,7 +1323,7 @@ namespace CodeImp.DoomBuilder.Rendering // Draw graphics.Shaders.Display2D.Begin(); - graphics.Shaders.Display2D.BeginPass(2); + graphics.Shaders.Display2D.BeginPass(1); //mxd graphics.Device.DrawPrimitives(PrimitiveType.TriangleList, 0, text.NumFaces >> 1); graphics.Device.DrawPrimitives(PrimitiveType.TriangleList, 0, text.NumFaces); graphics.Shaders.Display2D.EndPass(); @@ -1467,25 +1471,23 @@ namespace CodeImp.DoomBuilder.Rendering //mxd public void RenderArrow(Line3D line, PixelColor c) { float scaler = 20f / scale; - //foreach(Line3D l in lines) { + RenderLine(line.v1, line.v2, 0.8f, c, true); float angle = line.GetAngle(); //arrowhead RenderLine(line.v2, new Vector2D(line.v2.x - scaler * (float)Math.Sin(angle - 0.46f), line.v2.y + scaler * (float)Math.Cos(angle - 0.46f)), 0.8f, c, true); RenderLine(line.v2, new Vector2D(line.v2.x - scaler * (float)Math.Sin(angle + 0.46f), line.v2.y + scaler * (float)Math.Cos(angle + 0.46f)), 0.8f, c, true); - //} } //mxd public void PlotArrow(Line3D line, PixelColor c) { float scaler = 16f / scale; - //foreach(Line3D l in lines) { + PlotLine(line.v1, line.v2, c); float angle = line.GetAngle(); //arrowhead PlotLine(line.v2, new Vector2D(line.v2.x - scaler * (float)Math.Sin(angle - 0.46f), line.v2.y + scaler * (float)Math.Cos(angle - 0.46f)), c); PlotLine(line.v2, new Vector2D(line.v2.x - scaler * (float)Math.Sin(angle + 0.46f), line.v2.y + scaler * (float)Math.Cos(angle + 0.46f)), c); - //} } // This renders a line with given color diff --git a/Source/Core/Rendering/SurfaceManager.cs b/Source/Core/Rendering/SurfaceManager.cs index 6827f4e0e..1d204898c 100644 --- a/Source/Core/Rendering/SurfaceManager.cs +++ b/Source/Core/Rendering/SurfaceManager.cs @@ -653,6 +653,7 @@ namespace CodeImp.DoomBuilder.Rendering { if(!resourcesunloaded) { + int pass = General.Map.Renderer2D.FullBrightness ? 2 : 1; //mxd graphics.Shaders.Display2D.Begin(); foreach(KeyValuePair<ImageData, List<SurfaceEntry>> imgsurfaces in surfaces) { @@ -660,7 +661,7 @@ namespace CodeImp.DoomBuilder.Rendering graphics.Shaders.Display2D.Texture1 = imgsurfaces.Key.Texture; if(!graphics.Shaders.Enabled) graphics.Device.SetTexture(0, imgsurfaces.Key.Texture); - graphics.Shaders.Display2D.BeginPass(1); + graphics.Shaders.Display2D.BeginPass(pass); // Go for all surfaces VertexBuffer lastbuffer = null; diff --git a/Source/Core/Resources/display2d.fx b/Source/Core/Resources/display2d.fx index 551aa7a91..500aecc92 100644 --- a/Source/Core/Resources/display2d.fx +++ b/Source/Core/Resources/display2d.fx @@ -111,12 +111,12 @@ float4 ps_normal(PixelData pd) : COLOR return float4(c.rgb, c.a * rendersettings.w) * pd.color; } -// Pixel shader for text -float4 ps_text(PixelData pd) : COLOR +//mxd. Pixel shader for full bright drawing +float4 ps_fullbright(PixelData pd) : COLOR { // Take this pixel's color float4 c = tex2D(texture1linear, pd.uv); - return float4(c.rgb, c.a * rendersettings.w) * pd.color; + return float4(c.rgb, c.a * rendersettings.w); } // Technique for shader model 2.0 @@ -134,9 +134,9 @@ technique SM20 PixelShader = compile ps_2_0 ps_normal(); } - pass p2 + pass p2 //mxd { VertexShader = compile vs_2_0 vs_transform(); - PixelShader = compile ps_2_0 ps_text(); + PixelShader = compile ps_2_0 ps_fullbright(); } } diff --git a/Source/Plugins/BuilderModes/ClassicModes/BaseClassicMode.cs b/Source/Plugins/BuilderModes/ClassicModes/BaseClassicMode.cs index 5b96aec5c..7c4d9528b 100644 --- a/Source/Plugins/BuilderModes/ClassicModes/BaseClassicMode.cs +++ b/Source/Plugins/BuilderModes/ClassicModes/BaseClassicMode.cs @@ -226,6 +226,17 @@ namespace CodeImp.DoomBuilder.BuilderModes paintselectpressed = false; } + //mxd + [BeginAction("togglebrightness")] + protected virtual void ToggleBrightness() { + renderer.FullBrightness = !renderer.FullBrightness; + string onoff = renderer.FullBrightness ? "ON" : "OFF"; + General.Interface.DisplayStatus(StatusType.Action, "Full Brightness is now " + onoff + "."); + + // Redraw display to show changes + General.Interface.RedrawDisplay(); + } + #endregion } } diff --git a/Source/Plugins/BuilderModes/Resources/Actions.cfg b/Source/Plugins/BuilderModes/Resources/Actions.cfg index b720e32b3..bcf21ab78 100644 --- a/Source/Plugins/BuilderModes/Resources/Actions.cfg +++ b/Source/Plugins/BuilderModes/Resources/Actions.cfg @@ -856,7 +856,7 @@ togglegravity togglebrightness { title = "Toggle Full Brightness"; - category = "visual"; + category = "tools"; description = "Toggles the use of sector brightness on and off. When sector brightness is off, the world is displayed fully bright, without lighting effects."; allowkeys = true; allowmouse = true; -- GitLab