From 81159e99b819910b72cb3caba6b3cd4f35184ea9 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 1 Feb 2019 19:05:00 +0100 Subject: Fix T61078: Cycles crash with adaptive smoke sim playback. 3D image dimensions should be updated on the Cycles side before loading the smoke data. --- intern/cycles/render/image.cpp | 4 ++++ intern/cycles/render/image.h | 12 ++++++++++++ 2 files changed, 16 insertions(+) (limited to 'intern/cycles/render') diff --git a/intern/cycles/render/image.cpp b/intern/cycles/render/image.cpp index a8e6f41e57a..341a95c0258 100644 --- a/intern/cycles/render/image.cpp +++ b/intern/cycles/render/image.cpp @@ -333,6 +333,10 @@ int ImageManager::add_image(const string& filename, img->use_alpha = use_alpha; img->need_load = true; } + if(!(img->metadata == metadata)) { + img->metadata = metadata; + img->need_load = true; + } img->users++; return type_index_to_flattened_slot(slot, type); } diff --git a/intern/cycles/render/image.h b/intern/cycles/render/image.h index b608bc30e70..cd7130b3898 100644 --- a/intern/cycles/render/image.h +++ b/intern/cycles/render/image.h @@ -44,6 +44,18 @@ public: /* Automatically set. */ ImageDataType type; bool is_linear; + + bool operator==(const ImageMetaData& other) const + { + return is_float == other.is_float && + is_half == other.is_half && + channels == other.channels && + width == other.width && + height == other.height && + depth == other.depth && + type == other.type && + is_linear == other.is_linear; + } }; class ImageManager { -- cgit v1.2.3