Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--intern/cycles/blender/addon/engine.py4
-rw-r--r--release/scripts/modules/rna_manual_reference.py1
-rw-r--r--source/blender/nodes/CMakeLists.txt10
-rw-r--r--source/blender/nodes/NOD_static_types.h1
-rw-r--r--source/blender/nodes/geometry/nodes/node_geo_remesh_voxel.cc91
5 files changed, 107 insertions, 0 deletions
diff --git a/intern/cycles/blender/addon/engine.py b/intern/cycles/blender/addon/engine.py
index 1b03581ae03..61f47c0765b 100644
--- a/intern/cycles/blender/addon/engine.py
+++ b/intern/cycles/blender/addon/engine.py
@@ -232,6 +232,10 @@ def list_render_passes(scene, srl):
for lightgroup in srl.lightgroups:
yield ("Combined_%s" % lightgroup.name, "RGB", 'COLOR')
+ # Light groups.
+ for lightgroup in srl.lightgroups:
+ yield ("Combined_%s" % lightgroup.name, "RGB", 'COLOR')
+
def register_passes(engine, scene, view_layer):
for name, channelids, channeltype in list_render_passes(scene, view_layer):
diff --git a/release/scripts/modules/rna_manual_reference.py b/release/scripts/modules/rna_manual_reference.py
index 6d0ff66d478..f9bb49cf48f 100644
--- a/release/scripts/modules/rna_manual_reference.py
+++ b/release/scripts/modules/rna_manual_reference.py
@@ -1964,6 +1964,7 @@ url_manual_mapping = (
("bpy.types.shadernodebsdftoon*", "render/shader_nodes/shader/toon.html#bpy-types-shadernodebsdftoon"),
("bpy.types.shadernodeemission*", "render/shader_nodes/shader/emission.html#bpy-types-shadernodeemission"),
("bpy.types.shadernodehairinfo*", "render/shader_nodes/input/hair_info.html#bpy-types-shadernodehairinfo"),
+ ("bpy.types.shadernodepointinfo*", "render/shader_nodes/input/point_info.html#bpy-types-shadernodepointinfo"),
("bpy.types.shadernodemaprange*", "render/shader_nodes/converter/map_range.html#bpy-types-shadernodemaprange"),
("bpy.types.shadernodergbcurve*", "modeling/geometry_nodes/color/rgb_curves.html#bpy-types-shadernodergbcurve"),
("bpy.types.shadernodeseparate*", "render/shader_nodes/converter/combine_separate.html#bpy-types-shadernodeseparate"),
diff --git a/source/blender/nodes/CMakeLists.txt b/source/blender/nodes/CMakeLists.txt
index 386e5fe14c9..fcb8e8cef52 100644
--- a/source/blender/nodes/CMakeLists.txt
+++ b/source/blender/nodes/CMakeLists.txt
@@ -155,9 +155,19 @@ if(WITH_GMP)
endif()
if(WITH_OPENVDB)
+ list(APPEND INC
+ ../../../intern/openvdb
+ )
+
list(APPEND INC_SYS
${OPENVDB_INCLUDE_DIRS}
)
+
+ list(APPEND LIB
+ bf_intern_openvdb
+ ${OPENVDB_LIBRARIES}
+ )
+
add_definitions(-DWITH_OPENVDB ${OPENVDB_DEFINITIONS})
endif()
diff --git a/source/blender/nodes/NOD_static_types.h b/source/blender/nodes/NOD_static_types.h
index b45097a4ed1..532628145ec 100644
--- a/source/blender/nodes/NOD_static_types.h
+++ b/source/blender/nodes/NOD_static_types.h
@@ -381,6 +381,7 @@ DefNode(GeometryNode, GEO_NODE_SUBDIVIDE_CURVE, 0, "SUBDIVIDE_CURVE", SubdivideC
DefNode(GeometryNode, GEO_NODE_SUBDIVIDE_MESH, 0, "SUBDIVIDE_MESH", SubdivideMesh, "Subdivide Mesh", "")
DefNode(GeometryNode, GEO_NODE_SUBDIVISION_SURFACE, def_geo_subdivision_surface, "SUBDIVISION_SURFACE", SubdivisionSurface, "Subdivision Surface", "")
DefNode(GeometryNode, GEO_NODE_SWITCH, def_geo_switch, "SWITCH", Switch, "Switch", "")
+DefNode(GeometryNode, GEO_NODE_REMESH_VOXEL, 0, "REMESH_VOXEL", RemeshVoxel, "Voxel Remesh", "")
DefNode(GeometryNode, GEO_NODE_TRANSFER_ATTRIBUTE, def_geo_transfer_attribute, "ATTRIBUTE_TRANSFER", AttributeTransfer, "Transfer Attribute", "")
DefNode(GeometryNode, GEO_NODE_TRANSFORM, 0, "TRANSFORM", Transform, "Transform", "")
DefNode(GeometryNode, GEO_NODE_TRANSLATE_INSTANCES, 0, "TRANSLATE_INSTANCES", TranslateInstances, "Translate Instances", "")
diff --git a/source/blender/nodes/geometry/nodes/node_geo_remesh_voxel.cc b/source/blender/nodes/geometry/nodes/node_geo_remesh_voxel.cc
new file mode 100644
index 00000000000..3e688ce525e
--- /dev/null
+++ b/source/blender/nodes/geometry/nodes/node_geo_remesh_voxel.cc
@@ -0,0 +1,91 @@
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include "UI_interface.h"
+
+#include "BKE_mesh_remesh_voxel.h"
+
+#include "node_geometry_util.hh"
+
+namespace blender::nodes::node_geo_remesh_voxel_cc {
+static void node_declare(NodeDeclarationBuilder &b)
+{
+ b.add_input<decl::Geometry>(N_("Mesh")).supported_type(GEO_COMPONENT_TYPE_MESH);
+ b.add_input<decl::Float>(N_("Voxel Size")).default_value(1.0f).min(0.01f).max(FLT_MAX);
+ b.add_input<decl::Float>(N_("Adaptivity")).default_value(0.0f).min(0.0f).max(1.0f);
+ b.add_output<decl::Geometry>(N_("Mesh"));
+}
+
+static void node_geo_exec(GeoNodeExecParams params)
+{
+#ifdef WITH_OPENVDB
+ GeometrySet geometry_set = params.extract_input<GeometrySet>("Mesh");
+ const float voxel_size = params.extract_input<float>("Voxel Size");
+ const float adaptivity = params.extract_input<float>("Adaptivity");
+ geometry_set.modify_geometry_sets([&](GeometrySet &geometry_set) {
+ const Mesh *mesh_in = geometry_set.get_mesh_for_read();
+ if (mesh_in != nullptr) {
+ Mesh *mesh_out = BKE_mesh_remesh_voxel(mesh_in, voxel_size, adaptivity, 0.0f);
+ geometry_set.replace_mesh(mesh_out);
+ }
+ });
+
+ ///
+ // GField field = get_input_attribute_field(params, data_type);
+ //
+ // auto return_default = [&]() {
+ // attribute_math::convert_to_static_type(data_type, [&](auto dummy) {
+ // using T = decltype(dummy);
+ // output_attribute_field(params, fn::make_constant_field<T>(T()));
+ // });
+ // };
+ //
+ // GField output_field;
+ // if (geometry.has_curves() && !geometry.has_mesh() && !geometry.has_pointcloud()) {
+ // params.error_message_add(NodeWarningType::Error,
+ // TIP_("The source geometry must contain a mesh or a point cloud"));
+ // return return_default();
+ // }
+ // auto fn = std::make_unique<NearestTransferFunction>(
+ // std::move(geometry), std::move(field), domain);
+ // auto op = std::make_shared<FieldOperation>(
+ // FieldOperation(std::move(fn), {params.extract_input<Field<float3>>("Source Position")}));
+ // output_field = GField(std::move(op));
+ // break;
+ // output_attribute_field(params, std::move(output_field));
+ //
+ ///
+
+ params.set_output("Mesh", std::move(geometry_set));
+#else
+ params.error_message_add(NodeWarningType::Error,
+ TIP_("Disabled, Blender was compiled without OpenVDB"));
+ params.set_default_remaining_outputs();
+#endif
+}
+} // namespace blender::nodes::node_geo_remesh_voxel_cc
+
+void register_node_type_geo_remesh_voxel()
+{
+ namespace file_ns = blender::nodes::node_geo_remesh_voxel_cc;
+
+ static bNodeType ntype;
+
+ geo_node_type_base(&ntype, GEO_NODE_REMESH_VOXEL, "Voxel Remesh", NODE_CLASS_GEOMETRY);
+ ntype.declare = file_ns::node_declare;
+ ntype.geometry_node_execute = file_ns::node_geo_exec;
+ nodeRegisterType(&ntype);
+}