mirror of
https://github.com/celisej567/source-engine.git
synced 2025-12-31 21:48:22 +03:00
1143 lines
22 KiB
C++
1143 lines
22 KiB
C++
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose:
|
|
//
|
|
// $NoKeywords: $
|
|
//
|
|
//===========================================================================//
|
|
|
|
#include "utlvector.h"
|
|
#include "materialsystem/imaterialsystem.h"
|
|
#include "shadersystem.h"
|
|
#include "shaderapi/ishaderutil.h"
|
|
#include "shaderapi/ishaderapi.h"
|
|
#include "materialsystem/imesh.h"
|
|
#include "tier0/dbg.h"
|
|
#include "materialsystem/idebugtextureinfo.h"
|
|
#include "materialsystem/deformations.h"
|
|
#include "meshgl.h"
|
|
#include "shaderapidevicegl.h"
|
|
#include "shaderapigl.h"
|
|
#include "shadershadowgl.h"
|
|
|
|
//-----------------------------------------------------------------------------
|
|
//
|
|
// Shader API GL
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
CShaderAPIGL::CShaderAPIGL() : m_Mesh( false )
|
|
{
|
|
}
|
|
|
|
CShaderAPIGL::~CShaderAPIGL()
|
|
{
|
|
}
|
|
|
|
|
|
bool CShaderAPIGL::DoRenderTargetsNeedSeparateDepthBuffer() const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
// Can we download textures?
|
|
bool CShaderAPIGL::CanDownloadTextures() const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
// Used to clear the transition table when we know it's become invalid.
|
|
void CShaderAPIGL::ClearSnapshots()
|
|
{
|
|
}
|
|
|
|
// Members of IMaterialSystemHardwareConfig
|
|
bool CShaderAPIGL::HasDestAlphaBuffer() const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool CShaderAPIGL::HasStencilBuffer() const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
int CShaderAPIGL::MaxViewports() const
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
int CShaderAPIGL::GetShadowFilterMode() const
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
int CShaderAPIGL::StencilBufferBits() const
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
int CShaderAPIGL::GetFrameBufferColorDepth() const
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
int CShaderAPIGL::GetSamplerCount() const
|
|
{
|
|
if ((ShaderUtil()->GetConfig().dxSupportLevel > 0) &&
|
|
(ShaderUtil()->GetConfig().dxSupportLevel < 60))
|
|
return 1;
|
|
if (( ShaderUtil()->GetConfig().dxSupportLevel >= 60 ) && ( ShaderUtil()->GetConfig().dxSupportLevel < 80 ))
|
|
return 2;
|
|
return 4;
|
|
}
|
|
|
|
bool CShaderAPIGL::HasSetDeviceGammaRamp() const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool CShaderAPIGL::SupportsCompressedTextures() const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
VertexCompressionType_t CShaderAPIGL::SupportsCompressedVertices() const
|
|
{
|
|
return VERTEX_COMPRESSION_NONE;
|
|
}
|
|
|
|
bool CShaderAPIGL::SupportsVertexAndPixelShaders() const
|
|
{
|
|
if ((ShaderUtil()->GetConfig().dxSupportLevel > 0) &&
|
|
(ShaderUtil()->GetConfig().dxSupportLevel < 80))
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
bool CShaderAPIGL::SupportsPixelShaders_1_4() const
|
|
{
|
|
if ((ShaderUtil()->GetConfig().dxSupportLevel > 0) &&
|
|
(ShaderUtil()->GetConfig().dxSupportLevel < 81))
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
bool CShaderAPIGL::SupportsPixelShaders_2_0() const
|
|
{
|
|
if ((ShaderUtil()->GetConfig().dxSupportLevel > 0) &&
|
|
(ShaderUtil()->GetConfig().dxSupportLevel < 90))
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
bool CShaderAPIGL::SupportsPixelShaders_2_b() const
|
|
{
|
|
if ((ShaderUtil()->GetConfig().dxSupportLevel > 0) &&
|
|
(ShaderUtil()->GetConfig().dxSupportLevel < 90))
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
bool CShaderAPIGL::ActuallySupportsPixelShaders_2_b() const
|
|
{
|
|
return true;
|
|
}
|
|
|
|
bool CShaderAPIGL::SupportsShaderModel_3_0() const
|
|
{
|
|
if ((ShaderUtil()->GetConfig().dxSupportLevel > 0) &&
|
|
(ShaderUtil()->GetConfig().dxSupportLevel < 95))
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
bool CShaderAPIGL::SupportsStaticControlFlow() const
|
|
{
|
|
if ( IsOpenGL() )
|
|
return false;
|
|
|
|
return SupportsVertexShaders_2_0();
|
|
}
|
|
|
|
bool CShaderAPIGL::SupportsVertexShaders_2_0() const
|
|
{
|
|
if ((ShaderUtil()->GetConfig().dxSupportLevel > 0) &&
|
|
(ShaderUtil()->GetConfig().dxSupportLevel < 90))
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
int CShaderAPIGL::MaximumAnisotropicLevel() const
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
void CShaderAPIGL::SetAnisotropicLevel( int nAnisotropyLevel )
|
|
{
|
|
}
|
|
|
|
int CShaderAPIGL::MaxTextureWidth() const
|
|
{
|
|
// Should be big enough to cover all cases
|
|
return 16384;
|
|
}
|
|
|
|
int CShaderAPIGL::MaxTextureHeight() const
|
|
{
|
|
// Should be big enough to cover all cases
|
|
return 16384;
|
|
}
|
|
|
|
int CShaderAPIGL::MaxTextureAspectRatio() const
|
|
{
|
|
// Should be big enough to cover all cases
|
|
return 16384;
|
|
}
|
|
|
|
|
|
int CShaderAPIGL::TextureMemorySize() const
|
|
{
|
|
// fake it
|
|
return 64 * 1024 * 1024;
|
|
}
|
|
|
|
int CShaderAPIGL::GetDXSupportLevel() const
|
|
{
|
|
return 90;
|
|
}
|
|
|
|
bool CShaderAPIGL::SupportsOverbright() const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool CShaderAPIGL::SupportsCubeMaps() const
|
|
{
|
|
if ((ShaderUtil()->GetConfig().dxSupportLevel > 0) &&
|
|
(ShaderUtil()->GetConfig().dxSupportLevel < 70))
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
bool CShaderAPIGL::SupportsNonPow2Textures() const
|
|
{
|
|
return true;
|
|
}
|
|
|
|
bool CShaderAPIGL::SupportsMipmappedCubemaps() const
|
|
{
|
|
if ((ShaderUtil()->GetConfig().dxSupportLevel > 0) &&
|
|
(ShaderUtil()->GetConfig().dxSupportLevel < 70))
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
int CShaderAPIGL::GetTextureStageCount() const
|
|
{
|
|
return 4;
|
|
}
|
|
|
|
int CShaderAPIGL::NumVertexShaderConstants() const
|
|
{
|
|
return 128;
|
|
}
|
|
|
|
int CShaderAPIGL::NumBooleanVertexShaderConstants() const
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
int CShaderAPIGL::NumIntegerVertexShaderConstants() const
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
int CShaderAPIGL::NumPixelShaderConstants() const
|
|
{
|
|
return 8;
|
|
}
|
|
|
|
int CShaderAPIGL::MaxNumLights() const
|
|
{
|
|
return 4;
|
|
}
|
|
|
|
bool CShaderAPIGL::SupportsSpheremapping() const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
|
|
// This is the max dx support level supported by the card
|
|
int CShaderAPIGL::GetMaxDXSupportLevel() const
|
|
{
|
|
return 90;
|
|
}
|
|
|
|
bool CShaderAPIGL::SupportsHardwareLighting() const
|
|
{
|
|
if ((ShaderUtil()->GetConfig().dxSupportLevel > 0) &&
|
|
(ShaderUtil()->GetConfig().dxSupportLevel < 70))
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
int CShaderAPIGL::MaxBlendMatrices() const
|
|
{
|
|
if ((ShaderUtil()->GetConfig().dxSupportLevel > 0) &&
|
|
(ShaderUtil()->GetConfig().dxSupportLevel < 70))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int CShaderAPIGL::MaxBlendMatrixIndices() const
|
|
{
|
|
if ((ShaderUtil()->GetConfig().dxSupportLevel > 0) &&
|
|
(ShaderUtil()->GetConfig().dxSupportLevel < 70))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int CShaderAPIGL::MaxVertexShaderBlendMatrices() const
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
int CShaderAPIGL::MaxUserClipPlanes() const
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
bool CShaderAPIGL::SpecifiesFogColorInLinearSpace() const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool CShaderAPIGL::SupportsSRGB() const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool CShaderAPIGL::FakeSRGBWrite() const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool CShaderAPIGL::CanDoSRGBReadFromRTs() const
|
|
{
|
|
return true;
|
|
}
|
|
|
|
bool CShaderAPIGL::SupportsGLMixedSizeTargets() const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
const char *CShaderAPIGL::GetHWSpecificShaderDLLName() const
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
// Sets the default *dynamic* state
|
|
void CShaderAPIGL::SetDefaultState()
|
|
{
|
|
}
|
|
|
|
|
|
// Returns the snapshot id for the shader state
|
|
StateSnapshot_t CShaderAPIGL::TakeSnapshot( )
|
|
{
|
|
StateSnapshot_t id = 0;
|
|
if (g_ShaderShadow.m_IsTranslucent)
|
|
id |= TRANSLUCENT;
|
|
if (g_ShaderShadow.m_IsAlphaTested)
|
|
id |= ALPHATESTED;
|
|
if (g_ShaderShadow.m_bUsesVertexAndPixelShaders)
|
|
id |= VERTEX_AND_PIXEL_SHADERS;
|
|
if (g_ShaderShadow.m_bIsDepthWriteEnabled)
|
|
id |= DEPTHWRITE;
|
|
return id;
|
|
}
|
|
|
|
// Returns true if the state snapshot is transparent
|
|
bool CShaderAPIGL::IsTranslucent( StateSnapshot_t id ) const
|
|
{
|
|
return (id & TRANSLUCENT) != 0;
|
|
}
|
|
|
|
bool CShaderAPIGL::IsAlphaTested( StateSnapshot_t id ) const
|
|
{
|
|
return (id & ALPHATESTED) != 0;
|
|
}
|
|
|
|
bool CShaderAPIGL::IsDepthWriteEnabled( StateSnapshot_t id ) const
|
|
{
|
|
return (id & DEPTHWRITE) != 0;
|
|
}
|
|
|
|
bool CShaderAPIGL::UsesVertexAndPixelShaders( StateSnapshot_t id ) const
|
|
{
|
|
return (id & VERTEX_AND_PIXEL_SHADERS) != 0;
|
|
}
|
|
|
|
// Gets the vertex format for a set of snapshot ids
|
|
VertexFormat_t CShaderAPIGL::ComputeVertexFormat( int numSnapshots, StateSnapshot_t* pIds ) const
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
// Gets the vertex format for a set of snapshot ids
|
|
VertexFormat_t CShaderAPIGL::ComputeVertexUsage( int numSnapshots, StateSnapshot_t* pIds ) const
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
// Uses a state snapshot
|
|
void CShaderAPIGL::UseSnapshot( StateSnapshot_t snapshot )
|
|
{
|
|
}
|
|
|
|
// Sets the color to modulate by
|
|
void CShaderAPIGL::Color3f( float r, float g, float b )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::Color3fv( float const* pColor )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::Color4f( float r, float g, float b, float a )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::Color4fv( float const* pColor )
|
|
{
|
|
}
|
|
|
|
// Faster versions of color
|
|
void CShaderAPIGL::Color3ub( unsigned char r, unsigned char g, unsigned char b )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::Color3ubv( unsigned char const* rgb )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::Color4ub( unsigned char r, unsigned char g, unsigned char b, unsigned char a )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::Color4ubv( unsigned char const* rgba )
|
|
{
|
|
}
|
|
|
|
// The shade mode
|
|
void CShaderAPIGL::ShadeMode( ShaderShadeMode_t mode )
|
|
{
|
|
}
|
|
|
|
// Binds a particular material to render with
|
|
void CShaderAPIGL::Bind( IMaterial* pMaterial )
|
|
{
|
|
}
|
|
|
|
// Cull mode
|
|
void CShaderAPIGL::CullMode( MaterialCullMode_t cullMode )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::ForceDepthFuncEquals( bool bEnable )
|
|
{
|
|
}
|
|
|
|
// Forces Z buffering on or off
|
|
void CShaderAPIGL::OverrideDepthEnable( bool bEnable, bool bDepthEnable )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::OverrideAlphaWriteEnable( bool bOverrideEnable, bool bAlphaWriteEnable )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::OverrideColorWriteEnable( bool bOverrideEnable, bool bColorWriteEnable )
|
|
{
|
|
}
|
|
|
|
//legacy fast clipping linkage
|
|
void CShaderAPIGL::SetHeightClipZ( float z )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::SetHeightClipMode( enum MaterialHeightClipMode_t heightClipMode )
|
|
{
|
|
}
|
|
|
|
// Sets the lights
|
|
void CShaderAPIGL::SetLight( int lightNum, const LightDesc_t& desc )
|
|
{
|
|
}
|
|
|
|
// Sets lighting origin for the current model
|
|
void CShaderAPIGL::SetLightingOrigin( Vector vLightingOrigin )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::SetAmbientLight( float r, float g, float b )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::SetAmbientLightCube( Vector4D cube[6] )
|
|
{
|
|
}
|
|
|
|
// Get lights
|
|
int CShaderAPIGL::GetMaxLights( void ) const
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
const LightDesc_t& CShaderAPIGL::GetLight( int lightNum ) const
|
|
{
|
|
static LightDesc_t blah;
|
|
return blah;
|
|
}
|
|
|
|
// Render state for the ambient light cube (vertex shaders)
|
|
void CShaderAPIGL::SetVertexShaderStateAmbientLightCube()
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::SetSkinningMatrices()
|
|
{
|
|
}
|
|
|
|
// Lightmap texture binding
|
|
void CShaderAPIGL::BindLightmap( TextureStage_t stage )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::BindBumpLightmap( TextureStage_t stage )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::BindFullbrightLightmap( TextureStage_t stage )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::BindWhite( TextureStage_t stage )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::BindBlack( TextureStage_t stage )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::BindGrey( TextureStage_t stage )
|
|
{
|
|
}
|
|
|
|
// Gets the lightmap dimensions
|
|
void CShaderAPIGL::GetLightmapDimensions( int *w, int *h )
|
|
{
|
|
g_pShaderUtil->GetLightmapDimensions( w, h );
|
|
}
|
|
|
|
// Special system flat normal map binding.
|
|
void CShaderAPIGL::BindFlatNormalMap( TextureStage_t stage )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::BindNormalizationCubeMap( TextureStage_t stage )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::BindSignedNormalizationCubeMap( TextureStage_t stage )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::BindFBTexture( TextureStage_t stage, int textureIndex )
|
|
{
|
|
}
|
|
|
|
// Flushes any primitives that are buffered
|
|
void CShaderAPIGL::FlushBufferedPrimitives()
|
|
{
|
|
}
|
|
|
|
// Gets the dynamic mesh; note that you've got to render the mesh
|
|
// before calling this function a second time. Clients should *not*
|
|
// call DestroyStaticMesh on the mesh returned by this call.
|
|
IMesh* CShaderAPIGL::GetDynamicMesh( IMaterial* pMaterial, int nHWSkinBoneCount, bool buffered, IMesh* pVertexOverride, IMesh* pIndexOverride )
|
|
{
|
|
return &m_Mesh;
|
|
}
|
|
|
|
IMesh* CShaderAPIGL::GetDynamicMeshEx( IMaterial* pMaterial, VertexFormat_t fmt, int nHWSkinBoneCount, bool buffered, IMesh* pVertexOverride, IMesh* pIndexOverride )
|
|
{
|
|
return &m_Mesh;
|
|
}
|
|
|
|
IMesh* CShaderAPIGL::GetFlexMesh()
|
|
{
|
|
return &m_Mesh;
|
|
}
|
|
|
|
// Begins a rendering pass that uses a state snapshot
|
|
void CShaderAPIGL::BeginPass( StateSnapshot_t snapshot )
|
|
{
|
|
}
|
|
|
|
// Renders a single pass of a material
|
|
void CShaderAPIGL::RenderPass( int nPass, int nPassCount )
|
|
{
|
|
}
|
|
|
|
// stuff related to matrix stacks
|
|
void CShaderAPIGL::MatrixMode( MaterialMatrixMode_t matrixMode )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::PushMatrix()
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::PopMatrix()
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::LoadMatrix( float *m )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::MultMatrix( float *m )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::MultMatrixLocal( float *m )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::GetMatrix( MaterialMatrixMode_t matrixMode, float *dst )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::LoadIdentity( void )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::LoadCameraToWorld( void )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::Ortho( double left, double top, double right, double bottom, double zNear, double zFar )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::PerspectiveX( double fovx, double aspect, double zNear, double zFar )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::PerspectiveOffCenterX( double fovx, double aspect, double zNear, double zFar, double bottom, double top, double left, double right )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::PickMatrix( int x, int y, int width, int height )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::Rotate( float angle, float x, float y, float z )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::Translate( float x, float y, float z )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::Scale( float x, float y, float z )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::ScaleXY( float x, float y )
|
|
{
|
|
}
|
|
|
|
// Fog methods...
|
|
void CShaderAPIGL::FogMode( MaterialFogMode_t fogMode )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::FogStart( float fStart )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::FogEnd( float fEnd )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::SetFogZ( float fogZ )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::FogMaxDensity( float flMaxDensity )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::GetFogDistances( float *fStart, float *fEnd, float *fFogZ )
|
|
{
|
|
}
|
|
|
|
|
|
void CShaderAPIGL::SceneFogColor3ub( unsigned char r, unsigned char g, unsigned char b )
|
|
{
|
|
}
|
|
|
|
|
|
void CShaderAPIGL::SceneFogMode( MaterialFogMode_t fogMode )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::GetSceneFogColor( unsigned char *rgb )
|
|
{
|
|
}
|
|
|
|
MaterialFogMode_t CShaderAPIGL::GetSceneFogMode( )
|
|
{
|
|
return MATERIAL_FOG_NONE;
|
|
}
|
|
|
|
int CShaderAPIGL::GetPixelFogCombo( )
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
void CShaderAPIGL::FogColor3f( float r, float g, float b )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::FogColor3fv( float const* rgb )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::FogColor3ub( unsigned char r, unsigned char g, unsigned char b )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::FogColor3ubv( unsigned char const* rgb )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::SetViewports( int nCount, const ShaderViewport_t* pViewports )
|
|
{
|
|
}
|
|
|
|
int CShaderAPIGL::GetViewports( ShaderViewport_t* pViewports, int nMax ) const
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
// Sets the vertex and pixel shaders
|
|
void CShaderAPIGL::SetVertexShaderIndex( int vshIndex )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::SetPixelShaderIndex( int pshIndex )
|
|
{
|
|
}
|
|
|
|
// Sets the constant registers for vertex and pixel shaders
|
|
void CShaderAPIGL::SetVertexShaderConstant( int var, float const* pVec, int numConst, bool bForce )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::SetBooleanVertexShaderConstant( int var, BOOL const* pVec, int numConst, bool bForce )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::SetIntegerVertexShaderConstant( int var, int const* pVec, int numConst, bool bForce )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::SetPixelShaderConstant( int var, float const* pVec, int numConst, bool bForce )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::SetBooleanPixelShaderConstant( int var, BOOL const* pVec, int numBools, bool bForce )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::SetIntegerPixelShaderConstant( int var, int const* pVec, int numIntVecs, bool bForce )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::InvalidateDelayedShaderConstants( void )
|
|
{
|
|
}
|
|
|
|
float CShaderAPIGL::GammaToLinear_HardwareSpecific( float fGamma ) const
|
|
{
|
|
return 0.0f;
|
|
}
|
|
|
|
float CShaderAPIGL::LinearToGamma_HardwareSpecific( float fLinear ) const
|
|
{
|
|
return 0.0f;
|
|
}
|
|
|
|
void CShaderAPIGL::SetLinearToGammaConversionTextures( ShaderAPITextureHandle_t hSRGBWriteEnabledTexture, ShaderAPITextureHandle_t hIdentityTexture )
|
|
{
|
|
}
|
|
|
|
|
|
// Returns the nearest supported format
|
|
ImageFormat CShaderAPIGL::GetNearestSupportedFormat( ImageFormat fmt, bool bFilteringRequired /* = true */ ) const
|
|
{
|
|
return fmt;
|
|
}
|
|
|
|
ImageFormat CShaderAPIGL::GetNearestRenderTargetFormat( ImageFormat fmt ) const
|
|
{
|
|
return fmt;
|
|
}
|
|
|
|
// Sets the texture state
|
|
void CShaderAPIGL::BindTexture( Sampler_t stage, ShaderAPITextureHandle_t textureHandle )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::ClearColor3ub( unsigned char r, unsigned char g, unsigned char b )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::ClearColor4ub( unsigned char r, unsigned char g, unsigned char b, unsigned char a )
|
|
{
|
|
}
|
|
|
|
// Indicates we're going to be modifying this texture
|
|
// TexImage2D, TexSubImage2D, TexWrap, TexMinFilter, and TexMagFilter
|
|
// all use the texture specified by this function.
|
|
void CShaderAPIGL::ModifyTexture( ShaderAPITextureHandle_t textureHandle )
|
|
{
|
|
}
|
|
|
|
// Texture management methods
|
|
void CShaderAPIGL::TexImage2D( int level, int cubeFace, ImageFormat dstFormat, int zOffset, int width, int height,
|
|
ImageFormat srcFormat, bool bSrcIsTiled, void *imageData )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::TexSubImage2D( int level, int cubeFace, int xOffset, int yOffset, int zOffset, int width, int height,
|
|
ImageFormat srcFormat, int srcStride, bool bSrcIsTiled, void *imageData )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::TexImageFromVTF( IVTFTexture *pVTF, int iVTFFrame )
|
|
{
|
|
}
|
|
|
|
bool CShaderAPIGL::TexLock( int level, int cubeFaceID, int xOffset, int yOffset,
|
|
int width, int height, CPixelWriter& writer )
|
|
{
|
|
return false;
|
|
}
|
|
|
|
void CShaderAPIGL::TexUnlock( )
|
|
{
|
|
}
|
|
|
|
|
|
// These are bound to the texture, not the texture environment
|
|
void CShaderAPIGL::TexMinFilter( ShaderTexFilterMode_t texFilterMode )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::TexMagFilter( ShaderTexFilterMode_t texFilterMode )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::TexWrap( ShaderTexCoordComponent_t coord, ShaderTexWrapMode_t wrapMode )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::TexSetPriority( int priority )
|
|
{
|
|
}
|
|
|
|
ShaderAPITextureHandle_t CShaderAPIGL::CreateTexture(
|
|
int width,
|
|
int height,
|
|
int depth,
|
|
ImageFormat dstImageFormat,
|
|
int numMipLevels,
|
|
int numCopies,
|
|
int flags,
|
|
const char *pDebugName,
|
|
const char *pTextureGroupName )
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
// Create a multi-frame texture (equivalent to calling "CreateTexture" multiple times, but more efficient)
|
|
void CShaderAPIGL::CreateTextures(
|
|
ShaderAPITextureHandle_t *pHandles,
|
|
int count,
|
|
int width,
|
|
int height,
|
|
int depth,
|
|
ImageFormat dstImageFormat,
|
|
int numMipLevels,
|
|
int numCopies,
|
|
int flags,
|
|
const char *pDebugName,
|
|
const char *pTextureGroupName )
|
|
{
|
|
for ( int k = 0; k < count; ++ k )
|
|
pHandles[ k ] = 0;
|
|
}
|
|
|
|
|
|
ShaderAPITextureHandle_t CShaderAPIGL::CreateDepthTexture( ImageFormat renderFormat, int width, int height, const char *pDebugName, bool bTexture )
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
void CShaderAPIGL::DeleteTexture( ShaderAPITextureHandle_t textureHandle )
|
|
{
|
|
}
|
|
|
|
bool CShaderAPIGL::IsTexture( ShaderAPITextureHandle_t textureHandle )
|
|
{
|
|
return true;
|
|
}
|
|
|
|
bool CShaderAPIGL::IsTextureResident( ShaderAPITextureHandle_t textureHandle )
|
|
{
|
|
return false;
|
|
}
|
|
|
|
// stuff that isn't to be used from within a shader
|
|
void CShaderAPIGL::ClearBuffers( bool bClearColor, bool bClearDepth, bool bClearStencil, int renderTargetWidth, int renderTargetHeight )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::ClearBuffersObeyStencil( bool bClearColor, bool bClearDepth )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::ClearBuffersObeyStencilEx( bool bClearColor, bool bClearAlpha, bool bClearDepth )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::PerformFullScreenStencilOperation( void )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::SetScissorRect( const int nLeft, const int nTop, const int nRight, const int nBottom, const bool bEnableScissor )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::ReadPixels( int x, int y, int width, int height, unsigned char *data, ImageFormat dstFormat )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::ReadPixels( Rect_t *pSrcRect, Rect_t *pDstRect, unsigned char *data, ImageFormat dstFormat, int nDstStride )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::FlushHardware()
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::ResetRenderState( bool bFullReset )
|
|
{
|
|
}
|
|
|
|
// Set the number of bone weights
|
|
void CShaderAPIGL::SetNumBoneWeights( int numBones )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::EnableHWMorphing( bool bEnable )
|
|
{
|
|
}
|
|
|
|
// Selection mode methods
|
|
int CShaderAPIGL::SelectionMode( bool selectionMode )
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
void CShaderAPIGL::SelectionBuffer( unsigned int* pBuffer, int size )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::ClearSelectionNames( )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::LoadSelectionName( int name )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::PushSelectionName( int name )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::PopSelectionName()
|
|
{
|
|
}
|
|
|
|
|
|
// Use this to get the mesh builder that allows us to modify vertex data
|
|
CMeshBuilder* CShaderAPIGL::GetVertexModifyBuilder()
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
// Board-independent calls, here to unify how shaders set state
|
|
// Implementations should chain back to IShaderUtil->BindTexture(), etc.
|
|
|
|
// Use this to begin and end the frame
|
|
void CShaderAPIGL::BeginFrame()
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::EndFrame()
|
|
{
|
|
}
|
|
|
|
// returns the current time in seconds....
|
|
double CShaderAPIGL::CurrentTime() const
|
|
{
|
|
return Sys_FloatTime();
|
|
}
|
|
|
|
// Get the current camera position in world space.
|
|
void CShaderAPIGL::GetWorldSpaceCameraPosition( float * pPos ) const
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::ForceHardwareSync( void )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::SetClipPlane( int index, const float *pPlane )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::EnableClipPlane( int index, bool bEnable )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::SetFastClipPlane( const float *pPlane )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::EnableFastClip( bool bEnable )
|
|
{
|
|
}
|
|
|
|
int CShaderAPIGL::GetCurrentNumBones( void ) const
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
bool CShaderAPIGL::IsHWMorphingEnabled( void ) const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
int CShaderAPIGL::GetCurrentLightCombo( void ) const
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
void CShaderAPIGL::GetDX9LightState( LightState_t *state ) const
|
|
{
|
|
state->m_nNumLights = 0;
|
|
state->m_bAmbientLight = false;
|
|
state->m_bStaticLightVertex = false;
|
|
state->m_bStaticLightTexel = false;
|
|
}
|
|
|
|
MaterialFogMode_t CShaderAPIGL::GetCurrentFogType( void ) const
|
|
{
|
|
return MATERIAL_FOG_NONE;
|
|
}
|
|
|
|
void CShaderAPIGL::RecordString( const char *pStr )
|
|
{
|
|
}
|
|
|
|
bool CShaderAPIGL::ReadPixelsFromFrontBuffer() const
|
|
{
|
|
return true;
|
|
}
|
|
|
|
bool CShaderAPIGL::PreferDynamicTextures() const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool CShaderAPIGL::PreferReducedFillrate() const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool CShaderAPIGL::HasProjectedBumpEnv() const
|
|
{
|
|
return true;
|
|
}
|
|
|
|
int CShaderAPIGL::GetCurrentDynamicVBSize( void )
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
void CShaderAPIGL::DestroyVertexBuffers( bool bExitingLevel )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::EvictManagedResources()
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::SetTextureTransformDimension( TextureStage_t textureStage, int dimension, bool projected )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::SetBumpEnvMatrix( TextureStage_t textureStage, float m00, float m01, float m10, float m11 )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::SyncToken( const char *pToken )
|
|
{
|
|
}
|
|
|
|
void CShaderAPIGL::GetBackBufferDimensions( int& width, int& height ) const
|
|
{
|
|
s_ShaderDeviceGL.GetBackBufferDimensions( width, height );
|
|
}
|
|
|
|
void CShaderAPIGL::GetCurrentColorCorrection( ShaderColorCorrectionInfo_t* pInfo )
|
|
{
|
|
pInfo->m_bIsEnabled = false;
|
|
pInfo->m_nLookupCount = 0;
|
|
pInfo->m_flDefaultWeight = 0.0f;
|
|
}
|