Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Bakker <jeroen@blender.org>2020-02-27 14:22:16 +0300
committerJeroen Bakker <jeroen@blender.org>2020-02-27 14:22:16 +0300
commit2515a125c8329eaa55a0ae5a36a5f3780b056ae4 (patch)
tree6e3317f947c90fb83ce8064280fac4b623a96b80
parent57bd1a0ae18b327a57c187c48bdb9effcb5f4b6a (diff)
parentf24a4750bdd6fcb409785e6527cdcb0b5f33e222 (diff)
Fix T74254: EEVEE Render Passes Availability
When disabling AO or BLOOM in the render tab, when the pass is shown in a 3d viewport the pass wasn't reset. This resulted in showing a black texture and a not filled UI render pass in the shading popover. This patch will by default reset to the combined pass. It is intended that the render_pass in the 3d shading struct isn't set to combined as people could have disabled AO/bloom by mistake and it could reset viewports that aren't visible.
-rw-r--r--source/blender/draw/engines/eevee/eevee_renderpasses.c12
-rw-r--r--source/blender/makesrna/intern/rna_space.c18
2 files changed, 28 insertions, 2 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_renderpasses.c b/source/blender/draw/engines/eevee/eevee_renderpasses.c
index 2f9e8f3d555..e9dcb6376bb 100644
--- a/source/blender/draw/engines/eevee/eevee_renderpasses.c
+++ b/source/blender/draw/engines/eevee/eevee_renderpasses.c
@@ -88,7 +88,17 @@ void EEVEE_renderpasses_init(EEVEE_Data *vedata)
View3D *v3d = draw_ctx->v3d;
if (v3d) {
- g_data->render_passes = v3d->shading.render_pass;
+ const Scene *scene = draw_ctx->scene;
+ eViewLayerEEVEEPassType render_pass = v3d->shading.render_pass;
+ if (render_pass == EEVEE_RENDER_PASS_AO &&
+ ((scene->eevee.flag & SCE_EEVEE_GTAO_ENABLED) == 0)) {
+ render_pass = EEVEE_RENDER_PASS_COMBINED;
+ }
+ else if (render_pass == EEVEE_RENDER_PASS_BLOOM &&
+ ((scene->eevee.flag & SCE_EEVEE_BLOOM_ENABLED) == 0)) {
+ render_pass = EEVEE_RENDER_PASS_COMBINED;
+ }
+ g_data->render_passes = render_pass;
}
else {
eViewLayerEEVEEPassType enabled_render_passes = view_layer->eevee.render_passes;
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index 5fdc2a18330..762c1985fa9 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -1285,6 +1285,21 @@ static const EnumPropertyItem *rna_3DViewShading_render_pass_itemf(bContext *C,
*r_free = true;
return result;
}
+static int rna_3DViewShading_render_pass_get(PointerRNA *ptr)
+{
+ View3DShading *shading = (View3DShading *)ptr->data;
+ eViewLayerEEVEEPassType result = shading->render_pass;
+ Scene *scene = rna_3DViewShading_scene(ptr);
+
+ if (result == EEVEE_RENDER_PASS_AO && ((scene->eevee.flag & SCE_EEVEE_GTAO_ENABLED) == 0)) {
+ result = EEVEE_RENDER_PASS_COMBINED;
+ }
+ if (result == EEVEE_RENDER_PASS_BLOOM && ((scene->eevee.flag & SCE_EEVEE_BLOOM_ENABLED) == 0)) {
+ result = EEVEE_RENDER_PASS_COMBINED;
+ }
+
+ return result;
+}
static void rna_SpaceView3D_use_local_collections_update(bContext *C, PointerRNA *ptr)
{
@@ -3381,7 +3396,8 @@ static void rna_def_space_view3d_shading(BlenderRNA *brna)
RNA_def_property_enum_sdna(prop, NULL, "render_pass");
RNA_def_property_enum_items(prop, rna_enum_view3dshading_render_pass_type_items);
RNA_def_property_ui_text(prop, "Render Pass", "Render Pass to show in the viewport");
- RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_3DViewShading_render_pass_itemf");
+ RNA_def_property_enum_funcs(
+ prop, "rna_3DViewShading_render_pass_get", NULL, "rna_3DViewShading_render_pass_itemf");
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
}