blob: 25f51b4b73d012fa6ef731b79214b89bf95d9f1e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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;
}
|