mirror of
https://github.com/0TheSpy/Seaside.git
synced 2025-01-07 10:03:29 +08:00
201 lines
5.8 KiB
C++
201 lines
5.8 KiB
C++
#ifndef IMATERIALSYSTEMHARDWARECONFIG_H
|
|
#define IMATERIALSYSTEMHARDWARECONFIG_H
|
|
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#if defined( DX_TO_GL_ABSTRACTION )
|
|
#define IsPlatformOpenGL() true
|
|
#else
|
|
#define IsPlatformOpenGL() false
|
|
#endif
|
|
|
|
#include "interface.h"
|
|
#include "imageformat.h"
|
|
#include "imaterialsystem.h"
|
|
FORCEINLINE bool IsOpenGL(void)
|
|
{
|
|
return IsPlatformOpenGL();
|
|
}
|
|
|
|
enum VertexCompressionType_t
|
|
{
|
|
VERTEX_COMPRESSION_INVALID = 0xFFFFFFFF,
|
|
|
|
VERTEX_COMPRESSION_NONE = 0,
|
|
|
|
VERTEX_COMPRESSION_ON = 1
|
|
};
|
|
|
|
|
|
#ifdef _GAMECONSOLE
|
|
#define DEFCONFIGMETHOD( ret_type, method, xbox_return_value ) \
|
|
FORCEINLINE ret_type method const \
|
|
{ \
|
|
return xbox_return_value; \
|
|
}
|
|
|
|
|
|
#else
|
|
#define DEFCONFIGMETHOD( ret_type, method, xbox_return_value ) \
|
|
virtual ret_type method const = 0;
|
|
#endif
|
|
|
|
enum ShadowFilterMode_t
|
|
{
|
|
SHADOWFILTERMODE_DEFAULT = 0,
|
|
|
|
NVIDIA_PCF = 0,
|
|
ATI_NO_PCF_FETCH4 = 1,
|
|
NVIDIA_PCF_CHEAP = 2,
|
|
ATI_NOPCF = 3,
|
|
|
|
GAMECONSOLE_NINE_TAP_PCF = 0,
|
|
GAMECONSOLE_SINGLE_TAP_PCF = 1,
|
|
|
|
#if defined( _GAMECONSOLE )
|
|
SHADOWFILTERMODE_FIRST_CHEAP_MODE = GAMECONSOLE_SINGLE_TAP_PCF,
|
|
#else
|
|
SHADOWFILTERMODE_FIRST_CHEAP_MODE = NVIDIA_PCF_CHEAP,
|
|
#endif
|
|
};
|
|
|
|
enum CSMQualityMode_t
|
|
{
|
|
CSMQUALITY_VERY_LOW,
|
|
CSMQUALITY_LOW,
|
|
CSMQUALITY_MEDIUM,
|
|
CSMQUALITY_HIGH,
|
|
|
|
CSMQUALITY_TOTAL_MODES
|
|
};
|
|
|
|
enum CSMShaderMode_t
|
|
{
|
|
CSMSHADERMODE_LOW_OR_VERY_LOW = 0,
|
|
CSMSHADERMODE_MEDIUM = 1,
|
|
CSMSHADERMODE_HIGH = 2,
|
|
CSMSHADERMODE_ATIFETCH4 = 3,
|
|
|
|
CSMSHADERMODE_TOTAL_MODES
|
|
};
|
|
|
|
class IMaterialSystemHardwareConfig
|
|
{
|
|
public:
|
|
virtual int GetFrameBufferColorDepth() const = 0;
|
|
virtual int GetSamplerCount() const = 0;
|
|
virtual bool HasSetDeviceGammaRamp() const = 0;
|
|
DEFCONFIGMETHOD(bool, SupportsStaticControlFlow(), true);
|
|
virtual VertexCompressionType_t SupportsCompressedVertices() const = 0;
|
|
virtual int MaximumAnisotropicLevel() const = 0;
|
|
virtual int MaxTextureWidth() const = 0;
|
|
virtual int MaxTextureHeight() const = 0;
|
|
virtual int TextureMemorySize() const = 0;
|
|
virtual bool SupportsMipmappedCubemaps() const = 0;
|
|
|
|
virtual int NumVertexShaderConstants() const = 0;
|
|
virtual int NumPixelShaderConstants() const = 0;
|
|
virtual int MaxNumLights() const = 0;
|
|
virtual int MaxTextureAspectRatio() const = 0;
|
|
virtual int MaxVertexShaderBlendMatrices() const = 0;
|
|
virtual int MaxUserClipPlanes() const = 0;
|
|
virtual bool UseFastClipping() const = 0;
|
|
|
|
DEFCONFIGMETHOD(int, GetDXSupportLevel(), 98);
|
|
virtual const char* GetShaderDLLName() const = 0;
|
|
|
|
virtual bool ReadPixelsFromFrontBuffer() const = 0;
|
|
|
|
virtual bool PreferDynamicTextures() const = 0;
|
|
|
|
DEFCONFIGMETHOD(bool, SupportsHDR(), true);
|
|
|
|
virtual bool NeedsAAClamp() const = 0;
|
|
virtual bool NeedsATICentroidHack() const = 0;
|
|
|
|
virtual int GetMaxDXSupportLevel() const = 0;
|
|
|
|
virtual bool SpecifiesFogColorInLinearSpace() const = 0;
|
|
|
|
DEFCONFIGMETHOD(bool, SupportsSRGB(), true);
|
|
DEFCONFIGMETHOD(bool, FakeSRGBWrite(), false);
|
|
DEFCONFIGMETHOD(bool, CanDoSRGBReadFromRTs(), true);
|
|
|
|
virtual bool SupportsGLMixedSizeTargets() const = 0;
|
|
|
|
virtual bool IsAAEnabled() const = 0;
|
|
|
|
virtual int GetVertexSamplerCount() const = 0;
|
|
virtual int GetMaxVertexTextureDimension() const = 0;
|
|
|
|
virtual int MaxTextureDepth() const = 0;
|
|
|
|
virtual HDRType_t GetHDRType() const = 0;
|
|
virtual HDRType_t GetHardwareHDRType() const = 0;
|
|
|
|
virtual bool SupportsStreamOffset() const = 0;
|
|
|
|
virtual int StencilBufferBits() const = 0;
|
|
virtual int MaxViewports() const = 0;
|
|
|
|
virtual void OverrideStreamOffsetSupport(bool bOverrideEnabled, bool bEnableSupport) = 0;
|
|
|
|
virtual ShadowFilterMode_t GetShadowFilterMode(bool bForceLowQualityShadows, bool bPS30) const = 0;
|
|
|
|
virtual int NeedsShaderSRGBConversion() const = 0;
|
|
|
|
DEFCONFIGMETHOD(bool, UsesSRGBCorrectBlending(), IsX360());
|
|
|
|
virtual bool HasFastVertexTextures() const = 0;
|
|
virtual int MaxHWMorphBatchCount() const = 0;
|
|
|
|
virtual bool SupportsHDRMode(HDRType_t nHDRMode) const = 0;
|
|
|
|
virtual bool GetHDREnabled(void) const = 0;
|
|
virtual void SetHDREnabled(bool bEnable) = 0;
|
|
|
|
virtual bool SupportsBorderColor(void) const = 0;
|
|
virtual bool SupportsFetch4(void) const = 0;
|
|
|
|
virtual float GetShadowDepthBias() const = 0;
|
|
virtual float GetShadowSlopeScaleDepthBias() const = 0;
|
|
|
|
virtual bool PreferZPrepass() const = 0;
|
|
|
|
virtual bool SuppressPixelShaderCentroidHackFixup() const = 0;
|
|
virtual bool PreferTexturesInHWMemory() const = 0;
|
|
virtual bool PreferHardwareSync() const = 0;
|
|
virtual bool ActualHasFastVertexTextures() const = 0;
|
|
|
|
virtual bool SupportsShadowDepthTextures(void) const = 0;
|
|
virtual ImageFormat GetShadowDepthTextureFormat(void) const = 0;
|
|
virtual ImageFormat GetHighPrecisionShadowDepthTextureFormat(void) const = 0;
|
|
virtual ImageFormat GetNullTextureFormat(void) const = 0;
|
|
virtual int GetMinDXSupportLevel() const = 0;
|
|
virtual bool IsUnsupported() const = 0;
|
|
|
|
virtual float GetLightMapScaleFactor() const = 0;
|
|
|
|
virtual bool SupportsCascadedShadowMapping() const = 0;
|
|
virtual CSMQualityMode_t GetCSMQuality() const = 0;
|
|
virtual bool SupportsBilinearPCFSampling() const = 0;
|
|
virtual CSMShaderMode_t GetCSMShaderMode(CSMQualityMode_t nQualityLevel) const = 0;
|
|
virtual bool GetCSMAccurateBlending(void) const = 0;
|
|
virtual void SetCSMAccurateBlending(bool bEnable) = 0;
|
|
|
|
virtual bool SupportsResolveDepth() const = 0;
|
|
virtual bool HasFullResolutionDepthTexture() const = 0;
|
|
|
|
#if defined ( STDSHADER_DBG_DLL_EXPORT ) || defined( STDSHADER_DX9_DLL_EXPORT )
|
|
inline bool SupportsPixelShaders_2_b() const { return GetDXSupportLevel() >= 92; }
|
|
inline bool SupportsPixelShaders_3_0() const { return GetDXSupportLevel() >= 95; }
|
|
#endif
|
|
|
|
inline bool ShouldAlwaysUseShaderModel2bShaders() const { return IsOpenGL(); }
|
|
inline bool PlatformRequiresNonNullPixelShaders() const { return IsOpenGL(); }
|
|
};
|
|
|
|
#endif
|