chore(profile): a lot of work having to do with graphics

This commit is contained in:
phaneron 2025-06-04 17:42:08 -04:00
parent ebf88595d9
commit 2363e04c76
153 changed files with 2402 additions and 566 deletions

View file

@ -0,0 +1,36 @@
#ifndef D3D9_BASE_TEXTURE_H
#define D3D9_BASE_TEXTURE_H
DECLARE_STRUCT(IDirect3DBaseTexture9__v_table);
DECLARE_STRUCT(IDirect3DBaseTexture9);
struct IDirect3DBaseTexture9__v_table {
/*** IUnknown methods ***/
void* v_fn_0_QueryInterface;
void* v_fn_1_AddRef;
void* v_fn_2_Release;
/*** IDirect3DResource9 methods ***/
void* v_fn_3_GetDevice;
void* v_fn_4_SetPrivateData;
void* v_fn_5_GetPrivateData;
void* v_fn_6_FreePrivateData;
void* v_fn_7_SetPriority;
void* v_fn_8_GetPriority;
void* v_fn_9_PreLoad;
void* v_fn_10_GetType;
/*** IDirect3DBaseTexture9 methods ***/
void* v_fn_11_SetLOD;
void* v_fn_12_GetLOD;
void* v_fn_13_GetLevelCount;
void* v_fn_14_SetAutoGenFilterType;
void* v_fn_15_GetAutoGenFilterType;
void* v_fn_16_GenerateMipSubLevels;
};
struct IDirect3DBaseTexture9 {
IDirect3DBaseTexture9__v_table* v_table;
};
typedef IDirect3DBaseTexture9* LPDIRECT3DBASETEXTURE9;
#endif

View file

@ -1,4 +1,5 @@
#include "external/d3d9/adapteridentifier.h"
#include "external/d3d9/basetexture.h"
#include "external/d3d9/caps.h"
#include "external/d3d9/colorvalue.h"
#include "external/d3d9/cubemapfaces.h"
@ -15,6 +16,7 @@
#include "external/d3d9/light.h"
#include "external/d3d9/lighttype.h"
#include "external/d3d9/lockedrect.h"
#include "external/d3d9/material.h"
#include "external/d3d9/pixelshader.h"
#include "external/d3d9/pool.h"
#include "external/d3d9/presentparameters.h"

View file

@ -0,0 +1,16 @@
#ifndef D3D9_MATERIAL_H
#define D3D9_MATERIAL_H
DECLARE_STRUCT(D3DMATERIAL9);
#include "external/d3d9/colorvalue.h"
struct D3DMATERIAL9 {
D3DCOLORVALUE Diffuse;
D3DCOLORVALUE Ambient;
D3DCOLORVALUE Specular;
D3DCOLORVALUE Emissive;
float Power;
};
#endif

View file

@ -234,11 +234,11 @@ struct CGxDeviceD3d {
D3DFORMAT m_devAdapterFormat;
// used by CGxDeviceD3d::DeviceSetRenderTarget
// IDirect3DSurface9* surface3B38;
LPDIRECT3DSURFACE9 m_defDepthStencilSurface;
LPDIRECT3DSURFACE9 m_defDepthStencilSurface; // OG name in 6.0.2?
LPDIRECT3DSURFACE9 m_defColorSurface;
LPDIRECT3DSURFACE9 m_defDepthSurface;
// used in DeviceReadPixels
LPDIRECT3DSURFACE9 surface3B44; // m_backBufferSurface?
LPDIRECT3DSURFACE9 surface3B44; // m_defBBSurface? also potential OG name in 6.0.2: !m_defBBView
LPDIRECT3DQUERY9 m_eventQuery; // UC m_queryEvent? m_eventQuery?
int32_t m_hwCursorDirty;
LPDIRECT3DTEXTURE9 m_hwCursorTexture;

View file

@ -213,7 +213,7 @@ struct CGxDevice__v_table {
void* v_fn_57_TexCreate;
// void TexDestroy(CGxTex* texId);
void* v_fn_58_TexDestroy;
// int32_t TexCopy(CGxTex* sourceTex, CGxTex* destTex, const C2iVector& pos, const C2iVector& size, uint32_t level, uint32_t plane);
// int32_t TexCopy(CGxTex* destTex, CGxTex* sourceTex, const C2iVector& pos, const C2iVector& size, uint32_t level, uint32_t plane);
void* v_fn_59_TexCopy;
// bool TexStretch(CGxTex* sourceTex, CGxTex* destTex, const CiRect* destRect, const CiRect* sourceRect, uint32_t level, uint32_t plane);
void* v_fn_60_TexStretch;
@ -308,7 +308,7 @@ struct CGxDevice {
int32_t intF5C;
int32_t m_windowVisible;
// set to 1 by ICursorClip
int32_t intF64;
int32_t m_windowFocus;
// Incremented by CGxDevice::ScenePresent
int32_t m_frameCount; // m_perfCounter?
// seems to have the same place as CGxDeviceD3d::m_d3dNeedsReset (Alpha)
@ -357,13 +357,12 @@ struct CGxDevice {
uint32_t m_primVertexSize;
CGxBuf* m_primIndexBuf;
int32_t m_primIndexDirty;
// EmergencyMem unk28C4[GxPoolTargets_Last];
// EmergencyMem m_emergencyMem[GxPoolTargets_Last];
EmergencyMem m_emergencyMem[2]; // 0x28C4
TSFixedArray_CGxAppRenderState m_appRenderStates;
TSFixedArray_CGxStateBom m_hwRenderStates;
// Accessed by ITexForceRecreation
// uint32_t unk2904[3]; // 0x2904 (size 0xC) // possibly: m_textures? TSList<CGxTex> ?
TSExplicitList_CGxTex m_textures;
TSExplicitList_CGxTex m_textures; // 0x2904 (size 0xC)
CGxDevice__TextureTarget m_textureTarget[2];
TSExplicitList_CGxQuery m_queryList; // 0x2928
int32_t m_scrShotClick; // 0x2934

View file

@ -32,8 +32,8 @@ struct CGxFormat {
C2iVector size;
// set by CVGxTripleBufferCallback
uint32_t backBufferCount; // buffering? buffer? framebufferCount?
uint32_t sampleCount;
float sampleQuality; // UC, write at 00769693
uint32_t multisampleCount;
float multisampleQuality; // UC, write at 00769693
CGxFormat__Format colorFormat;
uint32_t refreshRate;
uint32_t vsync;

View file

@ -12,6 +12,7 @@ STORM_TS_GROWABLE_ARRAY(HTEXTURE);
typedef struct CGxTexFlags CGxTexFlags;
typedef struct CGxTex CGxTex;
// !gxTex->m_flags.m_multiSampled
struct CGxTexFlags {
// unsigned __int32 m_filter : 3;
// unsigned __int32 m_wrapU : 1;
@ -20,6 +21,8 @@ struct CGxTexFlags {
// unsigned __int32 m_generateMipMaps : 1;
// unsigned __int32 m_renderTarget : 1;
// unsigned __int32 m_maxAnisotropy : 5;
uint32_t f_flags;
};

View file

@ -24,6 +24,7 @@ DECLARE_ENUM(EGxQueryType);
DECLARE_ENUM(EGxTexCommand);
DECLARE_ENUM(EGxTexFilter);
DECLARE_ENUM(EGxTexFormat);
DECLARE_ENUM(EGxTexGen);
DECLARE_ENUM(EGxTexTarget);
DECLARE_ENUM(EGxTexWrapMode);
DECLARE_ENUM(EGxXform);
@ -221,7 +222,7 @@ enum EGxRenderState {
GxRs_PointScaleMin = 81,
GxRs_PointScaleMax = 82,
GxRs_PointSprite = 83,
GxRs_LineWidth = 84, // LineWidth?
Unk84 = 84, // LineWidth? BlendFactor?
GxRs_ColorMaterial = 85,
GxRenderStates_Last = 86
};
@ -273,7 +274,7 @@ enum EGxTexCommand {
GxTex_Lock = 0,
GxTex_Latch = 1,
GxTex_Unlock = 2,
GxTex_3 = 3,
GxTex_3 = 3, //
GxTexCommands_Last = 4
};
@ -304,6 +305,17 @@ enum EGxTexFormat {
GxTexFormats_Last = 0xD,
};
enum EGxTexGen {
GxTexGen_Disable = 0x0,
GxTexGen_Object = 0x1,
GxTexGen_World = 0x2,
GxTexGen_View = 0x3,
GxTexGen_ViewReflection = 0x4,
GxTexGen_ViewNormal = 0x5,
GxTexGen_SphereMap = 0x6,
GxTexGens_Last = 0x7,
};
enum EGxTexTarget {
GxTex_2d = 0x0,
GxTex_CubeMap = 0x1,

View file

@ -78,8 +78,12 @@
#include "m2/shared.h"
#include "m2/types.h"
#include "net/message.h"
#include "nvapi/nvapi.h"
#include "object/object.h"
#include "os/processorfeatures.h"
#include "os/timemanager.h"

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,8 @@
#ifndef OBJECT_GUID_H
#define OBJECT_GUID_H
#include "system/types.h"
typedef uint64_t WOWGUID;
#endif

View file

@ -0,0 +1,49 @@
#ifndef OBJECT_OBJECT_H
#define OBJECT_OBJECT_H
DECLARE_STRUCT(CGObjectData);
DECLARE_STRUCT(CGObject);
DECLARE_STRUCT(CGObject_C__v_table);
#include "object/guid.h"
#include "object/type.h"
struct CGObjectData {
WOWGUID m_guid;
OBJECT_TYPE m_type;
int32_t m_entryID;
float m_scale;
uint32_t pad;
};
struct CGObject {
uint32_t* m_data;
CGObjectData* m_obj;
};
struct CGObject_C__v_table {
void* unk;
};
// class CGObject_C : CGObject {
struct CGObject_C {
CGObject_C__v_table* v_table;
CGObject b_base;
uint32_t unk[42];
float m_renderScale;
uint32_t unki;
// HMODEL m_model;
void* m_model;
uint32_t m_highlightTypes;
float m_objectHeight;
uint32_t m_worldObject;
uint32_t m_flags;
uint32_t m_fadeStartTime;
uint32_t m_fadeDuration;
uint8_t m_alpha;
uint8_t m_startAlpha;
uint8_t m_endAlpha;
uint8_t m_maxAlpha;
};
#endif

View file

@ -0,0 +1,29 @@
#ifndef OBJECT_TYPE_H
#define OBJECT_TYPE_H
DECLARE_ENUM(OBJECT_TYPE);
enum OBJECT_TYPE {
TYPE_OBJECT = 0x1,
TYPE_ITEM = 0x2,
TYPE_CONTAINER = 0x4,
TYPE_UNIT = 0x8,
TYPE_PLAYER = 0x10,
TYPE_GAMEOBJECT = 0x20,
TYPE_DYNAMICOBJECT = 0x40,
TYPE_CORPSE = 0x80,
TYPE_AIGROUP = 0x100,
TYPE_AREATRIGGER = 0x200,
HIER_TYPE_OBJECT = TYPE_OBJECT,
HIER_TYPE_ITEM = TYPE_OBJECT | TYPE_ITEM,
HIER_TYPE_CONTAINER = TYPE_OBJECT | TYPE_ITEM | TYPE_CONTAINER,
HIER_TYPE_UNIT = TYPE_OBJECT | TYPE_UNIT,
HIER_TYPE_PLAYER = TYPE_OBJECT | TYPE_UNIT | TYPE_PLAYER,
HIER_TYPE_GAMEOBJECT = TYPE_OBJECT | TYPE_GAMEOBJECT,
HIER_TYPE_DYNAMICOBJECT = TYPE_OBJECT | TYPE_GAMEOBJECT,
HIER_TYPE_CORPSE = TYPE_OBJECT | TYPE_CORPSE,
HIER_TYPE_AIGROUP = TYPE_OBJECT | TYPE_AIGROUP,
HIER_TYPE_AREATRIGGER = TYPE_OBJECT | TYPE_AREATRIGGER
};
#endif

View file

@ -0,0 +1,21 @@
#ifndef OBJECT_TYPEID_H
#define OBJECT_TYPEID_H
DECLARE_ENUM(OBJECT_TYPE_ID);
enum OBJECT_TYPE_ID {
ID_OBJECT = 0x0,
ID_ITEM = 0x1,
ID_CONTAINER = 0x2,
ID_UNIT = 0x3,
ID_PLAYER = 0x4,
ID_GAMEOBJECT = 0x5,
ID_DYNAMICOBJECT = 0x6,
ID_CORPSE = 0x7,
NUM_CLIENT_OBJECT_TYPES = 0x8,
ID_AIGROUP = 0x8,
ID_AREATRIGGER = 0x9,
NUM_OBJECT_TYPES = 0xA
};
#endif

View file

@ -0,0 +1,141 @@
#ifndef OBJECT_UNIT_H
#define OBJECT_UNIT_H
struct CGUnit {
}
DECLARE_STRUCT(CGUnit_C);
DECLARE_STRUCT(CGUnit);
struct __cppobj __declspec(align(8)) CGUnit_C : CGObject_C, CGUnit
{
int m_questCountKilled;
int m_questCountNeeded;
HMODEL__ *m_resEffectModel;
unsigned __int64 m_meleeTargetDeathHold;
int m_precastSheatheHoldTimer;
int m_customAttackSound;
NTempest::C3Vector m_customAttackPosition;
unsigned int m_splashSoundID;
unsigned int m_disengageLookAtTimer;
TSGrowableArray<ANIMENDDATA> m_animEndCallbackList;
ANIMENDDATA *m_callbackList[135];
CreatureStats_C *m_stats;
CreatureDisplayInfoRec *m_displayInfo;
CreatureDisplayInfoExtraRec *m_displayInfoExtra;
CreatureModelDataRec *m_modelData;
CreatureSoundDataRec *m_soundData;
CreatureSoundDataRec *m_mountedSoundData;
UnitBloodLevelsRec *m_bloodRec;
AuraVisual m_auraVisual[12];
TSList<ACTIVEAURAINFO,TSGetLink<ACTIVEAURAINFO> > m_activeAuraInfo;
ANIMENUMERATION m_pendingImpactAnim;
HMODEL__ *m_tempCharModel;
TSGrowableArray<char> m_deathHoldBuffer;
TSGrowableArray<unsigned int> m_deathHoldBufferIndices;
int m_lastDeathTime;
int m_nextDeathHoldCheckTime;
TSGrowableArray<QUESTGIVEREMOTENODE> m_emoteQueue;
HMODEL__ *m_interactIconModel;
TSList<BLOODSPLATNODE,TSGetLink<BLOODSPLATNODE> > m_bloodSplatNodes;
unsigned int m_nextAllowableBloodPool;
TSList<ANIMQUEUENODE,TSGetLink<ANIMQUEUENODE> > m_animQueue;
CCombatClient m_combat;
ANIMQUEUENODE *m_currentDamageInfo;
unsigned int m_readySequence;
unsigned int m_animEndTime;
unsigned int m_animBaseDuration;
unsigned int m_animStartTime;
unsigned int m_flags;
unsigned int m_animFlags;
unsigned int m_footprintTextureID;
unsigned int m_terrain;
NTempest::C2Vector m_footprintSize;
float m_footprintParticleScale;
DEBUGHITROLLINFO m_hitInformation;
ANIMENUMERATION m_spellPrecastingAnim;
ANIMENUMERATION m_spellCastingAnim;
ANIMENUMERATION m_deferredPrecastAnim;
int m_animatingAura;
unsigned int m_emoteID;
unsigned int m_spellCastingEffectKit;
unsigned int m_spellCastingSoundID;
int m_spellCastingCameraShakeID;
MISSILESTRUCT m_spellMissileStruct;
float m_lastSentFacing;
float m_lastSentPitch;
HPLAYERNAME__ *m_unitNameHandle;
int m_accumulatedXPDrop;
int m_castingSpell;
int m_interruptedSpell;
int m_lastSpellCastAnimTime;
int m_nextBreath;
int m_nextMountBreath;
int m_scriptRegistered;
float m_displayFacing;
float m_smoothFacing;
float m_savedFacingDeltas[4];
float m_forcedDisplayFacing;
unsigned int m_deathTime;
unsigned __int64 m_lastCombatTarget;
unsigned __int64 m_targetUnit;
unsigned int m_currentBaseAnimState;
unsigned int m_currentBaseAnim;
unsigned int m_currentTorsoAnimState;
unsigned int m_currentTorsoAnim;
unsigned int m_currentMountAnimState;
unsigned int m_currentWoundStartTime;
unsigned int m_currentWoundAnimDuration;
unsigned int m_spellFizzleTimer;
unsigned int m_deathHolds;
QUEST_GIVER_STATUS m_questGiverStatus;
NTempest::C3Vector m_serverLoc;
TSGrowableArray<NTempest::C3Vector> m_debugPathPoints;
unsigned int m_numDebugPathNodes;
Sound *m_spellLoopedSound;
Sound *m_creatureLoopSound;
unsigned int m_mountedFootprintID;
NTempest::C2Vector m_mountedFootprintSize;
HMODEL__ *m_fadingPureMountModel;
PUREMOUNTFADEMODE m_pureMountFadeMode;
unsigned int m_pureMountFadeStartTime;
float m_fadingMountFacing;
NTempest::C3Vector m_fadingMountPos;
float m_fadingMountScale;
NPCSoundsRec *m_NPCSoundsRec;
unsigned int m_lastGlobalClickCount;
unsigned int m_pissedCount;
unsigned int m_numNPCPissedSounds;
HCHARGEOSET__ *m_geosetHandle;
HTEXCOMPONENT__ *m_texComponent;
unsigned int m_preferredGeosets[15];
int m_displayHealth;
TSList<IMPACTEFFECTDESC,TSGetLink<IMPACTEFFECTDESC> > m_impactEffectsDesc;
TSList<SPELLEFFECTDESC,TSGetLink<SPELLEFFECTDESC> > m_spellEffectLists[11];
NTempest::C3iVector m_currentEmissive;
int m_pendingHitSpellID;
TSGrowableArray<unsigned __int64> m_pendingHitAnimVictims;
int m_auraFlags[56];
int m_walkStateAnim;
int m_standStateAnim;
float m_baseRadius;
unsigned int m_ammoDisplayID;
unsigned int m_ammoInvType;
unsigned int m_rangedStandTimer;
ACTIVEATTACHMENTINFO *m_attachments[5];
ACTIVEATTACHMENTINFO *m_deferredAttachments[5];
int m_weaponTrails[5];
HMODEL__ *m_paperDollModel;
int m_sheatheReasons;
ANIMENUMERATION m_handAnim[2];
unsigned int m_deferredSheatheFlags;
SHEATHEREASONS m_deferredSheatheReason;
int m_savedChannelSpellID;
TSGrowableArray<unsigned __int64> m_savedChannelSpellTargets;
SPELLEFFECTDESC *m_channelSpellEffect;
SpellRec *m_shapeShiftPoof;
FishingLineObject *m_fishingLineObject;
};
#endif