diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /materialsystem/shaderapidx9/shaderapidx8.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'materialsystem/shaderapidx9/shaderapidx8.h')
| -rw-r--r-- | materialsystem/shaderapidx9/shaderapidx8.h | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/materialsystem/shaderapidx9/shaderapidx8.h b/materialsystem/shaderapidx9/shaderapidx8.h new file mode 100644 index 0000000..fae297b --- /dev/null +++ b/materialsystem/shaderapidx9/shaderapidx8.h @@ -0,0 +1,118 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +// +//===========================================================================// + +#ifndef SHADERAPIDX8_H +#define SHADERAPIDX8_H + +#include "shaderapibase.h" +#include "shaderapi/ishadershadow.h" +#include "locald3dtypes.h" + +//----------------------------------------------------------------------------- +// Vendor-specific defines +//----------------------------------------------------------------------------- +#define ATI_FETCH4_ENABLE MAKEFOURCC('G','E','T','4') +#define ATI_FETCH4_DISABLE MAKEFOURCC('G','E','T','1') +#define ATISAMP_FETCH4 D3DSAMP_MIPMAPLODBIAS + +//----------------------------------------------------------------------------- +// Forward declarations +//----------------------------------------------------------------------------- +class CMeshBase; +class CMeshBuilder; +struct ShadowState_t; +class IMaterialInternal; + + +//----------------------------------------------------------------------------- +// State that matters to buffered meshes... (for debugging only) +//----------------------------------------------------------------------------- +struct BufferedState_t +{ + D3DXMATRIX m_Transform[3]; + D3DVIEWPORT9 m_Viewport; + int m_BoundTexture[16]; + void *m_VertexShader; + void *m_PixelShader; +}; + + +//----------------------------------------------------------------------------- +// The DX8 shader API +//----------------------------------------------------------------------------- +// FIXME: Remove this! Either move them into CShaderAPIBase or CShaderAPIDx8 +class IShaderAPIDX8 : public CShaderAPIBase +{ +public: + // Draws the mesh + virtual void DrawMesh( CMeshBase *pMesh ) = 0; + + // Draw the mesh with the currently bound vertex and index buffers. + virtual void DrawWithVertexAndIndexBuffers( void ) = 0; + + // modifies the vertex data when necessary + virtual void ModifyVertexData( ) = 0; + + // Gets the current buffered state... (debug only) + virtual void GetBufferedState( BufferedState_t &state ) = 0; + + // Gets the current backface cull state.... + virtual D3DCULL GetCullMode() const = 0; + + // Measures fill rate + virtual void ComputeFillRate() = 0; + + // Selection mode methods + virtual bool IsInSelectionMode() const = 0; + + // We hit somefin in selection mode + virtual void RegisterSelectionHit( float minz, float maxz ) = 0; + + // Get the currently bound material + virtual IMaterialInternal* GetBoundMaterial() = 0; + + // These methods are called by the transition table + // They depend on dynamic state so can't exist inside the transition table + virtual void ApplyZBias( const ShadowState_t &shaderState ) = 0; + virtual void ApplyTextureEnable( const ShadowState_t &state, int stage ) = 0; + virtual void ApplyCullEnable( bool bEnable ) = 0; + virtual void SetVertexBlendState( int numBones ) = 0; + virtual void ApplyFogMode( ShaderFogMode_t fogMode, bool bSRGBWritesEnabled, bool bDisableGammaCorrection ) = 0; + + virtual int GetActualTextureStageCount() const = 0; + virtual int GetActualSamplerCount() const = 0; + + virtual bool IsRenderingMesh() const = 0; + + // Fog methods... + virtual void FogMode( MaterialFogMode_t fogMode ) = 0; + + virtual int GetCurrentFrameCounter( void ) const = 0; + + // Workaround hack for visualization of selection mode + virtual void SetupSelectionModeVisualizationState() = 0; + + virtual bool UsingSoftwareVertexProcessing() const = 0; + + //notification that the SRGB write state is being changed + virtual void EnabledSRGBWrite( bool bEnabled ) = 0; + + // Alpha to coverage + virtual void ApplyAlphaToCoverage( bool bEnable ) = 0; + +#if defined( _X360 ) + virtual void ApplySRGBReadState( int iTextureStage, bool bSRGBReadEnabled ) = 0; //360 needs to rebind the texture over again instead of setting a sampler state +#endif + + virtual void PrintfVA( char *fmt, va_list vargs ) = 0; + virtual void Printf( PRINTF_FORMAT_STRING const char *fmt, ... ) = 0; + virtual float Knob( char *knobname, float *setvalue = NULL ) = 0; +}; + + +#endif // SHADERAPIDX8_H |