forked from bartvdbraak/blender
Fix T39946: OSL + tangent space normal maps not working in Cycles.
This commit is contained in:
parent
09f5dff244
commit
80e137e826
@ -59,6 +59,7 @@ CCL_NAMESPACE_BEGIN
|
|||||||
/* static ustrings */
|
/* static ustrings */
|
||||||
ustring OSLRenderServices::u_distance("distance");
|
ustring OSLRenderServices::u_distance("distance");
|
||||||
ustring OSLRenderServices::u_index("index");
|
ustring OSLRenderServices::u_index("index");
|
||||||
|
ustring OSLRenderServices::u_world("world");
|
||||||
ustring OSLRenderServices::u_camera("camera");
|
ustring OSLRenderServices::u_camera("camera");
|
||||||
ustring OSLRenderServices::u_screen("screen");
|
ustring OSLRenderServices::u_screen("screen");
|
||||||
ustring OSLRenderServices::u_raster("raster");
|
ustring OSLRenderServices::u_raster("raster");
|
||||||
@ -209,6 +210,10 @@ bool OSLRenderServices::get_matrix(OSL::Matrix44 &result, ustring from, float ti
|
|||||||
COPY_MATRIX44(&result, &tfm);
|
COPY_MATRIX44(&result, &tfm);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
else if (from == u_world) {
|
||||||
|
result.makeIdentity();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -237,6 +242,10 @@ bool OSLRenderServices::get_inverse_matrix(OSL::Matrix44 &result, ustring to, fl
|
|||||||
COPY_MATRIX44(&result, &tfm);
|
COPY_MATRIX44(&result, &tfm);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
else if (to == u_world) {
|
||||||
|
result.makeIdentity();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -781,7 +790,9 @@ bool OSLRenderServices::get_attribute(void *renderstate, bool derivatives, ustri
|
|||||||
|
|
||||||
if (attr.elem != ATTR_ELEMENT_OBJECT) {
|
if (attr.elem != ATTR_ELEMENT_OBJECT) {
|
||||||
/* triangle and vertex attributes */
|
/* 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);
|
return get_mesh_attribute(kg, sd, attr, type, derivatives, val);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -116,6 +116,7 @@ public:
|
|||||||
|
|
||||||
static ustring u_distance;
|
static ustring u_distance;
|
||||||
static ustring u_index;
|
static ustring u_index;
|
||||||
|
static ustring u_world;
|
||||||
static ustring u_camera;
|
static ustring u_camera;
|
||||||
static ustring u_screen;
|
static ustring u_screen;
|
||||||
static ustring u_raster;
|
static ustring u_raster;
|
||||||
|
Loading…
Reference in New Issue
Block a user