Add WorldRgbaSpriteRenderer.

This commit is contained in:
Paul Chote
2013-06-13 00:16:40 +12:00
parent 7beef85a64
commit 7d09e78655
3 changed files with 10 additions and 4 deletions

View File

@@ -28,6 +28,7 @@ namespace OpenRA.Graphics
internal static int TempBufferCount; internal static int TempBufferCount;
public SpriteRenderer WorldSpriteRenderer { get; private set; } public SpriteRenderer WorldSpriteRenderer { get; private set; }
public SpriteRenderer WorldRgbaSpriteRenderer { get; private set; }
public QuadRenderer WorldQuadRenderer { get; private set; } public QuadRenderer WorldQuadRenderer { get; private set; }
public LineRenderer WorldLineRenderer { get; private set; } public LineRenderer WorldLineRenderer { get; private set; }
public VoxelRenderer WorldVoxelRenderer { get; private set; } public VoxelRenderer WorldVoxelRenderer { get; private set; }
@@ -46,6 +47,7 @@ namespace OpenRA.Graphics
SheetSize = Game.Settings.Graphics.SheetSize; SheetSize = Game.Settings.Graphics.SheetSize;
WorldSpriteRenderer = new SpriteRenderer(this, device.CreateShader("shp")); WorldSpriteRenderer = new SpriteRenderer(this, device.CreateShader("shp"));
WorldRgbaSpriteRenderer = new SpriteRenderer(this, device.CreateShader("rgba"));
WorldLineRenderer = new LineRenderer(this, device.CreateShader("line")); WorldLineRenderer = new LineRenderer(this, device.CreateShader("line"));
WorldVoxelRenderer = new VoxelRenderer(this, device.CreateShader("vxl"), device.CreateShader("vxlshadow")); WorldVoxelRenderer = new VoxelRenderer(this, device.CreateShader("vxl"), device.CreateShader("vxlshadow"));
LineRenderer = new LineRenderer(this, device.CreateShader("line")); LineRenderer = new LineRenderer(this, device.CreateShader("line"));
@@ -68,6 +70,7 @@ namespace OpenRA.Graphics
{ {
device.Clear(); device.Clear();
WorldSpriteRenderer.SetViewportParams(Resolution, zoom, scroll); WorldSpriteRenderer.SetViewportParams(Resolution, zoom, scroll);
WorldRgbaSpriteRenderer.SetViewportParams(Resolution, zoom, scroll);
SpriteRenderer.SetViewportParams(Resolution, 1f, float2.Zero); SpriteRenderer.SetViewportParams(Resolution, 1f, float2.Zero);
RgbaSpriteRenderer.SetViewportParams(Resolution, 1f, float2.Zero); RgbaSpriteRenderer.SetViewportParams(Resolution, 1f, float2.Zero);
WorldLineRenderer.SetViewportParams(Resolution, zoom, scroll); WorldLineRenderer.SetViewportParams(Resolution, zoom, scroll);
@@ -88,6 +91,7 @@ namespace OpenRA.Graphics
RgbaSpriteRenderer.SetPalette(currentPaletteTexture); RgbaSpriteRenderer.SetPalette(currentPaletteTexture);
SpriteRenderer.SetPalette(currentPaletteTexture); SpriteRenderer.SetPalette(currentPaletteTexture);
WorldSpriteRenderer.SetPalette(currentPaletteTexture); WorldSpriteRenderer.SetPalette(currentPaletteTexture);
WorldRgbaSpriteRenderer.SetPalette(currentPaletteTexture);
WorldVoxelRenderer.SetPalette(currentPaletteTexture); WorldVoxelRenderer.SetPalette(currentPaletteTexture);
} }

View File

@@ -2,6 +2,7 @@
// Author: C. Forbes // Author: C. Forbes
//-------------------------------------------------------- //--------------------------------------------------------
float2 Scroll;
float2 r1, r2; // matrix elements float2 r1, r2; // matrix elements
sampler2D DiffuseTexture = sampler_state { sampler2D DiffuseTexture = sampler_state {
@@ -25,7 +26,7 @@ struct FragmentIn {
VertexOut Simple_vp(VertexIn v) { VertexOut Simple_vp(VertexIn v) {
VertexOut o; 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.Position = float4(p.x,p.y,0,1);
o.Tex0 = v.Tex0.xy; o.Tex0 = v.Tex0.xy;
return o; return o;

View File

@@ -1,8 +1,9 @@
uniform vec2 r1; uniform vec2 Scroll;
uniform vec2 r2; // matrix elements uniform vec2 r1, r2;
void main() 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_Position = vec4(p.x,p.y,0,1);
gl_TexCoord[0] = gl_MultiTexCoord0; gl_TexCoord[0] = gl_MultiTexCoord0;
} }