Fix #111277: NaN in Vector Displacement leading to render errors #111294

Merged
Sergey Sharybin merged 2 commits from Alaska/blender:fix-111277 into main 2023-08-21 15:22:12 +02:00
2 changed files with 2 additions and 2 deletions

View File

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

View File

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