Fix #123207: EEVEE: Disable motion blur on camera change

Pull Request: https://projects.blender.org/blender/blender/pulls/123919
This commit is contained in:
Miguel Pozo 2024-07-01 15:47:10 +02:00
parent 0255be9b22
commit 2b248d2720
3 changed files with 9 additions and 1 deletions

@ -81,6 +81,7 @@ void Camera::init()
overscan = inst_.scene->eevee.overscan / 100.0f;
}
overscan_changed_ = assign_if_different(overscan_, overscan);
camera_changed_ = assign_if_different(last_camera_object_, inst_.camera_orig_object);
}
void Camera::sync()

@ -104,6 +104,9 @@ class Camera {
bool overscan_changed_;
/** Whether or not the camera was synced from a camera object. */
bool is_camera_object_ = false;
/** Just for tracking camera changes, use Instance::camera_orig_object for data access. */
Object *last_camera_object_ = nullptr;
bool camera_changed_ = false;
public:
Camera(Instance &inst, CameraData &data) : inst_(inst), data_(data){};
@ -160,6 +163,10 @@ class Camera {
{
return overscan_changed_;
}
bool camera_changed() const
{
return camera_changed_;
}
private:
void update_bounds();

@ -133,7 +133,7 @@ void MotionBlurModule::sync()
/* Disable motion blur in viewport when changing camera projection type.
* Avoids really high velocities. */
if (inst_.velocity.camera_changed_projection() ||
(inst_.is_viewport() && inst_.camera.overscan_changed()))
(inst_.is_viewport() && (inst_.camera.overscan_changed() || inst_.camera.camera_changed())))
{
motion_blur_fx_enabled_ = false;
}