diff options
author | Miguel Pozo <pragma37@gmail.com> | 2022-11-07 18:22:01 +0300 |
---|---|---|
committer | Miguel Pozo <pragma37@gmail.com> | 2022-11-07 18:22:01 +0300 |
commit | c5ef9fc5eccd31822cf7546865b18c3434a3c3f2 (patch) | |
tree | 5890a7b1c6d82b5a289bbb064453343b0d7fba2c | |
parent | 179eadc91f25f1e074b52f665cecc4b4e8b48a89 (diff) |
Ensure the camera object is of camera typetmp-workbench-rewrite2
Avoids issues when DoF is enabled. (See T101533)
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<Camera *>(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 *>(camera_object->data) : nullptr; + camera = camera_object && camera_object->type == OB_CAMERA ? + static_cast<Camera *>(camera_object->data) : + nullptr; object_mode = CTX_data_mode_enum_ex(context->object_edit, context->obact, context->object_mode); |