Add shader cache invalidation when using debug shader option via cmd line in Editor

This commit is contained in:
2024-07-03 12:41:29 +02:00
parent 00a9c48fec
commit 030a66c091
2 changed files with 12 additions and 1 deletions
+1 -1
View File
@@ -4,7 +4,7 @@
"Major": 1, "Major": 1,
"Minor": 9, "Minor": 9,
"Revision": 0, "Revision": 0,
"Build": 6602 "Build": 6603
}, },
"Company": "Flax", "Company": "Flax",
"Copyright": "Copyright (c) 2012-2024 Wojciech Figat. All rights reserved.", "Copyright": "Copyright (c) 2012-2024 Wojciech Figat. All rights reserved.",
@@ -7,6 +7,9 @@
#include "Engine/Core/Log.h" #include "Engine/Core/Log.h"
#include "Engine/Engine/EngineService.h" #include "Engine/Engine/EngineService.h"
#include "Engine/Engine/Globals.h" #include "Engine/Engine/Globals.h"
#if USE_EDITOR
#include "Engine/Engine/CommandLine.h"
#endif
#include "Engine/Graphics/Shaders/GPUShader.h" #include "Engine/Graphics/Shaders/GPUShader.h"
#include "Engine/Graphics/Materials/MaterialShader.h" #include "Engine/Graphics/Materials/MaterialShader.h"
#include "Engine/Particles/Graph/GPU/ParticleEmitterGraph.GPU.h" #include "Engine/Particles/Graph/GPU/ParticleEmitterGraph.GPU.h"
@@ -184,9 +187,15 @@ bool ShaderCacheManagerService::Init()
int32 ShaderCacheVersion = -1; int32 ShaderCacheVersion = -1;
int32 MaterialGraphVersion = -1; int32 MaterialGraphVersion = -1;
int32 ParticleGraphVersion = -1; int32 ParticleGraphVersion = -1;
bool ShaderDebug;
}; };
CacheVersion cacheVersion; CacheVersion cacheVersion;
const String cacheVerFile = rootDir / TEXT("CacheVersion"); const String cacheVerFile = rootDir / TEXT("CacheVersion");
#if USE_EDITOR
const bool shaderDebug = CommandLine::Options.ShaderDebug;
#else
const bool shaderDebug = false;
#endif
if (FileSystem::FileExists(cacheVerFile)) if (FileSystem::FileExists(cacheVerFile))
{ {
if (File::ReadAllBytes(cacheVerFile, (byte*)&cacheVersion, sizeof(cacheVersion))) if (File::ReadAllBytes(cacheVerFile, (byte*)&cacheVersion, sizeof(cacheVersion)))
@@ -199,6 +208,7 @@ bool ShaderCacheManagerService::Init()
|| cacheVersion.ShaderCacheVersion != GPU_SHADER_CACHE_VERSION || cacheVersion.ShaderCacheVersion != GPU_SHADER_CACHE_VERSION
|| cacheVersion.MaterialGraphVersion != MATERIAL_GRAPH_VERSION || cacheVersion.MaterialGraphVersion != MATERIAL_GRAPH_VERSION
|| cacheVersion.ParticleGraphVersion != PARTICLE_GPU_GRAPH_VERSION || cacheVersion.ParticleGraphVersion != PARTICLE_GPU_GRAPH_VERSION
|| cacheVersion.ShaderDebug != shaderDebug
) )
{ {
LOG(Warning, "Shaders cache database is invalid. Performing reset."); LOG(Warning, "Shaders cache database is invalid. Performing reset.");
@@ -216,6 +226,7 @@ bool ShaderCacheManagerService::Init()
cacheVersion.ShaderCacheVersion = GPU_SHADER_CACHE_VERSION; cacheVersion.ShaderCacheVersion = GPU_SHADER_CACHE_VERSION;
cacheVersion.MaterialGraphVersion = MATERIAL_GRAPH_VERSION; cacheVersion.MaterialGraphVersion = MATERIAL_GRAPH_VERSION;
cacheVersion.ParticleGraphVersion = PARTICLE_GPU_GRAPH_VERSION; cacheVersion.ParticleGraphVersion = PARTICLE_GPU_GRAPH_VERSION;
cacheVersion.ShaderDebug = shaderDebug;
if (File::WriteAllBytes(cacheVerFile, (byte*)&cacheVersion, sizeof(cacheVersion))) if (File::WriteAllBytes(cacheVerFile, (byte*)&cacheVersion, sizeof(cacheVersion)))
{ {
LOG(Error, "Failed to create the shaders cache database version file."); LOG(Error, "Failed to create the shaders cache database version file.");