[Bf-blender-cvs] [438aae9d0fd] functions: remove Function from displace modifier (was only for testing)
Jacques Lucke
noreply at git.blender.org
Tue Jul 9 18:01:03 CEST 2019
Commit: 438aae9d0fd8278dab82965afc0f7f123340caa2
Author: Jacques Lucke
Date: Tue Jul 9 09:58:12 2019 +0200
Branches: functions
https://developer.blender.org/rB438aae9d0fd8278dab82965afc0f7f123340caa2
remove Function from displace modifier (was only for testing)
===================================================================
M release/scripts/startup/bl_ui/properties_data_modifier.py
M source/blender/makesdna/DNA_modifier_types.h
M source/blender/makesrna/intern/rna_modifier.c
M source/blender/modifiers/intern/MOD_displace.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index 333fc68ceb6..d0e4bfdd4f7 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -386,8 +386,6 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
row.prop(md, "mid_level")
row.prop(md, "strength")
- layout.prop(md, "function_tree", text="Weight Function")
-
def DYNAMIC_PAINT(self, layout, _ob, md):
layout.label(text="Settings are inside the Physics tab")
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h
index 03e0d5ff895..bfee921beed 100644
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@ -482,7 +482,6 @@ typedef struct DisplaceModifierData {
char defgrp_name[64];
float midlevel;
int space;
- struct bNodeTree *function_tree;
} DisplaceModifierData;
/* DisplaceModifierData->direction */
diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c
index 6fb2e1c4991..6a13072dac0 100644
--- a/source/blender/makesrna/intern/rna_modifier.c
+++ b/source/blender/makesrna/intern/rna_modifier.c
@@ -2683,11 +2683,6 @@ static void rna_def_modifier_displace(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Space", "");
RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update");
- prop = RNA_def_property(srna, "function_tree", PROP_POINTER, PROP_NONE);
- RNA_def_property_flag(prop, PROP_EDITABLE);
- RNA_def_property_ui_text(prop, "Function Tree", "Function node tree");
- RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update");
-
rna_def_modifier_generic_map_info(srna);
}
diff --git a/source/blender/modifiers/intern/MOD_displace.c b/source/blender/modifiers/intern/MOD_displace.c
index 8838e7b8524..50447ae0376 100644
--- a/source/blender/modifiers/intern/MOD_displace.c
+++ b/source/blender/modifiers/intern/MOD_displace.c
@@ -26,12 +26,9 @@
#include "BLI_math.h"
#include "BLI_task.h"
-#include "PIL_time_utildefines.h"
-
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_object_types.h"
-#include "DNA_node_types.h"
#include "BKE_customdata.h"
#include "BKE_editmesh.h"
@@ -53,8 +50,6 @@
#include "RE_shader_ext.h"
-#include "FN_all-c.h"
-
/* Displace */
static void initData(ModifierData *md)
@@ -66,21 +61,6 @@ static void initData(ModifierData *md)
dmd->direction = MOD_DISP_DIR_NOR;
dmd->midlevel = 0.5;
dmd->space = MOD_DISP_SPACE_LOCAL;
- dmd->function_tree = NULL;
-}
-
-static FnFunction getCurrentFunction(DisplaceModifierData *dmd)
-{
- bNodeTree *tree = (bNodeTree *)DEG_get_original_id((ID *)dmd->function_tree);
-
- FnType float_ty = FN_type_borrow_float();
- FnType int32_ty = FN_type_borrow_int32();
- FnType float3_ty = FN_type_borrow_float3();
-
- FnType inputs[] = {float3_ty, int32_ty, NULL};
- FnType outputs[] = {float_ty, NULL};
-
- return FN_function_get_with_signature(tree, inputs, outputs);
}
static void requiredDataMask(Object *UNUSED(ob),
@@ -134,7 +114,6 @@ static void foreachIDLink(ModifierData *md, Object *ob, IDWalkFunc walk, void *u
DisplaceModifierData *dmd = (DisplaceModifierData *)md;
walk(userData, ob, (ID **)&dmd->texture, IDWALK_CB_USER);
- walk(userData, ob, (ID **)&dmd->function_tree, IDWALK_CB_USER);
foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData);
}
@@ -169,12 +148,6 @@ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphConte
if (dmd->texture != NULL) {
DEG_add_generic_id_relation(ctx->node, &dmd->texture->id, "Displace Modifier");
}
-
- FnFunction fn = getCurrentFunction(dmd);
- if (fn) {
- FN_function_update_dependencies(fn, ctx->node);
- FN_function_free(fn);
- }
}
typedef struct DisplaceUserdata {
@@ -192,7 +165,6 @@ typedef struct DisplaceUserdata {
float local_mat[4][4];
MVert *mvert;
float (*vert_clnors)[3];
- FnFunction calc_weight_func;
} DisplaceUserdata;
static void displaceModifier_do_task(void *__restrict userdata,
@@ -201,7 +173,9 @@ static void displaceModifier_do_task(void *__restrict userdata,
{
DisplaceUserdata *data = (DisplaceUserdata *)userdata;
DisplaceModifierData *dmd = data->dmd;
+ MDeformVert *dvert = data->dvert;
float weight = data->weight;
+ int defgrp_index = data->defgrp_index;
int direction = data->direction;
bool use_global_direction = data->use_global_direction;
float(*tex_co)[3] = data->tex_co;
@@ -217,37 +191,13 @@ static void displaceModifier_do_task(void *__restrict userdata,
float delta;
float local_vec[3];
- if (data->calc_weight_func) {
- FnTupleCallBody body = FN_tuple_call_get(data->calc_weight_func);
- BLI_assert(body);
-
- FN_TUPLE_CALL_PREPARE_STACK(body, fn_in, fn_out);
-
- FN_tuple_set_float3(fn_in, 0, vertexCos[iter]);
- FN_tuple_set_int32(fn_in, 1, iter);
-
- FN_tuple_call_invoke(body, fn_in, fn_out, __func__);
-
- weight = FN_tuple_get_float(fn_out, 0);
-
- FN_TUPLE_CALL_DESTRUCT_STACK(body, fn_in, fn_out);
- }
-
- if (weight == 0.0f) {
- return;
+ if (dvert) {
+ weight = defvert_find_weight(dvert + iter, defgrp_index);
+ if (weight == 0.0f) {
+ return;
+ }
}
- // MDeformVert *dvert = data->dvert;
- // int defgrp_index = data->defgrp_index;
- // if (dvert) {
- // weight = defvert_find_weight(dvert + iter, defgrp_index);
- // if (weight == 0.0f) {
- // return;
- // }
- // }
-
- strength *= weight;
-
if (data->tex_target) {
texres.nor = NULL;
BKE_texture_get_value_ex(
@@ -258,6 +208,10 @@ static void displaceModifier_do_task(void *__restrict userdata,
delta = delta_fixed; /* (1.0f - dmd->midlevel) */ /* never changes */
}
+ if (dvert) {
+ strength *= weight;
+ }
+
delta *= strength;
CLAMP(delta, -10000, 10000);
@@ -394,25 +348,15 @@ static void displaceModifier_do(DisplaceModifierData *dmd,
data.pool = BKE_image_pool_new();
BKE_texture_fetch_images_for_pool(tex_target, data.pool);
}
- data.calc_weight_func = getCurrentFunction(dmd);
-
- TIMEIT_START(displace_timer);
-
ParallelRangeSettings settings;
BLI_parallel_range_settings_defaults(&settings);
settings.use_threading = (numVerts > 512);
BLI_task_parallel_range(0, numVerts, &data, displaceModifier_do_task, &settings);
- TIMEIT_END(displace_timer);
-
if (data.pool != NULL) {
BKE_image_pool_free(data.pool);
}
- if (data.calc_weight_func != NULL) {
- FN_function_free(data.calc_weight_func);
- }
-
if (tex_co) {
MEM_freeN(tex_co);
}
More information about the Bf-blender-cvs
mailing list