This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
2020-08-04 13:13:01 -04:00

258 lines
8.4 KiB
C

//========= 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