summaryrefslogtreecommitdiff
path: root/materialsystem/shaderapidx9/ShaderShadowDx10.h
diff options
context:
space:
mode:
Diffstat (limited to 'materialsystem/shaderapidx9/ShaderShadowDx10.h')
-rw-r--r--materialsystem/shaderapidx9/ShaderShadowDx10.h176
1 files changed, 176 insertions, 0 deletions
diff --git a/materialsystem/shaderapidx9/ShaderShadowDx10.h b/materialsystem/shaderapidx9/ShaderShadowDx10.h
new file mode 100644
index 0000000..ff987c0
--- /dev/null
+++ b/materialsystem/shaderapidx9/ShaderShadowDx10.h
@@ -0,0 +1,176 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//
+//===========================================================================//
+
+#ifndef SHADERSHADOWDX10_H
+#define SHADERSHADOWDX10_H
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "shaderapi/ishaderapi.h"
+#include "shaderapi/ishadershadow.h"
+
+
+//-----------------------------------------------------------------------------
+// The empty shader shadow
+//-----------------------------------------------------------------------------
+class CShaderShadowDx10 : public IShaderShadow
+{
+public:
+ CShaderShadowDx10();
+ virtual ~CShaderShadowDx10();
+
+ // Sets the default *shadow* state
+ void SetDefaultState();
+
+ // Methods related to depth buffering
+ void DepthFunc( ShaderDepthFunc_t depthFunc );
+ void EnableDepthWrites( bool bEnable );
+ void EnableDepthTest( bool bEnable );
+ void EnablePolyOffset( PolygonOffsetMode_t nOffsetMode );
+
+ // Suppresses/activates color writing
+ void EnableColorWrites( bool bEnable );
+ void EnableAlphaWrites( bool bEnable );
+
+ // Methods related to alpha blending
+ void EnableBlending( bool bEnable );
+ void BlendFunc( ShaderBlendFactor_t srcFactor, ShaderBlendFactor_t dstFactor );
+
+ // Alpha testing
+ void EnableAlphaTest( bool bEnable );
+ void AlphaFunc( ShaderAlphaFunc_t alphaFunc, float alphaRef /* [0-1] */ );
+
+ // Wireframe/filled polygons
+ void PolyMode( ShaderPolyModeFace_t face, ShaderPolyMode_t polyMode );
+
+ // Back face culling
+ void EnableCulling( bool bEnable );
+
+ // constant color + transparency
+ void EnableConstantColor( bool bEnable );
+
+ // Indicates the vertex format for use with a vertex shader
+ // The flags to pass in here come from the VertexFormatFlags_t enum
+ // If pTexCoordDimensions is *not* specified, we assume all coordinates
+ // are 2-dimensional
+ void VertexShaderVertexFormat( unsigned int flags,
+ int numTexCoords, int* pTexCoordDimensions,
+ int userDataSize );
+
+ // Indicates we're going to light the model
+ void EnableLighting( bool bEnable );
+ void EnableSpecular( bool bEnable );
+
+ // vertex blending
+ void EnableVertexBlend( bool bEnable );
+
+ // per texture unit stuff
+ void OverbrightValue( TextureStage_t stage, float value );
+ void EnableTexture( Sampler_t stage, bool bEnable );
+ void EnableTexGen( TextureStage_t stage, bool bEnable );
+ void TexGen( TextureStage_t stage, ShaderTexGenParam_t param );
+
+ // alternate method of specifying per-texture unit stuff, more flexible and more complicated
+ // Can be used to specify different operation per channel (alpha/color)...
+ void EnableCustomPixelPipe( bool bEnable );
+ void CustomTextureStages( int stageCount );
+ void CustomTextureOperation( TextureStage_t stage, ShaderTexChannel_t channel,
+ ShaderTexOp_t op, ShaderTexArg_t arg1, ShaderTexArg_t arg2 );
+
+ // indicates what per-vertex data we're providing
+ void DrawFlags( unsigned int drawFlags );
+
+ // A simpler method of dealing with alpha modulation
+ void EnableAlphaPipe( bool bEnable );
+ void EnableConstantAlpha( bool bEnable );
+ void EnableVertexAlpha( bool bEnable );
+ void EnableTextureAlpha( TextureStage_t stage, bool bEnable );
+
+ // GR - Separate alpha blending
+ void EnableBlendingSeparateAlpha( bool bEnable );
+ void BlendFuncSeparateAlpha( ShaderBlendFactor_t srcFactor, ShaderBlendFactor_t dstFactor );
+
+ // Sets the vertex and pixel shaders
+ void SetVertexShader( const char *pFileName, int vshIndex );
+ void SetPixelShader( const char *pFileName, int pshIndex );
+
+ // Convert from linear to gamma color space on writes to frame buffer.
+ void EnableSRGBWrite( bool bEnable )
+ {
+ }
+
+ void EnableSRGBRead( Sampler_t stage, bool bEnable )
+ {
+ }
+
+ virtual void FogMode( ShaderFogMode_t fogMode )
+ {
+ }
+ virtual void SetDiffuseMaterialSource( ShaderMaterialSource_t materialSource )
+ {
+ }
+
+ virtual void SetMorphFormat( MorphFormat_t flags )
+ {
+ }
+
+ virtual void EnableStencil( bool bEnable )
+ {
+ }
+ virtual void StencilFunc( ShaderStencilFunc_t stencilFunc )
+ {
+ }
+ virtual void StencilPassOp( ShaderStencilOp_t stencilOp )
+ {
+ }
+ virtual void StencilFailOp( ShaderStencilOp_t stencilOp )
+ {
+ }
+ virtual void StencilDepthFailOp( ShaderStencilOp_t stencilOp )
+ {
+ }
+ virtual void StencilReference( int nReference )
+ {
+ }
+ virtual void StencilMask( int nMask )
+ {
+ }
+ virtual void StencilWriteMask( int nMask )
+ {
+ }
+
+ virtual void DisableFogGammaCorrection( bool bDisable )
+ {
+ //FIXME: empty for now.
+ }
+ virtual void FogMode( ShaderFogMode_t fogMode, bool bVertexFog )
+ {
+ //FIXME: empty for now.
+ }
+
+ // Alpha to coverage
+ void EnableAlphaToCoverage( bool bEnable );
+
+ void SetShadowDepthFiltering( Sampler_t stage );
+
+ // More alpha blending state
+ void BlendOp( ShaderBlendOp_t blendOp );
+ void BlendOpSeparateAlpha( ShaderBlendOp_t blendOp );
+
+ bool m_IsTranslucent;
+ bool m_IsAlphaTested;
+ bool m_bIsDepthWriteEnabled;
+ bool m_bUsesVertexAndPixelShaders;
+};
+
+
+extern CShaderShadowDx10* g_pShaderShadowDx10;
+
+#endif // SHADERSHADOWDX10_H \ No newline at end of file