Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiguel Pozo <pragma37@gmail.com>2022-11-07 18:22:01 +0300
committerMiguel Pozo <pragma37@gmail.com>2022-11-07 18:22:01 +0300
commitc5ef9fc5eccd31822cf7546865b18c3434a3c3f2 (patch)
tree5890a7b1c6d82b5a289bbb064453343b0d7fba2c
parent179eadc91f25f1e074b52f665cecc4b4e8b48a89 (diff)
Ensure the camera object is of camera typetmp-workbench-rewrite2
Avoids issues when DoF is enabled. (See T101533)
-rw-r--r--source/blender/draw/engines/workbench/workbench_effect_dof.cc4
-rw-r--r--source/blender/draw/engines/workbench/workbench_private.hh2
-rw-r--r--source/blender/draw/engines/workbench/workbench_state.cc5
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);