enabled more palette space; now there's ONE constant to change, too.
This commit is contained in:
@@ -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>();
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user