From 83a4f5600d7b9fe3352d2f66898ea3f4a0c86738 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 21 Jun 2019 14:33:06 +0200 Subject: Fix T65957: Cycles crash with OSL and UV maps --- intern/cycles/kernel/osl/osl_services.cpp | 2 +- intern/cycles/render/mesh.cpp | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/intern/cycles/kernel/osl/osl_services.cpp b/intern/cycles/kernel/osl/osl_services.cpp index 08821ffa099..9196caad1b3 100644 --- a/intern/cycles/kernel/osl/osl_services.cpp +++ b/intern/cycles/kernel/osl/osl_services.cpp @@ -617,7 +617,7 @@ static bool get_primitive_attribute(KernelGlobals *kg, return set_attribute_float3(fval, type, derivatives, val); } else if (attr.type == TypeFloat2) { - float2 fval[2]; + float2 fval[3]; fval[0] = primitive_attribute_float2( kg, sd, attr.desc, (derivatives) ? &fval[1] : NULL, (derivatives) ? &fval[2] : NULL); return set_attribute_float2(fval, type, derivatives, val); diff --git a/intern/cycles/render/mesh.cpp b/intern/cycles/render/mesh.cpp index f1622493455..78b9ec03273 100644 --- a/intern/cycles/render/mesh.cpp +++ b/intern/cycles/render/mesh.cpp @@ -1222,6 +1222,8 @@ void MeshManager::update_osl_attributes(Device *device, osl_attr.type = TypeDesc::TypeFloat; else if (req.curve_type == TypeDesc::TypeMatrix) osl_attr.type = TypeDesc::TypeMatrix; + else if (req.curve_type == TypeFloat2) + osl_attr.type = TypeFloat2; else osl_attr.type = TypeDesc::TypeColor; @@ -1243,6 +1245,8 @@ void MeshManager::update_osl_attributes(Device *device, osl_attr.type = TypeDesc::TypeFloat; else if (req.subd_type == TypeDesc::TypeMatrix) osl_attr.type = TypeDesc::TypeMatrix; + else if (req.subd_type == TypeFloat2) + osl_attr.type = TypeFloat2; else osl_attr.type = TypeDesc::TypeColor; -- cgit v1.2.3