Fix #111277: NaN in Vector Displacement leading to render errors #111294
@ -165,7 +165,7 @@ ccl_device_noinline int svm_node_vector_displacement(
|
||||
tangent = normalize(sd->dPdu);
|
||||
}
|
||||
|
||||
float3 bitangent = normalize(cross(normal, tangent));
|
||||
float3 bitangent = safe_normalize(cross(normal, tangent));
|
||||
const AttributeDescriptor attr_sign = find_attribute(kg, sd, node.w);
|
||||
if (attr_sign.offset != ATTR_STD_NOT_FOUND) {
|
||||
float sign = primitive_surface_attribute_float(kg, sd, attr_sign, NULL, NULL);
|
||||
|
@ -3,7 +3,7 @@ void node_vector_displacement_tangent(
|
||||
{
|
||||
vec3 oN = normalize(normal_world_to_object(g_data.N));
|
||||
vec3 oT = normalize(normal_world_to_object(T.xyz));
|
||||
vec3 oB = T.w * normalize(cross(oN, oT));
|
||||
vec3 oB = T.w * safe_normalize(cross(oN, oT));
|
||||
|
||||
result = (vector.xyz - midlevel) * scale;
|
||||
result = result.x * oT + result.y * oN + result.z * oB;
|
||||
|
Loading…
Reference in New Issue
Block a user