From 35f00cbc54a5d24d5efc479b02505c816a5cfe4c Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Sun, 15 Nov 2009 20:28:49 +1300 Subject: [PATCH] new chrome stuff --- OpenRa.Game/Chrome.cs | 47 +++++++++++++++ OpenRa.Game/Game.cs | 4 +- OpenRa.Game/Graphics/Renderer.cs | 70 +++++++++++++--------- OpenRa.Game/Graphics/Sheet.cs | 7 +++ OpenRa.Game/Graphics/SpriteRenderer.cs | 14 +++-- OpenRa.Game/Graphics/TerrainRenderer.cs | 2 +- OpenRa.Game/Graphics/Viewport.cs | 11 ++-- OpenRa.Game/Graphics/WorldRenderer.cs | 25 +++----- OpenRa.Game/OpenRa.Game.csproj | 1 + OpenRa.Game/Sidebar.cs | 2 +- bits.psd | Bin 0 -> 269901 bytes rgbasprite.fx | 74 ++++++++++++++++++++++++ specialbin.png | Bin 0 -> 17194 bytes 13 files changed, 204 insertions(+), 53 deletions(-) create mode 100644 OpenRa.Game/Chrome.cs create mode 100644 bits.psd create mode 100644 rgbasprite.fx create mode 100644 specialbin.png diff --git a/OpenRa.Game/Chrome.cs b/OpenRa.Game/Chrome.cs new file mode 100644 index 0000000000..fc410d316b --- /dev/null +++ b/OpenRa.Game/Chrome.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using OpenRa.Game.Graphics; +using OpenRa.Game.Support; +using System.Drawing; + +namespace OpenRa.Game +{ + class Chrome + { + readonly Renderer renderer; + readonly Sheet specialBin; + readonly SpriteRenderer spriteRenderer; + readonly Sprite specialBinSprite; + readonly Sprite moneyBinSprite; + + public Chrome(Renderer r) + { + this.renderer = r; + specialBin = new Sheet(renderer, "specialbin.png"); + spriteRenderer = new SpriteRenderer(renderer, true, renderer.RgbaSpriteShader); + specialBinSprite = new Sprite(specialBin, new Rectangle(0, 0, 64, 256), TextureChannel.Alpha); + moneyBinSprite = new Sprite(specialBin, new Rectangle(128, 0, 384, 64), TextureChannel.Alpha); + } + + public void Draw() + { + renderer.Device.DisableScissor(); + renderer.DrawText(string.Format("RenderFrame {0} ({2:F1} ms)\nTick {1} ({3:F1} ms)\n$ {4}\nPower {5}", + Game.RenderFrame, + Game.orderManager.FrameNumber, + PerfHistory.items["render"].LastValue, + PerfHistory.items["tick_time"].LastValue, + Game.LocalPlayer.Cash, + Game.LocalPlayer.GetTotalPower() + ), new int2(140, 5), Color.White); + + PerfHistory.Render(renderer, Game.worldRenderer.lineRenderer); + + spriteRenderer.DrawSprite(specialBinSprite, float2.Zero, 0); + spriteRenderer.DrawSprite(moneyBinSprite, new float2( Game.viewport.Width - 384, 0 ), 0); + spriteRenderer.Flush(); + } + } +} diff --git a/OpenRa.Game/Game.cs b/OpenRa.Game/Game.cs index 4ddd12fec6..d707cb907c 100644 --- a/OpenRa.Game/Game.cs +++ b/OpenRa.Game/Game.cs @@ -24,6 +24,7 @@ namespace OpenRa.Game public static PathFinder PathFinder; public static WorldRenderer worldRenderer; public static Controller controller; + public static Chrome chrome; public static OrderManager orderManager; @@ -86,6 +87,8 @@ namespace OpenRa.Game skipMakeAnims = false; PerfHistory.items["render"].hasNormalTick = false; + + chrome = new Chrome(renderer); } static void LoadMapBuildings( IniFile mapfile ) @@ -174,7 +177,6 @@ namespace OpenRa.Game using (new PerfSample("render")) { - ++RenderFrame; viewport.cursor = controller.ChooseCursor(); viewport.DrawRegions(); diff --git a/OpenRa.Game/Graphics/Renderer.cs b/OpenRa.Game/Graphics/Renderer.cs index 9b36128a72..87145b4eb8 100644 --- a/OpenRa.Game/Graphics/Renderer.cs +++ b/OpenRa.Game/Graphics/Renderer.cs @@ -10,8 +10,9 @@ namespace OpenRa.Game.Graphics { readonly GraphicsDevice device; Texture[] palettes; - public Shader SpriteShader { get; private set; } /* note: shared shader params */ - public Shader LineShader { get; private set; } + public Shader SpriteShader { get; private set; } /* note: shared shader params */ + public Shader LineShader { get; private set; } + public Shader RgbaSpriteShader { get; private set; } readonly SpriteHelper sh; readonly FontHelper fhDebug; @@ -29,31 +30,34 @@ namespace OpenRa.Game.Graphics public Renderer(Control host, Size resolution, bool windowed) { host.ClientSize = resolution; - device = GraphicsDevice.Create(host, + device = GraphicsDevice.Create(host, resolution.Width, resolution.Height, windowed, false); SpriteShader = new Shader(device, FileSystem.Open("sprite.fx")); SpriteShader.Quality = ShaderQuality.Low; - LineShader = new Shader(device, FileSystem.Open("line.fx")); - LineShader.Quality = ShaderQuality.High; + LineShader = new Shader(device, FileSystem.Open("line.fx")); + LineShader.Quality = ShaderQuality.High; + RgbaSpriteShader = new Shader(device, FileSystem.Open("rgbasprite.fx")); + RgbaSpriteShader.Quality = ShaderQuality.High; - sh = new SpriteHelper(device ); - fhDebug = new FontHelper(device, "Tahoma", 10, false ); + sh = new SpriteHelper(device); + fhDebug = new FontHelper(device, "Tahoma", 10, false); } public GraphicsDevice Device { get { return device; } } public static float waterFrame = 0.0f; - public void BeginFrame( float2 r1, float2 r2, float2 scroll ) + public void BeginFrame(float2 r1, float2 r2, float2 scroll) { device.Begin(); + device.Clear(0, Surfaces.Color); - SpriteShader.SetValue("Palette", palettes[ (int)(waterFrame * palettes.Length) % palettes.Length ]); + SpriteShader.SetValue("Palette", palettes[(int)(waterFrame * palettes.Length) % palettes.Length]); SpriteShader.SetValue("Scroll", scroll); SpriteShader.SetValue("r1", r1); SpriteShader.SetValue("r2", r2); - SpriteShader.Commit(); + SpriteShader.Commit(); } public void EndFrame() @@ -63,7 +67,21 @@ namespace OpenRa.Game.Graphics } public void DrawBatch(FvfVertexBuffer vertices, IndexBuffer indices, - Range vertexRange, Range indexRange, Texture texture, PrimitiveType type) + Range vertexRange, Range indexRange, Texture texture, PrimitiveType type, Shader shader) + where T : struct + { + shader.SetValue("DiffuseTexture", texture); + shader.Commit(); + + vertices.Bind(0); + indices.Bind(); + + device.DrawIndexedPrimitives(type, + vertexRange, indexRange); + } + + public void DrawBatch(FvfVertexBuffer vertices, IndexBuffer indices, + int vertexPool, int numPrimitives, Texture texture, PrimitiveType type) where T : struct { SpriteShader.SetValue("DiffuseTexture", texture); @@ -73,23 +91,9 @@ namespace OpenRa.Game.Graphics indices.Bind(); device.DrawIndexedPrimitives(type, - vertexRange, indexRange); + vertexPool, numPrimitives); } - public void DrawBatch(FvfVertexBuffer vertices, IndexBuffer indices, - int vertexPool, int numPrimitives, Texture texture, PrimitiveType type) - where T : struct - { - SpriteShader.SetValue("DiffuseTexture", texture); - SpriteShader.Commit(); - - vertices.Bind(0); - indices.Bind(); - - device.DrawIndexedPrimitives(type, - vertexPool, numPrimitives); - } - public void DrawText(string text, int2 pos, Color c) { sh.Begin(); @@ -101,5 +105,19 @@ namespace OpenRa.Game.Graphics { return new int2(fhDebug.MeasureText(sh, text)); } + + public void DrawTexture(Texture t, int2 pos) + { + sh.Begin(); + sh.SetTransform(1,1, pos.X, pos.Y); + sh.Draw(t, 0, 0, 256,256, -1); + sh.End(); + } + + public Texture LoadTexture(string filename) + { + using (var stream = FileSystem.Open(filename)) + return Texture.Create(stream, device); + } } } diff --git a/OpenRa.Game/Graphics/Sheet.cs b/OpenRa.Game/Graphics/Sheet.cs index 57fcda9fea..cff0e3518c 100644 --- a/OpenRa.Game/Graphics/Sheet.cs +++ b/OpenRa.Game/Graphics/Sheet.cs @@ -1,6 +1,7 @@ using System.Drawing; using System.IO; using Ijw.DirectX; +using OpenRa.FileFormats; namespace OpenRa.Game.Graphics { @@ -18,6 +19,12 @@ namespace OpenRa.Game.Graphics this.bitmap = new Bitmap(size.Width, size.Height); } + public Sheet(Renderer renderer, string filename) + { + this.renderer = renderer; + this.bitmap = (Bitmap)Image.FromStream(FileSystem.Open(filename)); + } + void Resolve() { string filename = string.Format("../../../sheet-{0}.png", suffix++); diff --git a/OpenRa.Game/Graphics/SpriteRenderer.cs b/OpenRa.Game/Graphics/SpriteRenderer.cs index 0b9ae75e2d..f1fbcdf9c4 100644 --- a/OpenRa.Game/Graphics/SpriteRenderer.cs +++ b/OpenRa.Game/Graphics/SpriteRenderer.cs @@ -12,6 +12,7 @@ namespace OpenRa.Game.Graphics FvfVertexBuffer vertexBuffer; IndexBuffer indexBuffer; Renderer renderer; + Shader shader; const int spritesPerBatch = 1024; @@ -22,9 +23,10 @@ namespace OpenRa.Game.Graphics ShaderQuality quality; int nv = 0, ni = 0; - public SpriteRenderer(Renderer renderer, bool allowAlpha) + public SpriteRenderer(Renderer renderer, bool allowAlpha, Shader shader) { this.renderer = renderer; + this.shader = shader; vertexBuffer = new FvfVertexBuffer(renderer.Device, vertices.Length, Vertex.Format); indexBuffer = new IndexBuffer(renderer.Device, indices.Length); @@ -32,19 +34,23 @@ namespace OpenRa.Game.Graphics quality = allowAlpha ? ShaderQuality.High : ShaderQuality.Low; } + public SpriteRenderer(Renderer renderer, bool allowAlpha) + : this(renderer, allowAlpha, renderer.SpriteShader) { } + public void Flush() { if (sprites > 0) { - renderer.SpriteShader.Quality = quality; - renderer.SpriteShader.Render(() => + shader.Quality = quality; + shader.Render(() => { vertexBuffer.SetData(vertices); indexBuffer.SetData(indices); renderer.DrawBatch(vertexBuffer, indexBuffer, new Range(0, nv), new Range(0, ni), - currentSheet.Texture, PrimitiveType.TriangleList); + currentSheet.Texture, PrimitiveType.TriangleList, + shader); }); nv = 0; ni = 0; diff --git a/OpenRa.Game/Graphics/TerrainRenderer.cs b/OpenRa.Game/Graphics/TerrainRenderer.cs index 3fb2995a35..86533152f6 100644 --- a/OpenRa.Game/Graphics/TerrainRenderer.cs +++ b/OpenRa.Game/Graphics/TerrainRenderer.cs @@ -76,7 +76,7 @@ namespace OpenRa.Game.Graphics renderer.DrawBatch(vertexBuffer, indexBuffer, new Range(verticesPerRow * firstRow, verticesPerRow * lastRow), new Range(indicesPerRow * firstRow, indicesPerRow * lastRow), - terrainSheet.Texture, PrimitiveType.TriangleList)); + terrainSheet.Texture, PrimitiveType.TriangleList, renderer.SpriteShader)); overlayRenderer.Draw(); } diff --git a/OpenRa.Game/Graphics/Viewport.cs b/OpenRa.Game/Graphics/Viewport.cs index 26ea5204ac..c76b827225 100644 --- a/OpenRa.Game/Graphics/Viewport.cs +++ b/OpenRa.Game/Graphics/Viewport.cs @@ -24,18 +24,19 @@ namespace OpenRa.Game.Graphics public void Scroll(float2 delta) { - scrollPosition = ( scrollPosition + delta ).Constrain( scrollLowBounds, scrollHighBounds ); + scrollPosition = scrollPosition + delta;// (scrollPosition + delta).Constrain(scrollLowBounds, scrollHighBounds); } public Viewport(float2 screenSize, int2 mapStart, int2 mapEnd, Renderer renderer) { this.screenSize = screenSize; - this.scrollLowBounds = Game.CellSize * mapStart; - this.scrollHighBounds = float2.Max( scrollLowBounds, Game.CellSize * mapEnd - ( screenSize - new float2( 128, 0 ) ) ); +// this.scrollLowBounds = Game.CellSize * mapStart; +// this.scrollHighBounds = float2.Max( scrollLowBounds, Game.CellSize * mapEnd - ( screenSize /*- new float2( 128, 0 )*/ ) ); this.renderer = renderer; cursorRenderer = new SpriteRenderer(renderer, true); - this.scrollPosition = scrollLowBounds; + this.scrollPosition = Game.CellSize* mapStart; +// this.scrollPosition = scrollLowBounds; } List regions = new List(); @@ -52,6 +53,8 @@ namespace OpenRa.Game.Graphics foreach (Region region in regions) region.Draw(renderer); + Game.chrome.Draw(); + var c = (Game.worldRenderer.region.Contains(mousePos)) ? cursor : Cursor.Default; cursorRenderer.DrawSprite(c.GetSprite((int)cursorFrame), mousePos + Location - c.GetHotspot(), 0); cursorRenderer.Flush(); diff --git a/OpenRa.Game/Graphics/WorldRenderer.cs b/OpenRa.Game/Graphics/WorldRenderer.cs index d3c51dea07..5120afa049 100644 --- a/OpenRa.Game/Graphics/WorldRenderer.cs +++ b/OpenRa.Game/Graphics/WorldRenderer.cs @@ -4,7 +4,8 @@ using System.Windows.Forms; using IjwFramework.Types; using System.Collections.Generic; using OpenRa.Game.Traits; -using OpenRa.Game.Support; +using OpenRa.Game.Support; +using Ijw.DirectX; namespace OpenRa.Game.Graphics { @@ -15,7 +16,8 @@ namespace OpenRa.Game.Graphics public readonly LineRenderer lineRenderer; public readonly Region region; public readonly UiOverlay uiOverlay; - readonly Renderer renderer; + readonly Renderer renderer; + readonly Texture specialbin; public static bool ShowUnitPaths = false; @@ -25,7 +27,7 @@ namespace OpenRa.Game.Graphics // TODO: this is layout policy. it belongs at a higher level than this. region = Region.Create(Game.viewport, DockStyle.Left, - Game.viewport.Width - 128, Draw, + Game.viewport.Width - /*128*/ 0, Draw, Game.controller.HandleMouseInput); Game.viewport.AddRegion(region); @@ -33,7 +35,9 @@ namespace OpenRa.Game.Graphics this.renderer = renderer; spriteRenderer = new SpriteRenderer(renderer, true); lineRenderer = new LineRenderer(renderer); - uiOverlay = new UiOverlay(spriteRenderer); + uiOverlay = new UiOverlay(spriteRenderer); + + specialbin = renderer.LoadTexture("specialbin.png"); } void DrawSpriteList(RectangleF rect, @@ -67,7 +71,7 @@ namespace OpenRa.Game.Graphics foreach (var a in Game.world.Actors .Where(u => u.traits.Contains()) .Select(u => u.traits.Get())) - DrawSpriteList(rect, a.RenderRoof(a.self)); /* RUDE HACK */ + DrawSpriteList(rect, a.RenderRoof(a.self)); foreach (IEffect e in Game.world.Effects) DrawSpriteList(rect, e.Render()); @@ -98,17 +102,6 @@ namespace OpenRa.Game.Graphics DrawSelectionBox(a, Color.White, true); lineRenderer.Flush(); - - renderer.DrawText(string.Format("RenderFrame {0} ({2:F1} ms)\nTick {1} ({3:F1} ms)\n$ {4}\nPower {5}", - Game.RenderFrame, - Game.orderManager.FrameNumber, - PerfHistory.items["render"].LastValue, - PerfHistory.items["tick_time"].LastValue, - Game.LocalPlayer.Cash, - Game.LocalPlayer.GetTotalPower() - ), new int2(5, 5), Color.White); - - PerfHistory.Render(renderer, lineRenderer); } void DrawSelectionBox(Actor selectedUnit, Color c, bool drawHealthBar) diff --git a/OpenRa.Game/OpenRa.Game.csproj b/OpenRa.Game/OpenRa.Game.csproj index 5cd94575af..c3e3b54ad9 100644 --- a/OpenRa.Game/OpenRa.Game.csproj +++ b/OpenRa.Game/OpenRa.Game.csproj @@ -75,6 +75,7 @@ + diff --git a/OpenRa.Game/Sidebar.cs b/OpenRa.Game/Sidebar.cs index 2ff6fcc6c7..a7c3fc1a22 100644 --- a/OpenRa.Game/Sidebar.cs +++ b/OpenRa.Game/Sidebar.cs @@ -37,7 +37,7 @@ namespace OpenRa.Game { this.player = player; this.renderer = renderer; - region = GRegion.Create(Game.viewport, DockStyle.Right, 128, Paint, MouseHandler); + region = GRegion.Create(Game.viewport, DockStyle.Right, /*128*/0, Paint, MouseHandler); region.UseScissor = false; region.AlwaysWantMovement = true; Game.viewport.AddRegion( region ); diff --git a/bits.psd b/bits.psd new file mode 100644 index 0000000000000000000000000000000000000000..0dc50b63e4e351ad2144e3233d28f9692644f37b GIT binary patch literal 269901 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 ZTdhKrZmUg*)NP6R9sV4)zz<`A{{^vHW=;SA literal 0 HcmV?d00001 diff --git a/rgbasprite.fx b/rgbasprite.fx new file mode 100644 index 0000000000..e118112e07 --- /dev/null +++ b/rgbasprite.fx @@ -0,0 +1,74 @@ +// OpenRA ui shader for non-SHP sprites (mostly just chrome) +// Author: C. Forbes +//-------------------------------------------------------- + +shared texture DiffuseTexture; +shared float2 r1, r2; // matrix elements + +sampler s_DiffuseTexture = sampler_state { + Texture = ; + MinFilter = None; + MagFilter = None; + MipFilter = None; + + AddressU = Wrap; + AddressV = Wrap; + AddressW = Wrap; +}; + +struct VertexIn { + float4 Position: POSITION; + float2 Tex0: TEXCOORD0; + float2 Tex1: TEXCOORD1; +}; + +struct VertexOut { + float4 Position: POSITION; + float2 Tex0: TEXCOORD0; +}; + +struct FragmentIn { + float2 Tex0: TEXCOORD0; +}; + +VertexOut Simple_vp(VertexIn v) { + VertexOut o; + float2 p = v.Position.xy * r1 + r2; + o.Position = float4(p.x,p.y,0,1); + o.Tex0 = v.Tex0; + return o; +} + +float4 Simple_fp(FragmentIn f) : COLOR0 { + float4 r = tex2D(s_DiffuseTexture, f.Tex0.xy); + return r; +} + +/* +technique low_quality { + pass p0 { + AlphaBlendEnable = false; + ZWriteEnable = false; + ZEnable = false; + CullMode = None; + FillMode = Solid; + VertexShader = compile vs_2_0 Simple_vp(); + PixelShader = compile ps_2_0 Simple_fp(); + } +} +*/ + +technique high_quality { + pass p0 { + AlphaBlendEnable = true; + ZWriteEnable = false; + ZEnable = false; + CullMode = None; + FillMode = Solid; + VertexShader = compile vs_2_0 Simple_vp(); + PixelShader = compile ps_2_0 Simple_fp(); + + SrcBlend = SrcAlpha; + DestBlend = InvSrcAlpha; + } +} diff --git a/specialbin.png b/specialbin.png new file mode 100644 index 0000000000000000000000000000000000000000..673ca328534c918bedff6e1b150318abfe002740 GIT binary patch literal 17194 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 u|LuPNx4Zstm-rv;`M