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 /utils/xbox/MakeGameData/MakeShaders.cpp | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'utils/xbox/MakeGameData/MakeShaders.cpp')
| -rw-r--r-- | utils/xbox/MakeGameData/MakeShaders.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/utils/xbox/MakeGameData/MakeShaders.cpp b/utils/xbox/MakeGameData/MakeShaders.cpp new file mode 100644 index 0000000..25f51b4 --- /dev/null +++ b/utils/xbox/MakeGameData/MakeShaders.cpp @@ -0,0 +1,52 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: .360 file creation of shaders +// +//=====================================================================================// + +#include "MakeGameData.h" +#include "materialsystem/shader_vcs_version.h" + +#define SHADER_FILE_THRESHOLD 32*1024 + +//----------------------------------------------------------------------------- +// Get the preload data for a vcs file +//----------------------------------------------------------------------------- +bool GetPreloadData_VCS( const char *pFilename, CUtlBuffer &fileBufferIn, CUtlBuffer &preloadBufferOut ) +{ + ShaderHeader_t *pHeader = (ShaderHeader_t *)fileBufferIn.Base(); + + unsigned int version = BigLong( pHeader->m_nVersion ); + + // ensure caller's buffer is clean + // caller determines preload size, via TellMaxPut() + preloadBufferOut.Purge(); + + unsigned int nPreloadSize; + if ( fileBufferIn.TellMaxPut() <= SHADER_FILE_THRESHOLD ) + { + // include the whole file + nPreloadSize = fileBufferIn.TellMaxPut(); + } + else + { + if ( version < SHADER_VCS_VERSION_NUMBER ) + { + // not supporting old versions + return false; + } + + if ( version != SHADER_VCS_VERSION_NUMBER ) + { + // bad version + Msg( "Can't preload: '%s', expecting version %d got version %d\n", pFilename, SHADER_VCS_VERSION_NUMBER, version ); + return false; + } + + nPreloadSize = sizeof( ShaderHeader_t ) + BigLong( pHeader->m_nNumStaticCombos ) * sizeof( StaticComboRecord_t ); + } + + preloadBufferOut.Put( fileBufferIn.Base(), nPreloadSize ); + + return true; +}
\ No newline at end of file |