summaryrefslogtreecommitdiff
path: root/utils/xbox/MakeGameData/MakeShaders.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils/xbox/MakeGameData/MakeShaders.cpp')
-rw-r--r--utils/xbox/MakeGameData/MakeShaders.cpp52
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