[Bf-blender-cvs] [80e137e] master: Fix T39946: OSL + tangent space normal maps not working in Cycles.
Brecht Van Lommel
noreply at git.blender.org
Tue May 6 16:40:01 CEST 2014
Commit: 80e137e826cac408e66d79d16db44d732e117b01
Author: Brecht Van Lommel
Date: Tue May 6 16:39:28 2014 +0200
https://developer.blender.org/rB80e137e826cac408e66d79d16db44d732e117b01
Fix T39946: OSL + tangent space normal maps not working in Cycles.
===================================================================
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 f33d032..54894ea 100644
--- a/intern/cycles/kernel/osl/osl_services.cpp
+++ b/intern/cycles/kernel/osl/osl_services.cpp
@@ -59,6 +59,7 @@ CCL_NAMESPACE_BEGIN
/* static ustrings */
ustring OSLRenderServices::u_distance("distance");
ustring OSLRenderServices::u_index("index");
+ustring OSLRenderServices::u_world("world");
ustring OSLRenderServices::u_camera("camera");
ustring OSLRenderServices::u_screen("screen");
ustring OSLRenderServices::u_raster("raster");
@@ -209,6 +210,10 @@ bool OSLRenderServices::get_matrix(OSL::Matrix44 &result, ustring from, float ti
COPY_MATRIX44(&result, &tfm);
return true;
}
+ else if (from == u_world) {
+ result.makeIdentity();
+ return true;
+ }
return false;
}
@@ -237,6 +242,10 @@ bool OSLRenderServices::get_inverse_matrix(OSL::Matrix44 &result, ustring to, fl
COPY_MATRIX44(&result, &tfm);
return true;
}
+ else if (to == u_world) {
+ result.makeIdentity();
+ return true;
+ }
return false;
}
@@ -781,7 +790,9 @@ bool OSLRenderServices::get_attribute(void *renderstate, bool derivatives, ustri
if (attr.elem != ATTR_ELEMENT_OBJECT) {
/* triangle and vertex attributes */
- if(!get_mesh_element_attribute(kg, sd, attr, type, derivatives, val))
+ if(get_mesh_element_attribute(kg, sd, attr, type, derivatives, val))
+ return true;
+ else
return get_mesh_attribute(kg, sd, attr, type, derivatives, val);
}
else {
diff --git a/intern/cycles/kernel/osl/osl_services.h b/intern/cycles/kernel/osl/osl_services.h
index 54ddd7a..069722d 100644
--- a/intern/cycles/kernel/osl/osl_services.h
+++ b/intern/cycles/kernel/osl/osl_services.h
@@ -116,6 +116,7 @@ public:
static ustring u_distance;
static ustring u_index;
+ static ustring u_world;
static ustring u_camera;
static ustring u_screen;
static ustring u_raster;
More information about the Bf-blender-cvs
mailing list