1
1

EEVEE-Next: UI: Make Vector pass greyed out when motion blur is enabled

Also clears the render result to 0 to avoid invalid motion vectors.
This commit is contained in:
2022-07-28 16:24:49 +02:00
parent 53fc9add51
commit 2b9d4af261
2 changed files with 13 additions and 1 deletions

View File

@@ -79,6 +79,7 @@ class VIEWLAYER_PT_eevee_next_layer_passes_data(ViewLayerButtonsPanel, Panel):
layout.use_property_split = True
layout.use_property_decorate = False
scene = context.scene
view_layer = context.view_layer
col = layout.column()
@@ -87,7 +88,9 @@ class VIEWLAYER_PT_eevee_next_layer_passes_data(ViewLayerButtonsPanel, Panel):
col.prop(view_layer, "use_pass_mist")
col.prop(view_layer, "use_pass_normal")
col.prop(view_layer, "use_pass_position")
col.prop(view_layer, "use_pass_vector")
sub = col.column()
sub.active = not scene.eevee.use_motion_blur
sub.prop(view_layer, "use_pass_vector")
class VIEWLAYER_PT_eevee_layer_passes_light(ViewLayerButtonsPanel, Panel):

View File

@@ -242,6 +242,15 @@ void Instance::render_read_result(RenderLayer *render_layer, const char *view_na
}
}
}
/* The vector pass is initialized to weird values. Set it to neutral value if not rendered. */
if ((pass_bits & EEVEE_RENDER_PASS_VECTOR) == 0) {
const char *vector_pass_name = Film::pass_to_render_pass_name(EEVEE_RENDER_PASS_VECTOR);
RenderPass *vector_rp = RE_pass_find_by_name(render_layer, vector_pass_name, view_name);
if (vector_rp) {
memset(vector_rp->rect, 0, sizeof(float) * 4 * vector_rp->rectx * vector_rp->recty);
}
}
}
/** \} */