From 1ad0cc6bde4746949eee7a9babb97178a05816c3 Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Mon, 3 Jul 2017 16:16:24 +0200 Subject: [PATCH] Eevee: Hide lightprobe data when using "Only Render" --- .../draw/engines/eevee/eevee_lightprobes.c | 6 +++--- source/blender/draw/intern/DRW_render.h | 1 + source/blender/draw/intern/draw_manager.c | 20 ++++++++++++++----- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/source/blender/draw/engines/eevee/eevee_lightprobes.c b/source/blender/draw/engines/eevee/eevee_lightprobes.c index 9622a5fa7fb..ee518cc268c 100644 --- a/source/blender/draw/engines/eevee/eevee_lightprobes.c +++ b/source/blender/draw/engines/eevee/eevee_lightprobes.c @@ -582,7 +582,7 @@ static void EEVEE_planar_reflections_updates(EEVEE_SceneLayerData *sldata, EEVEE eplanar->attenuation_bias = max_dist * -eplanar->attenuation_scale; /* Debug Display */ - if ((probe->flag & LIGHTPROBE_FLAG_SHOW_DATA) != 0) { + if (DRW_state_draw_support() && (probe->flag & LIGHTPROBE_FLAG_SHOW_DATA)) { DRWShadingGroup *grp = DRW_shgroup_create(e_data.probe_planar_display_sh, psl->probe_display); DRW_shgroup_uniform_int(grp, "probeIdx", &ped->probe_id, 1); @@ -635,7 +635,7 @@ static void EEVEE_lightprobes_updates(EEVEE_SceneLayerData *sldata, EEVEE_PassLi invert_m4(eprobe->parallaxmat); /* Debug Display */ - if ((probe->flag & LIGHTPROBE_FLAG_SHOW_DATA) != 0) { + if (DRW_state_draw_support() && (probe->flag & LIGHTPROBE_FLAG_SHOW_DATA)) { DRW_shgroup_call_dynamic_add(stl->g_data->cube_display_shgrp, &ped->probe_id, ob->obmat[3], &probe->data_draw_size); } } @@ -693,7 +693,7 @@ static void EEVEE_lightprobes_updates(EEVEE_SceneLayerData *sldata, EEVEE_PassLi copy_v3_v3_int(egrid->resolution, &probe->grid_resolution_x); /* Debug Display */ - if ((probe->flag & LIGHTPROBE_FLAG_SHOW_DATA) != 0) { + if (DRW_state_draw_support() && (probe->flag & LIGHTPROBE_FLAG_SHOW_DATA)) { struct Gwn_Batch *geom = DRW_cache_sphere_get(); DRWShadingGroup *grp = DRW_shgroup_instance_create(e_data.probe_grid_display_sh, psl->probe_display, geom); DRW_shgroup_set_instance_count(grp, ped->num_cell); diff --git a/source/blender/draw/intern/DRW_render.h b/source/blender/draw/intern/DRW_render.h index 48017cfb960..75608debaac 100644 --- a/source/blender/draw/intern/DRW_render.h +++ b/source/blender/draw/intern/DRW_render.h @@ -386,6 +386,7 @@ bool DRW_state_is_depth(void); bool DRW_state_is_image_render(void); bool DRW_state_is_scene_render(void); bool DRW_state_show_text(void); +bool DRW_state_draw_support(void); struct DRWTextStore *DRW_state_text_cache_get(void); diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index 97563a4b5d4..6125aa9bf1a 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -2749,14 +2749,12 @@ static void DRW_engines_enable_external(void) use_drw_engine(DRW_engine_viewport_external_type.draw_engine); } -static void DRW_engines_enable(const Scene *scene, SceneLayer *sl, const View3D *v3d) +static void DRW_engines_enable(const Scene *scene, SceneLayer *sl) { const int mode = CTX_data_mode_enum_ex(scene->obedit, OBACT_NEW); DRW_engines_enable_from_engine(scene); - if ((DRW_state_is_scene_render() == false) && - (v3d->flag2 & V3D_RENDER_OVERRIDE) == 0) - { + if (DRW_state_draw_support()) { DRW_engines_enable_from_object_mode(); DRW_engines_enable_from_mode(mode); } @@ -2976,7 +2974,7 @@ void DRW_draw_render_loop_ex( v3d->zbuf = true; /* Get list of enabled engines */ - DRW_engines_enable(scene, sl, v3d); + DRW_engines_enable(scene, sl); /* Setup viewport */ cache_is_dirty = GPU_viewport_cache_validate(DST.viewport, DRW_engines_get_hash()); @@ -3366,6 +3364,18 @@ bool DRW_state_show_text(void) (DST.options.is_scene_render) == 0; } +/** + * Should draw support elements + * Objects center, selection outline, probe data, ... + */ +bool DRW_state_draw_support(void) +{ + View3D *v3d = DST.draw_ctx.v3d; + return (DRW_state_is_scene_render() == false) && + (v3d != NULL) && + ((v3d->flag2 & V3D_RENDER_OVERRIDE) == 0); +} + /** \} */