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
{
const int maxEntries = 16;
public const int MaxPalettes = 64;
int allocated = 0;
// 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, int> indices;
public HardwarePalette(Renderer renderer, Map map)
: base(renderer,new Size(256, maxEntries))
: base(renderer,new Size(256, MaxPalettes))
{
palettes = new Dictionary<string, Palette>();
indices = new Dictionary<string, int>();

View File

@@ -52,23 +52,11 @@ namespace OpenRa.Graphics
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 };
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,
r.FastMapTextureCoords(0), attrib);

View File

@@ -67,7 +67,7 @@ namespace OpenRa
if (thisCost == float.PositiveInfinity)
return p.Location;
foreach( int2 d in Graphics.Util.directions )
foreach( int2 d in directions )
{
int2 newHere = p.Location + d;
@@ -113,6 +113,18 @@ namespace OpenRa
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 )
{
if (!world.Map.IsInMap(location.X, location.Y))

View File

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

View File

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

View File

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