Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #include "IAppSystem.hpp"
- #define DECLARE_POINTER_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
- #define MAXSTUDIOSKINS 32
- // These are given to FindMaterial to reference the texture groups that Show up on the
- #define TEXTURE_GROUP_LIGHTMAP "Lightmaps"
- #define TEXTURE_GROUP_WORLD "World textures"
- #define TEXTURE_GROUP_MODEL "Model textures"
- #define TEXTURE_GROUP_VGUI "VGUI textures"
- #define TEXTURE_GROUP_PARTICLE "Particle textures"
- #define TEXTURE_GROUP_DECAL "Decal textures"
- #define TEXTURE_GROUP_SKYBOX "SkyBox textures"
- #define TEXTURE_GROUP_CLIENT_EFFECTS "ClientEffect textures"
- #define TEXTURE_GROUP_OTHER "Other textures"
- #define TEXTURE_GROUP_PRECACHED "Precached"
- #define TEXTURE_GROUP_CUBE_MAP "CubeMap textures"
- #define TEXTURE_GROUP_RENDER_TARGET "RenderTargets"
- #define TEXTURE_GROUP_UNACCOUNTED "Unaccounted textures"
- //#define TEXTURE_GROUP_STATIC_VERTEX_BUFFER "Static Vertex"
- #define TEXTURE_GROUP_STATIC_INDEX_BUFFER "Static Indices"
- #define TEXTURE_GROUP_STATIC_VERTEX_BUFFER_DISP "Displacement Verts"
- #define TEXTURE_GROUP_STATIC_VERTEX_BUFFER_COLOR "Lighting Verts"
- #define TEXTURE_GROUP_STATIC_VERTEX_BUFFER_WORLD "World Verts"
- #define TEXTURE_GROUP_STATIC_VERTEX_BUFFER_MODELS "Model Verts"
- #define TEXTURE_GROUP_STATIC_VERTEX_BUFFER_OTHER "Other Verts"
- #define TEXTURE_GROUP_DYNAMIC_INDEX_BUFFER "Dynamic Indices"
- #define TEXTURE_GROUP_DYNAMIC_VERTEX_BUFFER "Dynamic Verts"
- #define TEXTURE_GROUP_DEPTH_BUFFER "DepthBuffer"
- #define TEXTURE_GROUP_VIEW_MODEL "ViewModel"
- #define TEXTURE_GROUP_PIXEL_SHADERS "Pixel Shaders"
- #define TEXTURE_GROUP_VERTEX_SHADERS "Vertex Shaders"
- #define TEXTURE_GROUP_RENDER_TARGET_SURFACE "RenderTarget Surfaces"
- #define TEXTURE_GROUP_MORPH_TARGETS "Morph Targets"
- //-----------------------------------------------------------------------------
- // forward declarations
- //-----------------------------------------------------------------------------
- class IMaterial;
- class IMesh;
- class IVertexBuffer;
- class IIndexBuffer;
- struct MaterialSystem_Config_t;
- class VMatrix;
- class matrix3x4_t;
- class ITexture;
- struct MaterialSystemHWID_t;
- class KeyValues;
- class IShader;
- class IVertexTexture;
- class IMorph;
- class IMatRenderContext;
- class ICallQueue;
- struct MorphWeight_t;
- class IFileList;
- struct VertexStreamSpec_t;
- struct ShaderStencilState_t;
- struct MeshInstanceData_t;
- class IClientMaterialSystem;
- class CPaintMaterial;
- class IPaintMapDataManager;
- class IPaintMapTextureManager;
- class GPUMemoryStats;
- struct AspectRatioInfo_t;
- struct CascadedShadowMappingState_t;
- class IMaterialProxyFactory;
- class ITexture;
- class IMaterialSystemHardwareConfig;
- class CShadowMgr;
- enum CompiledVtfFlags
- {
- TEXTUREFLAGS_POINTSAMPLE = 0x00000001,
- TEXTUREFLAGS_TRILINEAR = 0x00000002,
- TEXTUREFLAGS_CLAMPS = 0x00000004,
- TEXTUREFLAGS_CLAMPT = 0x00000008,
- TEXTUREFLAGS_ANISOTROPIC = 0x00000010,
- TEXTUREFLAGS_HINT_DXT5 = 0x00000020,
- TEXTUREFLAGS_PWL_CORRECTED = 0x00000040,
- TEXTUREFLAGS_NORMAL = 0x00000080,
- TEXTUREFLAGS_NOMIP = 0x00000100,
- TEXTUREFLAGS_NOLOD = 0x00000200,
- TEXTUREFLAGS_ALL_MIPS = 0x00000400,
- TEXTUREFLAGS_PROCEDURAL = 0x00000800,
- TEXTUREFLAGS_ONEBITALPHA = 0x00001000,
- TEXTUREFLAGS_EIGHTBITALPHA = 0x00002000,
- TEXTUREFLAGS_ENVMAP = 0x00004000,
- TEXTUREFLAGS_RENDERTARGET = 0x00008000,
- TEXTUREFLAGS_DEPTHRENDERTARGET = 0x00010000,
- TEXTUREFLAGS_NODEBUGOVERRIDE = 0x00020000,
- TEXTUREFLAGS_SINGLECOPY = 0x00040000,
- TEXTUREFLAGS_PRE_SRGB = 0x00080000,
- TEXTUREFLAGS_UNUSED_00100000 = 0x00100000,
- TEXTUREFLAGS_UNUSED_00200000 = 0x00200000,
- TEXTUREFLAGS_UNUSED_00400000 = 0x00400000,
- TEXTUREFLAGS_NODEPTHBUFFER = 0x00800000,
- TEXTUREFLAGS_UNUSED_01000000 = 0x01000000,
- TEXTUREFLAGS_CLAMPU = 0x02000000,
- TEXTUREFLAGS_VERTEXTEXTURE = 0x04000000,
- TEXTUREFLAGS_SSBUMP = 0x08000000,
- TEXTUREFLAGS_UNUSED_10000000 = 0x10000000,
- TEXTUREFLAGS_BORDER = 0x20000000,
- TEXTUREFLAGS_UNUSED_40000000 = 0x40000000,
- TEXTUREFLAGS_UNUSED_80000000 = 0x80000000
- };
- enum StandardLightmap_t
- {
- MATERIAL_SYSTEM_LIGHTMAP_PAGE_WHITE = -1,
- MATERIAL_SYSTEM_LIGHTMAP_PAGE_WHITE_BUMP = -2,
- MATERIAL_SYSTEM_LIGHTMAP_PAGE_USER_DEFINED = -3
- };
- struct MaterialSystem_SortInfo_t
- {
- IMaterial* material;
- int lightmapPageID;
- };
- enum MaterialThreadMode_t
- {
- MATERIAL_SINGLE_THREADED,
- MATERIAL_QUEUED_SINGLE_THREADED,
- MATERIAL_QUEUED_THREADED
- };
- enum MaterialContextType_t
- {
- MATERIAL_HARDWARE_CONTEXT,
- MATERIAL_QUEUED_CONTEXT,
- MATERIAL_NULL_CONTEXT
- };
- enum
- {
- MATERIAL_ADAPTER_NAME_LENGTH = 512
- };
- struct MaterialTextureInfo_t
- {
- int iExcludeInformation;
- };
- struct ApplicationPerformanceCountersInfo_t
- {
- float msMain;
- float msMST;
- float msGPU;
- float msFlip;
- float msTotal;
- };
- struct ApplicationInstantCountersInfo_t
- {
- uint32_t m_nCpuActivityMask;
- uint32_t m_nDeferredWordsAllocated;
- };
- struct MaterialAdapterInfo_t
- {
- char m_pDriverName[MATERIAL_ADAPTER_NAME_LENGTH];
- unsigned int m_VendorID;
- unsigned int m_DeviceID;
- unsigned int m_SubSysID;
- unsigned int m_Revision;
- int m_nDXSupportLevel; // This is the *preferred* dx support level
- int m_nMinDXSupportLevel;
- int m_nMaxDXSupportLevel;
- unsigned int m_nDriverVersionHigh;
- unsigned int m_nDriverVersionLow;
- };
- struct MaterialVideoMode_t
- {
- int m_Width; // if width and height are 0 and you select
- int m_Height; // windowed mode, it'll use the window size
- ImageFormat m_Format; // use ImageFormats (ignored for windowed mode)
- int m_RefreshRate; // 0 == default (ignored for windowed mode)
- };
- enum HDRType_t
- {
- HDR_TYPE_NONE,
- HDR_TYPE_INTEGER,
- HDR_TYPE_FLOAT,
- };
- enum RestoreChangeFlags_t
- {
- MATERIAL_RESTORE_VERTEX_FORMAT_CHANGED = 0x1,
- MATERIAL_RESTORE_RELEASE_MANAGED_RESOURCES = 0x2,
- };
- enum RenderTargetSizeMode_t
- {
- RT_SIZE_NO_CHANGE = 0,
- RT_SIZE_DEFAULT = 1,
- RT_SIZE_PICMIP = 2,
- RT_SIZE_HDR = 3,
- RT_SIZE_FULL_FRAME_BUFFER = 4,
- RT_SIZE_OFFSCREEN = 5,
- RT_SIZE_FULL_FRAME_BUFFER_ROUNDED_UP = 6
- };
- enum MaterialRenderTargetDepth_t
- {
- MATERIAL_RT_DEPTH_SHARED = 0x0,
- MATERIAL_RT_DEPTH_SEPARATE = 0x1,
- MATERIAL_RT_DEPTH_NONE = 0x2,
- MATERIAL_RT_DEPTH_ONLY = 0x3,
- };
- typedef void(*MaterialBufferReleaseFunc_t)(int nChangeFlags); // see RestoreChangeFlags_t
- typedef void(*MaterialBufferRestoreFunc_t)(int nChangeFlags); // see RestoreChangeFlags_t
- typedef void(*ModeChangeCallbackFunc_t)(void);
- typedef void(*EndFrameCleanupFunc_t)(void);
- typedef bool(*EndFramePriorToNextContextFunc_t)(void);
- typedef void(*OnLevelShutdownFunc_t)(void* pUserData);
- typedef unsigned short MaterialHandle_t;
- DECLARE_POINTER_HANDLE(MaterialLock_t);
- class IMaterialSystem : public IAppSystem
- {
- public:
- virtual CreateInterfaceFn Init(char const* pShaderAPIDLL, IMaterialProxyFactory* pMaterialProxyFactory, CreateInterfaceFn fileSystemFactory, CreateInterfaceFn cvarFactory = NULL) = 0;
- virtual void SetShaderAPI(char const* pShaderAPIDLL) = 0;
- virtual void SetAdapter(int nAdapter, int nFlags) = 0;
- virtual void ModInit() = 0;
- virtual void ModShutdown() = 0;
- virtual void SetThreadMode(MaterialThreadMode_t mode, int nServiceThread = -1) = 0;
- virtual MaterialThreadMode_t GetThreadMode() = 0;
- virtual void ExecuteQueued() = 0;
- virtual void OnDebugEvent(const char* pEvent) = 0;
- virtual IMaterialSystemHardwareConfig* GetHardwareConfig(const char* pVersion, int* returnCode) = 0;
- virtual void __unknown() = 0;
- virtual bool UpdateConfig(bool bForceUpdate) = 0; //20
- virtual bool OverrideConfig(const MaterialSystem_Config_t& config, bool bForceUpdate) = 0;
- virtual const MaterialSystem_Config_t& GetCurrentConfigForVideoCard() const = 0;
- virtual bool GetRecommendedConfigurationInfo(int nDXLevel, KeyValues* pKeyValues) = 0;
- virtual int GetDisplayAdapterCount() const = 0;
- virtual int GetCurrentAdapter() const = 0;
- virtual void GetDisplayAdapterInfo(int adapter, MaterialAdapterInfo_t& info) const = 0;
- virtual int GetModeCount(int adapter) const = 0;
- virtual void GetModeInfo(int adapter, int mode, MaterialVideoMode_t& info) const = 0;
- virtual void AddModeChangeCallBack(ModeChangeCallbackFunc_t func) = 0;
- virtual void GetDisplayMode(MaterialVideoMode_t& mode) const = 0; //30
- virtual bool SetMode(PVOID hwnd, const MaterialSystem_Config_t& config) = 0;
- virtual bool SupportsMSAAMode(int nMSAAMode) = 0;
- virtual const MaterialSystemHWID_t& GetVideoCardIdentifier(void) const = 0;
- virtual void SpewDriverInfo() const = 0;
- virtual void GetBackBufferDimensions(int& width, int& height) const = 0;
- virtual ImageFormat GetBackBufferFormat() const = 0;
- virtual const AspectRatioInfo_t& GetAspectRatioInfo() const = 0;
- virtual bool SupportsHDRMode(HDRType_t nHDRModede) = 0;
- virtual bool AddView(PVOID hwnd) = 0;
- virtual void RemoveView(PVOID hwnd) = 0; //40
- virtual void SetView(PVOID hwnd) = 0;
- virtual void BeginFrame(float frameTime) = 0;
- virtual void EndFrame() = 0;
- virtual void Flush(bool flushHardware = false) = 0;
- virtual unsigned int GetCurrentFrameCount() = 0;
- virtual void SwapBuffers() = 0;
- virtual void EvictManagedResources() = 0;
- virtual void ReleaseResources(void) = 0;
- virtual void ReacquireResources(void) = 0;
- virtual void AddReleaseFunc(MaterialBufferReleaseFunc_t func) = 0; //50
- virtual void RemoveReleaseFunc(MaterialBufferReleaseFunc_t func) = 0;
- virtual void AddRestoreFunc(MaterialBufferRestoreFunc_t func) = 0;
- virtual void RemoveRestoreFunc(MaterialBufferRestoreFunc_t func) = 0;
- virtual void AddEndFrameCleanupFunc(EndFrameCleanupFunc_t func) = 0;
- virtual void RemoveEndFrameCleanupFunc(EndFrameCleanupFunc_t func) = 0;
- virtual void OnLevelShutdown() = 0;
- virtual bool AddOnLevelShutdownFunc(OnLevelShutdownFunc_t func, void* pUserData) = 0;
- virtual bool RemoveOnLevelShutdownFunc(OnLevelShutdownFunc_t func, void* pUserData) = 0;
- virtual void OnLevelLoadingComplete() = 0;
- virtual void ResetTempHWMemory(bool bExitingLevel = false) = 0; //60
- virtual void HandleDeviceLost() = 0;
- virtual int ShaderCount() const = 0;
- virtual int GetShaders(int nFirstShader, int nMaxCount, IShader** ppShaderList) const = 0;
- virtual int ShaderFlagCount() const = 0;
- virtual const char* ShaderFlagName(int nIndex) const = 0;
- virtual void GetShaderFallback(const char* pShaderName, char* pFallbackShader, int nFallbackLength) = 0;
- virtual IMaterialProxyFactory* GetMaterialProxyFactory() = 0;
- virtual void SetMaterialProxyFactory(IMaterialProxyFactory* pFactory) = 0;
- virtual void EnableEditorMaterials() = 0;
- virtual void EnableGBuffers() = 0; //70
- virtual void SetInStubMode(bool bInStubMode) = 0;
- virtual void DebugPrintUsedMaterials(const char* pSearchSubString, bool bVerbose) = 0;
- virtual void DebugPrintUsedTextures(void) = 0;
- virtual void ToggleSuppressMaterial(char const* pMaterialName) = 0;
- virtual void ToggleDebugMaterial(char const* pMaterialName) = 0;
- virtual bool UsingFastClipping(void) = 0;
- virtual int StencilBufferBits(void) = 0; //number of bits per pixel in the stencil buffer
- virtual void UncacheAllMaterials() = 0;
- virtual void UncacheUnusedMaterials(bool bRecomputeStateSnapshots = false) = 0;
- virtual void CacheUsedMaterials() = 0; //80
- virtual void ReloadTextures() = 0;
- virtual void ReloadMaterials(const char* pSubString = NULL) = 0;
- virtual IMaterial* CreateMaterial(const char* pMaterialName, KeyValues* pVMTKeyValues) = 0;
- virtual IMaterial* FindMaterial(char const* pMaterialName, const char* pTextureGroupName, bool complain = true, const char* pComplainPrefix = NULL) = 0;
- virtual void LoadKeyValuesFromVMTFile(KeyValues& values, const char* name, bool somebool) const = 0;
- virtual MaterialHandle_t FirstMaterial() const = 0;
- virtual MaterialHandle_t NextMaterial(MaterialHandle_t h) const = 0;
- virtual MaterialHandle_t InvalidMaterial() const = 0;
- virtual IMaterial* GetMaterial(MaterialHandle_t h) const = 0;
- virtual int GetNumMaterials() const = 0;
- virtual ITexture* FindTexture(char const* pTextureName, const char* pTextureGroupName, bool complain = true) = 0;
- virtual bool IsTextureLoaded(char const* pTextureName) const = 0;
- virtual ITexture* CreateProceduralTexture(const char* pTextureName, const char* pTextureGroupName, int w, int h, ImageFormat fmt, int nFlags) = 0;
- virtual void BeginRenderTargetAllocation() = 0;
- virtual void EndRenderTargetAllocation() = 0; // Simulate an Alt-Tab in here, which causes a release/restore of all resources
- virtual ITexture* CreateRenderTargetTexture(int w, int h, RenderTargetSizeMode_t sizeMode, ImageFormat format, MaterialRenderTargetDepth_t depth = MATERIAL_RT_DEPTH_SHARED) = 0;
- virtual ITexture* CreateNamedRenderTargetTextureEx(const char* pRTName, int w, int h, RenderTargetSizeMode_t sizeMode, ImageFormat format, MaterialRenderTargetDepth_t depth = MATERIAL_RT_DEPTH_SHARED, unsigned int textureFlags = TEXTUREFLAGS_CLAMPS | TEXTUREFLAGS_CLAMPT, unsigned int renderTargetFlags = 0) = 0;
- virtual ITexture* CreateNamedRenderTargetTexture(const char* pRTName, int w, int h, RenderTargetSizeMode_t sizeMode, ImageFormat format, MaterialRenderTargetDepth_t depth = MATERIAL_RT_DEPTH_SHARED, bool bClampTexCoords = true, bool bAutoMipMap = false) = 0;
- virtual ITexture* CreateNamedRenderTargetTextureEx2(const char* pRTName, int w, int h, RenderTargetSizeMode_t sizeMode, ImageFormat format, MaterialRenderTargetDepth_t depth = MATERIAL_RT_DEPTH_SHARED, unsigned int textureFlags = TEXTUREFLAGS_CLAMPS | TEXTUREFLAGS_CLAMPT, unsigned int renderTargetFlags = 0) = 0;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement