Merge branch 'blender-v4.3-release'

This commit is contained in:
Miguel Pozo
2024-10-03 18:35:58 +02:00
4 changed files with 24 additions and 8 deletions

View File

@@ -8822,7 +8822,7 @@ class VIEW3D_MT_greasepencil_edit_context_menu(Menu):
col.operator("transform.shear", text="Shear")
col.operator("transform.bend", text="Bend")
col.operator("transform.push_pull", text="Push/Pull")
col.operator("transform.transform", text="Radius").mode = 'GPENCIL_SHRINKFATTEN'
col.operator("transform.transform", text="Shrink/Fatten").mode = 'CURVE_SHRINKFATTEN'
col.operator("grease_pencil.stroke_smooth", text="Smooth Points")
col.separator()
@@ -8864,7 +8864,7 @@ class VIEW3D_MT_greasepencil_edit_context_menu(Menu):
# Deform Operators
col.operator("grease_pencil.stroke_smooth", text="Smooth")
col.operator("transform.transform", text="Radius").mode = 'CURVE_SHRINKFATTEN'
col.operator("transform.transform", text="Shrink/Fatten").mode = 'CURVE_SHRINKFATTEN'
col.separator()

View File

@@ -418,10 +418,6 @@ void Instance::render_sample()
/* Motion blur may need to do re-sync after a certain number of sample. */
if (!is_viewport() && sampling.do_render_sync()) {
render_sync();
if (!info_.empty()) {
printf("%s", info_.c_str());
info_ = "";
}
}
DebugScope debug_scope(debug_scope_render_sample, "EEVEE.render_sample");
@@ -563,6 +559,13 @@ void Instance::render_frame(RenderEngine *engine, RenderLayer *render_layer, con
this->film.cryptomatte_sort();
this->render_read_result(render_layer, view_name);
if (!info_.empty()) {
RE_engine_set_error_message(
engine, RPT_("Errors during render. See the System Console for more info."));
printf("%s", info_.c_str());
info_ = "";
}
}
void Instance::draw_viewport()

View File

@@ -239,8 +239,11 @@ class Instance {
* NOTE: When calling this function, `msg` should be a string literal. */
template<typename... Args> void info_append_i18n(const char *msg, Args &&...args)
{
info_ += fmt::format(RPT_(msg), args...);
info_ += "\n";
std::string fmt_msg = fmt::format(RPT_(msg), args...) + "\n";
/* Don't print the same error twice. */
if (info_ != fmt_msg && !BLI_str_endswith(info_.c_str(), fmt_msg.c_str())) {
info_ += fmt_msg;
}
}
const char *info_get()

View File

@@ -1150,6 +1150,7 @@ bool ShadowModule::shadow_update_finished(int loop_count)
if (loop_count >= (SHADOW_MAX_TILEMAP * SHADOW_TILEMAP_LOD) / SHADOW_VIEW_MAX) {
/* We have reach the maximum theoretical number of updates.
* This can indicate a problem in the statistic buffer read-back or update tagging. */
inst_.info_append_i18n("Error: Reached max shadow updates.");
return true;
}
@@ -1170,6 +1171,15 @@ bool ShadowModule::shadow_update_finished(int loop_count)
statistics_buf_.current().async_flush_to_host();
statistics_buf_.current().read();
ShadowStatistics stats = statistics_buf_.current();
if (stats.page_used_count > shadow_page_len_) {
inst_.info_append_i18n(
"Error: Shadow buffer full, may result in missing shadows and lower "
"performance. ({} / {})",
stats.page_used_count,
shadow_page_len_);
}
/* Rendering is finished if we rendered all the remaining pages. */
return stats.view_needed_count <= SHADOW_VIEW_MAX;
}