Merge branch 'blender-v2.81-release'

This commit is contained in:
Campbell Barton 2019-11-14 00:59:44 +11:00
commit d7b3b3b22f
5 changed files with 36 additions and 8 deletions

View File

@ -214,9 +214,6 @@ CCL_NAMESPACE_END
CCL_NAMESPACE_BEGIN
#define NODES_GROUP(group) ((group) <= __NODES_MAX_GROUP__)
#define NODES_FEATURE(feature) ((__NODES_FEATURES__ & (feature)) != 0)
/* Main Interpreter Loop */
ccl_device_noinline void svm_eval_nodes(KernelGlobals *kg,
ShaderData *sd,
@ -545,9 +542,6 @@ ccl_device_noinline void svm_eval_nodes(KernelGlobals *kg,
}
}
#undef NODES_GROUP
#undef NODES_FEATURE
CCL_NAMESPACE_END
#endif /* __SVM_H__ */

View File

@ -48,12 +48,17 @@ CCL_NAMESPACE_BEGIN
#define NODE_FEATURE_HAIR (1 << 1)
#define NODE_FEATURE_BUMP (1 << 2)
#define NODE_FEATURE_BUMP_STATE (1 << 3)
#define NODE_FEATURE_VORONOI_EXTRA (1 << 4)
/* TODO(sergey): Consider using something like ((uint)(-1)).
* Need to check carefully operand types around usage of this
* define first.
*/
#define NODE_FEATURE_ALL \
(NODE_FEATURE_VOLUME | NODE_FEATURE_HAIR | NODE_FEATURE_BUMP | NODE_FEATURE_BUMP_STATE)
(NODE_FEATURE_VOLUME | NODE_FEATURE_HAIR | NODE_FEATURE_BUMP | NODE_FEATURE_BUMP_STATE | \
NODE_FEATURE_VORONOI_EXTRA)
#define NODES_GROUP(group) ((group) <= __NODES_MAX_GROUP__)
#define NODES_FEATURE(feature) ((__NODES_FEATURES__ & (feature)) != 0)
typedef enum ShaderNodeType {
NODE_END = 0,

View File

@ -986,6 +986,7 @@ ccl_device void svm_node_tex_voronoi(KernelGlobals *kg,
&color_out,
&position_out_2d);
break;
#if NODES_FEATURE(NODE_FEATURE_VORONOI_EXTRA)
case NODE_VORONOI_SMOOTH_F1:
voronoi_smooth_f1_2d(coord_2d,
smoothness,
@ -996,6 +997,7 @@ ccl_device void svm_node_tex_voronoi(KernelGlobals *kg,
&color_out,
&position_out_2d);
break;
#endif
case NODE_VORONOI_F2:
voronoi_f2_2d(coord_2d,
exponent,
@ -1029,6 +1031,7 @@ ccl_device void svm_node_tex_voronoi(KernelGlobals *kg,
&color_out,
&position_out);
break;
#if NODES_FEATURE(NODE_FEATURE_VORONOI_EXTRA)
case NODE_VORONOI_SMOOTH_F1:
voronoi_smooth_f1_3d(coord,
smoothness,
@ -1039,6 +1042,7 @@ ccl_device void svm_node_tex_voronoi(KernelGlobals *kg,
&color_out,
&position_out);
break;
#endif
case NODE_VORONOI_F2:
voronoi_f2_3d(coord,
exponent,
@ -1060,6 +1064,8 @@ ccl_device void svm_node_tex_voronoi(KernelGlobals *kg,
position_out = safe_divide_float3_float(position_out, scale);
break;
}
#if NODES_FEATURE(NODE_FEATURE_VORONOI_EXTRA)
case 4: {
float4 coord_4d = make_float4(coord.x, coord.y, coord.z, w);
float4 position_out_4d;
@ -1106,6 +1112,7 @@ ccl_device void svm_node_tex_voronoi(KernelGlobals *kg,
w_out = position_out_4d.w;
break;
}
#endif
default:
kernel_assert(0);
}

View File

@ -220,6 +220,18 @@ class VoronoiTextureNode : public TextureNode {
return NODE_GROUP_LEVEL_2;
}
virtual int get_feature()
{
int result = ShaderNode::get_feature();
if (dimensions == 4) {
result |= NODE_FEATURE_VORONOI_EXTRA;
}
else if (dimensions >= 2 && feature == NODE_VORONOI_SMOOTH_F1) {
result |= NODE_FEATURE_VORONOI_EXTRA;
}
return result;
}
int dimensions;
NodeVoronoiDistanceMetric metric;
NodeVoronoiFeature feature;

View File

@ -2857,6 +2857,16 @@ static int radial_control_modal(bContext *C, wmOperator *op, const wmEvent *even
ED_region_tag_redraw(CTX_wm_region(C));
radial_control_update_header(op, C);
if (ret & OPERATOR_FINISHED) {
wmWindowManager *wm = CTX_wm_manager(C);
if (wm->op_undo_depth == 0) {
ID *id = rc->ptr.owner_id;
if (ED_undo_is_legacy_compatible_for_property(C, id)) {
ED_undo_push(C, op->type->name);
}
}
}
if (ret != OPERATOR_RUNNING_MODAL) {
radial_control_cancel(C, op);
}
@ -2874,7 +2884,7 @@ static void WM_OT_radial_control(wmOperatorType *ot)
ot->modal = radial_control_modal;
ot->cancel = radial_control_cancel;
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO | OPTYPE_BLOCKING;
ot->flag = OPTYPE_REGISTER | OPTYPE_BLOCKING;
/* all paths relative to the context */
PropertyRNA *prop;