[Bf-blender-cvs] [e87c51d3dde] tmp-eevee-aov: EEVEE AOV: Do not render/show conflicting AOVs
Jeroen Bakker
noreply at git.blender.org
Mon Sep 28 11:43:58 CEST 2020
Commit: e87c51d3dde7793e97bae125b7e89964a8c041b7
Author: Jeroen Bakker
Date: Mon Sep 28 08:49:12 2020 +0200
Branches: tmp-eevee-aov
https://developer.blender.org/rBe87c51d3dde7793e97bae125b7e89964a8c041b7
EEVEE AOV: Do not render/show conflicting AOVs
===================================================================
M source/blender/blenkernel/BKE_layer.h
M source/blender/blenkernel/intern/layer.c
M source/blender/draw/engines/eevee/eevee_materials.c
M source/blender/draw/engines/eevee/eevee_render.c
M source/blender/makesrna/intern/rna_space.c
M source/blender/render/intern/source/render_result.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_layer.h b/source/blender/blenkernel/BKE_layer.h
index 6093ce61c94..5ecee77a4c0 100644
--- a/source/blender/blenkernel/BKE_layer.h
+++ b/source/blender/blenkernel/BKE_layer.h
@@ -437,6 +437,7 @@ void BKE_view_layer_set_active_aov(struct ViewLayer *view_layer, struct ViewLaye
void BKE_view_layer_verify_aov(struct RenderEngine *engine,
struct Scene *scene,
struct ViewLayer *view_layer);
+bool BKE_view_layer_has_valid_aov(struct ViewLayer *view_layer);
ViewLayer *BKE_view_layer_find_with_aov(struct Scene *scene, struct ViewLayerAOV *view_layer_aov);
#ifdef __cplusplus
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c
index 7bd9d8a28a6..f3060bccee0 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -1942,6 +1942,17 @@ void BKE_view_layer_verify_aov(struct RenderEngine *engine,
BLI_ghash_free(name_count, MEM_freeN, NULL);
}
+/* Check if the given view layer has at least one valid AOV. */
+bool BKE_view_layer_has_valid_aov(ViewLayer *view_layer)
+{
+ LISTBASE_FOREACH (ViewLayerAOV *, aov, &view_layer->aovs) {
+ if ((aov->flag & AOV_CONFLICT) == 0) {
+ return true;
+ }
+ }
+ return false;
+}
+
ViewLayer *BKE_view_layer_find_with_aov(struct Scene *scene, struct ViewLayerAOV *aov)
{
LISTBASE_FOREACH (ViewLayer *, view_layer, &scene->view_layers) {
diff --git a/source/blender/draw/engines/eevee/eevee_materials.c b/source/blender/draw/engines/eevee/eevee_materials.c
index 915fc907be1..328294ef391 100644
--- a/source/blender/draw/engines/eevee/eevee_materials.c
+++ b/source/blender/draw/engines/eevee/eevee_materials.c
@@ -285,6 +285,9 @@ void EEVEE_materials_init(EEVEE_ViewLayerData *sldata,
ViewLayer *view_layer = draw_ctx->view_layer;
int aov_index = 0;
LISTBASE_FOREACH (ViewLayerAOV *, aov, &view_layer->aovs) {
+ if ((aov->flag & AOV_CONFLICT) != 0) {
+ continue;
+ }
if (aov_index == MAX_AOVS) {
break;
}
diff --git a/source/blender/draw/engines/eevee/eevee_render.c b/source/blender/draw/engines/eevee/eevee_render.c
index 61dac88dbed..a113a4c1f59 100644
--- a/source/blender/draw/engines/eevee/eevee_render.c
+++ b/source/blender/draw/engines/eevee/eevee_render.c
@@ -473,6 +473,9 @@ static void eevee_render_result_aovs(RenderLayer *rl,
ViewLayer *view_layer = draw_ctx->view_layer;
int aov_index = 0;
LISTBASE_FOREACH (ViewLayerAOV *, aov, &view_layer->aovs) {
+ if ((aov->flag & AOV_CONFLICT) != 0) {
+ continue;
+ }
EEVEE_renderpasses_postprocess(sldata, vedata, EEVEE_RENDER_PASS_AOV, aov_index);
switch (aov->type) {
case AOV_TYPE_COLOR:
@@ -708,7 +711,7 @@ void EEVEE_render_update_passes(RenderEngine *engine, Scene *scene, ViewLayer *v
RE_engine_register_pass(engine, scene, view_layer, aov->name, 3, "RGB", SOCK_RGBA);
break;
case AOV_TYPE_VALUE:
- RE_engine_register_pass(engine, scene, view_layer, aov->name, 1, "R", SOCK_FLOAT);
+ RE_engine_register_pass(engine, scene, view_layer, aov->name, 1, "X", SOCK_FLOAT);
break;
default:
break;
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index f4871c06422..a2cc8d59127 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -1311,7 +1311,7 @@ static const EnumPropertyItem *rna_3DViewShading_render_pass_itemf(bContext *C,
ViewLayer *view_layer = CTX_data_view_layer(C);
const bool bloom_enabled = scene->eevee.flag & SCE_EEVEE_BLOOM_ENABLED;
- const bool aov_available = !BLI_listbase_is_empty(&view_layer->aovs);
+ const bool aov_available = BKE_view_layer_has_valid_aov(view_layer);
int totitem = 0;
EnumPropertyItem *result = NULL;
@@ -1323,6 +1323,9 @@ static const EnumPropertyItem *rna_3DViewShading_render_pass_itemf(bContext *C,
aov_template.icon = 0;
aov_template.description = item->description;
LISTBASE_FOREACH (ViewLayerAOV *, aov, &view_layer->aovs) {
+ if ((aov->flag & AOV_CONFLICT) != 0) {
+ continue;
+ }
aov_template.name = aov->name;
aov_template.identifier = aov->name;
RNA_enum_item_add(&result, &totitem, &aov_template);
diff --git a/source/blender/render/intern/source/render_result.c b/source/blender/render/intern/source/render_result.c
index f35e5cf2b31..fbd1dad7440 100644
--- a/source/blender/render/intern/source/render_result.c
+++ b/source/blender/render/intern/source/render_result.c
@@ -454,6 +454,9 @@ RenderResult *render_result_new(Render *re,
RENDER_LAYER_ADD_PASS_SAFE(rr, rl, 3, RE_PASSNAME_VOLUME_TRANSMITTANCE, view, "RGB");
}
LISTBASE_FOREACH (ViewLayerAOV *, aov, &view_layer->aovs) {
+ if ((aov->flag & AOV_CONFLICT) != 0) {
+ continue;
+ }
switch (aov->type) {
case AOV_TYPE_COLOR:
RENDER_LAYER_ADD_PASS_SAFE(rr, rl, 4, aov->name, view, "RGBA");
@@ -461,6 +464,8 @@ RenderResult *render_result_new(Render *re,
case AOV_TYPE_VALUE:
RENDER_LAYER_ADD_PASS_SAFE(rr, rl, 1, aov->name, view, "X");
break;
+ default:
+ break;
}
}
#undef RENDER_LAYER_ADD_PASS_SAFE
More information about the Bf-blender-cvs
mailing list