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:
authorCampbell Barton <ideasman42@gmail.com>2019-11-13 16:59:44 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-11-13 16:59:44 +0300
commitd7b3b3b22fca3267f9be8c8ae2e8f6fb7b9fb617 (patch)
treed6df3ad0dafa2a115df0bafe60b266ea3ce99a2f /intern/cycles
parent5ff7827980e3b3e598a7f630f8b2a3c90222ac70 (diff)
parentc7b77222542ce2e4eda548c51aa33013dddc0480 (diff)
Merge branch 'blender-v2.81-release'
Diffstat (limited to 'intern/cycles')
-rw-r--r--intern/cycles/kernel/svm/svm.h6
-rw-r--r--intern/cycles/kernel/svm/svm_types.h7
-rw-r--r--intern/cycles/kernel/svm/svm_voronoi.h7
-rw-r--r--intern/cycles/render/nodes.h12
4 files changed, 25 insertions, 7 deletions
diff --git a/intern/cycles/kernel/svm/svm.h b/intern/cycles/kernel/svm/svm.h
index 4fc5e633e3b..18f086d6726 100644
--- a/intern/cycles/kernel/svm/svm.h
+++ b/intern/cycles/kernel/svm/svm.h
@@ -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__ */
diff --git a/intern/cycles/kernel/svm/svm_types.h b/intern/cycles/kernel/svm/svm_types.h
index a6f2327dada..01710f713ac 100644
--- a/intern/cycles/kernel/svm/svm_types.h
+++ b/intern/cycles/kernel/svm/svm_types.h
@@ -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,
diff --git a/intern/cycles/kernel/svm/svm_voronoi.h b/intern/cycles/kernel/svm/svm_voronoi.h
index bdfaed8845f..2ad22592eef 100644
--- a/intern/cycles/kernel/svm/svm_voronoi.h
+++ b/intern/cycles/kernel/svm/svm_voronoi.h
@@ -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);
}
diff --git a/intern/cycles/render/nodes.h b/intern/cycles/render/nodes.h
index 13e9b65fa07..62037b0d381 100644
--- a/intern/cycles/render/nodes.h
+++ b/intern/cycles/render/nodes.h
@@ -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;