You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
229 lines
7.5 KiB
229 lines
7.5 KiB
//========= Copyright 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 "VMaterialSystemConfig002" |
|
|
|
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_FORCE_TRILINEAR = ( 1 << 5 ), |
|
MATSYS_VIDCFG_FLAGS_FORCE_HWSYNC = ( 1 << 6 ), |
|
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_REDUCE_FILLRATE = ( 1 << 11 ), |
|
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_VR_MODE = ( 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 Resizing() const { return ( m_Flags & MATSYS_VIDCFG_FLAGS_RESIZING ) != 0; } |
|
#ifdef CSS_PERF_TEST |
|
bool WaitForVSync() const { return false; }//( m_Flags & MATSYS_VIDCFG_FLAGS_NO_WAIT_FOR_VSYNC ) == 0; } |
|
#else |
|
bool WaitForVSync() const { return ( m_Flags & MATSYS_VIDCFG_FLAGS_NO_WAIT_FOR_VSYNC ) == 0; } |
|
#endif |
|
bool Stencil() const { return (m_Flags & MATSYS_VIDCFG_FLAGS_STENCIL ) != 0; } |
|
bool ForceTrilinear() const { return ( m_Flags & MATSYS_VIDCFG_FLAGS_FORCE_TRILINEAR ) != 0; } |
|
bool ForceHWSync() const { return ( m_Flags & MATSYS_VIDCFG_FLAGS_FORCE_HWSYNC ) != 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 ReduceFillrate() const { return ( m_Flags & MATSYS_VIDCFG_FLAGS_REDUCE_FILLRATE ) != 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 UsePhong() const { return ( m_Flags & MATSYS_VIDCFG_FLAGS_DISABLE_PHONG ) == 0; } |
|
bool VRMode() const { return ( m_Flags & MATSYS_VIDCFG_FLAGS_VR_MODE) != 0; } |
|
bool ShadowDepthTexture() const { return m_bShadowDepthTexture; } |
|
bool MotionBlur() const { return m_bMotionBlur; } |
|
bool SupportFlashlight() const { return m_bSupportFlashlight; } |
|
|
|
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; |
|
|
|
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 |
|
|
|
// misc |
|
int m_nReserved; // Currently unused |
|
|
|
// No depth bias |
|
float m_SlopeScaleDepthBias_Normal; |
|
float m_DepthBias_Normal; |
|
|
|
// Depth bias for rendering decals closer to the camera |
|
float m_SlopeScaleDepthBias_Decal; |
|
float m_DepthBias_Decal; |
|
|
|
// Depth bias for biasing shadow depth map rendering away from the camera |
|
float m_SlopeScaleDepthBias_ShadowMap; |
|
float m_DepthBias_ShadowMap; |
|
|
|
uint m_WindowedSizeLimitWidth; |
|
uint m_WindowedSizeLimitHeight; |
|
int m_nAAQuality; |
|
bool m_bShadowDepthTexture; |
|
bool m_bMotionBlur; |
|
bool m_bSupportFlashlight; |
|
|
|
int m_nVRModeAdapter; |
|
|
|
MaterialSystem_Config_t() |
|
{ |
|
memset( this, 0, sizeof( *this ) ); |
|
|
|
// video config defaults |
|
SetFlag( MATSYS_VIDCFG_FLAGS_WINDOWED, 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_FORCE_TRILINEAR, true ); |
|
SetFlag( MATSYS_VIDCFG_FLAGS_FORCE_HWSYNC, true ); |
|
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_REDUCE_FILLRATE, 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 ); |
|
SetFlag( MATSYS_VIDCFG_FLAGS_DISABLE_PHONG, false ); |
|
SetFlag( MATSYS_VIDCFG_FLAGS_VR_MODE, 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_nAASamples = 1; |
|
m_bShadowDepthTexture = false; |
|
m_bMotionBlur = false; |
|
m_bSupportFlashlight = true; |
|
|
|
m_nVRModeAdapter = -1; |
|
|
|
// 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_SlopeScaleDepthBias_Decal = -0.5f; |
|
m_SlopeScaleDepthBias_Normal = 0.0f; |
|
m_SlopeScaleDepthBias_ShadowMap = 0.5f; |
|
m_DepthBias_Decal = -262144; |
|
m_DepthBias_Normal = 0.0f; |
|
m_DepthBias_ShadowMap = 262144; |
|
m_WindowedSizeLimitWidth = 1280; |
|
m_WindowedSizeLimitHeight = 1024; |
|
} |
|
}; |
|
|
|
|
|
#endif // MATERIALSYSTEM_CONFIG_H
|
|
|