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);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to