|
|
|
@ -80,6 +80,56 @@ struct TICEntry {
|
|
|
|
|
};
|
|
|
|
|
static_assert(sizeof(TICEntry) == 0x20, "TICEntry has wrong size");
|
|
|
|
|
|
|
|
|
|
enum class WrapMode : u32 {
|
|
|
|
|
Wrap = 0,
|
|
|
|
|
Mirror = 1,
|
|
|
|
|
ClampToEdge = 2,
|
|
|
|
|
Border = 3,
|
|
|
|
|
ClampOGL = 4,
|
|
|
|
|
MirrorOnceClampToEdge = 5,
|
|
|
|
|
MirrorOnceBorder = 6,
|
|
|
|
|
MirrorOnceClampOGL = 7,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum class TextureFilter : u32 {
|
|
|
|
|
Nearest = 1,
|
|
|
|
|
Linear = 2,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum class TextureMipmapFilter : u32 {
|
|
|
|
|
None = 1,
|
|
|
|
|
Nearest = 2,
|
|
|
|
|
Linear = 3,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct TSCEntry {
|
|
|
|
|
union {
|
|
|
|
|
BitField<0, 3, WrapMode> wrap_u;
|
|
|
|
|
BitField<3, 3, WrapMode> wrap_v;
|
|
|
|
|
BitField<6, 3, WrapMode> wrap_p;
|
|
|
|
|
BitField<9, 1, u32> depth_compare_enabled;
|
|
|
|
|
BitField<10, 3, u32> depth_compare_func;
|
|
|
|
|
};
|
|
|
|
|
union {
|
|
|
|
|
BitField<0, 2, TextureFilter> mag_filter;
|
|
|
|
|
BitField<4, 2, TextureFilter> min_filter;
|
|
|
|
|
BitField<6, 2, TextureMipmapFilter> mip_filter;
|
|
|
|
|
};
|
|
|
|
|
INSERT_PADDING_BYTES(8);
|
|
|
|
|
u32 border_color_r;
|
|
|
|
|
u32 border_color_g;
|
|
|
|
|
u32 border_color_b;
|
|
|
|
|
u32 border_color_a;
|
|
|
|
|
};
|
|
|
|
|
static_assert(sizeof(TSCEntry) == 0x20, "TSCEntry has wrong size");
|
|
|
|
|
|
|
|
|
|
struct FullTextureInfo {
|
|
|
|
|
u32 index;
|
|
|
|
|
TICEntry tic;
|
|
|
|
|
TSCEntry tsc;
|
|
|
|
|
bool enabled;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/// Returns the number of bytes per pixel of the input texture format.
|
|
|
|
|
u32 BytesPerPixel(TextureFormat format);
|
|
|
|
|
|
|
|
|
|