201 lines
6.5 KiB
C
201 lines
6.5 KiB
C
//===== Copyright <20> 1996-2005, Valve Corporation, All rights reserved. ======//
|
||
//
|
||
// Purpose:
|
||
//
|
||
// $NoKeywords: $
|
||
//===========================================================================//
|
||
|
||
#ifndef MATERIALSYSTEM_CONFIG_H
|
||
#define MATERIALSYSTEM_CONFIG_H
|
||
#ifdef _WIN32
|
||
#pragma once
|
||
#endif
|
||
|
||
#include "materialsystem/imaterialsystem.h"
|
||
|
||
#define MATERIALSYSTEM_CONFIG_VERSION "VMaterialSystemConfig004"
|
||
|
||
enum MaterialSystem_Config_Flags_t
|
||
{
|
||
MATSYS_VIDCFG_FLAGS_WINDOWED = ( 1 << 0 ),
|
||
MATSYS_VIDCFG_FLAGS_RESIZING = ( 1 << 1 ),
|
||
MATSYS_VIDCFG_FLAGS_NO_WAIT_FOR_VSYNC = ( 1 << 3 ),
|
||
MATSYS_VIDCFG_FLAGS_STENCIL = ( 1 << 4 ),
|
||
MATSYS_VIDCFG_FLAGS_DISABLE_SPECULAR = ( 1 << 7 ),
|
||
MATSYS_VIDCFG_FLAGS_DISABLE_BUMPMAP = ( 1 << 8 ),
|
||
MATSYS_VIDCFG_FLAGS_ENABLE_PARALLAX_MAPPING = ( 1 << 9 ),
|
||
MATSYS_VIDCFG_FLAGS_USE_Z_PREFILL = ( 1 << 10 ),
|
||
MATSYS_VIDCFG_FLAGS_ENABLE_HDR = ( 1 << 12 ),
|
||
MATSYS_VIDCFG_FLAGS_LIMIT_WINDOWED_SIZE = ( 1 << 13 ),
|
||
MATSYS_VIDCFG_FLAGS_SCALE_TO_OUTPUT_RESOLUTION = ( 1 << 14 ),
|
||
MATSYS_VIDCFG_FLAGS_USING_MULTIPLE_WINDOWS = ( 1 << 15 ),
|
||
MATSYS_VIDCFG_FLAGS_DISABLE_PHONG = ( 1 << 16 ),
|
||
MATSYS_VIDCFG_FLAGS_NO_WINDOW_BORDER = ( 1 << 17 ),
|
||
};
|
||
|
||
struct MaterialSystemHardwareIdentifier_t
|
||
{
|
||
char *m_pCardName;
|
||
unsigned int m_nVendorID;
|
||
unsigned int m_nDeviceID;
|
||
};
|
||
|
||
struct MaterialSystem_Config_t
|
||
{
|
||
bool Windowed() const { return ( m_Flags & MATSYS_VIDCFG_FLAGS_WINDOWED ) != 0; }
|
||
bool NoWindowBorder() const { return ( m_Flags & MATSYS_VIDCFG_FLAGS_NO_WINDOW_BORDER ) != 0; }
|
||
bool Resizing() const { return ( m_Flags & MATSYS_VIDCFG_FLAGS_RESIZING ) != 0; }
|
||
bool WaitForVSync() const { return ( m_Flags & MATSYS_VIDCFG_FLAGS_NO_WAIT_FOR_VSYNC ) == 0; }
|
||
bool Stencil() const { return (m_Flags & MATSYS_VIDCFG_FLAGS_STENCIL ) != 0; }
|
||
bool UseSpecular() const { return ( m_Flags & MATSYS_VIDCFG_FLAGS_DISABLE_SPECULAR ) == 0; }
|
||
bool UseBumpmapping() const { return ( m_Flags & MATSYS_VIDCFG_FLAGS_DISABLE_BUMPMAP ) == 0; }
|
||
bool UseParallaxMapping() const { return ( m_Flags & MATSYS_VIDCFG_FLAGS_ENABLE_PARALLAX_MAPPING ) != 0; }
|
||
bool UseZPrefill() const { return ( m_Flags & MATSYS_VIDCFG_FLAGS_USE_Z_PREFILL ) != 0; }
|
||
bool HDREnabled() const { return ( m_Flags & MATSYS_VIDCFG_FLAGS_ENABLE_HDR ) != 0; }
|
||
bool LimitWindowedSize() const { return ( m_Flags & MATSYS_VIDCFG_FLAGS_LIMIT_WINDOWED_SIZE ) != 0; }
|
||
bool ScaleToOutputResolution() const { return ( m_Flags & MATSYS_VIDCFG_FLAGS_SCALE_TO_OUTPUT_RESOLUTION ) != 0; }
|
||
bool UsingMultipleWindows() const { return ( m_Flags & MATSYS_VIDCFG_FLAGS_USING_MULTIPLE_WINDOWS ) != 0; }
|
||
bool ShadowDepthTexture() const { return m_bShadowDepthTexture; }
|
||
bool MotionBlur() const { return m_bMotionBlur; }
|
||
bool SupportFlashlight() const { return m_bSupportFlashlight; }
|
||
bool UsePhong() const { return ( m_Flags & MATSYS_VIDCFG_FLAGS_DISABLE_PHONG ) == 0; }
|
||
|
||
void SetFlag( unsigned int flag, bool val )
|
||
{
|
||
if( val )
|
||
{
|
||
m_Flags |= flag;
|
||
}
|
||
else
|
||
{
|
||
m_Flags &= ~flag;
|
||
}
|
||
}
|
||
|
||
// control panel stuff
|
||
MaterialVideoMode_t m_VideoMode;
|
||
float m_fMonitorGamma;
|
||
float m_fGammaTVRangeMin;
|
||
float m_fGammaTVRangeMax;
|
||
float m_fGammaTVExponent;
|
||
bool m_bGammaTVEnabled;
|
||
|
||
bool m_bWantTripleBuffered; // We only get triple buffering if fullscreen and vsync'd
|
||
int m_nAASamples;
|
||
int m_nForceAnisotropicLevel;
|
||
int skipMipLevels;
|
||
int dxSupportLevel;
|
||
unsigned int m_Flags;
|
||
bool bEditMode; // true if in Hammer.
|
||
unsigned char proxiesTestMode; // 0 = normal, 1 = no proxies, 2 = alpha test all, 3 = color mod all
|
||
bool bCompressedTextures;
|
||
bool bFilterLightmaps;
|
||
bool bFilterTextures;
|
||
bool bReverseDepth;
|
||
bool bBufferPrimitives;
|
||
bool bDrawFlat;
|
||
bool bMeasureFillRate;
|
||
bool bVisualizeFillRate;
|
||
bool bNoTransparency;
|
||
bool bSoftwareLighting;
|
||
bool bAllowCheats;
|
||
char nShowMipLevels;
|
||
bool bShowLowResImage;
|
||
bool bShowNormalMap;
|
||
bool bMipMapTextures;
|
||
unsigned char nFullbright;
|
||
bool m_bFastNoBump;
|
||
bool m_bSuppressRendering;
|
||
|
||
// debug modes
|
||
bool bShowSpecular; // This is the fast version that doesn't require reloading materials
|
||
bool bShowDiffuse; // This is the fast version that doesn't require reloading materials
|
||
|
||
uint m_WindowedSizeLimitWidth;
|
||
uint m_WindowedSizeLimitHeight;
|
||
int m_nAAQuality;
|
||
bool m_bShadowDepthTexture;
|
||
bool m_bMotionBlur;
|
||
bool m_bSupportFlashlight;
|
||
|
||
bool m_bPaintInGame;
|
||
bool m_bPaintInMap;
|
||
|
||
|
||
MaterialSystem_Config_t()
|
||
{
|
||
memset( this, 0, sizeof( *this ) );
|
||
|
||
// video config defaults
|
||
SetFlag( MATSYS_VIDCFG_FLAGS_WINDOWED, false );
|
||
SetFlag( MATSYS_VIDCFG_FLAGS_NO_WINDOW_BORDER, false );
|
||
SetFlag( MATSYS_VIDCFG_FLAGS_RESIZING, false );
|
||
SetFlag( MATSYS_VIDCFG_FLAGS_NO_WAIT_FOR_VSYNC, true );
|
||
SetFlag( MATSYS_VIDCFG_FLAGS_STENCIL, false );
|
||
SetFlag( MATSYS_VIDCFG_FLAGS_DISABLE_SPECULAR, false );
|
||
SetFlag( MATSYS_VIDCFG_FLAGS_DISABLE_BUMPMAP, false );
|
||
SetFlag( MATSYS_VIDCFG_FLAGS_ENABLE_PARALLAX_MAPPING, true );
|
||
SetFlag( MATSYS_VIDCFG_FLAGS_USE_Z_PREFILL, false );
|
||
SetFlag( MATSYS_VIDCFG_FLAGS_LIMIT_WINDOWED_SIZE, false );
|
||
SetFlag( MATSYS_VIDCFG_FLAGS_SCALE_TO_OUTPUT_RESOLUTION, false );
|
||
SetFlag( MATSYS_VIDCFG_FLAGS_USING_MULTIPLE_WINDOWS, false );
|
||
|
||
m_VideoMode.m_Width = 640;
|
||
m_VideoMode.m_Height = 480;
|
||
m_VideoMode.m_RefreshRate = 60;
|
||
dxSupportLevel = 0;
|
||
bCompressedTextures = true;
|
||
bFilterTextures = true;
|
||
bFilterLightmaps = true;
|
||
bMipMapTextures = true;
|
||
bBufferPrimitives = true;
|
||
|
||
m_fMonitorGamma = 2.2f;
|
||
m_fGammaTVRangeMin = 16.0f;
|
||
m_fGammaTVRangeMax = 255.0f;
|
||
m_fGammaTVExponent = 2.5;
|
||
m_bGammaTVEnabled = IsX360();
|
||
|
||
m_bWantTripleBuffered = false;
|
||
m_nAASamples = 1;
|
||
m_bShadowDepthTexture = false;
|
||
m_bMotionBlur = false;
|
||
m_bSupportFlashlight = true;
|
||
|
||
// misc defaults
|
||
bAllowCheats = false;
|
||
bCompressedTextures = true;
|
||
bEditMode = false;
|
||
|
||
// debug modes
|
||
bShowSpecular = true;
|
||
bShowDiffuse = true;
|
||
nFullbright = 0;
|
||
bShowNormalMap = false;
|
||
bFilterLightmaps = true;
|
||
bFilterTextures = true;
|
||
bMipMapTextures = true;
|
||
nShowMipLevels = 0;
|
||
bShowLowResImage = false;
|
||
bReverseDepth = false;
|
||
bBufferPrimitives = true;
|
||
bDrawFlat = false;
|
||
bMeasureFillRate = false;
|
||
bVisualizeFillRate = false;
|
||
bSoftwareLighting = false;
|
||
bNoTransparency = false;
|
||
proxiesTestMode = 0;
|
||
m_bFastNoBump = false;
|
||
m_bSuppressRendering = false;
|
||
m_WindowedSizeLimitWidth = 1280;
|
||
m_WindowedSizeLimitHeight = 1024;
|
||
|
||
// PAINT
|
||
m_bPaintInGame = false;
|
||
m_bPaintInMap = false;
|
||
}
|
||
};
|
||
|
||
|
||
#endif // MATERIALSYSTEM_CONFIG_H
|