From c5ef9fc5eccd31822cf7546865b18c3434a3c3f2 Mon Sep 17 00:00:00 2001 From: Miguel Pozo Date: Mon, 7 Nov 2022 16:22:01 +0100 Subject: Ensure the camera object is of camera type Avoids issues when DoF is enabled. (See T101533) --- source/blender/draw/engines/workbench/workbench_effect_dof.cc | 4 +--- source/blender/draw/engines/workbench/workbench_private.hh | 2 ++ source/blender/draw/engines/workbench/workbench_state.cc | 5 +++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/source/blender/draw/engines/workbench/workbench_effect_dof.cc b/source/blender/draw/engines/workbench/workbench_effect_dof.cc index b388c2d907e..413cb41d45e 100644 --- a/source/blender/draw/engines/workbench/workbench_effect_dof.cc +++ b/source/blender/draw/engines/workbench/workbench_effect_dof.cc @@ -21,8 +21,6 @@ #include "BKE_camera.h" #include "DEG_depsgraph_query.h" -#include "DNA_camera_types.h" - namespace blender::workbench { /** * Transform [-1..1] square to unit circle. @@ -123,7 +121,7 @@ void DofPass::init(const SceneState &scene_state) coc_halfres_tx_.ensure_mip_views(); coc_halfres_tx_.filter_mode(true); - Camera *camera = static_cast(scene_state.camera_object->data); + Camera *camera = scene_state.camera; /* Parameters */ float fstop = camera->dof.aperture_fstop; diff --git a/source/blender/draw/engines/workbench/workbench_private.hh b/source/blender/draw/engines/workbench/workbench_private.hh index b60ec8e6439..fca61f2ec59 100644 --- a/source/blender/draw/engines/workbench/workbench_private.hh +++ b/source/blender/draw/engines/workbench/workbench_private.hh @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0-or-later */ +#include "DNA_camera_types.h" #include "DRW_render.h" #include "draw_manager.hh" #include "draw_pass.hh" @@ -59,6 +60,7 @@ struct SceneState { Scene *scene; Object *camera_object; + Camera *camera; float4x4 view_projection_matrix; int2 resolution; diff --git a/source/blender/draw/engines/workbench/workbench_state.cc b/source/blender/draw/engines/workbench/workbench_state.cc index b9ea9a92cbe..a22599f4016 100644 --- a/source/blender/draw/engines/workbench/workbench_state.cc +++ b/source/blender/draw/engines/workbench/workbench_state.cc @@ -11,7 +11,6 @@ #include "BKE_particle.h" #include "BKE_pbvh.h" #include "DEG_depsgraph_query.h" -#include "DNA_camera_types.h" #include "DNA_fluid_types.h" #include "ED_paint.h" #include "ED_view3d.h" @@ -41,7 +40,9 @@ void SceneState::init() /*TODO(Miguel Pozo)*/ // camera = wpd->cam_original_ob; } - Camera *camera = camera_object ? static_cast(camera_object->data) : nullptr; + camera = camera_object && camera_object->type == OB_CAMERA ? + static_cast(camera_object->data) : + nullptr; object_mode = CTX_data_mode_enum_ex(context->object_edit, context->obact, context->object_mode); -- cgit v1.2.3