Ping

On Thu, Mar 18, 2021 at 04:08:31AM +0000, Dimitri Karamazov wrote:
> Update graphics/blender to 2.92.0
> 
> This update broke the cycles renderer just for OpenBSD hence the
> delay. Fix by @brecht - blender cycles developer.
> Hopefully if blender makes a corrective release we can get
> rid of these additional patches or just wait until 2.93.0.
> 
> The tests could be enabled now, 4 fail out of 61 but these failures are
> harmless and caused by the absence of port embree which I'm working on.
> Tests can only be carried out against the final installation and
> additional 1.5GBs of files are required which are hosted in a svn repo
> with no tarballs. :(
> So I've refrained from enabling them.
> 
> Added py-requests dependency to enable blenderkit addon.
> 
> Build & Run tested on amd64.
> 
> regards,
>   Dimitri
> 
Index: Makefile
===================================================================
RCS file: /cvs/ports/graphics/blender/Makefile,v
retrieving revision 1.102
diff -u -p -r1.102 Makefile
--- Makefile    23 Feb 2021 19:39:24 -0000      1.102
+++ Makefile    18 Mar 2021 03:26:59 -0000
@@ -4,7 +4,7 @@ ONLY_FOR_ARCHS = amd64
 
 COMMENT =      3D creation software
 
-DISTNAME =     blender-2.91.2
+DISTNAME =     blender-2.92.0
 
 CATEGORIES =   graphics
 
@@ -23,8 +23,8 @@ WANTLIB += avformat avutil blosc boost_a
 WANTLIB += boost_date_time-mt boost_filesystem-mt boost_iostreams-mt
 WANTLIB += boost_regex-mt boost_system-mt boost_thread-mt c fftw3
 WANTLIB += freetype gmp gmpxx jpeg m openal openjp2 openvdb osdCPU
-WANTLIB += osdGPU png potrace sndfile swscale tbb tiff tinyxml
-WANTLIB += util yaml-cpp z
+WANTLIB += osdGPU png potrace pugixml sndfile swscale tbb tiff
+WANTLIB += tinyxml util yaml-cpp z
 
 MASTER_SITES = https://download.blender.org/source/ \
                http://mirror.cs.umn.edu/blender.org/source/
@@ -44,7 +44,8 @@ CONFIGURE_ARGS =      -DPYTHON_INCLUDE_DIR="$
                        -DWITH_CYCLES_EMBREE=OFF \
                        -DWITH_JACK=OFF
 
-BUILD_DEPENDS = math/py-numpy${MODPY_FLAVOR}
+BUILD_DEPENDS = math/py-numpy${MODPY_FLAVOR} \
+               www/py-requests${MODPY_FLAVOR}
 LIB_DEPENDS =  audio/libsndfile \
                audio/openal \
                devel/boost \
@@ -68,6 +69,7 @@ LIB_DEPENDS = audio/libsndfile \
                ${MODPY_LIB_DEPENDS}
 RUN_DEPENDS =  devel/desktop-file-utils \
                math/py-numpy${MODPY_FLAVOR} \
+               www/py-requests${MODPY_FLAVOR} \
                x11/gnome/librsvg
 
 NO_TEST =      Yes
Index: distinfo
===================================================================
RCS file: /cvs/ports/graphics/blender/distinfo,v
retrieving revision 1.30
diff -u -p -r1.30 distinfo
--- distinfo    27 Jan 2021 20:15:25 -0000      1.30
+++ distinfo    18 Mar 2021 03:26:59 -0000
@@ -1,2 +1,2 @@
-SHA256 (blender-2.91.2.tar.xz) = GFy8TNfy9hSnWUIh2CNxcK3n84nRaFjO4irXeMJvzHA=
-SIZE (blender-2.91.2.tar.xz) = 42057100
+SHA256 (blender-2.92.0.tar.xz) = 55HPxAMpI4NXfDyM4s005aos2NoKdIMEEEmhYJ3bRZU=
+SIZE (blender-2.92.0.tar.xz) = 42444576
Index: patches/patch-intern_cycles_graph_node_type_cpp
===================================================================
RCS file: patches/patch-intern_cycles_graph_node_type_cpp
diff -N patches/patch-intern_cycles_graph_node_type_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-intern_cycles_graph_node_type_cpp     18 Mar 2021 03:26:59 
-0000
@@ -0,0 +1,14 @@
+$OpenBSD$
+
+Index: intern/cycles/graph/node_type.cpp
+--- intern/cycles/graph/node_type.cpp.orig
++++ intern/cycles/graph/node_type.cpp
+@@ -154,7 +154,7 @@ void NodeType::register_input(ustring name,
+                               int struct_offset,
+                               const void *default_value,
+                               const NodeEnum *enum_values,
+-                              const NodeType **node_type,
++                              const NodeType *node_type,
+                               int flags,
+                               int extra_flags)
+ {
Index: patches/patch-intern_cycles_graph_node_type_h
===================================================================
RCS file: patches/patch-intern_cycles_graph_node_type_h
diff -N patches/patch-intern_cycles_graph_node_type_h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-intern_cycles_graph_node_type_h       18 Mar 2021 03:26:59 
-0000
@@ -0,0 +1,68 @@
+$OpenBSD$
+
+Index: intern/cycles/graph/node_type.h
+--- intern/cycles/graph/node_type.h.orig
++++ intern/cycles/graph/node_type.h
+@@ -87,7 +87,7 @@ struct SocketType {
+   int struct_offset;
+   const void *default_value;
+   const NodeEnum *enum_values;
+-  const NodeType **node_type;
++  const NodeType *node_type;
+   int flags;
+   ustring ui_name;
+   SocketModifiedFlags modified_flag_bit;
+@@ -115,7 +115,7 @@ struct NodeType {
+                       int struct_offset,
+                       const void *default_value,
+                       const NodeEnum *enum_values = NULL,
+-                      const NodeType **node_type = NULL,
++                      const NodeType *node_type = NULL,
+                       int flags = 0,
+                       int extra_flags = 0);
+   void register_output(ustring name, ustring ui_name, SocketType::Type type);
+@@ -140,27 +140,38 @@ struct NodeType {
+   static unordered_map<ustring, NodeType, ustringHash> &types();
+ };
+ 
+-/* Node Definition Macros */
++/* Node Definition Macros
++ *
++ * Node we use accessor to get node types to ensure correct static
++ * initialization order. */
+ 
+ #define NODE_DECLARE \
++  static const NodeType *get_node_type(); \
+   template<typename T> static const NodeType *register_type(); \
+-  static Node *create(const NodeType *type); \
+-  static const NodeType *node_type;
++  static Node *create(const NodeType *type);
+ 
+ #define NODE_DEFINE(structname) \
+-  const NodeType *structname::node_type = 
structname::register_type<structname>(); \
+   Node *structname::create(const NodeType *) \
+   { \
+     return new structname(); \
+   } \
++  const NodeType *structname::get_node_type() \
++  { \
++    static const NodeType *node_type = register_type<structname>(); \
++    return node_type; \
++  } \
+   template<typename T> const NodeType *structname::register_type()
+ 
+ #define NODE_ABSTRACT_DECLARE \
+   template<typename T> static const NodeType *register_base_type(); \
+-  static const NodeType *node_base_type;
++  static const NodeType *get_node_base_type();
+ 
+ #define NODE_ABSTRACT_DEFINE(structname) \
+-  const NodeType *structname::node_base_type = 
structname::register_base_type<structname>(); \
++  const NodeType *structname::get_node_base_type() \
++  { \
++    static const NodeType *node_base_type = register_base_type<structname>(); 
\
++    return node_base_type; \
++  } \
+   template<typename T> const NodeType *structname::register_base_type()
+ 
+ /* Sock Definition Macros */
Index: patches/patch-intern_cycles_graph_node_xml_cpp
===================================================================
RCS file: patches/patch-intern_cycles_graph_node_xml_cpp
diff -N patches/patch-intern_cycles_graph_node_xml_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-intern_cycles_graph_node_xml_cpp      18 Mar 2021 03:26:59 
-0000
@@ -0,0 +1,23 @@
+$OpenBSD$
+
+Index: intern/cycles/graph/node_xml.cpp
+--- intern/cycles/graph/node_xml.cpp.orig
++++ intern/cycles/graph/node_xml.cpp
+@@ -200,7 +200,7 @@ void xml_read_node(XMLReader &reader, Node *node, xml_
+         map<ustring, Node *>::iterator it = reader.node_map.find(value);
+         if (it != reader.node_map.end()) {
+           Node *value_node = it->second;
+-          if (value_node->is_a(*(socket.node_type)))
++          if (value_node->is_a(socket.node_type))
+             node->set(socket, it->second);
+         }
+         break;
+@@ -215,7 +215,7 @@ void xml_read_node(XMLReader &reader, Node *node, xml_
+           map<ustring, Node *>::iterator it = 
reader.node_map.find(ustring(tokens[i]));
+           if (it != reader.node_map.end()) {
+             Node *value_node = it->second;
+-            value[i] = (value_node->is_a(*(socket.node_type))) ? value_node : 
NULL;
++            value[i] = (value_node->is_a(socket.node_type)) ? value_node : 
NULL;
+           }
+           else {
+             value[i] = NULL;
Index: patches/patch-intern_cycles_render_background_cpp
===================================================================
RCS file: patches/patch-intern_cycles_render_background_cpp
diff -N patches/patch-intern_cycles_render_background_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-intern_cycles_render_background_cpp   18 Mar 2021 03:26:59 
-0000
@@ -0,0 +1,20 @@
+$OpenBSD$
+
+Index: intern/cycles/render/background.cpp
+--- intern/cycles/render/background.cpp.orig
++++ intern/cycles/render/background.cpp
+@@ -47,12 +47,12 @@ NODE_DEFINE(Background)
+ 
+   SOCKET_FLOAT(volume_step_size, "Volume Step Size", 0.1f);
+ 
+-  SOCKET_NODE(shader, "Shader", &Shader::node_type);
++  SOCKET_NODE(shader, "Shader", Shader::get_node_type());
+ 
+   return type;
+ }
+ 
+-Background::Background() : Node(node_type)
++Background::Background() : Node(get_node_type())
+ {
+   shader = NULL;
+ }
Index: patches/patch-intern_cycles_render_camera_cpp
===================================================================
RCS file: patches/patch-intern_cycles_render_camera_cpp
diff -N patches/patch-intern_cycles_render_camera_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-intern_cycles_render_camera_cpp       18 Mar 2021 03:26:59 
-0000
@@ -0,0 +1,14 @@
+$OpenBSD$
+
+Index: intern/cycles/render/camera.cpp
+--- intern/cycles/render/camera.cpp.orig
++++ intern/cycles/render/camera.cpp
+@@ -163,7 +163,7 @@ NODE_DEFINE(Camera)
+   return type;
+ }
+ 
+-Camera::Camera() : Node(node_type)
++Camera::Camera() : Node(get_node_type())
+ {
+   shutter_table_offset = TABLE_OFFSET_INVALID;
+ 
Index: patches/patch-intern_cycles_render_film_cpp
===================================================================
RCS file: patches/patch-intern_cycles_render_film_cpp
diff -N patches/patch-intern_cycles_render_film_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-intern_cycles_render_film_cpp 18 Mar 2021 03:26:59 -0000
@@ -0,0 +1,23 @@
+$OpenBSD$
+
+Index: intern/cycles/render/film.cpp
+--- intern/cycles/render/film.cpp.orig
++++ intern/cycles/render/film.cpp
+@@ -96,7 +96,7 @@ NODE_DEFINE(Pass)
+   return type;
+ }
+ 
+-Pass::Pass() : Node(node_type)
++Pass::Pass() : Node(get_node_type())
+ {
+ }
+ 
+@@ -407,7 +407,7 @@ NODE_DEFINE(Film)
+   return type;
+ }
+ 
+-Film::Film() : Node(node_type)
++Film::Film() : Node(get_node_type())
+ {
+   use_light_visibility = false;
+   filter_table_offset = TABLE_OFFSET_INVALID;
Index: patches/patch-intern_cycles_render_geometry_cpp
===================================================================
RCS file: patches/patch-intern_cycles_render_geometry_cpp
diff -N patches/patch-intern_cycles_render_geometry_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-intern_cycles_render_geometry_cpp     18 Mar 2021 03:26:59 
-0000
@@ -0,0 +1,23 @@
+$OpenBSD$
+
+Index: intern/cycles/render/geometry.cpp
+--- intern/cycles/render/geometry.cpp.orig
++++ intern/cycles/render/geometry.cpp
+@@ -52,7 +52,7 @@ NODE_ABSTRACT_DEFINE(Geometry)
+ 
+   SOCKET_UINT(motion_steps, "Motion Steps", 3);
+   SOCKET_BOOLEAN(use_motion_blur, "Use Motion Blur", false);
+-  SOCKET_NODE_ARRAY(used_shaders, "Shaders", &Shader::node_type);
++  SOCKET_NODE_ARRAY(used_shaders, "Shaders", Shader::get_node_type());
+ 
+   return type;
+ }
+@@ -1289,7 +1289,7 @@ void GeometryManager::device_update_bvh(Device *device
+   dscene->data.bvh.use_bvh_steps = (scene->params.num_bvh_time_steps != 0);
+   dscene->data.bvh.curve_subdivisions = scene->params.curve_subdivisions();
+   /* The scene handle is set in 'CPUDevice::const_copy_to' and 
'OptiXDevice::const_copy_to' */
+-  dscene->data.bvh.scene = NULL;
++  dscene->data.bvh.scene = 0;
+ }
+ 
+ void GeometryManager::device_update_preprocess(Device *device, Scene *scene, 
Progress &progress)
Index: patches/patch-intern_cycles_render_hair_cpp
===================================================================
RCS file: patches/patch-intern_cycles_render_hair_cpp
diff -N patches/patch-intern_cycles_render_hair_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-intern_cycles_render_hair_cpp 18 Mar 2021 03:26:59 -0000
@@ -0,0 +1,23 @@
+$OpenBSD$
+
+Index: intern/cycles/render/hair.cpp
+--- intern/cycles/render/hair.cpp.orig
++++ intern/cycles/render/hair.cpp
+@@ -283,7 +283,7 @@ void Hair::Curve::cardinal_keys_for_step(const float3 
+ 
+ NODE_DEFINE(Hair)
+ {
+-  NodeType *type = NodeType::add("hair", create, NodeType::NONE, 
Geometry::node_base_type);
++  NodeType *type = NodeType::add("hair", create, NodeType::NONE, 
Geometry::get_node_base_type());
+ 
+   SOCKET_POINT_ARRAY(curve_keys, "Curve Keys", array<float3>());
+   SOCKET_FLOAT_ARRAY(curve_radius, "Curve Radius", array<float>());
+@@ -293,7 +293,7 @@ NODE_DEFINE(Hair)
+   return type;
+ }
+ 
+-Hair::Hair() : Geometry(node_type, Geometry::HAIR)
++Hair::Hair() : Geometry(get_node_type(), Geometry::HAIR)
+ {
+   curvekey_offset = 0;
+   curve_shape = CURVE_RIBBON;
Index: patches/patch-intern_cycles_render_integrator_cpp
===================================================================
RCS file: patches/patch-intern_cycles_render_integrator_cpp
diff -N patches/patch-intern_cycles_render_integrator_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-intern_cycles_render_integrator_cpp   18 Mar 2021 03:26:59 
-0000
@@ -0,0 +1,14 @@
+$OpenBSD$
+
+Index: intern/cycles/render/integrator.cpp
+--- intern/cycles/render/integrator.cpp.orig
++++ intern/cycles/render/integrator.cpp
+@@ -94,7 +94,7 @@ NODE_DEFINE(Integrator)
+   return type;
+ }
+ 
+-Integrator::Integrator() : Node(node_type)
++Integrator::Integrator() : Node(get_node_type())
+ {
+ }
+ 
Index: patches/patch-intern_cycles_render_light_cpp
===================================================================
RCS file: patches/patch-intern_cycles_render_light_cpp
diff -N patches/patch-intern_cycles_render_light_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-intern_cycles_render_light_cpp        18 Mar 2021 03:26:59 
-0000
@@ -0,0 +1,47 @@
+$OpenBSD$
+
+Index: intern/cycles/render/light.cpp
+--- intern/cycles/render/light.cpp.orig
++++ intern/cycles/render/light.cpp
+@@ -151,12 +151,12 @@ NODE_DEFINE(Light)
+   SOCKET_BOOLEAN(is_portal, "Is Portal", false);
+   SOCKET_BOOLEAN(is_enabled, "Is Enabled", true);
+ 
+-  SOCKET_NODE(shader, "Shader", &Shader::node_type);
++  SOCKET_NODE(shader, "Shader", Shader::get_node_type());
+ 
+   return type;
+ }
+ 
+-Light::Light() : Node(node_type)
++Light::Light() : Node(get_node_type())
+ {
+ }
+ 
+@@ -603,7 +603,7 @@ void LightManager::device_update_background(Device *de
+   Shader *shader = scene->background->get_shader(scene);
+   int num_suns = 0;
+   foreach (ShaderNode *node, shader->graph->nodes) {
+-    if (node->type == EnvironmentTextureNode::node_type) {
++    if (node->type == EnvironmentTextureNode::get_node_type()) {
+       EnvironmentTextureNode *env = (EnvironmentTextureNode *)node;
+       ImageMetaData metadata;
+       if (!env->handle.empty()) {
+@@ -612,7 +612,7 @@ void LightManager::device_update_background(Device *de
+         environment_res.y = max(environment_res.y, metadata.height);
+       }
+     }
+-    if (node->type == SkyTextureNode::node_type) {
++    if (node->type == SkyTextureNode::get_node_type()) {
+       SkyTextureNode *sky = (SkyTextureNode *)node;
+       if (sky->get_sky_type() == NODE_SKY_NISHITA && sky->get_sun_disc()) {
+         /* Ensure that the input coordinates aren't transformed before they 
reach the node.
+@@ -621,7 +621,7 @@ void LightManager::device_update_background(Device *de
+         const ShaderInput *vec_in = sky->input("Vector");
+         if (vec_in && vec_in->link && vec_in->link->parent) {
+           ShaderNode *vec_src = vec_in->link->parent;
+-          if ((vec_src->type != TextureCoordinateNode::node_type) ||
++          if ((vec_src->type != TextureCoordinateNode::get_node_type()) ||
+               (vec_in->link != vec_src->output("Generated"))) {
+             environment_res.x = max(environment_res.x, 4096);
+             environment_res.y = max(environment_res.y, 2048);
Index: patches/patch-intern_cycles_render_mesh_cpp
===================================================================
RCS file: patches/patch-intern_cycles_render_mesh_cpp
diff -N patches/patch-intern_cycles_render_mesh_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-intern_cycles_render_mesh_cpp 18 Mar 2021 03:26:59 -0000
@@ -0,0 +1,23 @@
+$OpenBSD$
+
+Index: intern/cycles/render/mesh.cpp
+--- intern/cycles/render/mesh.cpp.orig
++++ intern/cycles/render/mesh.cpp
+@@ -125,7 +125,7 @@ float3 Mesh::SubdFace::normal(const Mesh *mesh) const
+ 
+ NODE_DEFINE(Mesh)
+ {
+-  NodeType *type = NodeType::add("mesh", create, NodeType::NONE, 
Geometry::node_base_type);
++  NodeType *type = NodeType::add("mesh", create, NodeType::NONE, 
Geometry::get_node_base_type());
+ 
+   SOCKET_INT_ARRAY(triangles, "Triangles", array<int>());
+   SOCKET_POINT_ARRAY(verts, "Vertices", array<float3>());
+@@ -202,7 +202,7 @@ Mesh::Mesh(const NodeType *node_type, Type geom_type_)
+   patch_table = NULL;
+ }
+ 
+-Mesh::Mesh() : Mesh(node_type, Geometry::MESH)
++Mesh::Mesh() : Mesh(get_node_type(), Geometry::MESH)
+ {
+ }
+ 
Index: patches/patch-intern_cycles_render_nodes_cpp
===================================================================
RCS file: patches/patch-intern_cycles_render_nodes_cpp
diff -N patches/patch-intern_cycles_render_nodes_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-intern_cycles_render_nodes_cpp        18 Mar 2021 03:27:00 
-0000
@@ -0,0 +1,811 @@
+$OpenBSD$
+
+Index: intern/cycles/render/nodes.cpp
+--- intern/cycles/render/nodes.cpp.orig
++++ intern/cycles/render/nodes.cpp
+@@ -258,7 +258,7 @@ NODE_DEFINE(ImageTextureNode)
+   return type;
+ }
+ 
+-ImageTextureNode::ImageTextureNode() : ImageSlotTextureNode(node_type)
++ImageTextureNode::ImageTextureNode() : ImageSlotTextureNode(get_node_type())
+ {
+   colorspace = u_colorspace_raw;
+   animated = false;
+@@ -309,11 +309,11 @@ void ImageTextureNode::cull_tiles(Scene *scene, Shader
+   ustring attribute;
+   if (vector_in->link) {
+     ShaderNode *node = vector_in->link->parent;
+-    if (node->type == UVMapNode::node_type) {
++    if (node->type == UVMapNode::get_node_type()) {
+       UVMapNode *uvmap = (UVMapNode *)node;
+       attribute = uvmap->get_attribute();
+     }
+-    else if (node->type == TextureCoordinateNode::node_type) {
++    else if (node->type == TextureCoordinateNode::get_node_type()) {
+       if (vector_in->link != node->output("UV")) {
+         return;
+       }
+@@ -525,7 +525,7 @@ NODE_DEFINE(EnvironmentTextureNode)
+   return type;
+ }
+ 
+-EnvironmentTextureNode::EnvironmentTextureNode() : 
ImageSlotTextureNode(node_type)
++EnvironmentTextureNode::EnvironmentTextureNode() : 
ImageSlotTextureNode(get_node_type())
+ {
+   colorspace = u_colorspace_raw;
+   animated = false;
+@@ -819,7 +819,7 @@ NODE_DEFINE(SkyTextureNode)
+   return type;
+ }
+ 
+-SkyTextureNode::SkyTextureNode() : TextureNode(node_type)
++SkyTextureNode::SkyTextureNode() : TextureNode(get_node_type())
+ {
+ }
+ 
+@@ -1002,7 +1002,7 @@ NODE_DEFINE(GradientTextureNode)
+   return type;
+ }
+ 
+-GradientTextureNode::GradientTextureNode() : TextureNode(node_type)
++GradientTextureNode::GradientTextureNode() : TextureNode(get_node_type())
+ {
+ }
+ 
+@@ -1060,7 +1060,7 @@ NODE_DEFINE(NoiseTextureNode)
+   return type;
+ }
+ 
+-NoiseTextureNode::NoiseTextureNode() : TextureNode(node_type)
++NoiseTextureNode::NoiseTextureNode() : TextureNode(get_node_type())
+ {
+ }
+ 
+@@ -1154,7 +1154,7 @@ NODE_DEFINE(VoronoiTextureNode)
+   return type;
+ }
+ 
+-VoronoiTextureNode::VoronoiTextureNode() : TextureNode(node_type)
++VoronoiTextureNode::VoronoiTextureNode() : TextureNode(get_node_type())
+ {
+ }
+ 
+@@ -1234,7 +1234,7 @@ NODE_DEFINE(IESLightNode)
+   return type;
+ }
+ 
+-IESLightNode::IESLightNode() : TextureNode(node_type)
++IESLightNode::IESLightNode() : TextureNode(get_node_type())
+ {
+   light_manager = NULL;
+   slot = -1;
+@@ -1326,7 +1326,7 @@ NODE_DEFINE(WhiteNoiseTextureNode)
+   return type;
+ }
+ 
+-WhiteNoiseTextureNode::WhiteNoiseTextureNode() : ShaderNode(node_type)
++WhiteNoiseTextureNode::WhiteNoiseTextureNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -1392,7 +1392,7 @@ NODE_DEFINE(MusgraveTextureNode)
+   return type;
+ }
+ 
+-MusgraveTextureNode::MusgraveTextureNode() : TextureNode(node_type)
++MusgraveTextureNode::MusgraveTextureNode() : TextureNode(get_node_type())
+ {
+ }
+ 
+@@ -1491,7 +1491,7 @@ NODE_DEFINE(WaveTextureNode)
+   return type;
+ }
+ 
+-WaveTextureNode::WaveTextureNode() : TextureNode(node_type)
++WaveTextureNode::WaveTextureNode() : TextureNode(get_node_type())
+ {
+ }
+ 
+@@ -1566,7 +1566,7 @@ NODE_DEFINE(MagicTextureNode)
+   return type;
+ }
+ 
+-MagicTextureNode::MagicTextureNode() : TextureNode(node_type)
++MagicTextureNode::MagicTextureNode() : TextureNode(get_node_type())
+ {
+ }
+ 
+@@ -1620,7 +1620,7 @@ NODE_DEFINE(CheckerTextureNode)
+   return type;
+ }
+ 
+-CheckerTextureNode::CheckerTextureNode() : TextureNode(node_type)
++CheckerTextureNode::CheckerTextureNode() : TextureNode(get_node_type())
+ {
+ }
+ 
+@@ -1687,7 +1687,7 @@ NODE_DEFINE(BrickTextureNode)
+   return type;
+ }
+ 
+-BrickTextureNode::BrickTextureNode() : TextureNode(node_type)
++BrickTextureNode::BrickTextureNode() : TextureNode(get_node_type())
+ {
+ }
+ 
+@@ -1780,7 +1780,7 @@ NODE_DEFINE(PointDensityTextureNode)
+   return type;
+ }
+ 
+-PointDensityTextureNode::PointDensityTextureNode() : ShaderNode(node_type)
++PointDensityTextureNode::PointDensityTextureNode() : 
ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -1897,7 +1897,7 @@ NODE_DEFINE(NormalNode)
+   return type;
+ }
+ 
+-NormalNode::NormalNode() : ShaderNode(node_type)
++NormalNode::NormalNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -1944,7 +1944,7 @@ NODE_DEFINE(MappingNode)
+   return type;
+ }
+ 
+-MappingNode::MappingNode() : ShaderNode(node_type)
++MappingNode::MappingNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -1999,7 +1999,7 @@ NODE_DEFINE(RGBToBWNode)
+   return type;
+ }
+ 
+-RGBToBWNode::RGBToBWNode() : ShaderNode(node_type)
++RGBToBWNode::RGBToBWNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -2312,7 +2312,7 @@ NODE_DEFINE(AnisotropicBsdfNode)
+   return type;
+ }
+ 
+-AnisotropicBsdfNode::AnisotropicBsdfNode() : BsdfNode(node_type)
++AnisotropicBsdfNode::AnisotropicBsdfNode() : BsdfNode(get_node_type())
+ {
+   closure = CLOSURE_BSDF_MICROFACET_GGX_ID;
+ }
+@@ -2370,7 +2370,7 @@ NODE_DEFINE(GlossyBsdfNode)
+   return type;
+ }
+ 
+-GlossyBsdfNode::GlossyBsdfNode() : BsdfNode(node_type)
++GlossyBsdfNode::GlossyBsdfNode() : BsdfNode(get_node_type())
+ {
+   closure = CLOSURE_BSDF_MICROFACET_GGX_ID;
+   distribution_orig = NBUILTIN_CLOSURES;
+@@ -2463,7 +2463,7 @@ NODE_DEFINE(GlassBsdfNode)
+   return type;
+ }
+ 
+-GlassBsdfNode::GlassBsdfNode() : BsdfNode(node_type)
++GlassBsdfNode::GlassBsdfNode() : BsdfNode(get_node_type())
+ {
+   closure = CLOSURE_BSDF_SHARP_GLASS_ID;
+   distribution_orig = NBUILTIN_CLOSURES;
+@@ -2556,7 +2556,7 @@ NODE_DEFINE(RefractionBsdfNode)
+   return type;
+ }
+ 
+-RefractionBsdfNode::RefractionBsdfNode() : BsdfNode(node_type)
++RefractionBsdfNode::RefractionBsdfNode() : BsdfNode(get_node_type())
+ {
+   closure = CLOSURE_BSDF_REFRACTION_ID;
+   distribution_orig = NBUILTIN_CLOSURES;
+@@ -2644,7 +2644,7 @@ NODE_DEFINE(ToonBsdfNode)
+   return type;
+ }
+ 
+-ToonBsdfNode::ToonBsdfNode() : BsdfNode(node_type)
++ToonBsdfNode::ToonBsdfNode() : BsdfNode(get_node_type())
+ {
+   closure = CLOSURE_BSDF_DIFFUSE_TOON_ID;
+ }
+@@ -2678,7 +2678,7 @@ NODE_DEFINE(VelvetBsdfNode)
+   return type;
+ }
+ 
+-VelvetBsdfNode::VelvetBsdfNode() : BsdfNode(node_type)
++VelvetBsdfNode::VelvetBsdfNode() : BsdfNode(get_node_type())
+ {
+   closure = CLOSURE_BSDF_ASHIKHMIN_VELVET_ID;
+ }
+@@ -2709,7 +2709,7 @@ NODE_DEFINE(DiffuseBsdfNode)
+   return type;
+ }
+ 
+-DiffuseBsdfNode::DiffuseBsdfNode() : BsdfNode(node_type)
++DiffuseBsdfNode::DiffuseBsdfNode() : BsdfNode(get_node_type())
+ {
+   closure = CLOSURE_BSDF_DIFFUSE_ID;
+ }
+@@ -2776,7 +2776,7 @@ NODE_DEFINE(PrincipledBsdfNode)
+   return type;
+ }
+ 
+-PrincipledBsdfNode::PrincipledBsdfNode() : BsdfBaseNode(node_type)
++PrincipledBsdfNode::PrincipledBsdfNode() : BsdfBaseNode(get_node_type())
+ {
+   closure = CLOSURE_BSDF_PRINCIPLED_ID;
+   distribution = CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_ID;
+@@ -2997,7 +2997,7 @@ NODE_DEFINE(TranslucentBsdfNode)
+   return type;
+ }
+ 
+-TranslucentBsdfNode::TranslucentBsdfNode() : BsdfNode(node_type)
++TranslucentBsdfNode::TranslucentBsdfNode() : BsdfNode(get_node_type())
+ {
+   closure = CLOSURE_BSDF_TRANSLUCENT_ID;
+ }
+@@ -3026,7 +3026,7 @@ NODE_DEFINE(TransparentBsdfNode)
+   return type;
+ }
+ 
+-TransparentBsdfNode::TransparentBsdfNode() : BsdfNode(node_type)
++TransparentBsdfNode::TransparentBsdfNode() : BsdfNode(get_node_type())
+ {
+   closure = CLOSURE_BSDF_TRANSPARENT_ID;
+ }
+@@ -3067,7 +3067,7 @@ NODE_DEFINE(SubsurfaceScatteringNode)
+   return type;
+ }
+ 
+-SubsurfaceScatteringNode::SubsurfaceScatteringNode() : BsdfNode(node_type)
++SubsurfaceScatteringNode::SubsurfaceScatteringNode() : 
BsdfNode(get_node_type())
+ {
+   closure = falloff;
+ }
+@@ -3109,7 +3109,7 @@ NODE_DEFINE(EmissionNode)
+   return type;
+ }
+ 
+-EmissionNode::EmissionNode() : ShaderNode(node_type)
++EmissionNode::EmissionNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -3159,7 +3159,7 @@ NODE_DEFINE(BackgroundNode)
+   return type;
+ }
+ 
+-BackgroundNode::BackgroundNode() : ShaderNode(node_type)
++BackgroundNode::BackgroundNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -3208,7 +3208,7 @@ NODE_DEFINE(HoldoutNode)
+   return type;
+ }
+ 
+-HoldoutNode::HoldoutNode() : ShaderNode(node_type)
++HoldoutNode::HoldoutNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -3246,7 +3246,7 @@ NODE_DEFINE(AmbientOcclusionNode)
+   return type;
+ }
+ 
+-AmbientOcclusionNode::AmbientOcclusionNode() : ShaderNode(node_type)
++AmbientOcclusionNode::AmbientOcclusionNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -3334,7 +3334,7 @@ NODE_DEFINE(AbsorptionVolumeNode)
+   return type;
+ }
+ 
+-AbsorptionVolumeNode::AbsorptionVolumeNode() : VolumeNode(node_type)
++AbsorptionVolumeNode::AbsorptionVolumeNode() : VolumeNode(get_node_type())
+ {
+   closure = CLOSURE_VOLUME_ABSORPTION_ID;
+ }
+@@ -3365,7 +3365,7 @@ NODE_DEFINE(ScatterVolumeNode)
+   return type;
+ }
+ 
+-ScatterVolumeNode::ScatterVolumeNode() : VolumeNode(node_type)
++ScatterVolumeNode::ScatterVolumeNode() : VolumeNode(get_node_type())
+ {
+   closure = CLOSURE_VOLUME_HENYEY_GREENSTEIN_ID;
+ }
+@@ -3406,7 +3406,7 @@ NODE_DEFINE(PrincipledVolumeNode)
+   return type;
+ }
+ 
+-PrincipledVolumeNode::PrincipledVolumeNode() : VolumeNode(node_type)
++PrincipledVolumeNode::PrincipledVolumeNode() : VolumeNode(get_node_type())
+ {
+   closure = CLOSURE_VOLUME_HENYEY_GREENSTEIN_ID;
+   density_attribute = ustring("density");
+@@ -3531,7 +3531,7 @@ NODE_DEFINE(PrincipledHairBsdfNode)
+   return type;
+ }
+ 
+-PrincipledHairBsdfNode::PrincipledHairBsdfNode() : BsdfBaseNode(node_type)
++PrincipledHairBsdfNode::PrincipledHairBsdfNode() : 
BsdfBaseNode(get_node_type())
+ {
+   closure = CLOSURE_BSDF_HAIR_PRINCIPLED_ID;
+ }
+@@ -3642,7 +3642,7 @@ NODE_DEFINE(HairBsdfNode)
+   return type;
+ }
+ 
+-HairBsdfNode::HairBsdfNode() : BsdfNode(node_type)
++HairBsdfNode::HairBsdfNode() : BsdfNode(get_node_type())
+ {
+   closure = CLOSURE_BSDF_HAIR_REFLECTION_ID;
+ }
+@@ -3684,7 +3684,7 @@ NODE_DEFINE(GeometryNode)
+   return type;
+ }
+ 
+-GeometryNode::GeometryNode() : ShaderNode(node_type)
++GeometryNode::GeometryNode() : ShaderNode(get_node_type())
+ {
+   special_type = SHADER_SPECIAL_TYPE_GEOMETRY;
+ }
+@@ -3833,7 +3833,7 @@ NODE_DEFINE(TextureCoordinateNode)
+   return type;
+ }
+ 
+-TextureCoordinateNode::TextureCoordinateNode() : ShaderNode(node_type)
++TextureCoordinateNode::TextureCoordinateNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -3980,7 +3980,7 @@ NODE_DEFINE(UVMapNode)
+   return type;
+ }
+ 
+-UVMapNode::UVMapNode() : ShaderNode(node_type)
++UVMapNode::UVMapNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -4069,7 +4069,7 @@ NODE_DEFINE(LightPathNode)
+   return type;
+ }
+ 
+-LightPathNode::LightPathNode() : ShaderNode(node_type)
++LightPathNode::LightPathNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -4169,7 +4169,7 @@ NODE_DEFINE(LightFalloffNode)
+   return type;
+ }
+ 
+-LightFalloffNode::LightFalloffNode() : ShaderNode(node_type)
++LightFalloffNode::LightFalloffNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -4226,7 +4226,7 @@ NODE_DEFINE(ObjectInfoNode)
+   return type;
+ }
+ 
+-ObjectInfoNode::ObjectInfoNode() : ShaderNode(node_type)
++ObjectInfoNode::ObjectInfoNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -4284,7 +4284,7 @@ NODE_DEFINE(ParticleInfoNode)
+   return type;
+ }
+ 
+-ParticleInfoNode::ParticleInfoNode() : ShaderNode(node_type)
++ParticleInfoNode::ParticleInfoNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -4391,7 +4391,7 @@ NODE_DEFINE(HairInfoNode)
+   return type;
+ }
+ 
+-HairInfoNode::HairInfoNode() : ShaderNode(node_type)
++HairInfoNode::HairInfoNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -4466,7 +4466,7 @@ NODE_DEFINE(VolumeInfoNode)
+   return type;
+ }
+ 
+-VolumeInfoNode::VolumeInfoNode() : ShaderNode(node_type)
++VolumeInfoNode::VolumeInfoNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -4547,7 +4547,7 @@ NODE_DEFINE(VertexColorNode)
+   return type;
+ }
+ 
+-VertexColorNode::VertexColorNode() : ShaderNode(node_type)
++VertexColorNode::VertexColorNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -4628,7 +4628,7 @@ NODE_DEFINE(ValueNode)
+   return type;
+ }
+ 
+-ValueNode::ValueNode() : ShaderNode(node_type)
++ValueNode::ValueNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -4662,7 +4662,7 @@ NODE_DEFINE(ColorNode)
+   return type;
+ }
+ 
+-ColorNode::ColorNode() : ShaderNode(node_type)
++ColorNode::ColorNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -4701,7 +4701,7 @@ NODE_DEFINE(AddClosureNode)
+   return type;
+ }
+ 
+-AddClosureNode::AddClosureNode() : ShaderNode(node_type)
++AddClosureNode::AddClosureNode() : ShaderNode(get_node_type())
+ {
+   special_type = SHADER_SPECIAL_TYPE_COMBINE_CLOSURE;
+ }
+@@ -4745,7 +4745,7 @@ NODE_DEFINE(MixClosureNode)
+   return type;
+ }
+ 
+-MixClosureNode::MixClosureNode() : ShaderNode(node_type)
++MixClosureNode::MixClosureNode() : ShaderNode(get_node_type())
+ {
+   special_type = SHADER_SPECIAL_TYPE_COMBINE_CLOSURE;
+ }
+@@ -4799,7 +4799,7 @@ NODE_DEFINE(MixClosureWeightNode)
+   return type;
+ }
+ 
+-MixClosureWeightNode::MixClosureWeightNode() : ShaderNode(node_type)
++MixClosureWeightNode::MixClosureWeightNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -4836,7 +4836,7 @@ NODE_DEFINE(InvertNode)
+   return type;
+ }
+ 
+-InvertNode::InvertNode() : ShaderNode(node_type)
++InvertNode::InvertNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -4912,7 +4912,7 @@ NODE_DEFINE(MixNode)
+   return type;
+ }
+ 
+-MixNode::MixNode() : ShaderNode(node_type)
++MixNode::MixNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -4967,7 +4967,7 @@ NODE_DEFINE(CombineRGBNode)
+   return type;
+ }
+ 
+-CombineRGBNode::CombineRGBNode() : ShaderNode(node_type)
++CombineRGBNode::CombineRGBNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -5015,7 +5015,7 @@ NODE_DEFINE(CombineXYZNode)
+   return type;
+ }
+ 
+-CombineXYZNode::CombineXYZNode() : ShaderNode(node_type)
++CombineXYZNode::CombineXYZNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -5063,7 +5063,7 @@ NODE_DEFINE(CombineHSVNode)
+   return type;
+ }
+ 
+-CombineHSVNode::CombineHSVNode() : ShaderNode(node_type)
++CombineHSVNode::CombineHSVNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -5106,7 +5106,7 @@ NODE_DEFINE(GammaNode)
+   return type;
+ }
+ 
+-GammaNode::GammaNode() : ShaderNode(node_type)
++GammaNode::GammaNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -5162,7 +5162,7 @@ NODE_DEFINE(BrightContrastNode)
+   return type;
+ }
+ 
+-BrightContrastNode::BrightContrastNode() : ShaderNode(node_type)
++BrightContrastNode::BrightContrastNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -5207,7 +5207,7 @@ NODE_DEFINE(SeparateRGBNode)
+   return type;
+ }
+ 
+-SeparateRGBNode::SeparateRGBNode() : ShaderNode(node_type)
++SeparateRGBNode::SeparateRGBNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -5260,7 +5260,7 @@ NODE_DEFINE(SeparateXYZNode)
+   return type;
+ }
+ 
+-SeparateXYZNode::SeparateXYZNode() : ShaderNode(node_type)
++SeparateXYZNode::SeparateXYZNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -5313,7 +5313,7 @@ NODE_DEFINE(SeparateHSVNode)
+   return type;
+ }
+ 
+-SeparateHSVNode::SeparateHSVNode() : ShaderNode(node_type)
++SeparateHSVNode::SeparateHSVNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -5367,7 +5367,7 @@ NODE_DEFINE(HSVNode)
+   return type;
+ }
+ 
+-HSVNode::HSVNode() : ShaderNode(node_type)
++HSVNode::HSVNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -5410,7 +5410,7 @@ NODE_DEFINE(AttributeNode)
+   return type;
+ }
+ 
+-AttributeNode::AttributeNode() : ShaderNode(node_type)
++AttributeNode::AttributeNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -5498,7 +5498,7 @@ NODE_DEFINE(CameraNode)
+   return type;
+ }
+ 
+-CameraNode::CameraNode() : ShaderNode(node_type)
++CameraNode::CameraNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -5536,7 +5536,7 @@ NODE_DEFINE(FresnelNode)
+   return type;
+ }
+ 
+-FresnelNode::FresnelNode() : ShaderNode(node_type)
++FresnelNode::FresnelNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -5576,7 +5576,7 @@ NODE_DEFINE(LayerWeightNode)
+   return type;
+ }
+ 
+-LayerWeightNode::LayerWeightNode() : ShaderNode(node_type)
++LayerWeightNode::LayerWeightNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -5624,7 +5624,7 @@ NODE_DEFINE(WireframeNode)
+   return type;
+ }
+ 
+-WireframeNode::WireframeNode() : ShaderNode(node_type)
++WireframeNode::WireframeNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -5672,7 +5672,7 @@ NODE_DEFINE(WavelengthNode)
+   return type;
+ }
+ 
+-WavelengthNode::WavelengthNode() : ShaderNode(node_type)
++WavelengthNode::WavelengthNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -5702,7 +5702,7 @@ NODE_DEFINE(BlackbodyNode)
+   return type;
+ }
+ 
+-BlackbodyNode::BlackbodyNode() : ShaderNode(node_type)
++BlackbodyNode::BlackbodyNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -5741,7 +5741,7 @@ NODE_DEFINE(OutputNode)
+   return type;
+ }
+ 
+-OutputNode::OutputNode() : ShaderNode(node_type)
++OutputNode::OutputNode() : ShaderNode(get_node_type())
+ {
+   special_type = SHADER_SPECIAL_TYPE_OUTPUT;
+ }
+@@ -5793,7 +5793,7 @@ NODE_DEFINE(MapRangeNode)
+   return type;
+ }
+ 
+-MapRangeNode::MapRangeNode() : ShaderNode(node_type)
++MapRangeNode::MapRangeNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -5881,7 +5881,7 @@ NODE_DEFINE(ClampNode)
+   return type;
+ }
+ 
+-ClampNode::ClampNode() : ShaderNode(node_type)
++ClampNode::ClampNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -5936,7 +5936,7 @@ NODE_DEFINE(OutputAOVNode)
+   return type;
+ }
+ 
+-OutputAOVNode::OutputAOVNode() : ShaderNode(node_type)
++OutputAOVNode::OutputAOVNode() : ShaderNode(get_node_type())
+ {
+   special_type = SHADER_SPECIAL_TYPE_OUTPUT_AOV;
+   slot = -1;
+@@ -6034,7 +6034,7 @@ NODE_DEFINE(MathNode)
+   return type;
+ }
+ 
+-MathNode::MathNode() : ShaderNode(node_type)
++MathNode::MathNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -6137,7 +6137,7 @@ NODE_DEFINE(VectorMathNode)
+   return type;
+ }
+ 
+-VectorMathNode::VectorMathNode() : ShaderNode(node_type)
++VectorMathNode::VectorMathNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -6226,7 +6226,7 @@ NODE_DEFINE(VectorRotateNode)
+   return type;
+ }
+ 
+-VectorRotateNode::VectorRotateNode() : ShaderNode(node_type)
++VectorRotateNode::VectorRotateNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -6282,7 +6282,7 @@ NODE_DEFINE(VectorTransformNode)
+   return type;
+ }
+ 
+-VectorTransformNode::VectorTransformNode() : ShaderNode(node_type)
++VectorTransformNode::VectorTransformNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -6330,7 +6330,7 @@ NODE_DEFINE(BumpNode)
+   return type;
+ }
+ 
+-BumpNode::BumpNode() : ShaderNode(node_type)
++BumpNode::BumpNode() : ShaderNode(get_node_type())
+ {
+   special_type = SHADER_SPECIAL_TYPE_BUMP;
+ }
+@@ -6477,7 +6477,7 @@ NODE_DEFINE(RGBCurvesNode)
+   return type;
+ }
+ 
+-RGBCurvesNode::RGBCurvesNode() : CurvesNode(node_type)
++RGBCurvesNode::RGBCurvesNode() : CurvesNode(get_node_type())
+ {
+ }
+ 
+@@ -6514,7 +6514,7 @@ NODE_DEFINE(VectorCurvesNode)
+   return type;
+ }
+ 
+-VectorCurvesNode::VectorCurvesNode() : CurvesNode(node_type)
++VectorCurvesNode::VectorCurvesNode() : CurvesNode(get_node_type())
+ {
+ }
+ 
+@@ -6551,7 +6551,7 @@ NODE_DEFINE(RGBRampNode)
+   return type;
+ }
+ 
+-RGBRampNode::RGBRampNode() : ShaderNode(node_type)
++RGBRampNode::RGBRampNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -6624,7 +6624,7 @@ NODE_DEFINE(SetNormalNode)
+   return type;
+ }
+ 
+-SetNormalNode::SetNormalNode() : ShaderNode(node_type)
++SetNormalNode::SetNormalNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -6748,7 +6748,7 @@ NODE_DEFINE(NormalMapNode)
+   return type;
+ }
+ 
+-NormalMapNode::NormalMapNode() : ShaderNode(node_type)
++NormalMapNode::NormalMapNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -6844,7 +6844,7 @@ NODE_DEFINE(TangentNode)
+   return type;
+ }
+ 
+-TangentNode::TangentNode() : ShaderNode(node_type)
++TangentNode::TangentNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -6914,7 +6914,7 @@ NODE_DEFINE(BevelNode)
+   return type;
+ }
+ 
+-BevelNode::BevelNode() : ShaderNode(node_type)
++BevelNode::BevelNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -6959,7 +6959,7 @@ NODE_DEFINE(DisplacementNode)
+   return type;
+ }
+ 
+-DisplacementNode::DisplacementNode() : ShaderNode(node_type)
++DisplacementNode::DisplacementNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
+@@ -7018,7 +7018,7 @@ NODE_DEFINE(VectorDisplacementNode)
+   return type;
+ }
+ 
+-VectorDisplacementNode::VectorDisplacementNode() : ShaderNode(node_type)
++VectorDisplacementNode::VectorDisplacementNode() : ShaderNode(get_node_type())
+ {
+ }
+ 
Index: patches/patch-intern_cycles_render_object_cpp
===================================================================
RCS file: patches/patch-intern_cycles_render_object_cpp
diff -N patches/patch-intern_cycles_render_object_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-intern_cycles_render_object_cpp       18 Mar 2021 03:27:00 
-0000
@@ -0,0 +1,30 @@
+$OpenBSD$
+
+Index: intern/cycles/render/object.cpp
+--- intern/cycles/render/object.cpp.orig
++++ intern/cycles/render/object.cpp
+@@ -82,7 +82,7 @@ NODE_DEFINE(Object)
+ {
+   NodeType *type = NodeType::add("object", create);
+ 
+-  SOCKET_NODE(geometry, "Geometry", &Geometry::node_base_type);
++  SOCKET_NODE(geometry, "Geometry", Geometry::get_node_base_type());
+   SOCKET_TRANSFORM(tfm, "Transform", transform_identity());
+   SOCKET_UINT(visibility, "Visibility", ~0);
+   SOCKET_COLOR(color, "Color", make_float3(0.0f, 0.0f, 0.0f));
+@@ -98,13 +98,13 @@ NODE_DEFINE(Object)
+ 
+   SOCKET_BOOLEAN(is_shadow_catcher, "Shadow Catcher", false);
+ 
+-  SOCKET_NODE(particle_system, "Particle System", &ParticleSystem::node_type);
++  SOCKET_NODE(particle_system, "Particle System", 
ParticleSystem::get_node_type());
+   SOCKET_INT(particle_index, "Particle Index", 0);
+ 
+   return type;
+ }
+ 
+-Object::Object() : Node(node_type)
++Object::Object() : Node(get_node_type())
+ {
+   particle_system = NULL;
+   particle_index = 0;
Index: patches/patch-intern_cycles_render_particles_cpp
===================================================================
RCS file: patches/patch-intern_cycles_render_particles_cpp
diff -N patches/patch-intern_cycles_render_particles_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-intern_cycles_render_particles_cpp    18 Mar 2021 03:27:00 
-0000
@@ -0,0 +1,14 @@
+$OpenBSD$
+
+Index: intern/cycles/render/particles.cpp
+--- intern/cycles/render/particles.cpp.orig
++++ intern/cycles/render/particles.cpp
+@@ -36,7 +36,7 @@ NODE_DEFINE(ParticleSystem)
+   return type;
+ }
+ 
+-ParticleSystem::ParticleSystem() : Node(node_type)
++ParticleSystem::ParticleSystem() : Node(get_node_type())
+ {
+ }
+ 
Index: patches/patch-intern_cycles_render_shader_cpp
===================================================================
RCS file: patches/patch-intern_cycles_render_shader_cpp
diff -N patches/patch-intern_cycles_render_shader_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-intern_cycles_render_shader_cpp       18 Mar 2021 03:27:00 
-0000
@@ -0,0 +1,32 @@
+$OpenBSD$
+
+Index: intern/cycles/render/shader.cpp
+--- intern/cycles/render/shader.cpp.orig
++++ intern/cycles/render/shader.cpp
+@@ -192,7 +192,7 @@ NODE_DEFINE(Shader)
+   return type;
+ }
+ 
+-Shader::Shader() : Node(node_type)
++Shader::Shader() : Node(get_node_type())
+ {
+   pass_id = 0;
+ 
+@@ -241,7 +241,7 @@ bool Shader::is_constant_emission(float3 *emission)
+     return false;
+   }
+ 
+-  if (surf->link->parent->type == EmissionNode::node_type) {
++  if (surf->link->parent->type == EmissionNode::get_node_type()) {
+     EmissionNode *node = (EmissionNode *)surf->link->parent;
+ 
+     assert(node->input("Color"));
+@@ -253,7 +253,7 @@ bool Shader::is_constant_emission(float3 *emission)
+ 
+     *emission = node->get_color() * node->get_strength();
+   }
+-  else if (surf->link->parent->type == BackgroundNode::node_type) {
++  else if (surf->link->parent->type == BackgroundNode::get_node_type()) {
+     BackgroundNode *node = (BackgroundNode *)surf->link->parent;
+ 
+     assert(node->input("Color"));
Index: patches/patch-intern_cycles_render_volume_cpp
===================================================================
RCS file: patches/patch-intern_cycles_render_volume_cpp
diff -N patches/patch-intern_cycles_render_volume_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-intern_cycles_render_volume_cpp       18 Mar 2021 03:27:00 
-0000
@@ -0,0 +1,23 @@
+$OpenBSD$
+
+Index: intern/cycles/render/volume.cpp
+--- intern/cycles/render/volume.cpp.orig
++++ intern/cycles/render/volume.cpp
+@@ -36,7 +36,7 @@ CCL_NAMESPACE_BEGIN
+ 
+ NODE_DEFINE(Volume)
+ {
+-  NodeType *type = NodeType::add("volume", create, NodeType::NONE, 
Mesh::node_type);
++  NodeType *type = NodeType::add("volume", create, NodeType::NONE, 
Mesh::get_node_type());
+ 
+   SOCKET_FLOAT(clipping, "Clipping", 0.001f);
+   SOCKET_FLOAT(step_size, "Step Size", 0.0f);
+@@ -45,7 +45,7 @@ NODE_DEFINE(Volume)
+   return type;
+ }
+ 
+-Volume::Volume() : Mesh(node_type, Geometry::VOLUME)
++Volume::Volume() : Mesh(get_node_type(), Geometry::VOLUME)
+ {
+   clipping = 0.001f;
+   step_size = 0.0f;
Index: patches/patch-intern_guardedalloc_intern_mallocn_c
===================================================================
RCS file: 
/cvs/ports/graphics/blender/patches/patch-intern_guardedalloc_intern_mallocn_c,v
retrieving revision 1.5
diff -u -p -r1.5 patch-intern_guardedalloc_intern_mallocn_c
--- patches/patch-intern_guardedalloc_intern_mallocn_c  29 Nov 2020 19:57:01 
-0000      1.5
+++ patches/patch-intern_guardedalloc_intern_mallocn_c  18 Mar 2021 03:27:00 
-0000
@@ -3,9 +3,9 @@ $OpenBSD: patch-intern_guardedalloc_inte
 Use posix_memalign() on OpenBSD.
 
 Index: intern/guardedalloc/intern/mallocn.c
---- intern/guardedalloc/intern/mallocn.c.orig  Tue Sep 22 19:36:29 2020
-+++ intern/guardedalloc/intern/mallocn.c       Sun Nov 22 13:12:51 2020
-@@ -71,7 +71,8 @@ void *aligned_malloc(size_t size, size_t alignment)
+--- intern/guardedalloc/intern/mallocn.c.orig
++++ intern/guardedalloc/intern/mallocn.c
+@@ -72,7 +72,8 @@ void *aligned_malloc(size_t size, size_t alignment)
  
  #ifdef _WIN32
    return _aligned_malloc(size, alignment);
Index: patches/patch-source_blender_blenkernel_intern_packedFile_c
===================================================================
RCS file: 
/cvs/ports/graphics/blender/patches/patch-source_blender_blenkernel_intern_packedFile_c,v
retrieving revision 1.11
diff -u -p -r1.11 patch-source_blender_blenkernel_intern_packedFile_c
--- patches/patch-source_blender_blenkernel_intern_packedFile_c 29 Nov 2020 
19:57:01 -0000      1.11
+++ patches/patch-source_blender_blenkernel_intern_packedFile_c 18 Mar 2021 
03:27:00 -0000
@@ -1,9 +1,9 @@
 $OpenBSD: patch-source_blender_blenkernel_intern_packedFile_c,v 1.11 
2020/11/29 19:57:01 sthen Exp $
 
 Index: source/blender/blenkernel/intern/packedFile.c
---- source/blender/blenkernel/intern/packedFile.c.orig Wed Nov 25 14:01:32 2020
-+++ source/blender/blenkernel/intern/packedFile.c      Sat Nov 28 21:50:54 2020
-@@ -330,7 +330,7 @@ int BKE_packedfile_write_to_file(ReportList *reports,
+--- source/blender/blenkernel/intern/packedFile.c.orig
++++ source/blender/blenkernel/intern/packedFile.c
+@@ -333,7 +333,7 @@ int BKE_packedfile_write_to_file(ReportList *reports,
    /* make sure the path to the file exists... */
    BLI_make_existing_file(name);
  
Index: patches/patch-source_blender_blenloader_intern_readfile_h
===================================================================
RCS file: 
/cvs/ports/graphics/blender/patches/patch-source_blender_blenloader_intern_readfile_h,v
retrieving revision 1.1
diff -u -p -r1.1 patch-source_blender_blenloader_intern_readfile_h
--- patches/patch-source_blender_blenloader_intern_readfile_h   29 Nov 2020 
19:57:01 -0000      1.1
+++ patches/patch-source_blender_blenloader_intern_readfile_h   18 Mar 2021 
03:27:00 -0000
@@ -1,9 +1,9 @@
 $OpenBSD: patch-source_blender_blenloader_intern_readfile_h,v 1.1 2020/11/29 
19:57:01 sthen Exp $
 
 Index: source/blender/blenloader/intern/readfile.h
---- source/blender/blenloader/intern/readfile.h.orig   Wed Nov 25 14:01:32 2020
-+++ source/blender/blenloader/intern/readfile.h        Sat Nov 28 21:50:54 2020
-@@ -62,7 +62,8 @@ enum eFileDataFlag {
+--- source/blender/blenloader/intern/readfile.h.orig
++++ source/blender/blenloader/intern/readfile.h
+@@ -59,7 +59,8 @@ enum eFileDataFlag {
  #  pragma GCC poison off_t
  #endif
  
Index: patches/patch-source_blender_blenloader_intern_writefile_c
===================================================================
RCS file: 
/cvs/ports/graphics/blender/patches/patch-source_blender_blenloader_intern_writefile_c,v
retrieving revision 1.16
diff -u -p -r1.16 patch-source_blender_blenloader_intern_writefile_c
--- patches/patch-source_blender_blenloader_intern_writefile_c  29 Nov 2020 
19:57:01 -0000      1.16
+++ patches/patch-source_blender_blenloader_intern_writefile_c  18 Mar 2021 
03:27:00 -0000
@@ -1,9 +1,9 @@
 $OpenBSD: patch-source_blender_blenloader_intern_writefile_c,v 1.16 2020/11/29 
19:57:01 sthen Exp $
 
 Index: source/blender/blenloader/intern/writefile.c
---- source/blender/blenloader/intern/writefile.c.orig  Wed Nov 25 14:01:32 2020
-+++ source/blender/blenloader/intern/writefile.c       Sat Nov 28 21:50:54 2020
-@@ -216,7 +216,7 @@ static bool ww_open_none(WriteWrap *ww, const char *fi
+--- source/blender/blenloader/intern/writefile.c.orig
++++ source/blender/blenloader/intern/writefile.c
+@@ -173,7 +173,7 @@ static bool ww_open_none(WriteWrap *ww, const char *fi
  {
    int file;
  
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/graphics/blender/pkg/PLIST,v
retrieving revision 1.29
diff -u -p -r1.29 PLIST
--- pkg/PLIST   29 Nov 2020 19:57:01 -0000      1.29
+++ pkg/PLIST   18 Mar 2021 03:27:06 -0000
@@ -1364,6 +1364,7 @@ share/blender/datafiles/blender_icons32/
 share/blender/datafiles/blender_icons_geom.py
 share/blender/datafiles/blender_icons_geom_update.py
 share/blender/datafiles/blender_icons_update.py
+share/blender/datafiles/blender_logo.png
 share/blender/datafiles/brushicons/
 share/blender/datafiles/brushicons/blob.png
 share/blender/datafiles/brushicons/blur.png
@@ -1480,6 +1481,7 @@ share/blender/datafiles/icons/brush.scul
 share/blender/datafiles/icons/brush.sculpt.cloth.dat
 share/blender/datafiles/icons/brush.sculpt.crease.dat
 share/blender/datafiles/icons/brush.sculpt.displacement_eraser.dat
+share/blender/datafiles/icons/brush.sculpt.displacement_smear.dat
 share/blender/datafiles/icons/brush.sculpt.draw.dat
 share/blender/datafiles/icons/brush.sculpt.draw_face_sets.dat
 share/blender/datafiles/icons/brush.sculpt.draw_sharp.dat
@@ -1687,6 +1689,7 @@ share/blender/datafiles/studiolights/mat
 share/blender/datafiles/studiolights/studio/
 share/blender/datafiles/studiolights/studio/basic.sl
 share/blender/datafiles/studiolights/studio/outdoor.sl
+share/blender/datafiles/studiolights/studio/paint.sl
 share/blender/datafiles/studiolights/studio/rim.sl
 share/blender/datafiles/studiolights/studio/studio.sl
 share/blender/datafiles/studiolights/world/
@@ -2255,7 +2258,9 @@ share/blender/scripts/addons/blenderkit/
 ${MODPY_COMMENT}share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}/
 
share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}append_link.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}asset_bar_op.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}asset_inspector.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}asset_pack_bg.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}autothumb.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}autothumb_material_bg.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}autothumb_model_bg.${MODPY_PYC_MAGIC_TAG}pyc
@@ -2265,11 +2270,14 @@ share/blender/scripts/addons/blenderkit/
 
share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}colors.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}download.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}icons.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}image_utils.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}oauth.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}overrides.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}paths.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}ratings.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}rerequests.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}resolutions.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}resolutions_bg.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}search.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}tasks_queue.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}ui.${MODPY_PYC_MAGIC_TAG}pyc
@@ -2280,12 +2288,28 @@ share/blender/scripts/addons/blenderkit/
 
share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}utils.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/blenderkit/${MODPY_PYCACHE}version_checker.${MODPY_PYC_MAGIC_TAG}pyc
 share/blender/scripts/addons/blenderkit/append_link.py
+share/blender/scripts/addons/blenderkit/asset_bar_op.py
 share/blender/scripts/addons/blenderkit/asset_inspector.py
+share/blender/scripts/addons/blenderkit/asset_pack_bg.py
 share/blender/scripts/addons/blenderkit/autothumb.py
 share/blender/scripts/addons/blenderkit/autothumb_material_bg.py
 share/blender/scripts/addons/blenderkit/autothumb_model_bg.py
 share/blender/scripts/addons/blenderkit/bg_blender.py
 share/blender/scripts/addons/blenderkit/bkit_oauth.py
+share/blender/scripts/addons/blenderkit/bl_ui_widgets/
+share/blender/scripts/addons/blenderkit/bl_ui_widgets/__init__.py
+${MODPY_COMMENT}share/blender/scripts/addons/blenderkit/bl_ui_widgets/${MODPY_PYCACHE}/
+share/blender/scripts/addons/blenderkit/bl_ui_widgets/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/addons/blenderkit/bl_ui_widgets/${MODPY_PYCACHE}bl_ui_button.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/addons/blenderkit/bl_ui_widgets/${MODPY_PYCACHE}bl_ui_drag_panel.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/addons/blenderkit/bl_ui_widgets/${MODPY_PYCACHE}bl_ui_draw_op.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/addons/blenderkit/bl_ui_widgets/${MODPY_PYCACHE}bl_ui_label.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/addons/blenderkit/bl_ui_widgets/${MODPY_PYCACHE}bl_ui_widget.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/addons/blenderkit/bl_ui_widgets/bl_ui_button.py
+share/blender/scripts/addons/blenderkit/bl_ui_widgets/bl_ui_drag_panel.py
+share/blender/scripts/addons/blenderkit/bl_ui_widgets/bl_ui_draw_op.py
+share/blender/scripts/addons/blenderkit/bl_ui_widgets/bl_ui_label.py
+share/blender/scripts/addons/blenderkit/bl_ui_widgets/bl_ui_widget.py
 share/blender/scripts/addons/blenderkit/blendfiles/
 share/blender/scripts/addons/blenderkit/blendfiles/cleaned.blend
 
share/blender/scripts/addons/blenderkit/blendfiles/material_thumbnailer_cycles.blend
@@ -2296,11 +2320,14 @@ share/blender/scripts/addons/blenderkit/
 share/blender/scripts/addons/blenderkit/data/categories.json
 share/blender/scripts/addons/blenderkit/download.py
 share/blender/scripts/addons/blenderkit/icons.py
+share/blender/scripts/addons/blenderkit/image_utils.py
 share/blender/scripts/addons/blenderkit/oauth.py
 share/blender/scripts/addons/blenderkit/overrides.py
 share/blender/scripts/addons/blenderkit/paths.py
 share/blender/scripts/addons/blenderkit/ratings.py
 share/blender/scripts/addons/blenderkit/rerequests.py
+share/blender/scripts/addons/blenderkit/resolutions.py
+share/blender/scripts/addons/blenderkit/resolutions_bg.py
 share/blender/scripts/addons/blenderkit/search.py
 share/blender/scripts/addons/blenderkit/tasks_queue.py
 share/blender/scripts/addons/blenderkit/thumbnails/
@@ -2311,8 +2338,6 @@ share/blender/scripts/addons/blenderkit/
 share/blender/scripts/addons/blenderkit/thumbnails/fp.png
 share/blender/scripts/addons/blenderkit/thumbnails/locked.png
 share/blender/scripts/addons/blenderkit/thumbnails/locked_large.png
-share/blender/scripts/addons/blenderkit/thumbnails/rating_ui.png
-share/blender/scripts/addons/blenderkit/thumbnails/rating_ui_empty.png
 share/blender/scripts/addons/blenderkit/thumbnails/star_white.png
 share/blender/scripts/addons/blenderkit/thumbnails/thumbnail_not_available.jpg
 share/blender/scripts/addons/blenderkit/thumbnails/thumbnail_notready.jpg
@@ -2756,6 +2781,7 @@ share/blender/scripts/addons/io_scene_gl
 
share/blender/scripts/addons/io_scene_gltf2/blender/imp/${MODPY_PYCACHE}gltf2_blender_scene.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/io_scene_gltf2/blender/imp/${MODPY_PYCACHE}gltf2_blender_texture.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/io_scene_gltf2/blender/imp/${MODPY_PYCACHE}gltf2_blender_vnode.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/addons/io_scene_gltf2/blender/imp/${MODPY_PYCACHE}gltf2_io_draco_compression_extension.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/io_scene_gltf2/blender/imp/gltf2_blender_KHR_materials_clearcoat.py
 
share/blender/scripts/addons/io_scene_gltf2/blender/imp/gltf2_blender_KHR_materials_pbrSpecularGlossiness.py
 
share/blender/scripts/addons/io_scene_gltf2/blender/imp/gltf2_blender_KHR_materials_unlit.py
@@ -2774,6 +2800,7 @@ share/blender/scripts/addons/io_scene_gl
 share/blender/scripts/addons/io_scene_gltf2/blender/imp/gltf2_blender_scene.py
 
share/blender/scripts/addons/io_scene_gltf2/blender/imp/gltf2_blender_texture.py
 share/blender/scripts/addons/io_scene_gltf2/blender/imp/gltf2_blender_vnode.py
+share/blender/scripts/addons/io_scene_gltf2/blender/imp/gltf2_io_draco_compression_extension.py
 share/blender/scripts/addons/io_scene_gltf2/io/
 share/blender/scripts/addons/io_scene_gltf2/io/__init__.py
 
${MODPY_COMMENT}share/blender/scripts/addons/io_scene_gltf2/io/${MODPY_PYCACHE}/
@@ -2781,15 +2808,15 @@ share/blender/scripts/addons/io_scene_gl
 share/blender/scripts/addons/io_scene_gltf2/io/com/
 
${MODPY_COMMENT}share/blender/scripts/addons/io_scene_gltf2/io/com/${MODPY_PYCACHE}/
 
share/blender/scripts/addons/io_scene_gltf2/io/com/${MODPY_PYCACHE}gltf2_io.${MODPY_PYC_MAGIC_TAG}pyc
-share/blender/scripts/addons/io_scene_gltf2/io/com/${MODPY_PYCACHE}gltf2_io_color_management.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/io_scene_gltf2/io/com/${MODPY_PYCACHE}gltf2_io_constants.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/io_scene_gltf2/io/com/${MODPY_PYCACHE}gltf2_io_debug.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/addons/io_scene_gltf2/io/com/${MODPY_PYCACHE}gltf2_io_draco_compression_extension.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/io_scene_gltf2/io/com/${MODPY_PYCACHE}gltf2_io_extensions.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/io_scene_gltf2/io/com/${MODPY_PYCACHE}gltf2_io_lights_punctual.${MODPY_PYC_MAGIC_TAG}pyc
 share/blender/scripts/addons/io_scene_gltf2/io/com/gltf2_io.py
-share/blender/scripts/addons/io_scene_gltf2/io/com/gltf2_io_color_management.py
 share/blender/scripts/addons/io_scene_gltf2/io/com/gltf2_io_constants.py
 share/blender/scripts/addons/io_scene_gltf2/io/com/gltf2_io_debug.py
+share/blender/scripts/addons/io_scene_gltf2/io/com/gltf2_io_draco_compression_extension.py
 share/blender/scripts/addons/io_scene_gltf2/io/com/gltf2_io_extensions.py
 share/blender/scripts/addons/io_scene_gltf2/io/com/gltf2_io_lights_punctual.py
 share/blender/scripts/addons/io_scene_gltf2/io/exp/
@@ -3128,6 +3155,7 @@ share/blender/scripts/addons/object_coll
 share/blender/scripts/addons/object_collection_manager/__init__.py
 
${MODPY_COMMENT}share/blender/scripts/addons/object_collection_manager/${MODPY_PYCACHE}/
 
share/blender/scripts/addons/object_collection_manager/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/addons/object_collection_manager/${MODPY_PYCACHE}cm_init.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/object_collection_manager/${MODPY_PYCACHE}internals.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/object_collection_manager/${MODPY_PYCACHE}operator_utils.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/object_collection_manager/${MODPY_PYCACHE}operators.${MODPY_PYC_MAGIC_TAG}pyc
@@ -3137,6 +3165,7 @@ share/blender/scripts/addons/object_coll
 
share/blender/scripts/addons/object_collection_manager/${MODPY_PYCACHE}qcd_move_widget.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/object_collection_manager/${MODPY_PYCACHE}qcd_operators.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/object_collection_manager/${MODPY_PYCACHE}ui.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/addons/object_collection_manager/cm_init.py
 share/blender/scripts/addons/object_collection_manager/icons/
 share/blender/scripts/addons/object_collection_manager/icons/minus.png
 share/blender/scripts/addons/object_collection_manager/internals.py
@@ -3648,6 +3677,20 @@ share/blender/scripts/addons/presets/ope
 
share/blender/scripts/addons/presets/operator/mesh.primitive_xyz_function_surface/sterosphere.py
 
share/blender/scripts/addons/presets/operator/mesh.primitive_xyz_function_surface/torus.py
 
share/blender/scripts/addons/presets/operator/mesh.primitive_xyz_function_surface/twisted_torus.py
+share/blender/scripts/addons/presets/operator/sun_position/
+${MODPY_COMMENT}share/blender/scripts/addons/presets/operator/sun_position/${MODPY_PYCACHE}/
+share/blender/scripts/addons/presets/operator/sun_position/${MODPY_PYCACHE}chongqing.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/addons/presets/operator/sun_position/${MODPY_PYCACHE}kinshasa.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/addons/presets/operator/sun_position/${MODPY_PYCACHE}london.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/addons/presets/operator/sun_position/${MODPY_PYCACHE}new_york.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/addons/presets/operator/sun_position/${MODPY_PYCACHE}sao_paulo.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/addons/presets/operator/sun_position/${MODPY_PYCACHE}sydney.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/addons/presets/operator/sun_position/chongqing.py
+share/blender/scripts/addons/presets/operator/sun_position/kinshasa.py
+share/blender/scripts/addons/presets/operator/sun_position/london.py
+share/blender/scripts/addons/presets/operator/sun_position/new_york.py
+share/blender/scripts/addons/presets/operator/sun_position/sao_paulo.py
+share/blender/scripts/addons/presets/operator/sun_position/sydney.py
 share/blender/scripts/addons/presets/pov/
 share/blender/scripts/addons/presets/pov/light/
 share/blender/scripts/addons/presets/pov/light/01_(4800K)_Direct_Sun.py
@@ -4009,6 +4052,7 @@ share/blender/scripts/addons/rigify/rigs
 
${MODPY_COMMENT}share/blender/scripts/addons/rigify/rigs/limbs/${MODPY_PYCACHE}/
 
share/blender/scripts/addons/rigify/rigs/limbs/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/rigify/rigs/limbs/${MODPY_PYCACHE}arm.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/addons/rigify/rigs/limbs/${MODPY_PYCACHE}front_paw.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/rigify/rigs/limbs/${MODPY_PYCACHE}leg.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/rigify/rigs/limbs/${MODPY_PYCACHE}limb_rigs.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/rigify/rigs/limbs/${MODPY_PYCACHE}limb_utils.${MODPY_PYC_MAGIC_TAG}pyc
@@ -4019,6 +4063,7 @@ share/blender/scripts/addons/rigify/rigs
 
share/blender/scripts/addons/rigify/rigs/limbs/${MODPY_PYCACHE}super_limb.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/addons/rigify/rigs/limbs/${MODPY_PYCACHE}super_palm.${MODPY_PYC_MAGIC_TAG}pyc
 share/blender/scripts/addons/rigify/rigs/limbs/arm.py
+share/blender/scripts/addons/rigify/rigs/limbs/front_paw.py
 share/blender/scripts/addons/rigify/rigs/limbs/leg.py
 share/blender/scripts/addons/rigify/rigs/limbs/limb_rigs.py
 share/blender/scripts/addons/rigify/rigs/limbs/limb_utils.py
@@ -4360,6 +4405,7 @@ share/blender/scripts/modules/bl_i18n_ut
 
share/blender/scripts/modules/bl_i18n_utils/${MODPY_PYCACHE}settings.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/modules/bl_i18n_utils/${MODPY_PYCACHE}settings_user.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/modules/bl_i18n_utils/${MODPY_PYCACHE}utils.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/modules/bl_i18n_utils/${MODPY_PYCACHE}utils_cli.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/modules/bl_i18n_utils/${MODPY_PYCACHE}utils_languages_menu.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/modules/bl_i18n_utils/${MODPY_PYCACHE}utils_rtl.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/modules/bl_i18n_utils/${MODPY_PYCACHE}utils_spell_check.${MODPY_PYC_MAGIC_TAG}pyc
@@ -4368,6 +4414,7 @@ share/blender/scripts/modules/bl_i18n_ut
 share/blender/scripts/modules/bl_i18n_utils/settings.py
 share/blender/scripts/modules/bl_i18n_utils/settings_user.py
 share/blender/scripts/modules/bl_i18n_utils/utils.py
+share/blender/scripts/modules/bl_i18n_utils/utils_cli.py
 share/blender/scripts/modules/bl_i18n_utils/utils_languages_menu.py
 share/blender/scripts/modules/bl_i18n_utils/utils_rtl.py
 share/blender/scripts/modules/bl_i18n_utils/utils_spell_check.py
@@ -4379,10 +4426,12 @@ share/blender/scripts/modules/bl_keymap_
 
share/blender/scripts/modules/bl_keymap_utils/${MODPY_PYCACHE}keymap_from_toolbar.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/modules/bl_keymap_utils/${MODPY_PYCACHE}keymap_hierarchy.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/modules/bl_keymap_utils/${MODPY_PYCACHE}platform_helpers.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/modules/bl_keymap_utils/${MODPY_PYCACHE}versioning.${MODPY_PYC_MAGIC_TAG}pyc
 share/blender/scripts/modules/bl_keymap_utils/io.py
 share/blender/scripts/modules/bl_keymap_utils/keymap_from_toolbar.py
 share/blender/scripts/modules/bl_keymap_utils/keymap_hierarchy.py
 share/blender/scripts/modules/bl_keymap_utils/platform_helpers.py
+share/blender/scripts/modules/bl_keymap_utils/versioning.py
 share/blender/scripts/modules/bl_previews_utils/
 
${MODPY_COMMENT}share/blender/scripts/modules/bl_previews_utils/${MODPY_PYCACHE}/
 
share/blender/scripts/modules/bl_previews_utils/${MODPY_PYCACHE}bl_previews_render.${MODPY_PYC_MAGIC_TAG}pyc
@@ -4415,6 +4464,7 @@ share/blender/scripts/modules/bpy_extras
 ${MODPY_COMMENT}share/blender/scripts/modules/bpy_extras/${MODPY_PYCACHE}/
 
share/blender/scripts/modules/bpy_extras/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/modules/bpy_extras/${MODPY_PYCACHE}anim_utils.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/modules/bpy_extras/${MODPY_PYCACHE}asset_utils.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/modules/bpy_extras/${MODPY_PYCACHE}image_utils.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/modules/bpy_extras/${MODPY_PYCACHE}io_utils.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/modules/bpy_extras/${MODPY_PYCACHE}keyconfig_utils.${MODPY_PYC_MAGIC_TAG}pyc
@@ -4424,6 +4474,7 @@ share/blender/scripts/modules/bpy_extras
 
share/blender/scripts/modules/bpy_extras/${MODPY_PYCACHE}object_utils.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/modules/bpy_extras/${MODPY_PYCACHE}view3d_utils.${MODPY_PYC_MAGIC_TAG}pyc
 share/blender/scripts/modules/bpy_extras/anim_utils.py
+share/blender/scripts/modules/bpy_extras/asset_utils.py
 share/blender/scripts/modules/bpy_extras/image_utils.py
 share/blender/scripts/modules/bpy_extras/io_utils.py
 share/blender/scripts/modules/bpy_extras/keyconfig_utils.py
@@ -4833,12 +4884,13 @@ ${MODPY_COMMENT}share/blender/scripts/st
 
share/blender/scripts/startup/bl_operators/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/startup/bl_operators/${MODPY_PYCACHE}add_mesh_torus.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/startup/bl_operators/${MODPY_PYCACHE}anim.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/startup/bl_operators/${MODPY_PYCACHE}assets.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/startup/bl_operators/${MODPY_PYCACHE}clip.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/startup/bl_operators/${MODPY_PYCACHE}console.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/startup/bl_operators/${MODPY_PYCACHE}constraint.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/startup/bl_operators/${MODPY_PYCACHE}file.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/startup/bl_operators/${MODPY_PYCACHE}freestyle.${MODPY_PYC_MAGIC_TAG}pyc
-share/blender/scripts/startup/bl_operators/${MODPY_PYCACHE}gpencil_mesh_bake.${MODPY_PYC_MAGIC_TAG}pyc
+share/blender/scripts/startup/bl_operators/${MODPY_PYCACHE}geometry_nodes.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/startup/bl_operators/${MODPY_PYCACHE}image.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/startup/bl_operators/${MODPY_PYCACHE}mesh.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/startup/bl_operators/${MODPY_PYCACHE}node.${MODPY_PYC_MAGIC_TAG}pyc
@@ -4850,7 +4902,6 @@ share/blender/scripts/startup/bl_operato
 
share/blender/scripts/startup/bl_operators/${MODPY_PYCACHE}rigidbody.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/startup/bl_operators/${MODPY_PYCACHE}screen_play_rendered_anim.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/startup/bl_operators/${MODPY_PYCACHE}sequencer.${MODPY_PYC_MAGIC_TAG}pyc
-share/blender/scripts/startup/bl_operators/${MODPY_PYCACHE}simulation.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/startup/bl_operators/${MODPY_PYCACHE}userpref.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/startup/bl_operators/${MODPY_PYCACHE}uvcalc_follow_active.${MODPY_PYC_MAGIC_TAG}pyc
 
share/blender/scripts/startup/bl_operators/${MODPY_PYCACHE}uvcalc_lightmap.${MODPY_PYC_MAGIC_TAG}pyc
@@ -4859,6 +4910,7 @@ share/blender/scripts/startup/bl_operato
 
share/blender/scripts/startup/bl_operators/${MODPY_PYCACHE}wm.${MODPY_PYC_MAGIC_TAG}pyc
 share/blender/scripts/startup/bl_operators/add_mesh_torus.py
 share/blender/scripts/startup/bl_operators/anim.py
+share/blender/scripts/startup/bl_operators/assets.py
 share/blender/scripts/startup/bl_operators/bmesh/
 
${MODPY_COMMENT}share/blender/scripts/startup/bl_operators/bmesh/${MODPY_PYCACHE}/
 
share/blender/scripts/startup/bl_operators/bmesh/${MODPY_PYCACHE}find_adjacent.${MODPY_PYC_MAGIC_TAG}pyc
@@ -4868,7 +4920,7 @@ share/blender/scripts/startup/bl_operato
 share/blender/scripts/startup/bl_operators/constraint.py
 share/blender/scripts/startup/bl_operators/file.py
 share/blender/scripts/startup/bl_operators/freestyle.py
-share/blender/scripts/startup/bl_operators/gpencil_mesh_bake.py
+share/blender/scripts/startup/bl_operators/geometry_nodes.py
 share/blender/scripts/startup/bl_operators/image.py
 share/blender/scripts/startup/bl_operators/mesh.py
 share/blender/scripts/startup/bl_operators/node.py
@@ -4880,7 +4932,6 @@ share/blender/scripts/startup/bl_operato
 share/blender/scripts/startup/bl_operators/rigidbody.py
 share/blender/scripts/startup/bl_operators/screen_play_rendered_anim.py
 share/blender/scripts/startup/bl_operators/sequencer.py
-share/blender/scripts/startup/bl_operators/simulation.py
 share/blender/scripts/startup/bl_operators/userpref.py
 share/blender/scripts/startup/bl_operators/uvcalc_follow_active.py
 share/blender/scripts/startup/bl_operators/uvcalc_lightmap.py
@@ -5104,11 +5155,11 @@ share/doc/blender/BSL-1.0.txt
 share/doc/blender/FTL.txt
 share/doc/blender/GPL-3.0.txt
 share/doc/blender/GPL-license.txt
-share/doc/blender/ISC.txt
 share/doc/blender/MIT.txt
 share/doc/blender/OpenColorIO.txt
 share/doc/blender/OpenSSL.txt
 share/doc/blender/Python.txt
+share/doc/blender/THIRD-PARTY-LICENSES.txt
 share/doc/blender/bfont.ttf.txt
 share/doc/blender/bmonofont-i18n.ttf.txt
 share/doc/blender/copyright.txt

Reply via email to