[Bf-blender-cvs] [a192fac] master: Fix T41276: OSL bug in getmessage ("trace", "geom:name" , output)

Sergey Sharybin noreply at git.blender.org
Tue Aug 5 13:54:28 CEST 2014


Commit: a192facd8c5449ffe55b7978fe85a0080703411b
Author: Sergey Sharybin
Date:   Tue Aug 5 17:53:00 2014 +0600
Branches: master
https://developer.blender.org/rBa192facd8c5449ffe55b7978fe85a0080703411b

Fix T41276: OSL bug in getmessage ("trace", "geom:name" , output)

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

M	intern/cycles/kernel/osl/osl_services.cpp
M	intern/cycles/kernel/osl/osl_services.h

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

diff --git a/intern/cycles/kernel/osl/osl_services.cpp b/intern/cycles/kernel/osl/osl_services.cpp
index d5d995d..38cb506 100644
--- a/intern/cycles/kernel/osl/osl_services.cpp
+++ b/intern/cycles/kernel/osl/osl_services.cpp
@@ -479,7 +479,7 @@ static bool set_attribute_int(int i, TypeDesc type, bool derivatives, void *val)
 
 static bool set_attribute_string(ustring str, TypeDesc type, bool derivatives, void *val)
 {
-	if(type.basetype == TypeDesc::INT && type.aggregate == TypeDesc::SCALAR && type.arraylen == 0) {
+	if(type.basetype == TypeDesc::STRING && type.aggregate == TypeDesc::SCALAR && type.arraylen == 0) {
 		ustring *sval = (ustring *)val;
 		sval[0] = str;
 
@@ -758,6 +758,12 @@ bool OSLRenderServices::get_attribute(OSL::ShaderGlobals *sg, bool derivatives,
 		return false;
 
 	ShaderData *sd = (ShaderData *)(sg->renderstate);
+	return get_attribute(sd, derivatives, object_name, type, name, val);
+}
+
+bool OSLRenderServices::get_attribute(ShaderData *sd, bool derivatives, ustring object_name,
+                                      TypeDesc type, ustring name, void *val)
+{
 	KernelGlobals *kg = sd->osl_globals;
 	bool is_curve;
 	int object;
@@ -1100,7 +1106,7 @@ bool OSLRenderServices::getmessage(OSL::ShaderGlobals *sg, ustring source, ustri
 					return set_attribute_float(f, type, derivatives, val);
 				}
 
-				return get_attribute(sg, derivatives, u_empty, type, name, val);
+				return get_attribute(sd, derivatives, u_empty, type, name, val);
 			}
 		}
 	}
diff --git a/intern/cycles/kernel/osl/osl_services.h b/intern/cycles/kernel/osl/osl_services.h
index 024a839..6f928a0 100644
--- a/intern/cycles/kernel/osl/osl_services.h
+++ b/intern/cycles/kernel/osl/osl_services.h
@@ -66,6 +66,8 @@ public:
 	                         int index, void *val);
 	bool get_attribute(OSL::ShaderGlobals *sg, bool derivatives, ustring object,
 	                   TypeDesc type, ustring name, void *val);
+	bool get_attribute(ShaderData *sd, bool derivatives, ustring object_name,
+	                   TypeDesc type, ustring name, void *val);
 
 	bool get_userdata(bool derivatives, ustring name, TypeDesc type,
 	                  OSL::ShaderGlobals *sg, void *val);




More information about the Bf-blender-cvs mailing list