RenderSystem: enforce type and type name consistency

Use same types used by the game in either the public presentations or binary code. And enforce type name consistency.
This commit is contained in:
Kawe Mazidjatari 2025-01-06 16:41:25 +01:00
parent 62d0dab7cd
commit e6c7c7d279
5 changed files with 97 additions and 97 deletions

View File

@ -33,8 +33,8 @@ public:
CShaderGlue* shaderset; //0x0058
TextureHeader_t** textureHandles; //0x0060
TextureHeader_t** streamingTextureHandles; //0x0068
TextureAsset_s** textureHandles; //0x0060
TextureAsset_s** streamingTextureHandles; //0x0068
int16_t numStreamingTextureHandles; //0x0070

View File

@ -15,7 +15,7 @@
struct TextureStreamMgr_Task_s
{
TextureAsset_t* textureAsset;
TextureAsset_s* textureAsset;
// The mip level count to load or drop.
uint8 mipLevelCount;
@ -87,7 +87,7 @@ struct TextureStreamMgr_s
Vector3D streamBspCameraPos;
float streamBspHalfFovX;
float streamBspViewWidth;
TextureAsset_t* streamableTextures[4];
TextureAsset_s* streamableTextures[4];
};
inline void(*v_StreamDB_Init)(const char* const pszLevelName);

View File

@ -4,111 +4,111 @@
//-----------------------------------------------------------------------------
// Structure definitions
//-----------------------------------------------------------------------------
/*schema*/ struct TextureDesc_t
/*schema*/ struct TextureDesc_s
{
uint64_t m_AssetGuid;
const char* m_pDebugName;
uint16 m_nWidth;
uint16 m_nHeight;
uint16 m_nDepth;
uint16_t m_nImageFormat;
uint64 m_AssetGuid;
const char* m_pDebugName;
uint16 m_nWidth;
uint16 m_nHeight;
uint16 m_nDepth;
uint16 m_nImageFormat;
};
/*schema*/ struct TextureHeader_t : public TextureDesc_t
/*schema*/ struct TextureAsset_s : public TextureDesc_s
{
uint32_t m_nDataLength;
uint8_t unknown_2;
uint8_t m_nOptStreamedMipCount;
uint8_t m_nArraySize;
uint8_t m_nLayerCount;
uint8_t m_nCPUAccessFlag; // [ PIXIE ]: In RTech::CreateDXBuffer textureDescription Usage is determined by the CPU Access Flag so I assume it's the same case here.
uint8_t m_nPermanentMipCount;
uint8_t m_nStreamedMipCount;
uint8_t unknown_4[13];
uint32 m_nDataLength;
uint8 unknown_2;
uint8 m_nOptStreamedMipCount;
uint8 m_nArraySize;
uint8 m_nLayerCount;
uint8 m_nCPUAccessFlag; // [ PIXIE ]: In RTech::CreateDXBuffer textureDescription Usage is determined by the CPU Access Flag so I assume it's the same case here.
uint8 m_nPermanentMipCount;
uint8 m_nStreamedMipCount;
uint8 unknown_4[13];
__int64 m_nPixelCount;
uint8_t unknown_5[3];
uint8_t m_nTotalStreamedMipCount; // Does not get set until after RTech::CreateDXTexture.
uint8_t unk4[228];
uint8_t unk5[57];
uint8 unknown_5[3];
uint8 m_nTotalStreamedMipCount; // Does not get set until after RTech::CreateDXTexture.
uint8 unk4[228];
uint8 unk5[57];
ID3D11Texture2D* m_ppTexture;
ID3D11ShaderResourceView* m_ppShaderResourceView;
uint8_t m_nTextureMipLevels;
uint8_t m_nTextureMipLevelsStreamedOpt;
uint8 m_nTextureMipLevels;
uint8 m_nTextureMipLevelsStreamedOpt;
};
struct TextureBytesPerPixel_t
struct TextureBytesPerPixel_s
{
uint8_t x;
uint8_t y;
uint8 x;
uint8 y;
};
//-----------------------------------------------------------------------------
// Table definitions
//-----------------------------------------------------------------------------
static inline const TextureBytesPerPixel_t s_pBytesPerPixel[] =
static inline const TextureBytesPerPixel_s s_pBytesPerPixel[] =
{
{ uint8_t(8u), uint8_t(4u) },
{ uint8_t(8u), uint8_t(4u) },
{ uint8_t(16u), uint8_t(4u) },
{ uint8_t(16u), uint8_t(4u) },
{ uint8_t(16u), uint8_t(4u) },
{ uint8_t(16u), uint8_t(4u) },
{ uint8_t(8u), uint8_t(4u) },
{ uint8_t(8u), uint8_t(4u) },
{ uint8_t(16u), uint8_t(4u) },
{ uint8_t(16u), uint8_t(4u) },
{ uint8_t(16u), uint8_t(4u) },
{ uint8_t(16u), uint8_t(4u) },
{ uint8_t(16u), uint8_t(4u) },
{ uint8_t(16u), uint8_t(4u) },
{ uint8_t(16u), uint8_t(1u) },
{ uint8_t(16u), uint8_t(1u) },
{ uint8_t(16u), uint8_t(1u) },
{ uint8_t(12u), uint8_t(1u) },
{ uint8_t(12u), uint8_t(1u) },
{ uint8_t(12u), uint8_t(1u) },
{ uint8_t(8u), uint8_t(1u) },
{ uint8_t(8u), uint8_t(1u) },
{ uint8_t(8u), uint8_t(1u) },
{ uint8_t(8u), uint8_t(1u) },
{ uint8_t(8u), uint8_t(1u) },
{ uint8_t(8u), uint8_t(1u) },
{ uint8_t(8u), uint8_t(1u) },
{ uint8_t(8u), uint8_t(1u) },
{ uint8_t(4u), uint8_t(1u) },
{ uint8_t(4u), uint8_t(1u) },
{ uint8_t(4u), uint8_t(1u) },
{ uint8_t(4u), uint8_t(1u) },
{ uint8_t(4u), uint8_t(1u) },
{ uint8_t(4u), uint8_t(1u) },
{ uint8_t(4u), uint8_t(1u) },
{ uint8_t(4u), uint8_t(1u) },
{ uint8_t(4u), uint8_t(1u) },
{ uint8_t(4u), uint8_t(1u) },
{ uint8_t(4u), uint8_t(1u) },
{ uint8_t(4u), uint8_t(1u) },
{ uint8_t(4u), uint8_t(1u) },
{ uint8_t(4u), uint8_t(1u) },
{ uint8_t(4u), uint8_t(1u) },
{ uint8_t(4u), uint8_t(1u) },
{ uint8_t(2u), uint8_t(1u) },
{ uint8_t(2u), uint8_t(1u) },
{ uint8_t(2u), uint8_t(1u) },
{ uint8_t(2u), uint8_t(1u) },
{ uint8_t(2u), uint8_t(1u) },
{ uint8_t(2u), uint8_t(1u) },
{ uint8_t(2u), uint8_t(1u) },
{ uint8_t(2u), uint8_t(1u) },
{ uint8_t(2u), uint8_t(1u) },
{ uint8_t(1u), uint8_t(1u) },
{ uint8_t(1u), uint8_t(1u) },
{ uint8_t(1u), uint8_t(1u) },
{ uint8_t(1u), uint8_t(1u) },
{ uint8_t(1u), uint8_t(1u) },
{ uint8_t(4u), uint8_t(1u) },
{ uint8_t(4u), uint8_t(1u) },
{ uint8_t(4u), uint8_t(1u) },
{ uint8_t(2u), uint8_t(1u) },
{ u8(8u), u8(4u) },
{ u8(8u), u8(4u) },
{ u8(16u), u8(4u) },
{ u8(16u), u8(4u) },
{ u8(16u), u8(4u) },
{ u8(16u), u8(4u) },
{ u8(8u), u8(4u) },
{ u8(8u), u8(4u) },
{ u8(16u), u8(4u) },
{ u8(16u), u8(4u) },
{ u8(16u), u8(4u) },
{ u8(16u), u8(4u) },
{ u8(16u), u8(4u) },
{ u8(16u), u8(4u) },
{ u8(16u), u8(1u) },
{ u8(16u), u8(1u) },
{ u8(16u), u8(1u) },
{ u8(12u), u8(1u) },
{ u8(12u), u8(1u) },
{ u8(12u), u8(1u) },
{ u8(8u), u8(1u) },
{ u8(8u), u8(1u) },
{ u8(8u), u8(1u) },
{ u8(8u), u8(1u) },
{ u8(8u), u8(1u) },
{ u8(8u), u8(1u) },
{ u8(8u), u8(1u) },
{ u8(8u), u8(1u) },
{ u8(4u), u8(1u) },
{ u8(4u), u8(1u) },
{ u8(4u), u8(1u) },
{ u8(4u), u8(1u) },
{ u8(4u), u8(1u) },
{ u8(4u), u8(1u) },
{ u8(4u), u8(1u) },
{ u8(4u), u8(1u) },
{ u8(4u), u8(1u) },
{ u8(4u), u8(1u) },
{ u8(4u), u8(1u) },
{ u8(4u), u8(1u) },
{ u8(4u), u8(1u) },
{ u8(4u), u8(1u) },
{ u8(4u), u8(1u) },
{ u8(4u), u8(1u) },
{ u8(2u), u8(1u) },
{ u8(2u), u8(1u) },
{ u8(2u), u8(1u) },
{ u8(2u), u8(1u) },
{ u8(2u), u8(1u) },
{ u8(2u), u8(1u) },
{ u8(2u), u8(1u) },
{ u8(2u), u8(1u) },
{ u8(2u), u8(1u) },
{ u8(1u), u8(1u) },
{ u8(1u), u8(1u) },
{ u8(1u), u8(1u) },
{ u8(1u), u8(1u) },
{ u8(1u), u8(1u) },
{ u8(4u), u8(1u) },
{ u8(4u), u8(1u) },
{ u8(4u), u8(1u) },
{ u8(2u), u8(1u) },
};
// Map dxgi format to txtr asset format

View File

@ -11,7 +11,7 @@
#define STBSP_NOMINAL_TEX_RES 4096
struct MaterialGlue_t;
struct TextureAsset_t;
struct TextureAsset_s;
struct StreamDBLump_s
{

View File

@ -116,9 +116,9 @@ HRESULT __stdcall ResizeBuffers(IDXGISwapChain* pSwapChain, UINT nBufferCount, U
// Disable stack warning, tells us to move more data to the heap instead. Not really possible with 'initialData' here. Since its parallel processed.
// Also disable 6378, complains that there is no control path where it would use 'nullptr', if that happens 'Error' will be called though.
#pragma warning( disable : 6262 6387)
void(*v_CreateTextureResource)(TextureHeader_t*, INT_PTR);
void(*v_CreateTextureResource)(TextureAsset_s*, INT_PTR);
constexpr uint32_t ALIGNMENT_SIZE = 15; // Creates 2D texture and shader resource from textureHeader and imageData.
void CreateTextureResource(TextureHeader_t* textureHeader, INT_PTR imageData)
void CreateTextureResource(TextureAsset_s* textureHeader, INT_PTR imageData)
{
if (textureHeader->m_nDepth && !textureHeader->m_nHeight) // Return never gets hit. Maybe its some debug check?
return;
@ -143,7 +143,7 @@ void CreateTextureResource(TextureHeader_t* textureHeader, INT_PTR imageData)
if (textureHeader->m_nHeight >> mipLevel > 1)
mipHeight = (textureHeader->m_nHeight >> mipLevel) - 1;
const TextureBytesPerPixel_t& perPixel = s_pBytesPerPixel[textureHeader->m_nImageFormat];
const TextureBytesPerPixel_s& perPixel = s_pBytesPerPixel[textureHeader->m_nImageFormat];
const u8 x = perPixel.x;
const u8 y = perPixel.y;