From 3bf9df6b2785fa6d951086978a3e66f49427166a Mon Sep 17 00:00:00 2001 From: FluorescentCIAAfricanAmerican <0934gj3049fk@protonmail.com> Date: Wed, 22 Apr 2020 12:56:21 -0400 Subject: 1 --- utils/xbox/MakeGameData/MakeShaders.cpp | 52 +++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 utils/xbox/MakeGameData/MakeShaders.cpp (limited to 'utils/xbox/MakeGameData/MakeShaders.cpp') 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 -- cgit v1.2.3