made rendering work
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#include "shadercompiler/icompiler.h"
|
||||
#include "materialsystem/compiledshadermgr.h"
|
||||
#include "tier0/lib.h"
|
||||
#include "tier2/ifilesystem.h"
|
||||
|
||||
uint32_t CCompiledShader::AllocateLump( uint32_t nSize )
|
||||
@@ -31,10 +32,10 @@ ShaderObject_t *CCompiledShader::FindShaderObject( EShaderBackend eBackend, ESha
|
||||
{
|
||||
if ( o.m_eBackend != eBackend )
|
||||
continue;
|
||||
|
||||
|
||||
if ( o.m_eStage != eStage )
|
||||
continue;
|
||||
|
||||
|
||||
return &o;
|
||||
}
|
||||
return NULL;
|
||||
@@ -43,8 +44,6 @@ ShaderObject_t *CCompiledShader::FindShaderObject( EShaderBackend eBackend, ESha
|
||||
|
||||
CCompiledShader::~CCompiledShader()
|
||||
{
|
||||
for ( auto l: m_lumps )
|
||||
V_free(l.m_pAddress);
|
||||
}
|
||||
|
||||
|
||||
@@ -73,11 +72,10 @@ void CCompiledShaderManager::WriteToFile( CCompiledShader *pShader, const char *
|
||||
{
|
||||
CreateInterfaceFn pFilesystemFactory = Sys_GetFactory("filesystem_std");
|
||||
filesystem = (IFileSystem*)pFilesystemFactory(FILESYSTEM_INTERFACE_VERSION, NULL);
|
||||
|
||||
}
|
||||
pFile = filesystem->Open(szFile, FILEMODE_WRITE);
|
||||
filesystem->Write(pFile, &stHeader, sizeof(ShaderHeader_t));
|
||||
|
||||
|
||||
// We want to get offset for the lump data
|
||||
nTotalSize += sizeof(ShaderLump_t) * pShader->m_lumps.GetSize();
|
||||
nTotalSize += sizeof(ShaderObject_t) * pShader->m_objects.GetSize();
|
||||
@@ -95,9 +93,9 @@ void CCompiledShaderManager::WriteToFile( CCompiledShader *pShader, const char *
|
||||
}
|
||||
|
||||
// ShaderObject_t
|
||||
|
||||
for ( auto o: pShader->m_objects )
|
||||
{
|
||||
filesystem->Write(pFile, &o, sizeof(o));
|
||||
|
||||
}
|
||||
|
||||
@@ -120,8 +118,14 @@ void CCompiledShaderManager::ReadFromFile( CCompiledShader *pShader, const char
|
||||
CUtlVector<ShaderObject_t> objects = {};
|
||||
CUtlVector<HostShaderLump_t> lumpsData = {};
|
||||
|
||||
if ( filesystem == NULL )
|
||||
{
|
||||
CreateInterfaceFn pFilesystemFactory = Sys_GetFactory("filesystem_std");
|
||||
filesystem = (IFileSystem*)pFilesystemFactory(FILESYSTEM_INTERFACE_VERSION, NULL);
|
||||
}
|
||||
pFile = filesystem->Open(szFile, FILEMODE_READ);
|
||||
filesystem->Read(pFile, &stHeader, sizeof(ShaderHeader_t));
|
||||
uint32_t u = filesystem->Read(pFile, &stHeader, sizeof(ShaderHeader_t));
|
||||
V_printf("Read %s %s\n", szFile, Plat_GetWorkingDir());
|
||||
|
||||
objects.Resize(stHeader.m_nNumShaders);
|
||||
lumps.Resize(stHeader.m_nNumLumps);
|
||||
@@ -140,7 +144,7 @@ void CCompiledShaderManager::ReadFromFile( CCompiledShader *pShader, const char
|
||||
|
||||
pShader->m_objects = objects;
|
||||
pShader->m_lumps = lumpsData;
|
||||
|
||||
|
||||
filesystem->Close(pFile);
|
||||
}
|
||||
|
||||
@@ -150,3 +154,4 @@ ICompiledShaderManager *CompiledShaderManager()
|
||||
static CCompiledShaderManager s_CompiledShaderManager;
|
||||
return &s_CompiledShaderManager;
|
||||
}
|
||||
EXPOSE_INTERFACE_FN(CompiledShaderManager, ICompiledShaderManager, COMPILED_SHADER_MANAGER_INTERFACE_VERSION)
|
||||
|
||||
Reference in New Issue
Block a user