enabled more palette space; now there's ONE constant to change, too.

This commit is contained in:
Chris Forbes
2010-02-26 23:41:31 +13:00
parent eef64403f9
commit 5cac032345
6 changed files with 30 additions and 34 deletions

View File

@@ -28,7 +28,7 @@ namespace OpenRa.Graphics
{ {
class HardwarePalette : Sheet class HardwarePalette : Sheet
{ {
const int maxEntries = 16; public const int MaxPalettes = 64;
int allocated = 0; int allocated = 0;
// We need to store the Palettes themselves for the remap palettes to work // We need to store the Palettes themselves for the remap palettes to work
@@ -36,7 +36,7 @@ namespace OpenRa.Graphics
static Dictionary<string, Palette> palettes; static Dictionary<string, Palette> palettes;
static Dictionary<string, int> indices; static Dictionary<string, int> indices;
public HardwarePalette(Renderer renderer, Map map) public HardwarePalette(Renderer renderer, Map map)
: base(renderer,new Size(256, maxEntries)) : base(renderer,new Size(256, MaxPalettes))
{ {
palettes = new Dictionary<string, Palette>(); palettes = new Dictionary<string, Palette>();
indices = new Dictionary<string, int>(); indices = new Dictionary<string, int>();

View File

@@ -52,23 +52,11 @@ namespace OpenRa.Graphics
return result; return result;
} }
public static readonly int2[] directions =
new int2[] {
new int2( -1, -1 ),
new int2( -1, 0 ),
new int2( -1, 1 ),
new int2( 0, -1 ),
new int2( 0, 1 ),
new int2( 1, -1 ),
new int2( 1, 0 ),
new int2( 1, 1 ),
};
static float[] channelSelect = { 0.75f, 0.25f, -0.25f, -0.75f }; static float[] channelSelect = { 0.75f, 0.25f, -0.25f, -0.75f };
public static void FastCreateQuad(Vertex[] vertices, ushort[] indices, float2 o, Sprite r, int palette, int nv, int ni, float2 size) public static void FastCreateQuad(Vertex[] vertices, ushort[] indices, float2 o, Sprite r, int palette, int nv, int ni, float2 size)
{ {
float2 attrib = new float2(palette / 16.0f, channelSelect[(int)r.channel]); var attrib = new float2(palette / (float)HardwarePalette.MaxPalettes, channelSelect[(int)r.channel]);
vertices[nv] = new Vertex(o, vertices[nv] = new Vertex(o,
r.FastMapTextureCoords(0), attrib); r.FastMapTextureCoords(0), attrib);

View File

@@ -67,7 +67,7 @@ namespace OpenRa
if (thisCost == float.PositiveInfinity) if (thisCost == float.PositiveInfinity)
return p.Location; return p.Location;
foreach( int2 d in Graphics.Util.directions ) foreach( int2 d in directions )
{ {
int2 newHere = p.Location + d; int2 newHere = p.Location + d;
@@ -113,6 +113,18 @@ namespace OpenRa
return p.Location; return p.Location;
} }
static readonly int2[] directions =
{
new int2( -1, -1 ),
new int2( -1, 0 ),
new int2( -1, 1 ),
new int2( 0, -1 ),
new int2( 0, 1 ),
new int2( 1, -1 ),
new int2( 1, 0 ),
new int2( 1, 1 ),
};
public void AddInitialCell( World world, int2 location ) public void AddInitialCell( World world, int2 location )
{ {
if (!world.Map.IsInMap(location.X, location.Y)) if (!world.Map.IsInMap(location.X, location.Y))

View File

@@ -113,18 +113,18 @@ World:
BasePalette: terrain BasePalette: terrain
Remap: salmon.rem Remap: salmon.rem
DisplayColor: 153,76,53 DisplayColor: 153,76,53
# PlayerColorPalette@player6: PlayerColorPalette@player6:
# Name: player6 Name: player6
# DisplayName: Green DisplayName: Green
# BasePalette: terrain BasePalette: terrain
# Remap: green.rem Remap: green.rem
# DisplayColor: 76,101,60 DisplayColor: 76,101,60
# PlayerColorPalette@player7: PlayerColorPalette@player7:
# Name: player7 Name: player7
# DisplayName: Gray DisplayName: Gray
# BasePalette: terrain BasePalette: terrain
# Remap: gray.rem Remap: gray.rem
# DisplayColor: 133,113,101 DisplayColor: 133,113,101
PaletteFromFile@chrome: PaletteFromFile@chrome:
Name: chrome Name: chrome
Filename: temperat.pal Filename: temperat.pal

View File

@@ -47,12 +47,10 @@ VertexOut Simple_vp(VertexIn v) {
return o; return o;
} }
const float2 texelOffset = float2( 0, 1.0f/32.0f );
float4 Palette_fp(VertexOut f) : COLOR0 { float4 Palette_fp(VertexOut f) : COLOR0 {
float4 x = tex2D(DiffuseTexture, f.Tex0.xy); float4 x = tex2D(DiffuseTexture, f.Tex0.xy);
float2 p = float2( dot(x, f.ChannelMask), f.Tex0.z ); float2 p = float2( dot(x, f.ChannelMask), f.Tex0.z );
return tex2D(Palette, p + texelOffset); return tex2D(Palette, p);
} }
technique low_quality { technique low_quality {

View File

@@ -47,12 +47,10 @@ VertexOut Simple_vp(VertexIn v) {
return o; return o;
} }
const float2 texelOffset = float2( 0, 1.0f/32.0f );
float4 Palette_fp(VertexOut f) : COLOR0 { float4 Palette_fp(VertexOut f) : COLOR0 {
float4 x = tex2D(DiffuseTexture, f.Tex0.xy); float4 x = tex2D(DiffuseTexture, f.Tex0.xy);
float2 p = float2( dot(x, f.ChannelMask), f.Tex0.z ); float2 p = float2( dot(x, f.ChannelMask), f.Tex0.z );
return tex2D(Palette, p + texelOffset); return tex2D(Palette, p);
} }
technique low_quality { technique low_quality {