Add GPU_ENABLE_PRELOADING_RESOURCES and use it on Web/Android/iOS to reduce engine resources preloading

This commit is contained in:
2026-02-20 23:45:56 +01:00
parent 894cf2c886
commit 31b5685251
7 changed files with 32 additions and 9 deletions
+5
View File
@@ -64,6 +64,11 @@
#define GPU_ENABLE_ASYNC_RESOURCES_CREATION 1
#endif
// Enable/disable preloading GPU resources (eg. shaders, default assets)
#ifndef GPU_ENABLE_PRELOADING_RESOURCES
#define GPU_ENABLE_PRELOADING_RESOURCES 1
#endif
// Enable/disable force shaders recompilation
#define GPU_FORCE_RECOMPILE_SHADERS 0
@@ -38,5 +38,6 @@
#define GPU_ALLOW_TESSELLATION_SHADERS 0 // Tess on mobile is not well supported
#define GPU_ALLOW_GEOMETRY_SHADERS 0 // Don't even try GS on mobile
#define GPU_ENABLE_PRELOADING_RESOURCES 0 // Don't preload things unless needed
#endif
+1
View File
@@ -18,6 +18,7 @@
#define GPU_ALLOW_TESSELLATION_SHADERS 0
#define GPU_ALLOW_GEOMETRY_SHADERS 0
#define GPU_ALLOW_PROFILE_EVENTS 0
#define GPU_ENABLE_PRELOADING_RESOURCES 0 // Don't preload things unless needed
// Threading is optional
#ifdef __EMSCRIPTEN_PTHREADS__
+1
View File
@@ -21,5 +21,6 @@
#define GPU_ALLOW_TESSELLATION_SHADERS 0 // MoltenVK has artifacts when using tess so disable it
#define GPU_ALLOW_GEOMETRY_SHADERS 0 // Don't even try GS on mobile
#define GPU_ENABLE_PRELOADING_RESOURCES 0 // Don't preload things unless needed
#endif
+2
View File
@@ -105,6 +105,7 @@ bool RendererService::Init()
return false;
}
#if GPU_ENABLE_PRELOADING_RESOURCES
// Init child services
for (int32 i = 0; i < PassList.Count(); i++)
{
@@ -114,6 +115,7 @@ bool RendererService::Init()
return true;
}
}
#endif
return false;
}
+10 -2
View File
@@ -21,7 +21,9 @@
class FLAXENGINE_API RendererPassBase : public Object
{
protected:
#if !GPU_ENABLE_PRELOADING_RESOURCES
bool _lazyInit = true;
#endif
bool _hasValidResources;
/// <summary>
@@ -66,7 +68,13 @@ protected:
{
if (_hasValidResources)
return false;
#if !GPU_ENABLE_PRELOADING_RESOURCES
if (_lazyInit)
{
_lazyInit = false;
Init();
}
#endif
const bool setupFailed = setupResources();
_hasValidResources = !setupFailed;
return setupFailed;
+12 -7
View File
@@ -68,6 +68,15 @@ TerrainManagerService TerrainManagerServiceInstance;
MaterialBase* TerrainManager::GetDefaultTerrainMaterial()
{
if (!DefaultTerrainMaterial)
{
// Load default terrain material as fallback
DefaultTerrainMaterial = Content::LoadAsyncInternal<MaterialBase>(TEXT("Engine/DefaultTerrainMaterial"));
if (DefaultTerrainMaterial == nullptr)
{
LOG(Warning, "Default terrain material is missing.");
}
}
return DefaultTerrainMaterial.Get();
}
@@ -221,13 +230,9 @@ bool TerrainManager::GetChunkGeometry(DrawCall& drawCall, int32 chunkSize, int32
bool TerrainManagerService::Init()
{
// Load default terrain material as fallback
DefaultTerrainMaterial = Content::LoadAsyncInternal<MaterialBase>(TEXT("Engine/DefaultTerrainMaterial"));
if (DefaultTerrainMaterial == nullptr)
{
LOG(Warning, "Default terrain material is missing.");
}
#if GPU_ENABLE_PRELOADING_RESOURCES
TerrainManager::GetDefaultTerrainMaterial();
#endif
return false;
}