diff options
Diffstat (limited to 'source/blender/draw/engines/workbench')
3 files changed, 13 insertions, 14 deletions
diff --git a/source/blender/draw/engines/workbench/workbench_data.c b/source/blender/draw/engines/workbench/workbench_data.c index 42375f29d4d..f07b21ebcc2 100644 --- a/source/blender/draw/engines/workbench/workbench_data.c +++ b/source/blender/draw/engines/workbench/workbench_data.c @@ -116,6 +116,8 @@ void workbench_private_data_init(WORKBENCH_PrivateData *wpd) wpd->preferences = &U; View3D *v3d = draw_ctx->v3d; + RegionView3D *rv3d = draw_ctx->rv3d; + if (!v3d || (v3d->shading.type == OB_RENDER && BKE_scene_uses_blender_workbench(scene))) { wpd->shading = scene->display.shading; wpd->shading.xray_alpha = XRAY_ALPHA((&scene->display)); @@ -193,22 +195,19 @@ void workbench_private_data_init(WORKBENCH_PrivateData *wpd) wd->curvature_valley = 0.7f / max_ff(SQUARE(wpd->shading.curvature_valley_factor), 1e-4f); /* Will be NULL when rendering. */ - if (draw_ctx->rv3d != NULL) { - RegionView3D *rv3d = draw_ctx->rv3d; - if (rv3d->rflag & RV3D_CLIPPING) { - wpd->world_clip_planes = rv3d->clip; - UI_GetThemeColor4fv(TH_V3D_CLIPPING_BORDER, wpd->world_clip_planes_color); - if (wpd->use_color_management) { - srgb_to_linearrgb_v3_v3(wpd->world_clip_planes_color, wpd->world_clip_planes_color); - } - else { - copy_v3_v3(wpd->world_clip_planes_color, wpd->world_clip_planes_color); - } + if (RV3D_CLIPPING_ENABLED(v3d, rv3d)) { + wpd->world_clip_planes = rv3d->clip; + UI_GetThemeColor4fv(TH_V3D_CLIPPING_BORDER, wpd->world_clip_planes_color); + if (wpd->use_color_management) { + srgb_to_linearrgb_v3_v3(wpd->world_clip_planes_color, wpd->world_clip_planes_color); } else { - wpd->world_clip_planes = NULL; + copy_v3_v3(wpd->world_clip_planes_color, wpd->world_clip_planes_color); } } + else { + wpd->world_clip_planes = NULL; + } workbench_world_data_update_shadow_direction_vs(wpd); workbench_world_data_ubo_ensure(scene, wpd); diff --git a/source/blender/draw/engines/workbench/workbench_deferred.c b/source/blender/draw/engines/workbench/workbench_deferred.c index da5ab0c3122..8e61750da38 100644 --- a/source/blender/draw/engines/workbench/workbench_deferred.c +++ b/source/blender/draw/engines/workbench/workbench_deferred.c @@ -716,7 +716,7 @@ void workbench_deferred_cache_init(WORKBENCH_Data *vedata) } DRW_shgroup_call(grp, DRW_cache_fullscreen_quad_get(), NULL); - if (draw_ctx->rv3d && (draw_ctx->rv3d->rflag & RV3D_CLIPPING) && draw_ctx->rv3d->clipbb) { + if (RV3D_CLIPPING_ENABLED(draw_ctx->v3d, draw_ctx->rv3d)) { GPUShader *shader = GPU_shader_get_builtin_shader(GPU_SHADER_3D_UNIFORM_COLOR_BACKGROUND); grp = DRW_shgroup_create(shader, psl->background_pass); wpd->world_clip_planes_batch = DRW_draw_background_clipping_batch_from_rv3d(draw_ctx->rv3d); diff --git a/source/blender/draw/engines/workbench/workbench_forward.c b/source/blender/draw/engines/workbench/workbench_forward.c index 87f3b28c665..dbd7ebfe0d1 100644 --- a/source/blender/draw/engines/workbench/workbench_forward.c +++ b/source/blender/draw/engines/workbench/workbench_forward.c @@ -421,7 +421,7 @@ void workbench_forward_engine_init(WORKBENCH_Data *vedata) /* TODO(campbell): displays but masks geometry, * only use with wire or solid-without-xray for now. */ if ((wpd->shading.type != OB_WIRE && !XRAY_FLAG_ENABLED(wpd)) && - (draw_ctx->rv3d && (draw_ctx->rv3d->rflag & RV3D_CLIPPING) && draw_ctx->rv3d->clipbb)) { + RV3D_CLIPPING_ENABLED(draw_ctx->v3d, draw_ctx->rv3d)) { psl->background_pass = DRW_pass_create("Background", DRW_STATE_WRITE_COLOR | DRW_STATE_DEPTH_EQUAL); GPUShader *shader = GPU_shader_get_builtin_shader(GPU_SHADER_3D_UNIFORM_COLOR_BACKGROUND); |