mirror of
https://mirror.ghproxy.com/https://github.com/dexyfex/CodeWalker
synced 2024-11-29 18:32:55 +08:00
Texture UsageData research
This commit is contained in:
parent
d6eb18dee3
commit
21a7c3e6e3
@ -270,12 +270,9 @@ namespace CodeWalker.GameFiles
|
|||||||
}
|
}
|
||||||
|
|
||||||
// structure data
|
// structure data
|
||||||
public byte Unknown_40h { get; set; }
|
public uint UsageData { get; set; }
|
||||||
public byte Unknown_41h { get; set; }
|
|
||||||
public byte Unknown_42h { get; set; }
|
|
||||||
public byte Unknown_43h { get; set; }
|
|
||||||
public uint Unknown_44h { get; set; } // 0x00000000
|
public uint Unknown_44h { get; set; } // 0x00000000
|
||||||
public uint Unknown_48h { get; set; } // 0, 1
|
public uint ExtraFlags { get; set; } // 0, 1
|
||||||
public uint Unknown_4Ch { get; set; } // 0x00000000
|
public uint Unknown_4Ch { get; set; } // 0x00000000
|
||||||
public ushort Width { get; set; }
|
public ushort Width { get; set; }
|
||||||
public ushort Height { get; set; }
|
public ushort Height { get; set; }
|
||||||
@ -297,6 +294,59 @@ namespace CodeWalker.GameFiles
|
|||||||
public uint Unknown_88h { get; set; } // 0x00000000
|
public uint Unknown_88h { get; set; } // 0x00000000
|
||||||
public uint Unknown_8Ch { get; set; } // 0x00000000
|
public uint Unknown_8Ch { get; set; } // 0x00000000
|
||||||
|
|
||||||
|
public TextureUsage Usage
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return (TextureUsage)(UsageData & 0x1F);
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
UsageData = (UsageData & 0xFFFFFFE0) + (((uint)value) & 0x1F);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public TextureUsageFlags UsageFlags
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return (TextureUsageFlags)(UsageData >> 5);
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
UsageData = (UsageData & 0x1F) + (((uint)value) << 5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte Unknown_40h
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return (byte)(UsageData & 0xFF);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public byte Unknown_41h
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return (byte)((UsageData >> 8) & 0xFF);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public byte Unknown_42h
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return (byte)((UsageData >> 16) & 0xFF);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public byte Unknown_43h
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return (byte)((UsageData >> 24) & 0xFF);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// reference data
|
// reference data
|
||||||
public TextureData Data { get; set; }
|
public TextureData Data { get; set; }
|
||||||
|
|
||||||
@ -321,12 +371,9 @@ namespace CodeWalker.GameFiles
|
|||||||
base.Read(reader, parameters);
|
base.Read(reader, parameters);
|
||||||
|
|
||||||
// read structure data
|
// read structure data
|
||||||
this.Unknown_40h = reader.ReadByte();
|
this.UsageData = reader.ReadUInt32();
|
||||||
this.Unknown_41h = reader.ReadByte();
|
|
||||||
this.Unknown_42h = reader.ReadByte();
|
|
||||||
this.Unknown_43h = reader.ReadByte();
|
|
||||||
this.Unknown_44h = reader.ReadUInt32();
|
this.Unknown_44h = reader.ReadUInt32();
|
||||||
this.Unknown_48h = reader.ReadUInt32();
|
this.ExtraFlags = reader.ReadUInt32();
|
||||||
this.Unknown_4Ch = reader.ReadUInt32();
|
this.Unknown_4Ch = reader.ReadUInt32();
|
||||||
this.Width = reader.ReadUInt16();
|
this.Width = reader.ReadUInt16();
|
||||||
this.Height = reader.ReadUInt16();
|
this.Height = reader.ReadUInt16();
|
||||||
@ -358,6 +405,7 @@ namespace CodeWalker.GameFiles
|
|||||||
this.Stride
|
this.Stride
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
switch (Unknown_40h)
|
switch (Unknown_40h)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
@ -369,32 +417,33 @@ namespace CodeWalker.GameFiles
|
|||||||
case 6:
|
case 6:
|
||||||
case 8:
|
case 8:
|
||||||
case 9:
|
case 9:
|
||||||
case 0xA:
|
case 10:
|
||||||
case 0xB:
|
case 11:
|
||||||
case 0xC:
|
case 12:
|
||||||
case 0xE:
|
case 14:
|
||||||
case 0x10:
|
case 16:
|
||||||
case 0x12:
|
case 18:
|
||||||
case 0x13:
|
case 19:
|
||||||
case 0x14:
|
case 20:
|
||||||
case 0x15:
|
case 21:
|
||||||
case 0x16:
|
case 22:
|
||||||
case 0x17:
|
case 23:
|
||||||
case 0x18:
|
case 24:
|
||||||
case 0x19:
|
case 25:
|
||||||
case 0x1A:
|
case 26:
|
||||||
case 0x26:
|
case 38:
|
||||||
case 0x34:
|
case 52:
|
||||||
case 0x36:
|
case 54:
|
||||||
case 0x37:
|
case 55:
|
||||||
case 0x42:
|
case 66:
|
||||||
case 0x54:
|
case 84:
|
||||||
case 0x56:
|
case 86:
|
||||||
case 0x57:
|
case 87:
|
||||||
case 0x74:
|
case 116:
|
||||||
case 0x76:
|
case 118:
|
||||||
case 0x77:
|
case 119:
|
||||||
case 0x20://embedded only
|
break;
|
||||||
|
case 32://embedded only
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -512,15 +561,6 @@ namespace CodeWalker.GameFiles
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (Unknown_48h)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
case 1:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -534,12 +574,9 @@ namespace CodeWalker.GameFiles
|
|||||||
this.DataPointer = (ulong)this.Data.FilePosition;
|
this.DataPointer = (ulong)this.Data.FilePosition;
|
||||||
|
|
||||||
// write structure data
|
// write structure data
|
||||||
writer.Write(this.Unknown_40h);
|
writer.Write(this.UsageData);
|
||||||
writer.Write(this.Unknown_41h);
|
|
||||||
writer.Write(this.Unknown_42h);
|
|
||||||
writer.Write(this.Unknown_43h);
|
|
||||||
writer.Write(this.Unknown_44h);
|
writer.Write(this.Unknown_44h);
|
||||||
writer.Write(this.Unknown_48h);
|
writer.Write(this.ExtraFlags);
|
||||||
writer.Write(this.Unknown_4Ch);
|
writer.Write(this.Unknown_4Ch);
|
||||||
writer.Write(this.Width);
|
writer.Write(this.Width);
|
||||||
writer.Write(this.Height);
|
writer.Write(this.Height);
|
||||||
@ -641,4 +678,69 @@ namespace CodeWalker.GameFiles
|
|||||||
//UNKNOWN
|
//UNKNOWN
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public enum TextureUsage : byte
|
||||||
|
{
|
||||||
|
UNKNOWN = 0,
|
||||||
|
DEFAULT = 1,
|
||||||
|
TERRAIN = 2,
|
||||||
|
CLOUDDENSITY = 3,
|
||||||
|
CLOUDNORMAL = 4,
|
||||||
|
CABLE = 5,
|
||||||
|
FENCE = 6,
|
||||||
|
ENVEFF = 7, //unused by V
|
||||||
|
SCRIPT = 8,
|
||||||
|
WATERFLOW = 9,
|
||||||
|
WATERFOAM = 10,
|
||||||
|
WATERFOG = 11,
|
||||||
|
WATEROCEAN = 12,
|
||||||
|
WATER = 13, //unused by V
|
||||||
|
FOAMOPACITY = 14,
|
||||||
|
FOAM = 15, //unused by V
|
||||||
|
DIFFUSEMIPSHARPEN = 16,
|
||||||
|
DIFFUSEDETAIL = 17, //unused by V
|
||||||
|
DIFFUSEDARK = 18,
|
||||||
|
DIFFUSEALPHAOPAQUE = 19,
|
||||||
|
DIFFUSE = 20,
|
||||||
|
DETAIL = 21,
|
||||||
|
NORMAL = 22,
|
||||||
|
SPECULAR = 23,
|
||||||
|
EMISSIVE = 24,
|
||||||
|
TINTPALETTE = 25,
|
||||||
|
SKIPPROCESSING = 26,
|
||||||
|
DONOTOPTIMIZE = 27, //unused by V
|
||||||
|
TEST = 28, //unused by V
|
||||||
|
COUNT = 29, //unused by V
|
||||||
|
}
|
||||||
|
[Flags]
|
||||||
|
public enum TextureUsageFlags : uint
|
||||||
|
{
|
||||||
|
NOT_HALF = 1,
|
||||||
|
HD_SPLIT = (1 << 1),
|
||||||
|
UNK2 = (1 << 2),
|
||||||
|
UNK3 = (1 << 3),
|
||||||
|
UNK4 = (1 << 4),
|
||||||
|
UNK5 = (1 << 5),
|
||||||
|
UNK6 = (1 << 6),
|
||||||
|
UNK7 = (1 << 7),
|
||||||
|
UNK8 = (1 << 8),
|
||||||
|
UNK9 = (1 << 9),
|
||||||
|
UNK10 = (1 << 10),
|
||||||
|
UNK11 = (1 << 11),
|
||||||
|
UNK12 = (1 << 12),
|
||||||
|
UNK13 = (1 << 13),
|
||||||
|
UNK14 = (1 << 14),
|
||||||
|
UNK15 = (1 << 15),
|
||||||
|
UNK16 = (1 << 16),
|
||||||
|
UNK17 = (1 << 17),
|
||||||
|
UNK18 = (1 << 18),
|
||||||
|
UNK19 = (1 << 19),
|
||||||
|
UNK20 = (1 << 20),
|
||||||
|
UNK21 = (1 << 21),
|
||||||
|
FLAG_FULL = (1 << 22),
|
||||||
|
MAPS_HALF = (1 << 23),
|
||||||
|
UNK24 = (1 << 24),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user