pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/graphics/blender



Module Name:    pkgsrc
Committed By:   mrg
Date:           Mon Sep 29 02:35:57 UTC 2025

Modified Files:
        pkgsrc/graphics/blender: Makefile PLIST distinfo
Added Files:
        pkgsrc/graphics/blender/patches:
            patch-4f4c3f73b697436922464e087823f53e8681d7e8

Log Message:
update to blender 4.2.14 from 4.2.4.  changes include:

- fix many crashes and features (more than 100 issues upstream)
- a few UI cleanups
- various build fixes
- hardware raytracing
- fix possible buffer overflow in jpeg writer

also add upstream change 4f4c3f73b697436922464e087823f53e8681d7e8 which
fixes the build with new openimageio.

(note upstream has a 4.5 LTS version out for a while now, but this was
easy to update to.)


To generate a diff of this commit:
cvs rdiff -u -r1.237 -r1.238 pkgsrc/graphics/blender/Makefile
cvs rdiff -u -r1.44 -r1.45 pkgsrc/graphics/blender/PLIST
cvs rdiff -u -r1.79 -r1.80 pkgsrc/graphics/blender/distinfo
cvs rdiff -u -r0 -r1.1 \
    pkgsrc/graphics/blender/patches/patch-4f4c3f73b697436922464e087823f53e8681d7e8

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/graphics/blender/Makefile
diff -u pkgsrc/graphics/blender/Makefile:1.237 pkgsrc/graphics/blender/Makefile:1.238
--- pkgsrc/graphics/blender/Makefile:1.237      Sat Sep 27 09:57:19 2025
+++ pkgsrc/graphics/blender/Makefile    Mon Sep 29 02:35:56 2025
@@ -1,7 +1,6 @@
-# $NetBSD: Makefile,v 1.237 2025/09/27 09:57:19 wiz Exp $
+# $NetBSD: Makefile,v 1.238 2025/09/29 02:35:56 mrg Exp $
 
-DISTNAME=      blender-4.2.4
-PKGREVISION=   9
+DISTNAME=      blender-4.2.14
 CATEGORIES=    graphics
 MASTER_SITES=  https://download.blender.org/source/
 EXTRACT_SUFX=  .tar.xz

Index: pkgsrc/graphics/blender/PLIST
diff -u pkgsrc/graphics/blender/PLIST:1.44 pkgsrc/graphics/blender/PLIST:1.45
--- pkgsrc/graphics/blender/PLIST:1.44  Mon Dec  9 14:27:06 2024
+++ pkgsrc/graphics/blender/PLIST       Mon Sep 29 02:35:56 2025
@@ -1,7 +1,11 @@
-@comment $NetBSD: PLIST,v 1.44 2024/12/09 14:27:06 ryoon Exp $
+@comment $NetBSD: PLIST,v 1.45 2025/09/29 02:35:56 mrg Exp $
 bin/blender
 bin/blender-thumbnailer
 share/applications/blender.desktop
+share/blender/4.2/datafiles/assets/LICENSE
+share/blender/4.2/datafiles/assets/blender_assets.cats.txt
+share/blender/4.2/datafiles/assets/geometry_nodes/procedural_hair_node_assets.blend
+share/blender/4.2/datafiles/assets/geometry_nodes/smooth_by_angle.blend
 share/blender/4.2/datafiles/colormanagement/config.ocio
 share/blender/4.2/datafiles/colormanagement/filmic/filmic_desat_33.cube
 share/blender/4.2/datafiles/colormanagement/filmic/filmic_to_0-35_1-30.spi1d

Index: pkgsrc/graphics/blender/distinfo
diff -u pkgsrc/graphics/blender/distinfo:1.79 pkgsrc/graphics/blender/distinfo:1.80
--- pkgsrc/graphics/blender/distinfo:1.79       Mon Jun  2 00:29:08 2025
+++ pkgsrc/graphics/blender/distinfo    Mon Sep 29 02:35:56 2025
@@ -1,8 +1,9 @@
-$NetBSD: distinfo,v 1.79 2025/06/02 00:29:08 mrg Exp $
+$NetBSD: distinfo,v 1.80 2025/09/29 02:35:56 mrg Exp $
 
-BLAKE2s (blender-4.2.4.tar.xz) = e33731f186e25dce937c022b447d6a9c769729efdde007a49292800dd072f83b
-SHA512 (blender-4.2.4.tar.xz) = 1f61c1866aaa680c91fc6e3402b1e10533c8cce32572ffb825c53dc7c15ca51f1157a32d10134ca9e612fbf719406421ccc920b2d8ddd2993675784797381c6a
-Size (blender-4.2.4.tar.xz) = 72804204 bytes
+BLAKE2s (blender-4.2.14.tar.xz) = 07fdf19422b1e901555a24e18b670a00d8c846c993bc7d9592d3722b7ddc9f63
+SHA512 (blender-4.2.14.tar.xz) = 4423b6a7b004c357f8ee09cb9b7496432534c50b6be21148657d8f342d69e55e019c3368b56ff0f1253ae328b0cac73618655a51b389c9ea5686c4c57aabe9bb
+Size (blender-4.2.14.tar.xz) = 75349316 bytes
+SHA1 (patch-4f4c3f73b697436922464e087823f53e8681d7e8) = 9a3ab579122660b4cb3a11f68ec63abdb5b146a7
 SHA1 (patch-CMakeLists.txt) = 722c852b2c7f804a0fec93cec4e4c8f54d286204
 SHA1 (patch-build__files_cmake_Modules_FindOpenColorIO.cmake) = 142b0860abeae94deda0dfdcc985e4b4696cf93a
 SHA1 (patch-extern_lzma_CpuArch.c) = 2f43a8e367199c7e056b962e7c264cf7f06bbd74

Added files:

Index: pkgsrc/graphics/blender/patches/patch-4f4c3f73b697436922464e087823f53e8681d7e8
diff -u /dev/null pkgsrc/graphics/blender/patches/patch-4f4c3f73b697436922464e087823f53e8681d7e8:1.1
--- /dev/null   Mon Sep 29 02:35:57 2025
+++ pkgsrc/graphics/blender/patches/patch-4f4c3f73b697436922464e087823f53e8681d7e8      Mon Sep 29 02:35:56 2025
@@ -0,0 +1,904 @@
+From 4f4c3f73b697436922464e087823f53e8681d7e8 Mon Sep 17 00:00:00 2001
+From: Jesse Yurkovich <jesse.y%gmail.com@localhost>
+Date: Thu, 17 Oct 2024 19:48:38 +0200
+Subject: [PATCH] Cleanup: Replace deprecated OIIO APIs with modern ones
+
+Noticed while helping validate the soon to be released OpenImageIO 3.x.
+
+This cleanup makes 2 sets of changes to accommodate removed APIs [1]:
+- Remove `ustringHash` since it's been defined as `std::hash<ustring>`
+  for quite some time and is fully removed in 3.0.
+- Replace `TypeDesc::Type*` types with just `Type*` as the former has
+  been removed in 3.0. Cycles was using a mix of the deprecated and
+  modern forms anyhow.
+
+[1] https://github.com/AcademySoftwareFoundation/OpenImageIO/blob/main/docs/Deprecations-3.0.md
+
+Pull Request: https://projects.blender.org/blender/blender/pulls/129136
+---
+ intern/cycles/blender/mesh.cpp              |  4 +-
+ intern/cycles/blender/object.cpp            |  2 +-
+ intern/cycles/blender/volume.cpp            |  2 +-
+ intern/cycles/graph/node_enum.h             |  6 +-
+ intern/cycles/graph/node_type.cpp           |  6 +-
+ intern/cycles/graph/node_type.h             |  2 +-
+ intern/cycles/hydra/volume.cpp              |  3 +-
+ intern/cycles/kernel/osl/closures.cpp       |  2 +-
+ intern/cycles/kernel/osl/services.cpp       | 26 ++----
+ intern/cycles/scene/attribute.cpp           | 99 ++++++++++-----------
+ intern/cycles/scene/colorspace.cpp          |  4 +-
+ intern/cycles/scene/geometry_attributes.cpp | 12 +--
+ intern/cycles/scene/mesh_subdivision.cpp    |  4 +-
+ intern/cycles/scene/object.cpp              |  4 +-
+ intern/cycles/scene/osl.cpp                 | 60 ++++++-------
+ intern/cycles/scene/shader.cpp              |  2 +-
+ intern/cycles/scene/shader.h                |  2 +-
+ intern/cycles/scene/stats.h                 |  2 +-
+ 18 files changed, 114 insertions(+), 128 deletions(-)
+
+diff --git intern/cycles/blender/mesh.cpp intern/cycles/blender/mesh.cpp
+index db00f353e1dd..49e391440e81 100644
+--- intern/cycles/blender/mesh.cpp
++++ intern/cycles/blender/mesh.cpp
+@@ -201,7 +201,7 @@ static void mikk_compute_tangents(
+     attr = attributes.add(ATTR_STD_UV_TANGENT, name);
+   }
+   else {
+-    attr = attributes.add(name, TypeDesc::TypeVector, ATTR_ELEMENT_CORNER);
++    attr = attributes.add(name, TypeVector, ATTR_ELEMENT_CORNER);
+   }
+   float3 *tangent = attr->data_float3();
+   /* Create bitangent sign attribute. */
+@@ -220,7 +220,7 @@ static void mikk_compute_tangents(
+       attr_sign = attributes.add(ATTR_STD_UV_TANGENT_SIGN, name_sign);
+     }
+     else {
+-      attr_sign = attributes.add(name_sign, TypeDesc::TypeFloat, ATTR_ELEMENT_CORNER);
++      attr_sign = attributes.add(name_sign, TypeFloat, ATTR_ELEMENT_CORNER);
+     }
+     tangent_sign = attr_sign->data_float();
+   }
+diff --git intern/cycles/blender/object.cpp intern/cycles/blender/object.cpp
+index 54d88477bc8e..0e17a595e1ca 100644
+--- intern/cycles/blender/object.cpp
++++ intern/cycles/blender/object.cpp
+@@ -443,7 +443,7 @@ bool BlenderSync::sync_object_attributes(BL::DepsgraphObjectInstance &b_instance
+       }
+ 
+       /* Replace or add the value. */
+-      ParamValue new_param(name, TypeDesc::TypeFloat4, 1, &value);
++      ParamValue new_param(name, TypeFloat4, 1, &value);
+       assert(new_param.datasize() == sizeof(value));
+ 
+       if (!param) {
+diff --git intern/cycles/blender/volume.cpp intern/cycles/blender/volume.cpp
+index 7d0455efa72a..db9fc826fb9d 100644
+--- intern/cycles/blender/volume.cpp
++++ intern/cycles/blender/volume.cpp
+@@ -339,7 +339,7 @@ static void sync_volume_object(BL::BlendData &b_data,
+     {
+       Attribute *attr = (std != ATTR_STD_NONE) ?
+                             volume->attributes.add(std) :
+-                            volume->attributes.add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_VOXEL);
++                            volume->attributes.add(name, TypeFloat, ATTR_ELEMENT_VOXEL);
+ 
+       ImageLoader *loader = new BlenderVolumeLoader(
+           b_data, b_volume, name.string(), b_render.precision());
+diff --git intern/cycles/graph/node_enum.h intern/cycles/graph/node_enum.h
+index c18c4c2dc0eb..d003437a2081 100644
+--- intern/cycles/graph/node_enum.h
++++ intern/cycles/graph/node_enum.h
+@@ -48,17 +48,17 @@ struct NodeEnum {
+     return right.find(y)->second;
+   }
+ 
+-  unordered_map<ustring, int, ustringHash>::const_iterator begin() const
++  unordered_map<ustring, int>::const_iterator begin() const
+   {
+     return left.begin();
+   }
+-  unordered_map<ustring, int, ustringHash>::const_iterator end() const
++  unordered_map<ustring, int>::const_iterator end() const
+   {
+     return left.end();
+   }
+ 
+  private:
+-  unordered_map<ustring, int, ustringHash> left;
++  unordered_map<ustring, int> left;
+   unordered_map<int, ustring> right;
+ };
+ 
+diff --git intern/cycles/graph/node_type.cpp intern/cycles/graph/node_type.cpp
+index 3162e4d75fcf..368c6a2eab1c 100644
+--- intern/cycles/graph/node_type.cpp
++++ intern/cycles/graph/node_type.cpp
+@@ -203,9 +203,9 @@ const SocketType *NodeType::find_output(ustring name) const
+ 
+ /* Node Type Registry */
+ 
+-unordered_map<ustring, NodeType, ustringHash> &NodeType::types()
++unordered_map<ustring, NodeType> &NodeType::types()
+ {
+-  static unordered_map<ustring, NodeType, ustringHash> _types;
++  static unordered_map<ustring, NodeType> _types;
+   return _types;
+ }
+ 
+@@ -229,7 +229,7 @@ NodeType *NodeType::add(const char *name_, CreateFunc create_, Type type_, const
+ 
+ const NodeType *NodeType::find(ustring name)
+ {
+-  unordered_map<ustring, NodeType, ustringHash>::iterator it = types().find(name);
++  unordered_map<ustring, NodeType>::iterator it = types().find(name);
+   return (it == types().end()) ? NULL : &it->second;
+ }
+ 
+diff --git intern/cycles/graph/node_type.h intern/cycles/graph/node_type.h
+index 7a5f9376e6a6..39a21aeaeeb1 100644
+--- intern/cycles/graph/node_type.h
++++ intern/cycles/graph/node_type.h
+@@ -131,7 +131,7 @@ struct NodeType {
+                        Type type = NONE,
+                        const NodeType *base = NULL);
+   static const NodeType *find(ustring name);
+-  static unordered_map<ustring, NodeType, ustringHash> &types();
++  static unordered_map<ustring, NodeType> &types();
+ };
+ 
+ /* Node Definition Macros
+diff --git intern/cycles/hydra/volume.cpp intern/cycles/hydra/volume.cpp
+index 623e9ebc7c08..0cac0dc21d40 100644
+--- intern/cycles/hydra/volume.cpp
++++ intern/cycles/hydra/volume.cpp
+@@ -78,8 +78,7 @@ void HdCyclesVolume::Populate(HdSceneDelegate *sceneDelegate, HdDirtyBits dirtyB
+         {
+           Attribute *const attr = (std != ATTR_STD_NONE) ?
+                                       _geom->attributes.add(std) :
+-                                      _geom->attributes.add(
+-                                          name, TypeDesc::TypeFloat, ATTR_ELEMENT_VOXEL);
++                                      _geom->attributes.add(name, TypeFloat, ATTR_ELEMENT_VOXEL);
+           attr->data_voxel() = openvdbAsset->GetImageHandle();
+         }
+       }
+diff --git intern/cycles/kernel/osl/closures.cpp intern/cycles/kernel/osl/closures.cpp
+index 4a5906873af1..87b4ee1744a2 100644
+--- intern/cycles/kernel/osl/closures.cpp
++++ intern/cycles/kernel/osl/closures.cpp
+@@ -138,7 +138,7 @@ void osl_eval_nodes<SHADER_TYPE_SURFACE>(const KernelGlobalsCPU *kg,
+         bool found = kg->osl->services->get_attribute(sd,
+                                                       true,
+                                                       OSLRenderServices::u_empty,
+-                                                      TypeDesc::TypeVector,
++                                                      TypeVector,
+                                                       OSLRenderServices::u_geom_undisplaced,
+                                                       data);
+         (void)found;
+diff --git intern/cycles/kernel/osl/services.cpp intern/cycles/kernel/osl/services.cpp
+index 3fa7e9189611..d0044a7ac5b9 100644
+--- intern/cycles/kernel/osl/services.cpp
++++ intern/cycles/kernel/osl/services.cpp
+@@ -434,9 +434,7 @@ static bool set_attribute_float2(float2 f[3], TypeDesc type, bool derivatives, v
+     }
+     return true;
+   }
+-  else if (type == TypeDesc::TypePoint || type == TypeDesc::TypeVector ||
+-           type == TypeDesc::TypeNormal || type == TypeDesc::TypeColor)
+-  {
++  else if (type == TypePoint || type == TypeVector || type == TypeNormal || type == TypeColor) {
+     float *fval = (float *)val;
+ 
+     fval[0] = f[0].x;
+@@ -455,7 +453,7 @@ static bool set_attribute_float2(float2 f[3], TypeDesc type, bool derivatives, v
+ 
+     return true;
+   }
+-  else if (type == TypeDesc::TypeFloat) {
++  else if (type == TypeFloat) {
+     float *fval = (float *)val;
+     fval[0] = average(f[0]);
+ 
+@@ -505,9 +503,7 @@ static bool set_attribute_float3(float3 f[3], TypeDesc type, bool derivatives, v
+     }
+     return true;
+   }
+-  else if (type == TypeDesc::TypePoint || type == TypeDesc::TypeVector ||
+-           type == TypeDesc::TypeNormal || type == TypeDesc::TypeColor)
+-  {
++  else if (type == TypePoint || type == TypeVector || type == TypeNormal || type == TypeColor) {
+     float *fval = (float *)val;
+ 
+     fval[0] = f[0].x;
+@@ -526,7 +522,7 @@ static bool set_attribute_float3(float3 f[3], TypeDesc type, bool derivatives, v
+ 
+     return true;
+   }
+-  else if (type == TypeDesc::TypeFloat) {
++  else if (type == TypeFloat) {
+     float *fval = (float *)val;
+     fval[0] = average(f[0]);
+ 
+@@ -582,9 +578,7 @@ static bool set_attribute_float4(float4 f[3], TypeDesc type, bool derivatives, v
+     }
+     return true;
+   }
+-  else if (type == TypeDesc::TypePoint || type == TypeDesc::TypeVector ||
+-           type == TypeDesc::TypeNormal || type == TypeDesc::TypeColor)
+-  {
++  else if (type == TypePoint || type == TypeVector || type == TypeNormal || type == TypeColor) {
+     fval[0] = f[0].x;
+     fval[1] = f[0].y;
+     fval[2] = f[0].z;
+@@ -600,7 +594,7 @@ static bool set_attribute_float4(float4 f[3], TypeDesc type, bool derivatives, v
+     }
+     return true;
+   }
+-  else if (type == TypeDesc::TypeFloat) {
++  else if (type == TypeFloat) {
+     fval[0] = average(float4_to_float3(f[0]));
+ 
+     if (derivatives) {
+@@ -647,9 +641,7 @@ static bool set_attribute_float(float f[3], TypeDesc type, bool derivatives, voi
+     }
+     return true;
+   }
+-  else if (type == TypeDesc::TypePoint || type == TypeDesc::TypeVector ||
+-           type == TypeDesc::TypeNormal || type == TypeDesc::TypeColor)
+-  {
++  else if (type == TypePoint || type == TypeVector || type == TypeNormal || type == TypeColor) {
+     float *fval = (float *)val;
+     fval[0] = f[0];
+     fval[1] = f[0];
+@@ -667,7 +659,7 @@ static bool set_attribute_float(float f[3], TypeDesc type, bool derivatives, voi
+ 
+     return true;
+   }
+-  else if (type == TypeDesc::TypeFloat) {
++  else if (type == TypeFloat) {
+     float *fval = (float *)val;
+     fval[0] = f[0];
+ 
+@@ -761,7 +753,7 @@ static bool set_attribute_float3_3(float3 P[3], TypeDesc type, bool derivatives,
+ 
+ static bool set_attribute_matrix(const Transform &tfm, TypeDesc type, void *val)
+ {
+-  if (type == TypeDesc::TypeMatrix) {
++  if (type == TypeMatrix) {
+     copy_matrix(*(OSL::Matrix44 *)val, tfm);
+     return true;
+   }
+diff --git intern/cycles/scene/attribute.cpp intern/cycles/scene/attribute.cpp
+index 0a082f8e9d4b..aa4607f12af9 100644
+--- intern/cycles/scene/attribute.cpp
++++ intern/cycles/scene/attribute.cpp
+@@ -21,10 +21,9 @@ Attribute::Attribute(
+     : name(name), std(ATTR_STD_NONE), type(type), element(element), flags(0), modified(true)
+ {
+   /* string and matrix not supported! */
+-  assert(type == TypeDesc::TypeFloat || type == TypeDesc::TypeColor ||
+-         type == TypeDesc::TypePoint || type == TypeDesc::TypeVector ||
+-         type == TypeDesc::TypeNormal || type == TypeDesc::TypeMatrix || type == TypeFloat2 ||
+-         type == TypeFloat4 || type == TypeRGBA);
++  assert(type == TypeFloat || type == TypeColor || type == TypePoint || type == TypeVector ||
++         type == TypeNormal || type == TypeMatrix || type == TypeFloat2 || type == TypeFloat4 ||
++         type == TypeRGBA);
+ 
+   if (element == ATTR_ELEMENT_VOXEL) {
+     buffer.resize(sizeof(ImageHandle));
+@@ -170,18 +169,18 @@ size_t Attribute::data_sizeof() const
+   else if (element == ATTR_ELEMENT_CORNER_BYTE) {
+     return sizeof(uchar4);
+   }
+-  else if (type == TypeDesc::TypeFloat) {
++  else if (type == TypeFloat) {
+     return sizeof(float);
+   }
+   else if (type == TypeFloat2) {
+     return sizeof(float2);
+   }
+-  else if (type == TypeDesc::TypeMatrix) {
++  else if (type == TypeMatrix) {
+     return sizeof(Transform);
+     // The float3 type is not interchangeable with float4
+     // as it is now a packed type.
+   }
+-  else if (type == TypeDesc::TypeFloat4) {
++  else if (type == TypeFloat4) {
+     return sizeof(float4);
+   }
+   else if (type == TypeRGBA) {
+@@ -293,12 +292,8 @@ bool Attribute::same_storage(TypeDesc a, TypeDesc b)
+     return true;
+   }
+ 
+-  if (a == TypeDesc::TypeColor || a == TypeDesc::TypePoint || a == TypeDesc::TypeVector ||
+-      a == TypeDesc::TypeNormal)
+-  {
+-    if (b == TypeDesc::TypeColor || b == TypeDesc::TypePoint || b == TypeDesc::TypeVector ||
+-        b == TypeDesc::TypeNormal)
+-    {
++  if (a == TypeColor || a == TypePoint || a == TypeVector || a == TypeNormal) {
++    if (b == TypeColor || b == TypePoint || b == TypeVector || b == TypeNormal) {
+       return true;
+     }
+   }
+@@ -317,13 +312,13 @@ void Attribute::add_with_weight(void *dst, void *src, float weight)
+       ((uchar *)dst)[i] += uchar(((uchar *)src)[i] * weight);
+     }
+   }
+-  else if (same_storage(type, TypeDesc::TypeFloat)) {
++  else if (same_storage(type, TypeFloat)) {
+     *((float *)dst) += *((float *)src) * weight;
+   }
+   else if (same_storage(type, TypeFloat2)) {
+     *((float2 *)dst) += *((float2 *)src) * weight;
+   }
+-  else if (same_storage(type, TypeDesc::TypeVector)) {
++  else if (same_storage(type, TypeVector)) {
+     // Points are float3s and not float4s
+     *((float3 *)dst) += *((float3 *)src) * weight;
+   }
+@@ -425,7 +420,7 @@ AttrKernelDataType Attribute::kernel_type(const Attribute &attr)
+     return AttrKernelDataType::UCHAR4;
+   }
+ 
+-  if (attr.type == TypeDesc::TypeFloat) {
++  if (attr.type == TypeFloat) {
+     return AttrKernelDataType::FLOAT;
+   }
+ 
+@@ -433,7 +428,7 @@ AttrKernelDataType Attribute::kernel_type(const Attribute &attr)
+     return AttrKernelDataType::FLOAT2;
+   }
+ 
+-  if (attr.type == TypeFloat4 || attr.type == TypeRGBA || attr.type == TypeDesc::TypeMatrix) {
++  if (attr.type == TypeFloat4 || attr.type == TypeRGBA || attr.type == TypeMatrix) {
+     return AttrKernelDataType::FLOAT4;
+   }
+ 
+@@ -537,19 +532,19 @@ Attribute *AttributeSet::add(AttributeStandard std, ustring name)
+   if (geometry->geometry_type == Geometry::MESH) {
+     switch (std) {
+       case ATTR_STD_VERTEX_NORMAL:
+-        attr = add(name, TypeDesc::TypeNormal, ATTR_ELEMENT_VERTEX);
++        attr = add(name, TypeNormal, ATTR_ELEMENT_VERTEX);
+         break;
+       case ATTR_STD_FACE_NORMAL:
+-        attr = add(name, TypeDesc::TypeNormal, ATTR_ELEMENT_FACE);
++        attr = add(name, TypeNormal, ATTR_ELEMENT_FACE);
+         break;
+       case ATTR_STD_UV:
+         attr = add(name, TypeFloat2, ATTR_ELEMENT_CORNER);
+         break;
+       case ATTR_STD_UV_TANGENT:
+-        attr = add(name, TypeDesc::TypeVector, ATTR_ELEMENT_CORNER);
++        attr = add(name, TypeVector, ATTR_ELEMENT_CORNER);
+         break;
+       case ATTR_STD_UV_TANGENT_SIGN:
+-        attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_CORNER);
++        attr = add(name, TypeFloat, ATTR_ELEMENT_CORNER);
+         break;
+       case ATTR_STD_VERTEX_COLOR:
+         attr = add(name, TypeRGBA, ATTR_ELEMENT_CORNER_BYTE);
+@@ -557,28 +552,28 @@ Attribute *AttributeSet::add(AttributeStandard std, ustring name)
+       case ATTR_STD_GENERATED:
+       case ATTR_STD_POSITION_UNDEFORMED:
+       case ATTR_STD_POSITION_UNDISPLACED:
+-        attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_VERTEX);
++        attr = add(name, TypePoint, ATTR_ELEMENT_VERTEX);
+         break;
+       case ATTR_STD_MOTION_VERTEX_POSITION:
+-        attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_VERTEX_MOTION);
++        attr = add(name, TypePoint, ATTR_ELEMENT_VERTEX_MOTION);
+         break;
+       case ATTR_STD_MOTION_VERTEX_NORMAL:
+-        attr = add(name, TypeDesc::TypeNormal, ATTR_ELEMENT_VERTEX_MOTION);
++        attr = add(name, TypeNormal, ATTR_ELEMENT_VERTEX_MOTION);
+         break;
+       case ATTR_STD_PTEX_FACE_ID:
+-        attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_FACE);
++        attr = add(name, TypeFloat, ATTR_ELEMENT_FACE);
+         break;
+       case ATTR_STD_PTEX_UV:
+-        attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_VERTEX);
++        attr = add(name, TypePoint, ATTR_ELEMENT_VERTEX);
+         break;
+       case ATTR_STD_GENERATED_TRANSFORM:
+-        attr = add(name, TypeDesc::TypeMatrix, ATTR_ELEMENT_MESH);
++        attr = add(name, TypeMatrix, ATTR_ELEMENT_MESH);
+         break;
+       case ATTR_STD_POINTINESS:
+-        attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_VERTEX);
++        attr = add(name, TypeFloat, ATTR_ELEMENT_VERTEX);
+         break;
+       case ATTR_STD_RANDOM_PER_ISLAND:
+-        attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_FACE);
++        attr = add(name, TypeFloat, ATTR_ELEMENT_FACE);
+         break;
+       default:
+         assert(0);
+@@ -591,16 +586,16 @@ Attribute *AttributeSet::add(AttributeStandard std, ustring name)
+         attr = add(name, TypeFloat2, ATTR_ELEMENT_VERTEX);
+         break;
+       case ATTR_STD_GENERATED:
+-        attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_VERTEX);
++        attr = add(name, TypePoint, ATTR_ELEMENT_VERTEX);
+         break;
+       case ATTR_STD_MOTION_VERTEX_POSITION:
+-        attr = add(name, TypeDesc::TypeFloat4, ATTR_ELEMENT_VERTEX_MOTION);
++        attr = add(name, TypeFloat4, ATTR_ELEMENT_VERTEX_MOTION);
+         break;
+       case ATTR_STD_POINT_RANDOM:
+-        attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_VERTEX);
++        attr = add(name, TypeFloat, ATTR_ELEMENT_VERTEX);
+         break;
+       case ATTR_STD_GENERATED_TRANSFORM:
+-        attr = add(name, TypeDesc::TypeMatrix, ATTR_ELEMENT_MESH);
++        attr = add(name, TypeMatrix, ATTR_ELEMENT_MESH);
+         break;
+       default:
+         assert(0);
+@@ -610,10 +605,10 @@ Attribute *AttributeSet::add(AttributeStandard std, ustring name)
+   else if (geometry->geometry_type == Geometry::VOLUME) {
+     switch (std) {
+       case ATTR_STD_VERTEX_NORMAL:
+-        attr = add(name, TypeDesc::TypeNormal, ATTR_ELEMENT_VERTEX);
++        attr = add(name, TypeNormal, ATTR_ELEMENT_VERTEX);
+         break;
+       case ATTR_STD_FACE_NORMAL:
+-        attr = add(name, TypeDesc::TypeNormal, ATTR_ELEMENT_FACE);
++        attr = add(name, TypeNormal, ATTR_ELEMENT_FACE);
+         break;
+       case ATTR_STD_VOLUME_DENSITY:
+       case ATTR_STD_VOLUME_FLAME:
+@@ -622,13 +617,13 @@ Attribute *AttributeSet::add(AttributeStandard std, ustring name)
+       case ATTR_STD_VOLUME_VELOCITY_X:
+       case ATTR_STD_VOLUME_VELOCITY_Y:
+       case ATTR_STD_VOLUME_VELOCITY_Z:
+-        attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_VOXEL);
++        attr = add(name, TypeFloat, ATTR_ELEMENT_VOXEL);
+         break;
+       case ATTR_STD_VOLUME_COLOR:
+-        attr = add(name, TypeDesc::TypeColor, ATTR_ELEMENT_VOXEL);
++        attr = add(name, TypeColor, ATTR_ELEMENT_VOXEL);
+         break;
+       case ATTR_STD_VOLUME_VELOCITY:
+-        attr = add(name, TypeDesc::TypeVector, ATTR_ELEMENT_VOXEL);
++        attr = add(name, TypeVector, ATTR_ELEMENT_VOXEL);
+         break;
+       default:
+         assert(0);
+@@ -638,37 +633,37 @@ Attribute *AttributeSet::add(AttributeStandard std, ustring name)
+   else if (geometry->geometry_type == Geometry::HAIR) {
+     switch (std) {
+       case ATTR_STD_VERTEX_NORMAL:
+-        attr = add(name, TypeDesc::TypeNormal, ATTR_ELEMENT_CURVE_KEY);
++        attr = add(name, TypeNormal, ATTR_ELEMENT_CURVE_KEY);
+         break;
+       case ATTR_STD_UV:
+         attr = add(name, TypeFloat2, ATTR_ELEMENT_CURVE);
+         break;
+       case ATTR_STD_GENERATED:
+-        attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_CURVE);
++        attr = add(name, TypePoint, ATTR_ELEMENT_CURVE);
+         break;
+       case ATTR_STD_MOTION_VERTEX_POSITION:
+-        attr = add(name, TypeDesc::TypeFloat4, ATTR_ELEMENT_CURVE_KEY_MOTION);
++        attr = add(name, TypeFloat4, ATTR_ELEMENT_CURVE_KEY_MOTION);
+         break;
+       case ATTR_STD_CURVE_INTERCEPT:
+-        attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_CURVE_KEY);
++        attr = add(name, TypeFloat, ATTR_ELEMENT_CURVE_KEY);
+         break;
+       case ATTR_STD_CURVE_LENGTH:
+-        attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_CURVE);
++        attr = add(name, TypeFloat, ATTR_ELEMENT_CURVE);
+         break;
+       case ATTR_STD_CURVE_RANDOM:
+-        attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_CURVE);
++        attr = add(name, TypeFloat, ATTR_ELEMENT_CURVE);
+         break;
+       case ATTR_STD_GENERATED_TRANSFORM:
+-        attr = add(name, TypeDesc::TypeMatrix, ATTR_ELEMENT_MESH);
++        attr = add(name, TypeMatrix, ATTR_ELEMENT_MESH);
+         break;
+       case ATTR_STD_POINTINESS:
+-        attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_VERTEX);
++        attr = add(name, TypeFloat, ATTR_ELEMENT_VERTEX);
+         break;
+       case ATTR_STD_RANDOM_PER_ISLAND:
+-        attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_FACE);
++        attr = add(name, TypeFloat, ATTR_ELEMENT_FACE);
+         break;
+       case ATTR_STD_SHADOW_TRANSPARENCY:
+-        attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_CURVE_KEY);
++        attr = add(name, TypeFloat, ATTR_ELEMENT_CURVE_KEY);
+         break;
+       default:
+         assert(0);
+@@ -838,12 +833,12 @@ AttributeRequest::AttributeRequest(ustring name_)
+   name = name_;
+   std = ATTR_STD_NONE;
+ 
+-  type = TypeDesc::TypeFloat;
++  type = TypeFloat;
+   desc.element = ATTR_ELEMENT_NONE;
+   desc.offset = 0;
+   desc.type = NODE_ATTR_FLOAT;
+ 
+-  subd_type = TypeDesc::TypeFloat;
++  subd_type = TypeFloat;
+   subd_desc.element = ATTR_ELEMENT_NONE;
+   subd_desc.offset = 0;
+   subd_desc.type = NODE_ATTR_FLOAT;
+@@ -854,12 +849,12 @@ AttributeRequest::AttributeRequest(AttributeStandard std_)
+   name = ustring();
+   std = std_;
+ 
+-  type = TypeDesc::TypeFloat;
++  type = TypeFloat;
+   desc.element = ATTR_ELEMENT_NONE;
+   desc.offset = 0;
+   desc.type = NODE_ATTR_FLOAT;
+ 
+-  subd_type = TypeDesc::TypeFloat;
++  subd_type = TypeFloat;
+   subd_desc.element = ATTR_ELEMENT_NONE;
+   subd_desc.offset = 0;
+   subd_desc.type = NODE_ATTR_FLOAT;
+diff --git intern/cycles/scene/colorspace.cpp intern/cycles/scene/colorspace.cpp
+index 03053d9f1920..75c29e1fefde 100644
+--- intern/cycles/scene/colorspace.cpp
++++ intern/cycles/scene/colorspace.cpp
+@@ -28,8 +28,8 @@ ustring u_colorspace_srgb("__builtin_srgb");
+ #ifdef WITH_OCIO
+ static thread_mutex cache_colorspaces_mutex;
+ static thread_mutex cache_processors_mutex;
+-static unordered_map<ustring, ustring, ustringHash> cached_colorspaces;
+-static unordered_map<ustring, OCIO::ConstProcessorRcPtr, ustringHash> cached_processors;
++static unordered_map<ustring, ustring> cached_colorspaces;
++static unordered_map<ustring, OCIO::ConstProcessorRcPtr> cached_processors;
+ #endif
+ 
+ ColorSpaceProcessor *ColorSpaceManager::get_processor(ustring colorspace)
+diff --git intern/cycles/scene/geometry_attributes.cpp intern/cycles/scene/geometry_attributes.cpp
+index dccf0637853d..d92169d349d1 100644
+--- intern/cycles/scene/geometry_attributes.cpp
++++ intern/cycles/scene/geometry_attributes.cpp
+@@ -103,10 +103,10 @@ static void emit_attribute_map_entry(AttributeMap *attr_map,
+   attr_map[index].element = desc.element;
+   attr_map[index].offset = as_uint(desc.offset);
+ 
+-  if (type == TypeDesc::TypeFloat) {
++  if (type == TypeFloat) {
+     attr_map[index].type = NODE_ATTR_FLOAT;
+   }
+-  else if (type == TypeDesc::TypeMatrix) {
++  else if (type == TypeMatrix) {
+     attr_map[index].type = NODE_ATTR_MATRIX;
+   }
+   else if (type == TypeFloat2) {
+@@ -319,7 +319,7 @@ void GeometryManager::update_attribute_element_offset(Geometry *geom,
+       }
+       attr_uchar4_offset += size;
+     }
+-    else if (mattr->type == TypeDesc::TypeFloat) {
++    else if (mattr->type == TypeFloat) {
+       float *data = mattr->data_float();
+       offset = attr_float_offset;
+ 
+@@ -345,7 +345,7 @@ void GeometryManager::update_attribute_element_offset(Geometry *geom,
+       }
+       attr_float2_offset += size;
+     }
+-    else if (mattr->type == TypeDesc::TypeMatrix) {
++    else if (mattr->type == TypeMatrix) {
+       Transform *tfm = mattr->data_transform();
+       offset = attr_float4_offset;
+ 
+@@ -464,13 +464,13 @@ static void update_attribute_element_size(Geometry *geom,
+     else if (mattr->element == ATTR_ELEMENT_CORNER_BYTE) {
+       *attr_uchar4_size += size;
+     }
+-    else if (mattr->type == TypeDesc::TypeFloat) {
++    else if (mattr->type == TypeFloat) {
+       *attr_float_size += size;
+     }
+     else if (mattr->type == TypeFloat2) {
+       *attr_float2_size += size;
+     }
+-    else if (mattr->type == TypeDesc::TypeMatrix) {
++    else if (mattr->type == TypeMatrix) {
+       *attr_float4_size += size * 4;
+     }
+     else if (mattr->type == TypeFloat4 || mattr->type == TypeRGBA) {
+diff --git intern/cycles/scene/mesh_subdivision.cpp intern/cycles/scene/mesh_subdivision.cpp
+index d7833bec140a..7f08a9ca69b4 100644
+--- intern/cycles/scene/mesh_subdivision.cpp
++++ intern/cycles/scene/mesh_subdivision.cpp
+@@ -254,7 +254,7 @@ class OsdData {
+       for (int i = 0; i < refiner->GetMaxLevel(); i++) {
+         char *dest = src + refiner->GetLevel(i).GetNumVertices() * attr.data_sizeof();
+ 
+-        if (attr.same_storage(attr.type, TypeDesc::TypeFloat)) {
++        if (attr.same_storage(attr.type, TypeFloat)) {
+           primvar_refiner.Interpolate(i + 1, (OsdValue<float> *)src, (OsdValue<float> *&)dest);
+         }
+         else if (attr.same_storage(attr.type, TypeFloat2)) {
+@@ -273,7 +273,7 @@ class OsdData {
+       }
+ 
+       if (num_local_points) {
+-        if (attr.same_storage(attr.type, TypeDesc::TypeFloat)) {
++        if (attr.same_storage(attr.type, TypeFloat)) {
+           patch_table->ComputeLocalPointValues(
+               (OsdValue<float> *)&attr.buffer[0],
+               (OsdValue<float> *)&attr.buffer[num_refiner_verts * attr.data_sizeof()]);
+diff --git intern/cycles/scene/object.cpp intern/cycles/scene/object.cpp
+index ac5266f47c22..77fa7010e2c7 100644
+--- intern/cycles/scene/object.cpp
++++ intern/cycles/scene/object.cpp
+@@ -1117,7 +1117,7 @@ string ObjectManager::get_cryptomatte_objects(Scene *scene)
+ {
+   string manifest = "{";
+ 
+-  unordered_set<ustring, ustringHash> objects;
++  unordered_set<ustring> objects;
+   foreach (Object *object, scene->objects) {
+     if (objects.count(object->name)) {
+       continue;
+@@ -1133,7 +1133,7 @@ string ObjectManager::get_cryptomatte_objects(Scene *scene)
+ string ObjectManager::get_cryptomatte_assets(Scene *scene)
+ {
+   string manifest = "{";
+-  unordered_set<ustring, ustringHash> assets;
++  unordered_set<ustring> assets;
+   foreach (Object *ob, scene->objects) {
+     if (assets.count(ob->asset_name)) {
+       continue;
+diff --git intern/cycles/scene/osl.cpp intern/cycles/scene/osl.cpp
+index 01aac1508adc..3e63111f8d85 100644
+--- intern/cycles/scene/osl.cpp
++++ intern/cycles/scene/osl.cpp
+@@ -914,37 +914,37 @@ void OSLCompiler::parameter(ShaderNode *node, const char *name)
+   switch (socket.type) {
+     case SocketType::BOOLEAN: {
+       int value = node->get_bool(socket);
+-      ss->Parameter(name, TypeDesc::TypeInt, &value);
++      ss->Parameter(name, TypeInt, &value);
+       break;
+     }
+     case SocketType::FLOAT: {
+       float value = node->get_float(socket);
+-      ss->Parameter(uname, TypeDesc::TypeFloat, &value);
++      ss->Parameter(uname, TypeFloat, &value);
+       break;
+     }
+     case SocketType::INT: {
+       int value = node->get_int(socket);
+-      ss->Parameter(uname, TypeDesc::TypeInt, &value);
++      ss->Parameter(uname, TypeInt, &value);
+       break;
+     }
+     case SocketType::COLOR: {
+       float3 value = node->get_float3(socket);
+-      ss->Parameter(uname, TypeDesc::TypeColor, &value);
++      ss->Parameter(uname, TypeColor, &value);
+       break;
+     }
+     case SocketType::VECTOR: {
+       float3 value = node->get_float3(socket);
+-      ss->Parameter(uname, TypeDesc::TypeVector, &value);
++      ss->Parameter(uname, TypeVector, &value);
+       break;
+     }
+     case SocketType::POINT: {
+       float3 value = node->get_float3(socket);
+-      ss->Parameter(uname, TypeDesc::TypePoint, &value);
++      ss->Parameter(uname, TypePoint, &value);
+       break;
+     }
+     case SocketType::NORMAL: {
+       float3 value = node->get_float3(socket);
+-      ss->Parameter(uname, TypeDesc::TypeNormal, &value);
++      ss->Parameter(uname, TypeNormal, &value);
+       break;
+     }
+     case SocketType::POINT2: {
+@@ -954,19 +954,19 @@ void OSLCompiler::parameter(ShaderNode *node, const char *name)
+     }
+     case SocketType::STRING: {
+       ustring value = node->get_string(socket);
+-      ss->Parameter(uname, TypeDesc::TypeString, &value);
++      ss->Parameter(uname, TypeString, &value);
+       break;
+     }
+     case SocketType::ENUM: {
+       ustring value = node->get_string(socket);
+-      ss->Parameter(uname, TypeDesc::TypeString, &value);
++      ss->Parameter(uname, TypeString, &value);
+       break;
+     }
+     case SocketType::TRANSFORM: {
+       Transform value = node->get_transform(socket);
+       ProjectionTransform projection(value);
+       projection = projection_transpose(projection);
+-      ss->Parameter(uname, TypeDesc::TypeMatrix, &projection);
++      ss->Parameter(uname, TypeMatrix, &projection);
+       break;
+     }
+     case SocketType::BOOLEAN_ARRAY: {
+@@ -975,17 +975,17 @@ void OSLCompiler::parameter(ShaderNode *node, const char *name)
+       array<int> intvalue(value.size());
+       for (size_t i = 0; i < value.size(); i++)
+         intvalue[i] = value[i];
+-      ss->Parameter(uname, array_typedesc(TypeDesc::TypeInt, value.size()), intvalue.data());
++      ss->Parameter(uname, array_typedesc(TypeInt, value.size()), intvalue.data());
+       break;
+     }
+     case SocketType::FLOAT_ARRAY: {
+       const array<float> &value = node->get_float_array(socket);
+-      ss->Parameter(uname, array_typedesc(TypeDesc::TypeFloat, value.size()), value.data());
++      ss->Parameter(uname, array_typedesc(TypeFloat, value.size()), value.data());
+       break;
+     }
+     case SocketType::INT_ARRAY: {
+       const array<int> &value = node->get_int_array(socket);
+-      ss->Parameter(uname, array_typedesc(TypeDesc::TypeInt, value.size()), value.data());
++      ss->Parameter(uname, array_typedesc(TypeInt, value.size()), value.data());
+       break;
+     }
+     case SocketType::COLOR_ARRAY:
+@@ -996,16 +996,16 @@ void OSLCompiler::parameter(ShaderNode *node, const char *name)
+ 
+       switch (socket.type) {
+         case SocketType::COLOR_ARRAY:
+-          typedesc = TypeDesc::TypeColor;
++          typedesc = TypeColor;
+           break;
+         case SocketType::VECTOR_ARRAY:
+-          typedesc = TypeDesc::TypeVector;
++          typedesc = TypeVector;
+           break;
+         case SocketType::POINT_ARRAY:
+-          typedesc = TypeDesc::TypePoint;
++          typedesc = TypePoint;
+           break;
+         case SocketType::NORMAL_ARRAY:
+-          typedesc = TypeDesc::TypeNormal;
++          typedesc = TypeNormal;
+           break;
+         default:
+           assert(0);
+@@ -1034,7 +1034,7 @@ void OSLCompiler::parameter(ShaderNode *node, const char *name)
+     }
+     case SocketType::STRING_ARRAY: {
+       const array<ustring> &value = node->get_string_array(socket);
+-      ss->Parameter(uname, array_typedesc(TypeDesc::TypeString, value.size()), value.data());
++      ss->Parameter(uname, array_typedesc(TypeString, value.size()), value.data());
+       break;
+     }
+     case SocketType::TRANSFORM_ARRAY: {
+@@ -1043,7 +1043,7 @@ void OSLCompiler::parameter(ShaderNode *node, const char *name)
+       for (size_t i = 0; i < value.size(); i++) {
+         fvalue[i] = projection_transpose(ProjectionTransform(value[i]));
+       }
+-      ss->Parameter(uname, array_typedesc(TypeDesc::TypeMatrix, fvalue.size()), fvalue.data());
++      ss->Parameter(uname, array_typedesc(TypeMatrix, fvalue.size()), fvalue.data());
+       break;
+     }
+     case SocketType::CLOSURE:
+@@ -1061,55 +1061,55 @@ void OSLCompiler::parameter(ShaderNode *node, const char *name)
+ 
+ void OSLCompiler::parameter(const char *name, float f)
+ {
+-  ss->Parameter(name, TypeDesc::TypeFloat, &f);
++  ss->Parameter(name, TypeFloat, &f);
+ }
+ 
+ void OSLCompiler::parameter_color(const char *name, float3 f)
+ {
+-  ss->Parameter(name, TypeDesc::TypeColor, &f);
++  ss->Parameter(name, TypeColor, &f);
+ }
+ 
+ void OSLCompiler::parameter_point(const char *name, float3 f)
+ {
+-  ss->Parameter(name, TypeDesc::TypePoint, &f);
++  ss->Parameter(name, TypePoint, &f);
+ }
+ 
+ void OSLCompiler::parameter_normal(const char *name, float3 f)
+ {
+-  ss->Parameter(name, TypeDesc::TypeNormal, &f);
++  ss->Parameter(name, TypeNormal, &f);
+ }
+ 
+ void OSLCompiler::parameter_vector(const char *name, float3 f)
+ {
+-  ss->Parameter(name, TypeDesc::TypeVector, &f);
++  ss->Parameter(name, TypeVector, &f);
+ }
+ 
+ void OSLCompiler::parameter(const char *name, int f)
+ {
+-  ss->Parameter(name, TypeDesc::TypeInt, &f);
++  ss->Parameter(name, TypeInt, &f);
+ }
+ 
+ void OSLCompiler::parameter(const char *name, const char *s)
+ {
+-  ss->Parameter(name, TypeDesc::TypeString, &s);
++  ss->Parameter(name, TypeString, &s);
+ }
+ 
+ void OSLCompiler::parameter(const char *name, ustring s)
+ {
+   const char *str = s.c_str();
+-  ss->Parameter(name, TypeDesc::TypeString, &str);
++  ss->Parameter(name, TypeString, &str);
+ }
+ 
+ void OSLCompiler::parameter(const char *name, const Transform &tfm)
+ {
+   ProjectionTransform projection(tfm);
+   projection = projection_transpose(projection);
+-  ss->Parameter(name, TypeDesc::TypeMatrix, (float *)&projection);
++  ss->Parameter(name, TypeMatrix, (float *)&projection);
+ }
+ 
+ void OSLCompiler::parameter_array(const char *name, const float f[], int arraylen)
+ {
+-  TypeDesc type = TypeDesc::TypeFloat;
++  TypeDesc type = TypeFloat;
+   type.arraylen = arraylen;
+   ss->Parameter(name, type, f);
+ }
+@@ -1125,7 +1125,7 @@ void OSLCompiler::parameter_color_array(const char *name, const array<float3> &f
+     table[i][2] = f[i].z;
+   }
+ 
+-  TypeDesc type = TypeDesc::TypeColor;
++  TypeDesc type = TypeColor;
+   type.arraylen = table.size();
+   ss->Parameter(name, type, table.data());
+ }
+diff --git intern/cycles/scene/shader.cpp intern/cycles/scene/shader.cpp
+index e7b04db4f393..c8d2733b816c 100644
+--- intern/cycles/scene/shader.cpp
++++ intern/cycles/scene/shader.cpp
+@@ -819,7 +819,7 @@ float3 ShaderManager::rec709_to_scene_linear(float3 c)
+ string ShaderManager::get_cryptomatte_materials(Scene *scene)
+ {
+   string manifest = "{";
+-  unordered_set<ustring, ustringHash> materials;
++  unordered_set<ustring> materials;
+   foreach (Shader *shader, scene->shaders) {
+     if (materials.count(shader->name)) {
+       continue;
+diff --git intern/cycles/scene/shader.h intern/cycles/scene/shader.h
+index f29d351ccafc..261e57196f5c 100644
+--- intern/cycles/scene/shader.h
++++ intern/cycles/scene/shader.h
+@@ -228,7 +228,7 @@ class ShaderManager {
+ 
+   uint32_t update_flags;
+ 
+-  typedef unordered_map<ustring, uint64_t, ustringHash> AttributeIDMap;
++  typedef unordered_map<ustring, uint64_t> AttributeIDMap;
+   AttributeIDMap unique_attribute_id;
+ 
+   static thread_mutex lookup_table_mutex;
+diff --git intern/cycles/scene/stats.h intern/cycles/scene/stats.h
+index 9f35f7c90600..f22f6e330631 100644
+--- intern/cycles/scene/stats.h
++++ intern/cycles/scene/stats.h
+@@ -131,7 +131,7 @@ class NamedSampleCountStats {
+   string full_report(int indent_level = 0);
+   void add(const ustring &name, uint64_t samples, uint64_t hits);
+ 
+-  typedef unordered_map<ustring, NamedSampleCountPair, ustringHash> entry_map;
++  typedef unordered_map<ustring, NamedSampleCountPair> entry_map;
+   entry_map entries;
+ };
+ 



Home | Main Index | Thread Index | Old Index