From 7d09e78655bcbcf563b5fdb8f6ae5a2e0a0e1576 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Thu, 13 Jun 2013 00:16:40 +1200 Subject: [PATCH] Add WorldRgbaSpriteRenderer. --- OpenRA.Game/Graphics/Renderer.cs | 4 ++++ cg/rgba.fx | 3 ++- glsl/rgba.vert | 7 ++++--- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/OpenRA.Game/Graphics/Renderer.cs b/OpenRA.Game/Graphics/Renderer.cs index 723373964c..bb803babe8 100644 --- a/OpenRA.Game/Graphics/Renderer.cs +++ b/OpenRA.Game/Graphics/Renderer.cs @@ -28,6 +28,7 @@ namespace OpenRA.Graphics internal static int TempBufferCount; public SpriteRenderer WorldSpriteRenderer { get; private set; } + public SpriteRenderer WorldRgbaSpriteRenderer { get; private set; } public QuadRenderer WorldQuadRenderer { get; private set; } public LineRenderer WorldLineRenderer { get; private set; } public VoxelRenderer WorldVoxelRenderer { get; private set; } @@ -46,6 +47,7 @@ namespace OpenRA.Graphics SheetSize = Game.Settings.Graphics.SheetSize; WorldSpriteRenderer = new SpriteRenderer(this, device.CreateShader("shp")); + WorldRgbaSpriteRenderer = new SpriteRenderer(this, device.CreateShader("rgba")); WorldLineRenderer = new LineRenderer(this, device.CreateShader("line")); WorldVoxelRenderer = new VoxelRenderer(this, device.CreateShader("vxl"), device.CreateShader("vxlshadow")); LineRenderer = new LineRenderer(this, device.CreateShader("line")); @@ -68,6 +70,7 @@ namespace OpenRA.Graphics { device.Clear(); WorldSpriteRenderer.SetViewportParams(Resolution, zoom, scroll); + WorldRgbaSpriteRenderer.SetViewportParams(Resolution, zoom, scroll); SpriteRenderer.SetViewportParams(Resolution, 1f, float2.Zero); RgbaSpriteRenderer.SetViewportParams(Resolution, 1f, float2.Zero); WorldLineRenderer.SetViewportParams(Resolution, zoom, scroll); @@ -88,6 +91,7 @@ namespace OpenRA.Graphics RgbaSpriteRenderer.SetPalette(currentPaletteTexture); SpriteRenderer.SetPalette(currentPaletteTexture); WorldSpriteRenderer.SetPalette(currentPaletteTexture); + WorldRgbaSpriteRenderer.SetPalette(currentPaletteTexture); WorldVoxelRenderer.SetPalette(currentPaletteTexture); } diff --git a/cg/rgba.fx b/cg/rgba.fx index 4dad0637e8..18d89b7d5e 100644 --- a/cg/rgba.fx +++ b/cg/rgba.fx @@ -2,6 +2,7 @@ // Author: C. Forbes //-------------------------------------------------------- +float2 Scroll; float2 r1, r2; // matrix elements sampler2D DiffuseTexture = sampler_state { @@ -25,7 +26,7 @@ struct FragmentIn { VertexOut Simple_vp(VertexIn v) { VertexOut o; - float2 p = v.Position.xy * r1 + r2; + float2 p = (v.Position.xy - Scroll.xy) * r1 + r2; o.Position = float4(p.x,p.y,0,1); o.Tex0 = v.Tex0.xy; return o; diff --git a/glsl/rgba.vert b/glsl/rgba.vert index 0a10445d30..89ffea0e96 100644 --- a/glsl/rgba.vert +++ b/glsl/rgba.vert @@ -1,8 +1,9 @@ -uniform vec2 r1; -uniform vec2 r2; // matrix elements +uniform vec2 Scroll; +uniform vec2 r1, r2; + void main() { - vec2 p = gl_Vertex.xy*r1 + r2; + vec2 p = (gl_Vertex.xy - Scroll.xy)*r1 + r2; gl_Position = vec4(p.x,p.y,0,1); gl_TexCoord[0] = gl_MultiTexCoord0; }