diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-11-13 16:59:44 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-11-13 16:59:44 +0300 |
commit | d7b3b3b22fca3267f9be8c8ae2e8f6fb7b9fb617 (patch) | |
tree | d6df3ad0dafa2a115df0bafe60b266ea3ce99a2f /intern/cycles | |
parent | 5ff7827980e3b3e598a7f630f8b2a3c90222ac70 (diff) | |
parent | c7b77222542ce2e4eda548c51aa33013dddc0480 (diff) |
Merge branch 'blender-v2.81-release'
Diffstat (limited to 'intern/cycles')
-rw-r--r-- | intern/cycles/kernel/svm/svm.h | 6 | ||||
-rw-r--r-- | intern/cycles/kernel/svm/svm_types.h | 7 | ||||
-rw-r--r-- | intern/cycles/kernel/svm/svm_voronoi.h | 7 | ||||
-rw-r--r-- | intern/cycles/render/nodes.h | 12 |
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; |