You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
239 lines
9.0 KiB
239 lines
9.0 KiB
#ifndef MAT_STUB_H |
|
#define MAT_STUB_H |
|
#include "tier1/convar.h" |
|
#include "materialsystem/itexture.h" |
|
#include "itextureinternal.h" |
|
|
|
// ---------------------------------------------------------------------------------------- // |
|
// ITexture dummy implementation. |
|
// ---------------------------------------------------------------------------------------- // |
|
|
|
class CDummyTextureInternal : public ITextureInternal |
|
{ |
|
public: |
|
CDummyTextureInternal( const char *texture_name = "dummy_texture" ) |
|
{ |
|
Q_strncpy( m_szTextureName, texture_name, sizeof(m_szTextureName) ); |
|
} |
|
|
|
virtual void Bind( Sampler_t sampler ) {}; |
|
virtual void Bind( Sampler_t sampler1, int nFrame, Sampler_t sampler2 = (Sampler_t) -1 ) { }; |
|
|
|
// Methods associated with reference counting |
|
virtual int GetReferenceCount() { return 0; }; |
|
|
|
virtual void GetReflectivity( Vector& reflectivity ) {}; |
|
|
|
// Set this as the render target, return false for failure |
|
virtual bool SetRenderTarget( int nRenderTargetID ) { return false; }; |
|
|
|
// Releases the texture's hw memory |
|
virtual void ReleaseMemory() {}; |
|
|
|
// Called before Download() on restore. Gives render targets a change to change whether or |
|
// not they force themselves to have a separate depth buffer due to AA. |
|
virtual void OnRestore() {}; |
|
|
|
// Resets the texture's filtering and clamping mode |
|
virtual void SetFilteringAndClampingMode( bool bOnlyLodValues = false ) {}; |
|
|
|
// Used by tools.... loads up the non-fallback information about the texture |
|
virtual void Precache() {}; |
|
|
|
// Stretch blit the framebuffer into this texture. |
|
virtual void CopyFrameBufferToMe( int nRenderTargetID = 0, Rect_t *pSrcRect = NULL, Rect_t *pDstRect = NULL ) {}; |
|
virtual void CopyMeToFrameBuffer( int nRenderTargetID = 0, Rect_t *pSrcRect = NULL, Rect_t *pDstRect = NULL ) {}; |
|
|
|
// Get the shaderapi texture handle associated w/ a particular frame |
|
virtual ShaderAPITextureHandle_t GetTextureHandle( int nFrame, int nTextureChannel =0 ) { return 0; }; |
|
|
|
static void Destroy( ITextureInternal *pTexture, bool bSkipTexMgrCheck = false ) { }; |
|
|
|
// Set this as the render target, return false for failure |
|
virtual bool SetRenderTarget( int nRenderTargetID, ITexture* pDepthTexture ) { return true; }; |
|
|
|
// Bind this to a vertex texture sampler |
|
virtual void BindVertexTexture( VertexTextureSampler_t sampler, int frameNum = 0 ) {}; |
|
|
|
virtual void MarkAsPreloaded( bool bSet ) {}; |
|
virtual bool IsPreloaded() const { return true; }; |
|
|
|
virtual void MarkAsExcluded( bool bSet, int nDimensionsLimit ) {}; |
|
virtual bool UpdateExcludedState( void ) { return false; }; |
|
|
|
virtual bool IsTempRenderTarget( void ) const { return false; }; |
|
|
|
// Reload any files the texture is responsible for. |
|
virtual void ReloadFilesInList( IFileList *pFilesToReload ) { }; |
|
|
|
virtual bool AsyncReadTextureFromFile( IVTFTexture* pVTFTexture, unsigned int nAdditionalCreationFlags ) { return false; }; |
|
virtual void AsyncCancelReadTexture() {}; |
|
|
|
// Map and unmap. These can fail. And can cause a very significant perf penalty. Be very careful with them. |
|
virtual void Map( void** pOutDst, int* pOutPitch ) {}; |
|
virtual void Unmap() {}; |
|
|
|
// Texture streaming! |
|
virtual ResidencyType_t GetCurrentResidence() const { return RESIDENT_NONE; }; |
|
virtual ResidencyType_t GetTargetResidence() const { return RESIDENT_NONE; }; |
|
virtual bool MakeResident( ResidencyType_t newResidence ) { return false; }; |
|
virtual void UpdateLodBias() {}; |
|
|
|
// Various texture polling methods |
|
virtual const char *GetName( void ) const { return m_szTextureName; } |
|
virtual int GetMappingWidth() const { return 512; } |
|
virtual int GetMappingHeight() const { return 512; } |
|
virtual int GetActualWidth() const { return 512; } |
|
virtual int GetActualHeight() const { return 512; } |
|
virtual int GetNumAnimationFrames() const { return 0; } |
|
virtual bool IsTranslucent() const { return false; } |
|
virtual bool IsMipmapped() const { return false; } |
|
|
|
virtual void GetLowResColorSample( float s, float t, float *color ) const {} |
|
|
|
virtual void *GetResourceData( uint32 eDataType, size_t *pNumBytes ) const |
|
{ |
|
return NULL; |
|
} |
|
|
|
// Methods associated with reference count |
|
virtual void IncrementReferenceCount( void ) {} |
|
virtual void DecrementReferenceCount( void ) {} |
|
|
|
// Used to modify the texture bits (procedural textures only) |
|
virtual void SetTextureRegenerator( ITextureRegenerator *pTextureRegen ) {} |
|
|
|
// Reconstruct the texture bits in HW memory |
|
|
|
// If rect is not specified, reconstruct all bits, otherwise just |
|
// reconstruct a subrect. |
|
virtual void Download( Rect_t *pRect = 0, int nAdditionalCreationFlags = 0 ) {} |
|
|
|
// Uses for stats. . .get the approximate size of the texture in it's current format. |
|
virtual int GetApproximateVidMemBytes( void ) const { return 64; } |
|
|
|
virtual bool IsError() const { return false; } |
|
|
|
virtual ITexture *GetEmbeddedTexture( int nIndex ) { return NULL; } |
|
|
|
// For volume textures |
|
virtual bool IsVolumeTexture() const { return false; } |
|
virtual int GetMappingDepth() const { return 1; } |
|
virtual int GetActualDepth() const { return 1; } |
|
|
|
virtual ImageFormat GetImageFormat() const { return IMAGE_FORMAT_RGBA8888; } |
|
virtual NormalDecodeMode_t GetNormalDecodeMode() const { return NORMAL_DECODE_NONE; } |
|
|
|
// Various information about the texture |
|
virtual bool IsRenderTarget() const { return false; } |
|
virtual bool IsCubeMap() const { return false; } |
|
virtual bool IsNormalMap() const { return false; } |
|
virtual bool IsProcedural() const { return false; } |
|
virtual void DeleteIfUnreferenced() {} |
|
|
|
virtual void SwapContents( ITexture *pOther ) {} |
|
|
|
virtual unsigned int GetFlags( void ) const { return 0; } |
|
virtual void ForceLODOverride( int iNumLodsOverrideUpOrDown ) { NULL; } |
|
|
|
#if defined( _X360 ) |
|
virtual bool ClearTexture( int r, int g, int b, int a ) { return true; } |
|
virtual bool CreateRenderTargetSurface( int width, int height, ImageFormat format, bool bSameAsTexture ) { return true; } |
|
#endif |
|
|
|
// Save texture to a file. |
|
virtual bool SaveToFile( const char *fileName ) { return false; } |
|
|
|
void CopyToStagingTexture( ITexture* pDstTex ) {} |
|
|
|
virtual void SetErrorTexture( bool bIsErrorTexture ) { } |
|
|
|
private: |
|
char m_szTextureName[128]; |
|
}; |
|
|
|
class CDummyTexture : public ITexture |
|
{ |
|
public: |
|
// Various texture polling methods |
|
virtual const char *GetName( void ) const { return "DummyTexture"; } |
|
virtual int GetMappingWidth() const { return 512; } |
|
virtual int GetMappingHeight() const { return 512; } |
|
virtual int GetActualWidth() const { return 512; } |
|
virtual int GetActualHeight() const { return 512; } |
|
virtual int GetNumAnimationFrames() const { return 0; } |
|
virtual bool IsTranslucent() const { return false; } |
|
virtual bool IsMipmapped() const { return false; } |
|
|
|
virtual void GetLowResColorSample( float s, float t, float *color ) const {} |
|
|
|
// Gets texture resource data of the specified type. |
|
// Params: |
|
// eDataType type of resource to retrieve. |
|
// pnumBytes on return is the number of bytes available in the read-only data buffer or is undefined |
|
// Returns: |
|
// pointer to the resource data, or NULL |
|
virtual void *GetResourceData( uint32 eDataType, size_t *pNumBytes ) const |
|
{ |
|
return NULL; |
|
} |
|
|
|
|
|
// Methods associated with reference count |
|
virtual void IncrementReferenceCount( void ) {} |
|
virtual void DecrementReferenceCount( void ) {} |
|
|
|
// Used to modify the texture bits (procedural textures only) |
|
virtual void SetTextureRegenerator( ITextureRegenerator *pTextureRegen ) {} |
|
|
|
// Reconstruct the texture bits in HW memory |
|
|
|
// If rect is not specified, reconstruct all bits, otherwise just |
|
// reconstruct a subrect. |
|
virtual void Download( Rect_t *pRect = 0, int nAdditionalCreationFlags = 0 ) {} |
|
|
|
// Uses for stats. . .get the approximate size of the texture in it's current format. |
|
virtual int GetApproximateVidMemBytes( void ) const { return 64; } |
|
|
|
virtual bool IsError() const { return false; } |
|
|
|
virtual ITexture *GetEmbeddedTexture( int nIndex ) { return NULL; } |
|
|
|
// For volume textures |
|
virtual bool IsVolumeTexture() const { return false; } |
|
virtual int GetMappingDepth() const { return 1; } |
|
virtual int GetActualDepth() const { return 1; } |
|
|
|
virtual ImageFormat GetImageFormat() const { return IMAGE_FORMAT_RGBA8888; } |
|
virtual NormalDecodeMode_t GetNormalDecodeMode() const { return NORMAL_DECODE_NONE; } |
|
|
|
// Various information about the texture |
|
virtual bool IsRenderTarget() const { return false; } |
|
virtual bool IsCubeMap() const { return false; } |
|
virtual bool IsNormalMap() const { return false; } |
|
virtual bool IsProcedural() const { return false; } |
|
virtual void DeleteIfUnreferenced() {} |
|
|
|
virtual void SwapContents( ITexture *pOther ) {} |
|
|
|
virtual unsigned int GetFlags( void ) const { return 0; } |
|
virtual void ForceLODOverride( int iNumLodsOverrideUpOrDown ) { NULL; } |
|
|
|
#if defined( _X360 ) |
|
virtual bool ClearTexture( int r, int g, int b, int a ) { return true; } |
|
virtual bool CreateRenderTargetSurface( int width, int height, ImageFormat format, bool bSameAsTexture ) { return true; } |
|
#endif |
|
|
|
// Save texture to a file. |
|
virtual bool SaveToFile( const char *fileName ) { return false; } |
|
|
|
void CopyToStagingTexture( ITexture* pDstTex ) {} |
|
|
|
virtual void SetErrorTexture( bool bIsErrorTexture ) { } |
|
}; |
|
|
|
extern CDummyTexture g_DummyTexture; |
|
|
|
|
|
|
|
#endif // MAT_STUB_H
|
|
|