diff --git a/source/blender/draw/engines/eevee_next/eevee_instance.cc b/source/blender/draw/engines/eevee_next/eevee_instance.cc index 909d02c0cc7..0d7799759d5 100644 --- a/source/blender/draw/engines/eevee_next/eevee_instance.cc +++ b/source/blender/draw/engines/eevee_next/eevee_instance.cc @@ -472,6 +472,11 @@ void Instance::draw_viewport(DefaultFramebufferList *dfbl) ss << "Compiling Shaders (" << materials.queued_shaders_count << " remaining)"; info = ss.str(); } + else if (materials.queued_optimize_shaders_count > 0) { + std::stringstream ss; + ss << "Optimizing Shaders (" << materials.queued_optimize_shaders_count << " remaining)"; + info = ss.str(); + } } void Instance::store_metadata(RenderResult *render_result) diff --git a/source/blender/draw/engines/eevee_next/eevee_material.cc b/source/blender/draw/engines/eevee_next/eevee_material.cc index 5368c9c3900..9e661426133 100644 --- a/source/blender/draw/engines/eevee_next/eevee_material.cc +++ b/source/blender/draw/engines/eevee_next/eevee_material.cc @@ -150,6 +150,7 @@ MaterialModule::~MaterialModule() void MaterialModule::begin_sync() { queued_shaders_count = 0; + queued_optimize_shaders_count = 0; material_map_.clear(); shader_map_.clear(); @@ -172,8 +173,13 @@ MaterialPass MaterialModule::material_pass_get(Object *ob, blender_mat, ntree, pipeline_type, geometry_type, use_deferred_compilation); switch (GPU_material_status(matpass.gpumat)) { - case GPU_MAT_SUCCESS: - break; + case GPU_MAT_SUCCESS: { + /* Determine optimization status for remaining compilations counter. */ + int optimization_status = GPU_material_optimization_status(matpass.gpumat); + if (optimization_status == GPU_MAT_OPTIMIZATION_QUEUED) { + queued_optimize_shaders_count++; + } + } break; case GPU_MAT_QUEUED: queued_shaders_count++; blender_mat = (geometry_type == MAT_GEOM_VOLUME_OBJECT) ? BKE_material_default_volume() : diff --git a/source/blender/draw/engines/eevee_next/eevee_material.hh b/source/blender/draw/engines/eevee_next/eevee_material.hh index 2e31bc3f9c4..ec434f45426 100644 --- a/source/blender/draw/engines/eevee_next/eevee_material.hh +++ b/source/blender/draw/engines/eevee_next/eevee_material.hh @@ -234,6 +234,7 @@ class MaterialModule { ::Material *glossy_mat; int64_t queued_shaders_count = 0; + int64_t queued_optimize_shaders_count = 0; private: Instance &inst_;