[Bf-blender-cvs] [88fa8610ef4] gsoc-2018-many-light-sampling: Cycles: Fix problems in the IES loader when rendering with no file selected

Lukas Stockner noreply at git.blender.org
Fri Jun 1 16:18:00 CEST 2018


Commit: 88fa8610ef44e7ef8999e2f941821fd598dd4e90
Author: Lukas Stockner
Date:   Sun May 27 17:14:01 2018 +0200
Branches: gsoc-2018-many-light-sampling
https://developer.blender.org/rB88fa8610ef44e7ef8999e2f941821fd598dd4e90

Cycles: Fix problems in the IES loader when rendering with no file selected

===================================================================

M	intern/cycles/blender/blender_shader.cpp
M	intern/cycles/blender/blender_util.h
M	intern/cycles/render/light.cpp
M	intern/cycles/util/util_ies.cpp

===================================================================

diff --git a/intern/cycles/blender/blender_shader.cpp b/intern/cycles/blender/blender_shader.cpp
index c6144cef1bf..9896dd1d94f 100644
--- a/intern/cycles/blender/blender_shader.cpp
+++ b/intern/cycles/blender/blender_shader.cpp
@@ -827,6 +827,9 @@ static ShaderNode *add_node(Scene *scene,
 				break;
 			case BL::ShaderNodeTexIES::mode_INTERNAL:
 				ies->ies = get_text_datablock_content(b_ies_node.ies().ptr);
+				if(ies->ies.empty()) {
+					ies->ies = "\n";
+				}
 				break;
 		}
 		node = ies;
diff --git a/intern/cycles/blender/blender_util.h b/intern/cycles/blender/blender_util.h
index 87d6c7eba8a..85bff8f8323 100644
--- a/intern/cycles/blender/blender_util.h
+++ b/intern/cycles/blender/blender_util.h
@@ -468,7 +468,7 @@ static inline string blender_absolute_path(BL::BlendData& b_data,
 	return path;
 }
 
-static inline string get_text_datablock_content(const PointerRNA&& ptr)
+static inline string get_text_datablock_content(const PointerRNA& ptr)
 {
 	if(ptr.data == NULL) {
 		return "";
diff --git a/intern/cycles/render/light.cpp b/intern/cycles/render/light.cpp
index f0824ef4319..5a77094c0c1 100644
--- a/intern/cycles/render/light.cpp
+++ b/intern/cycles/render/light.cpp
@@ -891,8 +891,10 @@ void LightManager::tag_update(Scene * /*scene*/)
 int LightManager::add_ies_from_file(ustring filename)
 {
 	string content;
-	/* If the file can't be opened, call with an empty string */
-	path_read_text(filename.c_str(), content);
+	/* If the file can't be opened, call with an empty line */
+	if(filename.empty() || !path_read_text(filename.c_str(), content)) {
+		content == "\n";
+	}
 
 	return add_ies(ustring(content));
 }
diff --git a/intern/cycles/util/util_ies.cpp b/intern/cycles/util/util_ies.cpp
index 4824c886609..e068957325b 100644
--- a/intern/cycles/util/util_ies.cpp
+++ b/intern/cycles/util/util_ies.cpp
@@ -109,6 +109,10 @@ public:
 
 bool IESFile::parse(ustring ies)
 {
+	if(ies.empty()) {
+		return false;
+	}
+
 	IESTextParser parser(ies);
 	if(parser.eof()) {
 		return false;



More information about the Bf-blender-cvs mailing list