feat: initial type matching for render classes

This commit is contained in:
Patoke
2026-02-28 06:26:40 -03:00
parent 68e5589511
commit 3017d6175a
5 changed files with 297 additions and 7 deletions
+1 -1
View File
@@ -174,7 +174,7 @@
<ClInclude Include="VS_Compressed.h" />
<ClInclude Include="VS_PF3_TF2_CB4_NB4_XW1.h" />
<ClInclude Include="VS_PF3_TF2_CB4_NB4_XW1_Lighting.h" />
<ClInclude Include="VS_PF3_TF2_CB4_NB4_XW1_TexGen.h" />
<ClInclude Include="VS_PF3_TF2_CB4_NB4_XW1_Texgen.h" />
<ClInclude Include="VS_ScreenClear.h" />
<ClInclude Include="VS_ScreenSpace.h" />
<ClInclude Include="zlib\zconf.h" />
@@ -72,7 +72,7 @@
<ClInclude Include="VS_PF3_TF2_CB4_NB4_XW1_Lighting.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="VS_PF3_TF2_CB4_NB4_XW1_TexGen.h">
<ClInclude Include="VS_PF3_TF2_CB4_NB4_XW1_Texgen.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="VS_Compressed.h">
+291 -4
View File
@@ -1,23 +1,310 @@
#pragma once
#include "4J_Render.h"
#define MAX_MIP_LEVELS 5
class Renderer
{
public:
class CommandBuffer
struct Texture
{
public:
bool allocated;
ID3D11Texture2D* texture;
ID3D11ShaderResourceView* view;
DWORD dword18;
DWORD mip_levels;
DWORD dword20;
DWORD param;
};
struct TexgenCBuffer
{
DirectX::XMMATRIX unk0;
DirectX::XMMATRIX unk1;
};
enum eCommandType
{
COMMAND_ADD_MATRIX,
COMMAND_ADD_VERTICES,
COMMAND_BIND_TEXTURE,
COMMAND_SET_COLOR,
COMMAND_SET_DEPTH_FUNC,
COMMAND_SET_DEPTH_MASK,
COMMAND_SET_DEPTH_TEST,
COMMAND_SET_LIGHTING_ENABLE,
COMMAND_SET_LIGHT_ENABLE,
COMMAND_SET_LIGHT_DIRECTION,
COMMAND_SET_LIGHT_COLOUR,
COMMAND_SET_LIGHT_AMBIENT_COLOUR,
COMMAND_SET_BLEND_ENABLE,
COMMAND_SET_BLEND_FUNC,
COMMAND_SET_BLEND_FACTOR,
COMMAND_SET_FACE_CULL,
};
struct CommandBuffer
{
struct Command
{
Renderer::eCommandType m_command_type;
BYTE gap4[12];
union
{
BYTE data[64];
struct
{
DirectX::XMMATRIX m_matrix;
} add_matrix;
struct
{
unsigned int m_vertex_index_start;
unsigned int m_vertex_count;
} add_vertices;
struct
{
unsigned int m_texture_index;
} bind_texture;
struct
{
float m_color[4];
} set_color;
struct
{
int m_depth_func;
} set_depth_func;
struct
{
bool m_enable;
} set_depth_mask;
struct
{
bool m_enable;
} set_depth_test;
struct
{
bool m_enable;
} set_lighting_enable;
struct
{
int m_light_index;
bool m_enable;
} set_light_enable;
struct
{
int m_light_index;
DirectX::XMVECTOR m_direction;
} set_light_direction;
struct
{
int m_light_index;
float m_color[3];
} set_light_colour;
struct
{
float m_color[3];
} set_light_ambient_colour;
struct
{
bool m_enable;
} set_blend_enable;
struct
{
int m_src;
int m_dst;
} set_blend_func;
struct
{
unsigned int m_blend_factor;
} set_blend_factor;
struct
{
bool m_enable;
} set_face_cull;
};
};
};
class DeferredCBuff
struct DeferredCBuff
{
public:
Renderer::CommandBuffer* m_command_buf;
int m_vertex_index;
int m_vertex_type;
int m_primitive_type;
DirectX::XMMATRIX m_matrix;
};
struct Context
{
ID3D11DeviceContext* m_pDeviceContext;
ID3DUserDefinedAnnotation* pvoid8;
DWORD dword10;
BYTE gap14[12];
DirectX::XMMATRIX arraymatrix20[4][16];
bool bool1020;
bool bool1021;
bool bool1022;
bool bool1023;
DWORD arraydword1024[4];
DWORD stackType;
DWORD textureIdx;
BYTE byte103C;
BYTE byte103D;
BYTE byte103E;
float float1040;
BYTE byte1044;
BYTE byte1045;
BYTE gap1046[14];
DWORD dword1054;
DWORD dword1058;
DWORD dword105C;
BYTE gap1060[4];
BYTE byte1064;
BYTE gap1065[2];
BYTE byte1067;
DWORD dword1068;
BYTE gap106C[4];
char char1070;
BYTE gap1071[79];
ID3D11Buffer* pid3d11buffer10C0;
ID3D11Buffer* pid3d11buffer10C8;
ID3D11Buffer* pid3d11buffer10D0;
ID3D11Buffer* pid3d11buffer10D8;
ID3D11Buffer* pid3d11buffer10E0;
ID3D11Buffer* pid3d11buffer10E8;
ID3D11Buffer* pid3d11buffer10F0;
ID3D11Buffer* pid3d11buffer10F8;
ID3D11Buffer* pid3d11buffer1100;
ID3D11Buffer* pid3d11buffer1108;
ID3D11Buffer* pid3d11buffer1110;
ID3D11Buffer* pid3d11buffer1118;
ID3D11Buffer* pid3d11buffer1120;
ID3D11Buffer* pid3d11buffer1128;
ID3D11Buffer* pid3d11buffer1130;
ID3D11Buffer* pid3d11buffer1138;
uint64_t qword1140;
DWORD dword1148;
BYTE gap114C[4];
ID3D11Buffer* pid3d11buffer1150;
BYTE gap1158[8];
DirectX::XMMATRIX arraymatrix1160[2];
Renderer::CommandBuffer* qword11E0;
DWORD dword11E8;
DWORD dword11EC;
DWORD dword11F0;
BYTE byte11F4;
BYTE gap11F5[3];
std::vector<DeferredCBuff> std__vector11F8;
DWORD dword1218;
DWORD dword121C;
DWORD dword1220;
DWORD dword1224;
DWORD dword1228;
DWORD dword122C;
DWORD dword1230;
DWORD dword1234;
DWORD dword1238;
BYTE byte123C;
BYTE gap123D[227];
DWORD dword1320;
DWORD dword1324;
DWORD dword1328;
DWORD dword132C;
BYTE byte1330;
BYTE byte1331;
DWORD dword1334;
DWORD dword1338;
DWORD dword133C;
DWORD dword1340;
DWORD dword1344;
DWORD dword1348;
DWORD dword134C;
DWORD dword1350;
DWORD dword1354;
DWORD dword1358;
DWORD dword135C;
DWORD dword1360;
DWORD dword1364;
DWORD dword1368;
DWORD dword136C;
DWORD dword1370;
DWORD dword1374;
DWORD dword1378;
DWORD dword137C;
DWORD dword1380;
DWORD dword1384;
DWORD dword1388;
};
static DWORD tlsIdx;
float m_fClearColor[4];
ID3D11Device* m_pDevice;
ID3D11DeviceContext* m_pDeviceContext;
uint64_t qword20;
ID3D11RenderTargetView* pid3d11rendertargetview28;
ID3D11RenderTargetView* arrayqword30[4];
ID3D11ShaderResourceView* pid3d11shaderresourceview50;
ID3D11Resource* arrayqword58[4];
ID3D11Texture2D* pid3d11texture2d78;
BYTE gap80[24];
ID3D11DepthStencilView* qword98;
ID3D11VertexShader** qwordA0;
BYTE gapA8[16];
uint64_t qwordB8;
BYTE gapC0[16];
uint64_t qwordD0;
ID3D11InputLayout** qwordD8;
ID3D11Buffer* qwordE0;
ID3D11Buffer* qwordE8;
DWORD dwordF0;
WORD wordF4;
BYTE gapF6[2];
DWORD dwordF8;
BYTE byteFC;
BYTE gapFD[3];
_RTL_CRITICAL_SECTION rtl_critical_section100;
DWORD dword128;
DWORD dword12C;
C4JRender::eViewportType m_ViewportType;
BYTE byte134;
BYTE gap135[3];
Renderer::Texture m_textures[512];
DWORD dword5138;
DWORD dword513C;
BYTE byte5140;
BYTE gap5141[3];
DWORD dword5144;
void* pvoid5148;
void* pvoid5150;
uint64_t qword5158;
void* pvoid5160;
void* pvoid5168;
void* pvoid5170;
DWORD dword5178;
DWORD dword517C;
BYTE gap5180[328];
BYTE m_bShouldScreenGrabNextFrame;
};
// Singleton
@@ -36,7 +36,7 @@ void main(
*/
static unsigned char VS_PF3_TF2_CB4_NB4_XW1_TexGen_Data[] =
static unsigned char VS_PF3_TF2_CB4_NB4_XW1_Texgen_Data[] =
{
0x44, 0x58, 0x42, 0x43, 0xD7, 0x13, 0x1B, 0xCA, 0xDF, 0xE8,
0xA9, 0xCC, 0xDA, 0x19, 0x1B, 0x6D, 0x0C, 0x53, 0xED, 0xEE,
+3
View File
@@ -7,7 +7,10 @@
#include <cstdint>
#include <assert.h>
#include <Xinput.h>
#include <vector>
#include <d3d11.h>
#include <d3d11_1.h>
#include <DirectXMath.h>
#endif //PCH_H