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 /public/movieobjects/dmetexture.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'public/movieobjects/dmetexture.h')
| -rw-r--r-- | public/movieobjects/dmetexture.h | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/public/movieobjects/dmetexture.h b/public/movieobjects/dmetexture.h new file mode 100644 index 0000000..5b889a4 --- /dev/null +++ b/public/movieobjects/dmetexture.h @@ -0,0 +1,184 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// A class representing a procedural texture +// +//============================================================================= + +#ifndef DMETEXTURE_H +#define DMETEXTURE_H +#ifdef _WIN32 +#pragma once +#endif + +#include "datamodel/dmelement.h" +#include "materialsystem/MaterialSystemUtil.h" +#include "movieobjects/dmeimage.h" + + +//----------------------------------------------------------------------------- +// Forward declarations +//----------------------------------------------------------------------------- +class ITexture; +class IMesh; +enum ImageFormat; +class IVTFTexture; + + +//----------------------------------------------------------------------------- +// Compression types +//----------------------------------------------------------------------------- +enum DmeTextureCompress_t +{ + DMETEXTURE_COMPRESS_DEFAULT = 0, + DMETEXTURE_COMPRESS_NONE, + DMETEXTURE_COMPRESS_DXT1, + DMETEXTURE_COMPRESS_DXT5, +}; + + +//----------------------------------------------------------------------------- +// Filter types +//----------------------------------------------------------------------------- +enum DmeTextureFilter_t +{ + DMETEXTURE_FILTER_DEFAULT = 0, + DMETEXTURE_FILTER_ANISOTROPIC, + DMETEXTURE_FILTER_TRILINEAR, + DMETEXTURE_FILTER_BILINEAR, + DMETEXTURE_FILTER_POINT, +}; + + +//----------------------------------------------------------------------------- +// Mipmap types +//----------------------------------------------------------------------------- +enum DmeTextureMipmap_t +{ + DMETEXTURE_MIPMAP_DEFAULT = 0, + DMETEXTURE_MIPMAP_ALL_LEVELS, + DMETEXTURE_MIPMAP_NONE, +}; + + +//----------------------------------------------------------------------------- +// A base class for textures +//----------------------------------------------------------------------------- +class CDmeBaseTexture : public CDmElement +{ + DEFINE_ELEMENT( CDmeBaseTexture, CDmElement ); + +public: + ITexture *GetCachedTexture(); + + // Compression type + void SetCompressionType( DmeTextureCompress_t type ); + DmeTextureCompress_t GetCompressionType() const; + + // Filter type + void SetFilterType( DmeTextureFilter_t type ); + DmeTextureFilter_t GetFilterType() const; + + // Mipmap type + void SetMipmapType( DmeTextureMipmap_t type ); + DmeTextureMipmap_t GetMipmapType() const; + +public: + CDmAttributeVar<bool> m_bClampS; + CDmAttributeVar<bool> m_bClampT; + CDmAttributeVar<bool> m_bClampU; + CDmAttributeVar<bool> m_bNoDebugOverride; + CDmAttributeVar<bool> m_bNoLod; + CDmAttributeVar<bool> m_bNiceFiltered; + CDmAttributeVar<bool> m_bNormalMap; + CDmAttributeVar<float> m_flBumpScale; + +protected: + // Computes texture flags + int CalcTextureFlags( int nDepth ) const; + + // Computes the desired texture format based on flags + ImageFormat ComputeDesiredImageFormat( ImageFormat srcFormat, int nWidth, int nHeight, int nDepth, int nFlags ); + + CDmAttributeVar<int> m_nCompressType; + CDmAttributeVar<int> m_nFilterType; + CDmAttributeVar<int> m_nMipmapType; + + // Computed values + CTextureReference m_Texture; + IVTFTexture *m_pVTFTexture; + Vector m_vecReflectivity; +}; + + +//----------------------------------------------------------------------------- +// Inline methods +//----------------------------------------------------------------------------- +inline void CDmeBaseTexture::SetCompressionType( DmeTextureCompress_t type ) +{ + m_nCompressType = type; +} + +inline DmeTextureCompress_t CDmeBaseTexture::GetCompressionType() const +{ + return (DmeTextureCompress_t)m_nCompressType.Get(); +} + +inline void CDmeBaseTexture::SetFilterType( DmeTextureFilter_t type ) +{ + m_nFilterType = type; +} + +inline DmeTextureFilter_t CDmeBaseTexture::GetFilterType() const +{ + return (DmeTextureFilter_t)m_nFilterType.Get(); +} + +inline void CDmeBaseTexture::SetMipmapType( DmeTextureMipmap_t type ) +{ + m_nMipmapType = type; +} + +inline DmeTextureMipmap_t CDmeBaseTexture::GetMipmapType() const +{ + return (DmeTextureMipmap_t)m_nMipmapType.Get(); +} + + +//----------------------------------------------------------------------------- +// A class representing a texture +//----------------------------------------------------------------------------- +class CDmeTexture : public CDmeBaseTexture +{ + DEFINE_ELEMENT( CDmeTexture, CDmeBaseTexture ); + +public: + virtual void Resolve(); + +private: + // Array of images in an animated texture + CDmAttributeVarElementArray< CDmeImage > m_Images; +}; + + +//----------------------------------------------------------------------------- +// A class representing a cube texture +//----------------------------------------------------------------------------- +class CDmeCubeTexture : public CDmeBaseTexture +{ + DEFINE_ELEMENT( CDmeCubeTexture, CDmeBaseTexture ); + +public: + virtual void Resolve(); + +private: + // Array of images in an animated texture + CDmAttributeVarElementArray< CDmeImage > m_ImagesPosX; + CDmAttributeVarElementArray< CDmeImage > m_ImagesNegX; + CDmAttributeVarElementArray< CDmeImage > m_ImagesPosY; + CDmAttributeVarElementArray< CDmeImage > m_ImagesNegY; + CDmAttributeVarElementArray< CDmeImage > m_ImagesPosZ; + CDmAttributeVarElementArray< CDmeImage > m_ImagesNegZ; +}; + + +#endif // DMETEXTURE_H |