Fix bogus naming of Shaders/Renderers. Split LineRenderer into world and chrome variants.
This commit is contained in:
@@ -16,20 +16,22 @@ namespace OpenRA.Graphics
|
||||
public class LineRenderer : Renderer.IBatchRenderer
|
||||
{
|
||||
Renderer renderer;
|
||||
IShader shader;
|
||||
|
||||
Vertex[] vertices = new Vertex[ Renderer.TempBufferSize ];
|
||||
int nv = 0;
|
||||
|
||||
public LineRenderer( Renderer renderer )
|
||||
public LineRenderer( Renderer renderer, IShader shader )
|
||||
{
|
||||
this.renderer = renderer;
|
||||
this.shader = shader;
|
||||
}
|
||||
|
||||
public void Flush()
|
||||
{
|
||||
if( nv > 0 )
|
||||
{
|
||||
renderer.LineShader.Render( () =>
|
||||
shader.Render( () =>
|
||||
{
|
||||
var vb = renderer.GetTempVertexBuffer();
|
||||
vb.SetData( vertices, nv );
|
||||
|
||||
@@ -26,16 +26,17 @@ namespace OpenRA.Graphics
|
||||
internal static int SheetSize;
|
||||
internal static int TempBufferSize;
|
||||
internal static int TempBufferCount;
|
||||
|
||||
internal IShader SpriteShader { get; private set; }
|
||||
internal IShader WorldSpriteShader { get; private set; }
|
||||
internal IShader WorldLineShader { get; private set; }
|
||||
internal IShader LineShader { get; private set; }
|
||||
internal IShader RgbaSpriteShader { get; private set; }
|
||||
internal IShader WorldSpriteShader { get; private set; }
|
||||
internal IShader SpriteShader { get; private set; }
|
||||
|
||||
public SpriteRenderer SpriteRenderer { get; private set; }
|
||||
public SpriteRenderer RgbaSpriteRenderer { get; private set; }
|
||||
public SpriteRenderer WorldSpriteRenderer { get; private set; }
|
||||
public LineRenderer WorldLineRenderer { get; private set; }
|
||||
public LineRenderer LineRenderer { get; private set; }
|
||||
public SpriteRenderer RgbaSpriteRenderer { get; private set; }
|
||||
public SpriteRenderer SpriteRenderer { get; private set; }
|
||||
|
||||
public ITexture PaletteTexture;
|
||||
|
||||
@@ -48,17 +49,19 @@ namespace OpenRA.Graphics
|
||||
TempBufferSize = Game.Settings.Graphics.BatchSize;
|
||||
TempBufferCount = Game.Settings.Graphics.NumTempBuffers;
|
||||
SheetSize = Game.Settings.Graphics.SheetSize;
|
||||
|
||||
SpriteShader = device.CreateShader("world-shp");
|
||||
LineShader = device.CreateShader("world-line");
|
||||
RgbaSpriteShader = device.CreateShader("chrome-rgba");
|
||||
WorldSpriteShader = device.CreateShader("chrome-shp");
|
||||
|
||||
SpriteRenderer = new SpriteRenderer( this, SpriteShader );
|
||||
RgbaSpriteRenderer = new SpriteRenderer( this, RgbaSpriteShader );
|
||||
WorldSpriteShader = device.CreateShader("world-shp");
|
||||
WorldLineShader = device.CreateShader("world-line");
|
||||
LineShader = device.CreateShader("chrome-line");
|
||||
RgbaSpriteShader = device.CreateShader("chrome-rgba");
|
||||
SpriteShader = device.CreateShader("chrome-shp");
|
||||
|
||||
WorldSpriteRenderer = new SpriteRenderer( this, WorldSpriteShader );
|
||||
LineRenderer = new LineRenderer(this);
|
||||
|
||||
WorldLineRenderer = new LineRenderer(this, WorldLineShader);
|
||||
LineRenderer = new LineRenderer(this, LineShader);
|
||||
RgbaSpriteRenderer = new SpriteRenderer( this, RgbaSpriteShader );
|
||||
SpriteRenderer = new SpriteRenderer( this, SpriteShader );
|
||||
|
||||
for( int i = 0 ; i < TempBufferCount ; i++ )
|
||||
tempBuffers.Enqueue( device.CreateVertexBuffer( TempBufferSize ) );
|
||||
}
|
||||
@@ -77,10 +80,11 @@ namespace OpenRA.Graphics
|
||||
float2 r1 = new float2(2f/Resolution.Width, -2f/Resolution.Height);
|
||||
float2 r2 = new float2(-1, 1);
|
||||
|
||||
SetShaderParams( SpriteShader, r1, r2, scroll );
|
||||
SetShaderParams( WorldSpriteShader, r1, r2, scroll );
|
||||
SetShaderParams( WorldLineShader, r1, r2, scroll );
|
||||
SetShaderParams( LineShader, r1, r2, scroll );
|
||||
SetShaderParams( RgbaSpriteShader, r1, r2, scroll );
|
||||
SetShaderParams( WorldSpriteShader, r1, r2, scroll );
|
||||
SetShaderParams( SpriteShader, r1, r2, scroll );
|
||||
}
|
||||
|
||||
void SetShaderParams( IShader s, float2 r1, float2 r2, float2 scroll )
|
||||
|
||||
@@ -52,22 +52,22 @@ namespace OpenRA.Graphics
|
||||
|
||||
public void DrawAt( WorldRenderer wr, float2 location, string palette )
|
||||
{
|
||||
Game.Renderer.SpriteRenderer.DrawSprite( this, location, wr, palette, this.size );
|
||||
Game.Renderer.WorldSpriteRenderer.DrawSprite( this, location, wr, palette, this.size );
|
||||
}
|
||||
|
||||
public void DrawAt( float2 location, int paletteIndex )
|
||||
{
|
||||
Game.Renderer.SpriteRenderer.DrawSprite( this, location, paletteIndex, this.size );
|
||||
Game.Renderer.WorldSpriteRenderer.DrawSprite( this, location, paletteIndex, this.size );
|
||||
}
|
||||
|
||||
public void DrawAt(float2 location, int paletteIndex, float scale)
|
||||
{
|
||||
Game.Renderer.SpriteRenderer.DrawSprite(this, location, paletteIndex, this.size * scale);
|
||||
Game.Renderer.WorldSpriteRenderer.DrawSprite(this, location, paletteIndex, this.size * scale);
|
||||
}
|
||||
|
||||
public void DrawAt( float2 location, int paletteIndex, float2 size )
|
||||
{
|
||||
Game.Renderer.SpriteRenderer.DrawSprite( this, location, paletteIndex, size );
|
||||
Game.Renderer.WorldSpriteRenderer.DrawSprite( this, location, paletteIndex, size );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -84,8 +84,8 @@ namespace OpenRA.Graphics
|
||||
|
||||
if( lastRow < firstRow ) lastRow = firstRow;
|
||||
|
||||
Game.Renderer.SpriteShader.SetValue( "DiffuseTexture", terrainSheet.Texture );
|
||||
Game.Renderer.SpriteShader.Render(() =>
|
||||
Game.Renderer.WorldSpriteShader.SetValue( "DiffuseTexture", terrainSheet.Texture );
|
||||
Game.Renderer.WorldSpriteShader.Render(() =>
|
||||
Game.Renderer.DrawBatch(vertexBuffer,
|
||||
verticesPerRow * firstRow, verticesPerRow * (lastRow - firstRow),
|
||||
PrimitiveType.QuadList));
|
||||
|
||||
@@ -97,10 +97,12 @@ namespace OpenRA.Graphics
|
||||
Widget.DoDraw();
|
||||
var cursorName = Widget.RootWidget.GetCursorOuter(Viewport.LastMousePos) ?? "default";
|
||||
var cursorSequence = CursorProvider.GetCursorSequence(cursorName);
|
||||
|
||||
cursorSequence.GetSprite((int)cursorFrame).DrawAt(
|
||||
Viewport.LastMousePos + Location - cursorSequence.Hotspot,
|
||||
Game.modData.Palette.GetPaletteIndex(cursorSequence.Palette));
|
||||
var cursorSprite = cursorSequence.GetSprite((int)cursorFrame);
|
||||
|
||||
renderer.SpriteRenderer.DrawSprite(cursorSprite,
|
||||
Viewport.LastMousePos - cursorSequence.Hotspot,
|
||||
Game.modData.Palette.GetPaletteIndex(cursorSequence.Palette),
|
||||
cursorSprite.size);
|
||||
}
|
||||
|
||||
using( new PerfSample("render_flip") )
|
||||
|
||||
@@ -121,15 +121,16 @@ namespace OpenRA.Graphics
|
||||
var xY = new float2(bounds.Left, bounds.Bottom);
|
||||
var XY = new float2(bounds.Right, bounds.Bottom);
|
||||
|
||||
Game.Renderer.LineRenderer.DrawLine(xy, xy + new float2(4, 0), c, c);
|
||||
Game.Renderer.LineRenderer.DrawLine(xy, xy + new float2(0, 4), c, c);
|
||||
Game.Renderer.LineRenderer.DrawLine(Xy, Xy + new float2(-4, 0), c, c);
|
||||
Game.Renderer.LineRenderer.DrawLine(Xy, Xy + new float2(0, 4), c, c);
|
||||
var wlr = Game.Renderer.WorldLineRenderer;
|
||||
wlr.DrawLine(xy, xy + new float2(4, 0), c, c);
|
||||
wlr.DrawLine(xy, xy + new float2(0, 4), c, c);
|
||||
wlr.DrawLine(Xy, Xy + new float2(-4, 0), c, c);
|
||||
wlr.DrawLine(Xy, Xy + new float2(0, 4), c, c);
|
||||
|
||||
Game.Renderer.LineRenderer.DrawLine(xY, xY + new float2(4, 0), c, c);
|
||||
Game.Renderer.LineRenderer.DrawLine(xY, xY + new float2(0, -4), c, c);
|
||||
Game.Renderer.LineRenderer.DrawLine(XY, XY + new float2(-4, 0), c, c);
|
||||
Game.Renderer.LineRenderer.DrawLine(XY, XY + new float2(0, -4), c, c);
|
||||
wlr.DrawLine(xY, xY + new float2(4, 0), c, c);
|
||||
wlr.DrawLine(xY, xY + new float2(0, -4), c, c);
|
||||
wlr.DrawLine(XY, XY + new float2(-4, 0), c, c);
|
||||
wlr.DrawLine(XY, XY + new float2(0, -4), c, c);
|
||||
}
|
||||
|
||||
public void DrawRollover(Actor unit)
|
||||
@@ -142,19 +143,21 @@ namespace OpenRA.Graphics
|
||||
public void DrawLocus(Color c, int2[] cells)
|
||||
{
|
||||
var dict = cells.ToDictionary(a => a, a => 0);
|
||||
var wlr = Game.Renderer.WorldLineRenderer;
|
||||
|
||||
foreach (var t in dict.Keys)
|
||||
{
|
||||
if (!dict.ContainsKey(t + new int2(-1, 0)))
|
||||
Game.Renderer.LineRenderer.DrawLine(Game.CellSize * t, Game.CellSize * (t + new int2(0, 1)),
|
||||
wlr.DrawLine(Game.CellSize * t, Game.CellSize * (t + new int2(0, 1)),
|
||||
c, c);
|
||||
if (!dict.ContainsKey(t + new int2(1, 0)))
|
||||
Game.Renderer.LineRenderer.DrawLine(Game.CellSize * (t + new int2(1, 0)), Game.CellSize * (t + new int2(1, 1)),
|
||||
wlr.DrawLine(Game.CellSize * (t + new int2(1, 0)), Game.CellSize * (t + new int2(1, 1)),
|
||||
c, c);
|
||||
if (!dict.ContainsKey(t + new int2(0, -1)))
|
||||
Game.Renderer.LineRenderer.DrawLine(Game.CellSize * t, Game.CellSize * (t + new int2(1, 0)),
|
||||
wlr.DrawLine(Game.CellSize * t, Game.CellSize * (t + new int2(1, 0)),
|
||||
c, c);
|
||||
if (!dict.ContainsKey(t + new int2(0, 1)))
|
||||
Game.Renderer.LineRenderer.DrawLine(Game.CellSize * (t + new int2(0, 1)), Game.CellSize * (t + new int2(1, 1)),
|
||||
wlr.DrawLine(Game.CellSize * (t + new int2(0, 1)), Game.CellSize * (t + new int2(1, 1)),
|
||||
c, c);
|
||||
}
|
||||
}
|
||||
@@ -166,7 +169,7 @@ namespace OpenRA.Graphics
|
||||
var start = location + Game.CellSize * range * float2.FromAngle((float)(Math.PI * i) / 16);
|
||||
var end = location + Game.CellSize * range * float2.FromAngle((float)(Math.PI * (i + 0.7)) / 16);
|
||||
|
||||
Game.Renderer.LineRenderer.DrawLine(start, end, c, c);
|
||||
Game.Renderer.WorldLineRenderer.DrawLine(start, end, c, c);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user