[Bf-blender-cvs] [f9f6ab02518] functions: remove remaining particle input nodes

Jacques Lucke noreply at git.blender.org
Sat Nov 30 16:40:29 CET 2019


Commit: f9f6ab02518c426450ee44834a097cecca9ae730
Author: Jacques Lucke
Date:   Sat Nov 30 15:17:59 2019 +0100
Branches: functions
https://developer.blender.org/rBf9f6ab02518c426450ee44834a097cecca9ae730

remove remaining particle input nodes

===================================================================

M	release/scripts/startup/nodes/bparticle_nodes/particle_inputs.py
M	release/scripts/startup/nodes/menu.py
M	source/blender/simulations/CMakeLists.txt
M	source/blender/simulations/bparticles/particle_function_builder.cpp
D	source/blender/simulations/bparticles/particle_function_input_providers.cpp
D	source/blender/simulations/bparticles/particle_function_input_providers.hpp

===================================================================

diff --git a/release/scripts/startup/nodes/bparticle_nodes/particle_inputs.py b/release/scripts/startup/nodes/bparticle_nodes/particle_inputs.py
index 2a7a477ae1d..ea3b4237a03 100644
--- a/release/scripts/startup/nodes/bparticle_nodes/particle_inputs.py
+++ b/release/scripts/startup/nodes/bparticle_nodes/particle_inputs.py
@@ -13,39 +13,3 @@ class ParticleInfoNode(bpy.types.Node, SimulationNode):
         builder.fixed_output("position", "Position", "Vector")
         builder.fixed_output("velocity", "Velocity", "Vector")
         builder.fixed_output("birth_time", "Birth Time", "Float")
-
-
-class SurfaceInfoNode(bpy.types.Node, SimulationNode):
-    bl_idname = "fn_SurfaceInfoNode"
-    bl_label = "Surface Info"
-
-    def declaration(self, builder: NodeBuilder):
-        builder.fixed_output("normal", "Normal", "Vector")
-        builder.fixed_output("velocity", "Velocity", "Vector")
-
-
-class SurfaceImageNode(bpy.types.Node, SimulationNode):
-    bl_idname = "fn_SurfaceImageNode"
-    bl_label = "Surface Image"
-
-    uv_mode: EnumProperty(
-        name="UV Mode",
-        items=[
-            ('FIRST', "First", "Use first UV map", 'NONE', 0),
-            ('BY_NAME', "By Name", "Choose the UV map by name", 'NONE', 1),
-        ],
-        update=SimulationNode.sync_tree,
-        default='FIRST',
-    )
-
-    image: PointerProperty(type=bpy.types.Image)
-
-    def declaration(self, builder: NodeBuilder):
-        if self.uv_mode == 'BY_NAME':
-            builder.fixed_input("uv_name", "Name", "Text")
-        builder.fixed_output("color", "Color", "Color")
-
-    def draw(self, layout):
-        col = layout.column()
-        col.prop(self, "image", text="")
-        col.prop(self, "uv_mode", text="")
diff --git a/release/scripts/startup/nodes/menu.py b/release/scripts/startup/nodes/menu.py
index 8f3dd909fe8..11eda7eafe5 100644
--- a/release/scripts/startup/nodes/menu.py
+++ b/release/scripts/startup/nodes/menu.py
@@ -98,8 +98,6 @@ class InputNodesMenu(bpy.types.Menu):
         layout.operator_context = 'INVOKE_DEFAULT'
 
         insert_node(layout, "fn_ParticleInfoNode", "Particle Info")
-        insert_node(layout, "fn_SurfaceInfoNode", "Surface Info")
-        insert_node(layout, "fn_SurfaceImageNode", "Image Colors")
 
 
 def insert_node(layout, type, text, settings = {}, icon = "NONE"):
diff --git a/source/blender/simulations/CMakeLists.txt b/source/blender/simulations/CMakeLists.txt
index 131cec47422..b01ba776ebe 100644
--- a/source/blender/simulations/CMakeLists.txt
+++ b/source/blender/simulations/CMakeLists.txt
@@ -57,8 +57,6 @@ set(SRC
   bparticles/force_interface.cpp
   bparticles/particle_function_builder.hpp
   bparticles/particle_function_builder.cpp
-  bparticles/particle_function_input_providers.hpp
-  bparticles/particle_function_input_providers.cpp
 )
 
 set(LIB
diff --git a/source/blender/simulations/bparticles/particle_function_builder.cpp b/source/blender/simulations/bparticles/particle_function_builder.cpp
index f7d45df012d..aa4f9a0dec9 100644
--- a/source/blender/simulations/bparticles/particle_function_builder.cpp
+++ b/source/blender/simulations/bparticles/particle_function_builder.cpp
@@ -2,7 +2,6 @@
 #include "BLI_hash.h"
 
 #include "particle_function_builder.hpp"
-#include "particle_function_input_providers.hpp"
 
 #include "events.hpp"
 #include "action_contexts.hpp"
@@ -48,38 +47,9 @@ static VectorSet<const XOutputSocket *> find_particle_dependencies(
 using BuildInputProvider = std::function<ParticleFunctionInputProvider *(
     VTreeMFNetwork &inlined_tree_data_graph, const XOutputSocket &xsocket)>;
 
-static ParticleFunctionInputProvider *INPUT_surface_info(
-    VTreeMFNetwork &UNUSED(inlined_tree_data_graph), const XOutputSocket &xsocket)
-{
-  if (xsocket.name() == "Normal") {
-    return new SurfaceNormalInputProvider();
-  }
-  else if (xsocket.name() == "Velocity") {
-    return new SurfaceVelocityInputProvider();
-  }
-  else {
-    BLI_assert(false);
-    return nullptr;
-  }
-}
-
-static ParticleFunctionInputProvider *INPUT_surface_image(
-    VTreeMFNetwork &UNUSED(inlined_tree_data_graph), const XOutputSocket &xsocket)
-{
-  Optional<std::string> uv_map_name;
-
-  PointerRNA *rna = xsocket.node().rna();
-  Image *image = (Image *)RNA_pointer_get(rna, "image").data;
-  BLI_assert(image != nullptr);
-
-  return new SurfaceImageInputProvider(image, uv_map_name);
-}
-
 BLI_LAZY_INIT_STATIC(StringMap<BuildInputProvider>, get_input_providers_map)
 {
   StringMap<BuildInputProvider> map;
-  map.add_new("fn_SurfaceInfoNode", INPUT_surface_info);
-  map.add_new("fn_SurfaceImageNode", INPUT_surface_image);
   return map;
 }
 
diff --git a/source/blender/simulations/bparticles/particle_function_input_providers.cpp b/source/blender/simulations/bparticles/particle_function_input_providers.cpp
deleted file mode 100644
index 37b876a4d70..00000000000
--- a/source/blender/simulations/bparticles/particle_function_input_providers.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-#include "DNA_object_types.h"
-#include "DNA_mesh_types.h"
-#include "DNA_meshdata_types.h"
-#include "DNA_customdata_types.h"
-#include "BKE_customdata.h"
-#include "BKE_mesh_runtime.h"
-#include "BKE_deform.h"
-#include "BLI_hash.h"
-
-#include "particle_function_input_providers.hpp"
-
-namespace BParticles {
-
-using BLI::float2;
-using BLI::rgba_b;
-using BLI::rgba_f;
-
-Optional<ParticleFunctionInputArray> SurfaceNormalInputProvider::get(
-    InputProviderInterface &interface)
-{
-  ActionContext *action_context = interface.action_context();
-  auto *surface_info = dynamic_cast<MeshSurfaceContext *>(action_context);
-  if (surface_info == nullptr) {
-    return {};
-  }
-
-  return ParticleFunctionInputArray(surface_info->world_normals(), false);
-}
-
-Optional<ParticleFunctionInputArray> SurfaceVelocityInputProvider::get(
-    InputProviderInterface &interface)
-{
-  ActionContext *action_context = interface.action_context();
-  auto *surface_info = dynamic_cast<MeshSurfaceContext *>(action_context);
-  if (surface_info == nullptr) {
-    return {};
-  }
-
-  return ParticleFunctionInputArray(surface_info->world_surface_velicities(), false);
-}
-
-SurfaceImageInputProvider::SurfaceImageInputProvider(Image *image,
-                                                     Optional<std::string> uv_map_name)
-    : m_image(image), m_uv_map_name(std::move(uv_map_name))
-{
-  memset(&m_image_user, 0, sizeof(ImageUser));
-  m_image_user.ok = true;
-  m_ibuf = BKE_image_acquire_ibuf(image, &m_image_user, NULL);
-  BLI_assert(m_ibuf);
-}
-
-SurfaceImageInputProvider::~SurfaceImageInputProvider()
-{
-  BKE_image_release_ibuf(m_image, m_ibuf, NULL);
-}
-
-Optional<ParticleFunctionInputArray> SurfaceImageInputProvider::get(
-    InputProviderInterface &interface)
-{
-  ActionContext *action_context = interface.action_context();
-  if (dynamic_cast<MeshSurfaceContext *>(action_context)) {
-    auto *surface_info = dynamic_cast<MeshSurfaceContext *>(action_context);
-    return this->compute_colors(
-        interface, surface_info, IndexRange(interface.attributes().size()).as_array_ref());
-  }
-  else if (dynamic_cast<SourceParticleActionContext *>(action_context)) {
-    auto *source = dynamic_cast<SourceParticleActionContext *>(action_context);
-    auto *surface_info = dynamic_cast<MeshSurfaceContext *>(source->source_context());
-    if (surface_info != nullptr) {
-      return this->compute_colors(interface, surface_info, source->source_indices());
-    }
-  }
-  return {};
-}
-
-static int find_uv_layer_index(Mesh *mesh, const Optional<std::string> &uv_map_name)
-{
-  if (uv_map_name.has_value()) {
-    return CustomData_get_named_layer_index(&mesh->ldata, CD_MLOOPUV, uv_map_name.value().data());
-  }
-  else {
-    return CustomData_get_active_layer(&mesh->ldata, CD_MLOOPUV);
-  }
-}
-
-Optional<ParticleFunctionInputArray> SurfaceImageInputProvider::compute_colors(
-    InputProviderInterface &interface,
-    MeshSurfaceContext *surface_info,
-    ArrayRef<uint> surface_info_mapping)
-{
-  const Object *object = surface_info->object();
-  Mesh *mesh = (Mesh *)object->data;
-
-  const MLoopTri *triangles = BKE_mesh_runtime_looptri_ensure(mesh);
-  ArrayRef<float3> barycentric_coords = surface_info->barycentric_coords();
-
-  int uv_layer_index = find_uv_layer_index(mesh, m_uv_map_name);
-  if (uv_layer_index < 0) {
-    return {};
-  }
-  ArrayRef<MLoopUV> uv_layer = BLI::ref_c_array(
-      (MLoopUV *)CustomData_get_layer_n(&mesh->ldata, CD_MLOOPUV, uv_layer_index), mesh->totloop);
-
-  ArrayRef<rgba_b> pixel_buffer = BLI::ref_c_array((rgba_b *)m_ibuf->rect, m_ibuf->x * m_ibuf->y);
-
-  uint size = interface.attributes().size();
-  auto colors = BLI::temporary_allocate_array<rgba_f>(size);
-
-  for (uint pindex : interface.pindices()) {
-    uint source_index = surface_info_mapping[pindex];
-    uint triangle_index = surface_info->looptri_indices()[source_index];
-    const MLoopTri &triangle = triangles[triangle_index];
-
-    float2 uv1 = uv_layer[triangle.tri[0]].uv;
-    float2 uv2 = uv_layer[triangle.tri[1]].uv;
-    float2 uv3 = uv_layer[triangle.tri[2]].uv;
-
-    float2 uv;
-    float3 vertex_weights = barycentric_coords[source_index];
-    interp_v2_v2v2v2(uv, uv1, uv2, uv3, vertex_weights);
-
-    uv = uv.clamped_01();
-    uint x = uv.x * (m_ibuf->x - 1);
-    uint y = uv.y * (m_ibuf->y - 1);
-    colors[pindex] = pixel_buffer[y * m_ibuf->x + x];
-  }
-  return ParticleFunctionInputArray(colors.as_ref(), true);
-}
-
-}  // namespace BParticles
diff --git a/source/blender/simulations/bparticles/particle_function_input_providers.hpp b/source/blender/simulations/bparticles/particle_function_input_providers.hpp
deleted file mode 100644
index e84c8673fb5..00000000000
--- a/source/blender/simulations/bparticles/particle_function_input_providers.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-#pragma once
-
-#include "BKE_image.h"
-#include "IMB_imbuf_types.h"
-
-#include "FN_cpp_type.h"
-
-#include "particle_function.hpp"
-#include "action_contexts.hpp"
-
-namespace BParticles {
-
-using FN::CPPType;
-
-class SurfaceNormalInputProvider : public ParticleFunctionInputProvider {
-  Optional<ParticleFunctionInputArray> get(InputProviderInterface &interface) o

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list