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:
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/BKE_blender.h2
-rw-r--r--source/blender/blenkernel/BKE_node.h6
-rw-r--r--source/blender/blenkernel/CMakeLists.txt4
-rw-r--r--source/blender/blenkernel/intern/movieclip.c45
-rw-r--r--source/blender/blenkernel/intern/node.c6
-rw-r--r--source/blender/blenkernel/intern/particle_system.c2
-rw-r--r--source/blender/blenloader/intern/readfile.c8
-rw-r--r--source/blender/editors/armature/reeb.c2
-rw-r--r--source/blender/editors/include/UI_interface.h16
-rw-r--r--source/blender/editors/interface/CMakeLists.txt1
-rw-r--r--source/blender/editors/interface/interface_intern.h5
-rw-r--r--source/blender/editors/interface/interface_regions.c9
-rw-r--r--source/blender/editors/interface/interface_templates.c3
-rw-r--r--source/blender/editors/interface/interface_widgets.c18
-rw-r--r--source/blender/editors/space_clip/tracking_ops.c5
-rw-r--r--source/blender/editors/space_image/space_image.c2
-rw-r--r--source/blender/editors/space_node/CMakeLists.txt1
-rw-r--r--source/blender/editors/space_node/drawnode.c2
-rw-r--r--source/blender/editors/space_node/node_buttons.c37
-rw-r--r--source/blender/editors/space_node/node_edit.c4
-rw-r--r--source/blender/editors/space_node/node_header.c48
-rw-r--r--source/blender/editors/space_node/node_templates.c (renamed from source/blender/editors/interface/interface_node.c)340
-rw-r--r--source/blender/editors/space_view3d/drawobject.c2
-rw-r--r--source/blender/editors/space_view3d/view3d_draw.c1
-rw-r--r--source/blender/editors/space_view3d/view3d_snap.c2
-rw-r--r--source/blender/editors/transform/transform.c2
-rw-r--r--source/blender/editors/transform/transform_generics.c110
-rw-r--r--source/blender/imbuf/intern/anim_movie.c2
-rw-r--r--source/blender/makesdna/DNA_modifier_types.h3
-rw-r--r--source/blender/makesrna/intern/rna_movieclip.c22
-rw-r--r--source/blender/makesrna/intern/rna_nodetree_types.h66
-rw-r--r--source/blender/makesrna/intern/rna_scene.c2
-rw-r--r--source/blender/makesrna/intern/rna_tracking.c12
-rw-r--r--source/blender/nodes/CMakeLists.txt3
-rw-r--r--source/blender/nodes/NOD_shader.h2
-rw-r--r--source/blender/nodes/composite/node_composite_tree.c15
-rw-r--r--source/blender/nodes/composite/nodes/node_composite_moviedistortion.c8
-rw-r--r--source/blender/nodes/shader/node_shader_tree.c23
-rw-r--r--source/blender/nodes/shader/node_shader_util.c2
-rw-r--r--source/blender/nodes/shader/node_shader_util.h5
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_add_shader.c6
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_attribute.c6
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_background.c7
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_bsdf_anisotropic.c6
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_bsdf_diffuse.c6
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_bsdf_glass.c6
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_bsdf_glossy.c6
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_bsdf_translucent.c6
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_bsdf_transparent.c6
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_bsdf_velvet.c6
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_emission.c6
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_fresnel.c6
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_geom.c2
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_geometry.c8
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_holdout.c6
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_layer_weight.c6
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_light_path.c6
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_mixRgb.c4
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_mix_shader.c6
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_output_lamp.c6
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_output_material.c6
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_output_texture.c76
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_output_world.c6
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_tex_coord.c6
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_tex_environment.c33
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_tex_gradient.c61
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_tex_image.c31
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_tex_magic.c91
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_tex_musgrave.c213
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_tex_noise.c57
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_tex_sky.c6
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_tex_voronoi.c44
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_tex_wave.c46
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_texture.c2
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_volume_isotropic.c6
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_volume_transparent.c6
-rw-r--r--source/blender/nodes/texture/node_texture_tree.c14
-rw-r--r--source/blender/render/intern/source/occlusion.c4
78 files changed, 493 insertions, 1180 deletions
diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h
index 7033a2e0cce..ac56cd02eb0 100644
--- a/source/blender/blenkernel/BKE_blender.h
+++ b/source/blender/blenkernel/BKE_blender.h
@@ -42,7 +42,7 @@ extern "C" {
* and keep comment above the defines.
* Use STRINGIFY() rather than defining with quotes */
#define BLENDER_VERSION 260
-#define BLENDER_SUBVERSION 1
+#define BLENDER_SUBVERSION 2
#define BLENDER_MINVERSION 250
#define BLENDER_MINSUBVERSION 0
diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h
index 5f6bbec78f6..580f78d3063 100644
--- a/source/blender/blenkernel/BKE_node.h
+++ b/source/blender/blenkernel/BKE_node.h
@@ -245,6 +245,7 @@ typedef struct bNodeType {
struct bNodeTreeExec;
typedef void (*bNodeTreeCallback)(void *calldata, struct ID *owner_id, struct bNodeTree *ntree);
+typedef void (*bNodeClassCallback)(void *calldata, int nclass, const char *name);
typedef struct bNodeTreeType
{
int type; /* type identifier */
@@ -256,6 +257,7 @@ typedef struct bNodeTreeType
void (*free_cache)(struct bNodeTree *ntree);
void (*free_node_cache)(struct bNodeTree *ntree, struct bNode *node);
void (*foreach_nodetree)(struct Main *main, void *calldata, bNodeTreeCallback func); /* iteration over all node trees */
+ void (*foreach_nodeclass)(struct Scene *scene, void *calldata, bNodeClassCallback func); /* iteration over all node classes */
/* calls allowing threaded composite */
void (*localize)(struct bNodeTree *localtree, struct bNodeTree *ntree);
@@ -440,7 +442,7 @@ struct ShadeResult;
#define SH_NODE_RGBTOBW 105
#define SH_NODE_TEXTURE 106
#define SH_NODE_NORMAL 107
-#define SH_NODE_GEOM 108
+#define SH_NODE_GEOMETRY 108
#define SH_NODE_MAPPING 109
#define SH_NODE_CURVE_VEC 110
#define SH_NODE_CURVE_RGB 111
@@ -470,7 +472,7 @@ struct ShadeResult;
#define SH_NODE_BSDF_TRANSPARENT 138
#define SH_NODE_BSDF_VELVET 139
#define SH_NODE_EMISSION 140
-#define SH_NODE_GEOMETRY 141
+#define SH_NODE_NEW_GEOMETRY 141
#define SH_NODE_LIGHT_PATH 142
#define SH_NODE_TEX_IMAGE 143
#define SH_NODE_TEX_SKY 145
diff --git a/source/blender/blenkernel/CMakeLists.txt b/source/blender/blenkernel/CMakeLists.txt
index df4e247bc93..c21806b4bc1 100644
--- a/source/blender/blenkernel/CMakeLists.txt
+++ b/source/blender/blenkernel/CMakeLists.txt
@@ -370,7 +370,9 @@ if(WITH_GAMEENGINE)
endif()
if(WITH_LIBMV)
- list(APPEND INC ../../../extern/libmv)
+ list(APPEND INC
+ ../../../extern/libmv
+ )
add_definitions(-DWITH_LIBMV)
endif()
diff --git a/source/blender/blenkernel/intern/movieclip.c b/source/blender/blenkernel/intern/movieclip.c
index e3bfdd54ab1..540d757f0c9 100644
--- a/source/blender/blenkernel/intern/movieclip.c
+++ b/source/blender/blenkernel/intern/movieclip.c
@@ -191,15 +191,13 @@ static ImBuf *movieclip_load_sequence_file(MovieClip *clip, MovieClipUser *user,
{
struct ImBuf *ibuf;
char name[FILE_MAX];
- int loadflag /*, size */ /* UNUSED */, undistort;
+ int loadflag, use_proxy= 0;
- /* size= rendersize_to_number(user->render_size); */
-
- undistort= user->render_flag&MCLIP_PROXY_RENDER_UNDISTORT;
-
- if((flag&MCLIP_USE_PROXY) && user->render_size != MCLIP_PROXY_RENDER_SIZE_FULL)
+ use_proxy= (flag&MCLIP_USE_PROXY) && user->render_size != MCLIP_PROXY_RENDER_SIZE_FULL;
+ if(use_proxy) {
+ int undistort= user->render_flag&MCLIP_PROXY_RENDER_UNDISTORT;
get_proxy_fname(clip, user->render_size, undistort, framenr, name);
- else
+ } else
get_sequence_fname(clip, framenr, name);
loadflag= IB_rect|IB_multilayer;
@@ -318,7 +316,7 @@ static ImBuf *get_imbuf_cache(MovieClip *clip, MovieClipUser *user, int flag)
if(clip->cache) {
MovieClipImBufCacheKey key;
- key.framenr= user?user->framenr:clip->lastframe;
+ key.framenr= user->framenr;
if(flag&MCLIP_USE_PROXY) {
key.proxy= rendersize_to_proxy(user, flag);
@@ -346,7 +344,7 @@ static void put_imbuf_cache(MovieClip *clip, MovieClipUser *user, ImBuf *ibuf, i
moviecache_hashcmp, moviecache_keydata);
}
- key.framenr= user?user->framenr:clip->lastframe;
+ key.framenr= user->framenr;
if(flag&MCLIP_USE_PROXY) {
key.proxy= rendersize_to_proxy(user, flag);
@@ -478,9 +476,6 @@ static void real_ibuf_size(MovieClip *clip, MovieClipUser *user, ImBuf *ibuf, in
static int need_undistorted_cache(MovieClipUser *user, int flag)
{
- if (!user)
- return 0;
-
/* only full undistorted render can be used as on-fly undistorting image */
if(flag&MCLIP_USE_PROXY) {
if(user->render_size != MCLIP_PROXY_RENDER_SIZE_FULL || (user->render_flag&MCLIP_PROXY_RENDER_UNDISTORT)==0)
@@ -495,7 +490,7 @@ static ImBuf *get_undistorted_cache(MovieClip *clip, MovieClipUser *user)
{
MovieClipCache *cache= clip->cache;
MovieTrackingCamera *camera= &clip->tracking.camera;
- int framenr= user?user->framenr:clip->lastframe;
+ int framenr= user->framenr;
/* no cache or no cached undistorted image */
if(!clip->cache || !clip->cache->undistibuf)
@@ -517,7 +512,7 @@ static ImBuf *get_undistorted_cache(MovieClip *clip, MovieClipUser *user)
return cache->undistibuf;
}
-static ImBuf *get_undistorted_ibuf(MovieClip *clip, struct MovieDistortion *distoriton, ImBuf *ibuf)
+static ImBuf *get_undistorted_ibuf(MovieClip *clip, struct MovieDistortion *distortion, ImBuf *ibuf)
{
ImBuf *undistibuf;
@@ -525,12 +520,12 @@ static ImBuf *get_undistorted_ibuf(MovieClip *clip, struct MovieDistortion *dist
otherwise, undistorted proxy can be darker than it should */
imb_freerectfloatImBuf(ibuf);
- if(distoriton)
- undistibuf= BKE_tracking_distortion_exec(distoriton, &clip->tracking, ibuf, ibuf->x, ibuf->y, 0.0f, 1);
+ if(distortion)
+ undistibuf= BKE_tracking_distortion_exec(distortion, &clip->tracking, ibuf, ibuf->x, ibuf->y, 0.0f, 1);
else
undistibuf= BKE_tracking_undistort(&clip->tracking, ibuf, ibuf->x, ibuf->y, 0.0f);
- if(undistibuf->userflags|= IB_RECT_INVALID) {
+ if(undistibuf->userflags&IB_RECT_INVALID) {
ibuf->userflags&= ~IB_RECT_INVALID;
IMB_rect_from_float(undistibuf);
}
@@ -547,7 +542,7 @@ static ImBuf *put_undistorted_cache(MovieClip *clip, MovieClipUser *user, ImBuf
copy_v2_v2(cache->principal, camera->principal);
copy_v3_v3(&cache->k1, &camera->k1);
- cache->undist_framenr= user?user->framenr:clip->lastframe;
+ cache->undist_framenr= user->framenr;
if(cache->undistibuf)
IMB_freeImBuf(cache->undistibuf);
@@ -568,7 +563,7 @@ static ImBuf *put_undistorted_cache(MovieClip *clip, MovieClipUser *user, ImBuf
ImBuf *BKE_movieclip_get_ibuf(MovieClip *clip, MovieClipUser *user)
{
ImBuf *ibuf= NULL;
- int framenr= user?user->framenr:clip->lastframe;
+ int framenr= user->framenr;
int cache_undistorted= 0;
/* cache isn't threadsafe itself and also loading of movies
@@ -586,11 +581,11 @@ ImBuf *BKE_movieclip_get_ibuf(MovieClip *clip, MovieClipUser *user)
ibuf= get_imbuf_cache(clip, user, clip->flag);
if(!ibuf) {
- int use_sequence= 1;
+ int use_sequence= 0;
/* undistorted proxies for movies should be read as image sequence */
- use_sequence&= user->render_flag&MCLIP_PROXY_RENDER_UNDISTORT;
- use_sequence&= user->render_size!=MCLIP_PROXY_RENDER_SIZE_FULL;
+ use_sequence= (user->render_flag&MCLIP_PROXY_RENDER_UNDISTORT) &&
+ (user->render_size!=MCLIP_PROXY_RENDER_SIZE_FULL);
if(clip->source==MCLIP_SRC_SEQUENCE || use_sequence)
ibuf= movieclip_load_sequence_file(clip, user, framenr, clip->flag);
@@ -622,7 +617,7 @@ ImBuf *BKE_movieclip_get_ibuf(MovieClip *clip, MovieClipUser *user)
ImBuf *BKE_movieclip_get_ibuf_flag(MovieClip *clip, MovieClipUser *user, int flag)
{
ImBuf *ibuf= NULL;
- int framenr= user?user->framenr:clip->lastframe;
+ int framenr= user->framenr;
int cache_undistorted= 0;
/* cache isn't threadsafe itself and also loading of movies
@@ -668,7 +663,7 @@ ImBuf *BKE_movieclip_get_ibuf_flag(MovieClip *clip, MovieClipUser *user, int fla
ImBuf *BKE_movieclip_get_stable_ibuf(MovieClip *clip, MovieClipUser *user, float loc[2], float *scale, float *angle)
{
ImBuf *ibuf, *stableibuf= NULL;
- int framenr= user?user->framenr:clip->lastframe;
+ int framenr= user->framenr;
ibuf= BKE_movieclip_get_ibuf(clip, user);
@@ -749,7 +744,7 @@ int BKE_movieclip_has_frame(MovieClip *clip, MovieClipUser *user)
void BKE_movieclip_get_size(MovieClip *clip, MovieClipUser *user, int *width, int *height)
{
- if(!user || user->framenr==clip->lastframe) {
+ if(user->framenr==clip->lastframe) {
*width= clip->lastsize[0];
*height= clip->lastsize[1];
} else {
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index ffe59b4f1ba..fa023d8fb43 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -1907,20 +1907,18 @@ static void registerShaderNodes(ListBase *ntypelist)
register_node_type_sh_bsdf_diffuse(ntypelist);
register_node_type_sh_bsdf_glossy(ntypelist);
register_node_type_sh_bsdf_glass(ntypelist);
- //register_node_type_sh_bsdf_anisotropic(ntypelist);
register_node_type_sh_bsdf_translucent(ntypelist);
register_node_type_sh_bsdf_transparent(ntypelist);
register_node_type_sh_bsdf_velvet(ntypelist);
register_node_type_sh_emission(ntypelist);
register_node_type_sh_holdout(ntypelist);
- register_node_type_sh_volume_transparent(ntypelist);
- register_node_type_sh_volume_isotropic(ntypelist);
+ //register_node_type_sh_volume_transparent(ntypelist);
+ //register_node_type_sh_volume_isotropic(ntypelist);
register_node_type_sh_mix_shader(ntypelist);
register_node_type_sh_add_shader(ntypelist);
register_node_type_sh_output_lamp(ntypelist);
register_node_type_sh_output_material(ntypelist);
- //register_node_type_sh_output_texture(ntypelist);
register_node_type_sh_output_world(ntypelist);
register_node_type_sh_tex_image(ntypelist);
diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c
index 3e88fb7d65e..cb12230615e 100644
--- a/source/blender/blenkernel/intern/particle_system.c
+++ b/source/blender/blenkernel/intern/particle_system.c
@@ -3176,7 +3176,7 @@ static int collision_response(ParticleData *pa, ParticleCollision *col, BVHTreeR
mul_v3_fl(v1_tan, 1.0f - 0.01f * frict);
/* surface_velocity is opposite to cm velocity */
- mul_v3_v3fl(vr_tan, v1_tan, -1.0f);
+ negate_v3_v3(vr_tan, v1_tan);
/* get back to global coordinates */
add_v3_v3(v1_tan, vc_tan);
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index b0f597ba477..d756e4f9099 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -2167,6 +2167,14 @@ static void ntree_tmp_cycles_version_patch(bNodeTree *ntree)
}
}
}
+ else if(node->type == SH_NODE_MIX_RGB) {
+ bNodeSocket *sock = node->inputs.first;
+
+ sock=sock->next;
+ strcpy(sock->name, "Color1");
+ sock=sock->next;
+ strcpy(sock->name, "Color2");
+ }
else {
for(sock=node->inputs.first; sock; sock=sock->next) {
if(strcmp(sock->name, "Closure1") == 0)
diff --git a/source/blender/editors/armature/reeb.c b/source/blender/editors/armature/reeb.c
index 0b214e48b6a..ce4092b2b84 100644
--- a/source/blender/editors/armature/reeb.c
+++ b/source/blender/editors/armature/reeb.c
@@ -3684,7 +3684,7 @@ void REEB_draw()
if (G.scene->toolsettings->skgen_options & SKGEN_DISP_INDEX)
{
- interp_v3_v3v3(vec, arc->head->p, arc->tail->p, 0.5f);
+ mid_v3_v3v3(vec, arc->head->p, arc->tail->p);
s += sprintf(s, "%i (%i-%i-%i) ", i, arc->symmetry_level, arc->symmetry_flag, arc->symmetry_group);
if (G.scene->toolsettings->skgen_options & SKGEN_DISP_WEIGHT)
diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h
index 677ec0ae9bd..db71d055c86 100644
--- a/source/blender/editors/include/UI_interface.h
+++ b/source/blender/editors/include/UI_interface.h
@@ -77,6 +77,10 @@ typedef struct uiLayout uiLayout;
/* Defines */
+/* names */
+#define UI_MAX_DRAW_STR 400
+#define UI_MAX_NAME_STR 128
+
/* uiBlock->dt */
#define UI_EMBOSS 0 /* use widget style for drawing */
#define UI_EMBOSSN 1 /* Nothing, only icon and/or text */
@@ -131,11 +135,11 @@ typedef struct uiLayout uiLayout;
#define UI_ICON_LEFT 128
#define UI_ICON_SUBMENU 256
#define UI_ICON_PREVIEW 512
- /* control for button type block */
-#define UI_MAKE_TOP 1024
-#define UI_MAKE_DOWN 2048
-#define UI_MAKE_LEFT 4096
-#define UI_MAKE_RIGHT 8192
+
+#define UI_BUT_NODE_LINK 1024
+#define UI_BUT_NODE_ACTIVE 2048
+#define UI_FLAG_UNUSED 4096
+#define UI_FLAG_UNUSED2 8192
/* button align flag, for drawing groups together */
#define UI_BUT_ALIGN (UI_BUT_ALIGN_TOP|UI_BUT_ALIGN_LEFT|UI_BUT_ALIGN_RIGHT|UI_BUT_ALIGN_DOWN)
@@ -159,8 +163,6 @@ typedef struct uiLayout uiLayout;
#define UI_BUT_VEC_SIZE_LOCK (1<<30) /* used to flag if color hsv-circle should keep luminance */
#define UI_BUT_COLOR_CUBIC (1<<31) /* cubic saturation for the color wheel */
-#define UI_BUT_NODE_LINK (1<<30) /* node link drawing hint for pulldowns */
-#define UI_BUT_NODE_ACTIVE (1<<31) /* node link drawing hint for pulldowns */
#define UI_PANEL_WIDTH 340
#define UI_COMPACT_PANEL_WIDTH 160
diff --git a/source/blender/editors/interface/CMakeLists.txt b/source/blender/editors/interface/CMakeLists.txt
index 7e48d369fda..8ba86673f87 100644
--- a/source/blender/editors/interface/CMakeLists.txt
+++ b/source/blender/editors/interface/CMakeLists.txt
@@ -45,7 +45,6 @@ set(SRC
interface_icons.c
interface_layout.c
interface_ops.c
- interface_node.c
interface_panel.c
interface_regions.c
interface_style.c
diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h
index 0f253c7175f..3bdac42411a 100644
--- a/source/blender/editors/interface/interface_intern.h
+++ b/source/blender/editors/interface/interface_intern.h
@@ -97,11 +97,6 @@ typedef enum {
} uiWidgetTypeEnum;
-
-
-#define UI_MAX_DRAW_STR 400
-#define UI_MAX_NAME_STR 128
-
/* panel limits */
#define UI_PANEL_MINX 100
#define UI_PANEL_MINY 70
diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c
index edbd5c5684e..34b62155314 100644
--- a/source/blender/editors/interface/interface_regions.c
+++ b/source/blender/editors/interface/interface_regions.c
@@ -1533,15 +1533,6 @@ uiPopupBlockHandle *ui_popup_block_create(bContext *C, ARegion *butregion, uiBut
if(ELEM(but->type, BLOCK, PULLDOWN))
block->xofs = -2; /* for proper alignment */
- /* only used for automatic toolbox, so can set the shift flag */
- if(but->flag & UI_MAKE_TOP) {
- block->direction= UI_TOP|UI_SHIFT_FLIPPED;
- uiBlockFlipOrder(block);
- }
- if(but->flag & UI_MAKE_DOWN) block->direction= UI_DOWN|UI_SHIFT_FLIPPED;
- if(but->flag & UI_MAKE_LEFT) block->direction |= UI_LEFT;
- if(but->flag & UI_MAKE_RIGHT) block->direction |= UI_RIGHT;
-
ui_block_position(window, butregion, but, block);
}
else {
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index 6268cbc7475..a3d71674a03 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -2609,9 +2609,6 @@ void uiTemplateReportsBanner(uiLayout *layout, bContext *C)
uiBlockSetEmboss(block, UI_EMBOSS);
uiDefBut(block, LABEL, 0, report->message, UI_UNIT_X+10, 0, UI_UNIT_X+width, UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, "");
-
- /* XXX linking hack */
- uiTemplateNodeView(NULL, NULL, NULL, NULL, NULL);
}
/********************************* Keymap *************************************/
diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c
index 3f5344d3214..0abe7a04a97 100644
--- a/source/blender/editors/interface/interface_widgets.c
+++ b/source/blender/editors/interface/interface_widgets.c
@@ -1183,7 +1183,6 @@ static void widget_draw_text_icon(uiFontStyle *fstyle, uiWidgetColors *wcol, uiB
widget_draw_icon(but, ICON_DOT, dualset?1.0f:0.25f, rect);
}
else if(but->type==MENU && (but->flag & UI_BUT_NODE_LINK)) {
- /* node link hacking */
int tmp = rect->xmin;
rect->xmin = rect->xmax - (rect->ymax - rect->ymin) - 1;
widget_draw_icon(but, ICON_LAYER_USED, 1.0f, rect);
@@ -2546,28 +2545,19 @@ static void widget_menunodebut(uiWidgetColors *wcol, rcti *rect, int UNUSED(stat
{
/* silly node link button hacks */
uiWidgetBase wtb;
- unsigned char tmp[4];
- unsigned char tmp2[4];
+ uiWidgetColors wcol_backup= *wcol;
widget_init(&wtb);
/* half rounded */
round_box_edges(&wtb, roundboxalign, rect, 4.0f);
- memcpy(tmp, wcol->inner, sizeof(char)*4);
- memcpy(tmp2, wcol->outline, sizeof(char)*4);
- wcol->inner[0] += 15;
- wcol->inner[1] += 15;
- wcol->inner[2] += 15;
- wcol->outline[0] += 15;
- wcol->outline[1] += 15;
- wcol->outline[2] += 15;
+ wcol->inner[0] += 15; wcol->inner[1] += 15; wcol->inner[2] += 15;
+ wcol->outline[0] += 15; wcol->outline[1] += 15; wcol->outline[2] += 15;
/* decoration */
widgetbase_draw(&wtb, wcol);
-
- memcpy(wcol->inner, tmp, sizeof(char)*4);
- memcpy(wcol->outline, tmp2, sizeof(char)*4);
+ *wcol= wcol_backup;
}
static void widget_pulldownbut(uiWidgetColors *wcol, rcti *rect, int state, int UNUSED(roundboxalign))
diff --git a/source/blender/editors/space_clip/tracking_ops.c b/source/blender/editors/space_clip/tracking_ops.c
index e5bf053aa1c..6f2289388f5 100644
--- a/source/blender/editors/space_clip/tracking_ops.c
+++ b/source/blender/editors/space_clip/tracking_ops.c
@@ -1537,7 +1537,7 @@ static int solve_camera_exec(bContext *C, wmOperator *op)
}
/* could fail if footage uses images with different sizes */
- BKE_movieclip_get_size(clip, NULL, &width, &height);
+ BKE_movieclip_get_size(clip, &sc->user, &width, &height);
error= BKE_tracking_solve_reconstruction(tracking, width, height);
@@ -1546,6 +1546,9 @@ static int solve_camera_exec(bContext *C, wmOperator *op)
else
BKE_reportf(op->reports, RPT_INFO, "Average reprojection error %.3f", error);
+ if(scene->clip)
+ id_us_min(&clip->id);
+
scene->clip= clip;
id_us_plus(&clip->id);
diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c
index e817565c509..c29553a9c87 100644
--- a/source/blender/editors/space_image/space_image.c
+++ b/source/blender/editors/space_image/space_image.c
@@ -84,7 +84,7 @@ Image *ED_space_image(SpaceImage *sima)
/* called to assign images to UV faces */
void ED_space_image_set(bContext *C, SpaceImage *sima, Scene *scene, Object *obedit, Image *ima)
{
- ED_uvedit_assign_image(G.main, scene, obedit, ima, sima->image);
+ ED_uvedit_assign_image(CTX_data_main(C), scene, obedit, ima, sima->image);
/* change the space ima after because uvedit_face_visible uses the space ima
* to check if the face is displayed in UV-localview */
diff --git a/source/blender/editors/space_node/CMakeLists.txt b/source/blender/editors/space_node/CMakeLists.txt
index 70cfac0d5d6..31b02803f0a 100644
--- a/source/blender/editors/space_node/CMakeLists.txt
+++ b/source/blender/editors/space_node/CMakeLists.txt
@@ -49,6 +49,7 @@ set(SRC
node_ops.c
node_select.c
node_state.c
+ node_templates.c
space_node.c
node_intern.h
diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c
index e6a219f4685..4394b4b1920 100644
--- a/source/blender/editors/space_node/drawnode.c
+++ b/source/blender/editors/space_node/drawnode.c
@@ -1125,7 +1125,7 @@ static void node_shader_set_butfunc(bNodeType *ntype)
case SH_NODE_VECT_MATH:
ntype->uifunc= node_shader_buts_vect_math;
break;
- case SH_NODE_GEOM:
+ case SH_NODE_GEOMETRY:
ntype->uifunc= node_shader_buts_geometry;
break;
case SH_NODE_ATTRIBUTE:
diff --git a/source/blender/editors/space_node/node_buttons.c b/source/blender/editors/space_node/node_buttons.c
index 3886c709196..15e5719be37 100644
--- a/source/blender/editors/space_node/node_buttons.c
+++ b/source/blender/editors/space_node/node_buttons.c
@@ -45,6 +45,7 @@
#include "BLI_utildefines.h"
#include "BKE_context.h"
+#include "BKE_global.h"
#include "BKE_node.h"
#include "BKE_screen.h"
@@ -122,6 +123,34 @@ static void active_node_panel(const bContext *C, Panel *pa)
node->typeinfo->uifunc(layout, (bContext *)C, &ptr);
}
+static int node_sockets_poll(const bContext *C, PanelType *UNUSED(pt))
+{
+ SpaceNode *snode= CTX_wm_space_node(C);
+
+ return (snode && snode->nodetree && G.rt == 777);
+}
+
+static void node_sockets_panel(const bContext *C, Panel *pa)
+{
+ SpaceNode *snode= CTX_wm_space_node(C);
+ bNodeTree *ntree= (snode) ? snode->edittree : NULL;
+ bNode *node = (ntree) ? nodeGetActive(ntree) : NULL;
+ bNodeSocket *sock;
+ uiLayout *layout= pa->layout, *split;
+ char name[UI_MAX_NAME_STR];
+
+ if(ELEM(NULL, ntree, node))
+ return;
+
+ for(sock=node->inputs.first; sock; sock=sock->next) {
+ BLI_snprintf(name, sizeof(name), "%s:", sock->name);
+
+ split = uiLayoutSplit(layout, 0.35f, 0);
+ uiItemL(split, name, ICON_NONE);
+ uiTemplateNodeLink(split, ntree, node, sock);
+ }
+}
+
/* ******************* node buttons registration ************** */
void node_buttons_register(ARegionType *art)
@@ -134,6 +163,14 @@ void node_buttons_register(ARegionType *art)
pt->draw= active_node_panel;
pt->poll= active_node_poll;
BLI_addtail(&art->paneltypes, pt);
+
+ pt= MEM_callocN(sizeof(PanelType), "spacetype node panel node sockets");
+ strcpy(pt->idname, "NODE_PT_sockets");
+ strcpy(pt->label, "Sockets");
+ pt->draw= node_sockets_panel;
+ pt->poll= node_sockets_poll;
+ pt->flag |= PNL_DEFAULT_CLOSED;
+ BLI_addtail(&art->paneltypes, pt);
pt= MEM_callocN(sizeof(PanelType), "spacetype node panel gpencil");
strcpy(pt->idname, "NODE_PT_gpencil");
diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c
index b632fd81eeb..68657205d60 100644
--- a/source/blender/editors/space_node/node_edit.c
+++ b/source/blender/editors/space_node/node_edit.c
@@ -2255,9 +2255,7 @@ bNode *node_add_node(SpaceNode *snode, Main *bmain, Scene *scene, bNodeTemplate
node->id = &scene->id;
}
else if(ELEM3(node->type, CMP_NODE_MOVIECLIP, CMP_NODE_MOVIEDISTORTION, CMP_NODE_STABILIZE2D)) {
- if(G.main->movieclip.first == G.main->movieclip.last) {
- node->id= G.main->movieclip.first;
- }
+ node->id = (ID *)scene->clip;
}
ntreeCompositForceHidden(snode->edittree, scene);
diff --git a/source/blender/editors/space_node/node_header.c b/source/blender/editors/space_node/node_header.c
index 42b5dafa3e1..6dd5eeba832 100644
--- a/source/blender/editors/space_node/node_header.c
+++ b/source/blender/editors/space_node/node_header.c
@@ -226,52 +226,24 @@ static void node_add_menu(bContext *C, uiLayout *layout, void *arg_nodeclass)
}
}
+static void node_menu_add_foreach_cb(void *calldata, int nclass, const char *name)
+{
+ uiLayout *layout= calldata;
+ uiItemMenuF(layout, name, 0, node_add_menu, SET_INT_IN_POINTER(nclass));
+}
+
static void node_menu_add(const bContext *C, Menu *menu)
{
Scene *scene= CTX_data_scene(C);
SpaceNode *snode= CTX_wm_space_node(C);
uiLayout *layout= menu->layout;
+ bNodeTreeType *ntreetype= ntreeGetType(snode->treetype);
if(!snode->nodetree)
uiLayoutSetActive(layout, 0);
-
- if(snode->treetype==NTREE_SHADER) {
- uiItemMenuF(layout, IFACE_("Input"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_INPUT));
- uiItemMenuF(layout, IFACE_("Output"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OUTPUT));
- if(scene_use_new_shading_nodes(scene)) {
- uiItemMenuF(layout, IFACE_("Shader"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_SHADER));
- uiItemMenuF(layout, IFACE_("Texture"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_TEXTURE));
- }
- uiItemMenuF(layout, IFACE_("Color"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_COLOR));
- uiItemMenuF(layout, IFACE_("Vector"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_VECTOR));
- uiItemMenuF(layout, IFACE_("Convertor"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_CONVERTOR));
- uiItemMenuF(layout, IFACE_("Group"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_GROUP));
- //uiItemMenuF(layout, IFACE_("Dynamic"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_DYNAMIC));
- uiItemMenuF(layout, IFACE_("Layout"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_LAYOUT));
- }
- else if(snode->treetype==NTREE_COMPOSIT) {
- uiItemMenuF(layout, IFACE_("Input"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_INPUT));
- uiItemMenuF(layout, IFACE_("Output"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OUTPUT));
- uiItemMenuF(layout, IFACE_("Color"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_COLOR));
- uiItemMenuF(layout, IFACE_("Vector"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_VECTOR));
- uiItemMenuF(layout, IFACE_("Filter"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_FILTER));
- uiItemMenuF(layout, IFACE_("Convertor"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_CONVERTOR));
- uiItemMenuF(layout, IFACE_("Matte"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_MATTE));
- uiItemMenuF(layout, IFACE_("Distort"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_DISTORT));
- uiItemMenuF(layout, IFACE_("Group"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_GROUP));
- uiItemMenuF(layout, IFACE_("Layout"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_LAYOUT));
- }
- else if(snode->treetype==NTREE_TEXTURE) {
- uiItemMenuF(layout, IFACE_("Input"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_INPUT));
- uiItemMenuF(layout, IFACE_("Output"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OUTPUT));
- uiItemMenuF(layout, IFACE_("Color"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_COLOR));
- uiItemMenuF(layout, IFACE_("Patterns"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_PATTERN));
- uiItemMenuF(layout, IFACE_("Textures"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_TEXTURE));
- uiItemMenuF(layout, IFACE_("Convertor"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_CONVERTOR));
- uiItemMenuF(layout, IFACE_("Distort"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_DISTORT));
- uiItemMenuF(layout, IFACE_("Group"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_GROUP));
- uiItemMenuF(layout, IFACE_("Layout"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_LAYOUT));
- }
+
+ if(ntreetype && ntreetype->foreach_nodeclass)
+ ntreetype->foreach_nodeclass(scene, layout, node_menu_add_foreach_cb);
}
void node_menus_register(void)
diff --git a/source/blender/editors/interface/interface_node.c b/source/blender/editors/space_node/node_templates.c
index 982f33bd600..5aa15cc68d6 100644
--- a/source/blender/editors/interface/interface_node.c
+++ b/source/blender/editors/space_node/node_templates.c
@@ -53,27 +53,14 @@
#include "WM_types.h"
#include "UI_interface.h"
-#include "interface_intern.h"
+#include "UI_resources.h"
+#include "../interface/interface_intern.h"
#include "ED_node.h"
-/************************* Node Link Menu **************************/
+/************************* Node Socket Manipulation **************************/
-#define UI_NODE_LINK_ADD 0
-#define UI_NODE_LINK_DISCONNECT -1
-#define UI_NODE_LINK_REMOVE -2
-
-typedef struct NodeLinkArg {
- bNodeTree *ntree;
- bNode *node;
- bNodeSocket *sock;
-
- bNodeTree *ngroup;
- int type;
- int output;
-} NodeLinkArg;
-
-static void ui_node_tag_recursive(bNode *node)
+static void node_tag_recursive(bNode *node)
{
bNodeSocket *input;
@@ -84,10 +71,10 @@ static void ui_node_tag_recursive(bNode *node)
for(input=node->inputs.first; input; input=input->next)
if(input->link)
- ui_node_tag_recursive(input->link->fromnode);
+ node_tag_recursive(input->link->fromnode);
}
-static void ui_node_clear_recursive(bNode *node)
+static void node_clear_recursive(bNode *node)
{
bNodeSocket *input;
@@ -98,10 +85,10 @@ static void ui_node_clear_recursive(bNode *node)
for(input=node->inputs.first; input; input=input->next)
if(input->link)
- ui_node_clear_recursive(input->link->fromnode);
+ node_clear_recursive(input->link->fromnode);
}
-static void ui_node_remove_linked(bNodeTree *ntree, bNode *rem_node)
+static void node_remove_linked(bNodeTree *ntree, bNode *rem_node)
{
bNode *node, *next;
bNodeSocket *sock;
@@ -113,14 +100,14 @@ static void ui_node_remove_linked(bNodeTree *ntree, bNode *rem_node)
for(node=ntree->nodes.first; node; node=node->next)
node->flag &= ~NODE_TEST;
- ui_node_tag_recursive(rem_node);
+ node_tag_recursive(rem_node);
/* clear tags on nodes that are still used by other nodes */
for(node=ntree->nodes.first; node; node=node->next)
if(!(node->flag & NODE_TEST))
for(sock=node->inputs.first; sock; sock=sock->next)
if(sock->link && sock->link->fromnode != rem_node)
- ui_node_clear_recursive(sock->link->fromnode);
+ node_clear_recursive(sock->link->fromnode);
/* remove nodes */
for(node=ntree->nodes.first; node; node=next) {
@@ -132,156 +119,194 @@ static void ui_node_remove_linked(bNodeTree *ntree, bNode *rem_node)
nodeFreeNode(ntree, node);
}
}
-
- //node_tree_verify_groups(ntree);
}
-static void ui_node_sock_name(bNodeSocket *sock, char name[UI_MAX_NAME_STR])
+/* disconnect socket from the node it is connected to */
+static void node_socket_disconnect(Main *bmain, bNodeTree *ntree, bNode *node_to, bNodeSocket *sock_to)
{
- if(sock->link && sock->link->fromnode) {
- bNode *node = sock->link->fromnode;
- char node_name[UI_MAX_NAME_STR];
+ if(!sock_to->link)
+ return;
- if(node->type == NODE_GROUP)
- BLI_strncpy(node_name, node->id->name+2, UI_MAX_NAME_STR);
- else
- BLI_strncpy(node_name, node->typeinfo->name, UI_MAX_NAME_STR);
+ nodeRemLink(ntree, sock_to->link);
- if(node->inputs.first == NULL &&
- node->outputs.first != node->outputs.last &&
- !(node->typeinfo->flag & NODE_OPTIONS))
- BLI_snprintf(name, UI_MAX_NAME_STR, "%s | %s", node_name, sock->link->fromsock->name);
- else
- BLI_strncpy(name, node_name, UI_MAX_NAME_STR);
- }
- else if(sock->type == SOCK_SHADER)
- BLI_strncpy(name, "None", UI_MAX_NAME_STR);
- else
- BLI_strncpy(name, "Default", UI_MAX_NAME_STR);
+ nodeUpdate(ntree, node_to);
+ ntreeUpdateTree(ntree);
+
+ ED_node_generic_update(bmain, ntree, node_to);
}
-static void ui_node_link(bContext *C, void *arg_p, void *event_p)
+/* remove all nodes connected to this socket, if they aren't connected to other nodes */
+static void node_socket_remove(Main *bmain, bNodeTree *ntree, bNode *node_to, bNodeSocket *sock_to)
{
- NodeLinkArg *arg = (NodeLinkArg*)arg_p;
- bNode *node_to = arg->node;
- bNodeSocket *sock_to = arg->sock;
- bNodeTree *ntree = arg->ntree;
- bNode *node_from;
- bNodeSocket *sock_from;
- int event = GET_INT_FROM_POINTER(event_p);
+ if(!sock_to->link)
+ return;
- if(event == UI_NODE_LINK_DISCONNECT) {
- /* disconnect */
- if(sock_to->link)
- nodeRemLink(ntree, sock_to->link);
- }
- else if(event == UI_NODE_LINK_REMOVE) {
- /* remove */
- if(sock_to->link)
- ui_node_remove_linked(ntree, sock_to->link->fromnode);
- }
- else {
- bNode *node_prev = NULL;
+ node_remove_linked(ntree, sock_to->link->fromnode);
- /* unlink existing node */
- if(sock_to->link) {
- node_prev = sock_to->link->fromnode;
- nodeRemLink(ntree, sock_to->link);
- }
+ nodeUpdate(ntree, node_to);
+ ntreeUpdateTree(ntree);
- /* find existing node that we can use */
- for(node_from=ntree->nodes.first; node_from; node_from=node_from->next)
- if(node_from->type == arg->type)
- break;
+ ED_node_generic_update(bmain, ntree, node_to);
+}
- if(node_from)
- if(!(node_from->inputs.first == NULL && !(node_from->typeinfo->flag & NODE_OPTIONS)))
- node_from = NULL;
+/* add new node connected to this socket, or replace an existing one */
+static void node_socket_add_replace(Main *bmain, bNodeTree *ntree, bNode *node_to, bNodeSocket *sock_to, bNodeTemplate *ntemp, int sock_num)
+{
+ bNode *node_from;
+ bNodeSocket *sock_from;
+ bNode *node_prev = NULL;
- if(node_prev && node_prev->type == arg->type &&
- (arg->type != NODE_GROUP || node_prev->id == &arg->ngroup->id)) {
- /* keep the previous node if it's the same type */
- node_from = node_prev;
- }
- else if(!node_from) {
- bNodeTemplate ntemp;
+ /* unlink existing node */
+ if(sock_to->link) {
+ node_prev = sock_to->link->fromnode;
+ nodeRemLink(ntree, sock_to->link);
+ }
- /* add new node */
- if(arg->ngroup) {
- ntemp.type = NODE_GROUP;
- ntemp.ngroup = arg->ngroup;
- }
- else
- ntemp.type = arg->type;
+ /* find existing node that we can use */
+ for(node_from=ntree->nodes.first; node_from; node_from=node_from->next)
+ if(node_from->type == ntemp->type)
+ break;
- node_from= nodeAddNode(ntree, &ntemp);
- node_from->locx = node_to->locx - (node_from->typeinfo->width + 50);
- node_from->locy = node_to->locy;
+ if(node_from)
+ if(!(node_from->inputs.first == NULL && !(node_from->typeinfo->flag & NODE_OPTIONS)))
+ node_from = NULL;
- if(node_from->id)
- id_us_plus(node_from->id);
- }
+ if(node_prev && node_prev->type == ntemp->type &&
+ (ntemp->type != NODE_GROUP || node_prev->id == &ntemp->ngroup->id)) {
+ /* keep the previous node if it's the same type */
+ node_from = node_prev;
+ }
+ else if(!node_from) {
+ node_from= nodeAddNode(ntree, ntemp);
+ node_from->locx = node_to->locx - (node_from->typeinfo->width + 50);
+ node_from->locy = node_to->locy;
- nodeSetActive(ntree, node_from);
+ if(node_from->id)
+ id_us_plus(node_from->id);
+ }
+
+ nodeSetActive(ntree, node_from);
- /* add link */
- sock_from = BLI_findlink(&node_from->outputs, arg->output);
- nodeAddLink(ntree, node_from, sock_from, node_to, sock_to);
+ /* add link */
+ sock_from = BLI_findlink(&node_from->outputs, sock_num);
+ nodeAddLink(ntree, node_from, sock_from, node_to, sock_to);
- /* copy input sockets from previous node */
- if(node_prev && node_from != node_prev) {
- bNodeSocket *sock_prev, *sock_from;
+ /* copy input sockets from previous node */
+ if(node_prev && node_from != node_prev) {
+ bNodeSocket *sock_prev, *sock_from;
- for(sock_prev=node_prev->inputs.first; sock_prev; sock_prev=sock_prev->next) {
- for(sock_from=node_from->inputs.first; sock_from; sock_from=sock_from->next) {
- if(strcmp(sock_prev->name, sock_from->name) == 0 && sock_prev->type == sock_from->type) {
- bNodeLink *link = sock_prev->link;
+ for(sock_prev=node_prev->inputs.first; sock_prev; sock_prev=sock_prev->next) {
+ for(sock_from=node_from->inputs.first; sock_from; sock_from=sock_from->next) {
+ if(strcmp(sock_prev->name, sock_from->name) == 0 && sock_prev->type == sock_from->type) {
+ bNodeLink *link = sock_prev->link;
- if(link && link->fromnode) {
- nodeAddLink(ntree, link->fromnode, link->fromsock, node_from, sock_from);
- nodeRemLink(ntree, link);
- }
+ if(link && link->fromnode) {
+ nodeAddLink(ntree, link->fromnode, link->fromsock, node_from, sock_from);
+ nodeRemLink(ntree, link);
+ }
- if(sock_prev->default_value) {
- if(sock_from->default_value)
- MEM_freeN(sock_from->default_value);
+ if(sock_prev->default_value) {
+ if(sock_from->default_value)
+ MEM_freeN(sock_from->default_value);
- sock_from->default_value = MEM_dupallocN(sock_prev->default_value);
- }
+ sock_from->default_value = MEM_dupallocN(sock_prev->default_value);
}
}
}
-
- /* also preserve mapping for texture nodes */
- if(node_from->typeinfo->nclass == NODE_CLASS_TEXTURE &&
- node_prev->typeinfo->nclass == NODE_CLASS_TEXTURE)
- memcpy(node_from->storage, node_prev->storage, sizeof(NodeTexBase));
-
- /* remove node */
- ui_node_remove_linked(ntree, node_prev);
}
- nodeUpdate(ntree, node_from);
+ /* also preserve mapping for texture nodes */
+ if(node_from->typeinfo->nclass == NODE_CLASS_TEXTURE &&
+ node_prev->typeinfo->nclass == NODE_CLASS_TEXTURE)
+ memcpy(node_from->storage, node_prev->storage, sizeof(NodeTexBase));
+
+ /* remove node */
+ node_remove_linked(ntree, node_prev);
}
+ nodeUpdate(ntree, node_from);
nodeUpdate(ntree, node_to);
ntreeUpdateTree(ntree);
- ED_node_generic_update(CTX_data_main(C), ntree, node_to);
+ ED_node_generic_update(bmain, ntree, node_to);
+}
+
+/****************************** Node Link Menu *******************************/
+
+#define UI_NODE_LINK_ADD 0
+#define UI_NODE_LINK_DISCONNECT -1
+#define UI_NODE_LINK_REMOVE -2
+
+typedef struct NodeLinkArg {
+ Main *bmain;
+ Scene *scene;
+ bNodeTree *ntree;
+ bNode *node;
+ bNodeSocket *sock;
+
+ bNodeTree *ngroup;
+ int type;
+ int output;
+
+ uiLayout *layout;
+} NodeLinkArg;
+
+static void ui_node_link(bContext *UNUSED(C), void *arg_p, void *event_p)
+{
+ NodeLinkArg *arg = (NodeLinkArg*)arg_p;
+ Main *bmain = arg->bmain;
+ bNode *node_to = arg->node;
+ bNodeSocket *sock_to = arg->sock;
+ bNodeTree *ntree = arg->ntree;
+ int event = GET_INT_FROM_POINTER(event_p);
+ bNodeTemplate ntemp;
+
+ ntemp.type = arg->type;
+ ntemp.ngroup = arg->ngroup;
+
+ if(event == UI_NODE_LINK_DISCONNECT)
+ node_socket_disconnect(bmain, ntree, node_to, sock_to);
+ else if(event == UI_NODE_LINK_REMOVE)
+ node_socket_remove(bmain, ntree, node_to, sock_to);
+ else
+ node_socket_add_replace(bmain, ntree, node_to, sock_to, &ntemp, arg->output);
+}
+
+static void ui_node_sock_name(bNodeSocket *sock, char name[UI_MAX_NAME_STR])
+{
+ if(sock->link && sock->link->fromnode) {
+ bNode *node = sock->link->fromnode;
+ char node_name[UI_MAX_NAME_STR];
+
+ if(node->type == NODE_GROUP)
+ BLI_strncpy(node_name, node->id->name+2, UI_MAX_NAME_STR);
+ else
+ BLI_strncpy(node_name, node->typeinfo->name, UI_MAX_NAME_STR);
+
+ if(node->inputs.first == NULL &&
+ node->outputs.first != node->outputs.last &&
+ !(node->typeinfo->flag & NODE_OPTIONS))
+ BLI_snprintf(name, UI_MAX_NAME_STR, "%s | %s", node_name, sock->link->fromsock->name);
+ else
+ BLI_strncpy(name, node_name, UI_MAX_NAME_STR);
+ }
+ else if(sock->type == SOCK_SHADER)
+ BLI_strncpy(name, "None", UI_MAX_NAME_STR);
+ else
+ BLI_strncpy(name, "Default", UI_MAX_NAME_STR);
}
static int ui_compatible_sockets(int typeA, int typeB)
{
- if(typeA == SOCK_SHADER || typeB == SOCK_SHADER)
- return (typeA == typeB);
-
return (typeA == typeB);
}
-static void ui_node_menu_column(Main *bmain, NodeLinkArg *arg, uiLayout *layout, const char *cname, int nclass, int compatibility)
+static void ui_node_menu_column(NodeLinkArg *arg, int nclass, const char *cname)
{
+ Main *bmain = arg->bmain;
bNodeTree *ntree = arg->ntree;
bNodeSocket *sock = arg->sock;
+ uiLayout *layout = arg->layout;
uiLayout *column = NULL;
uiBlock *block = uiLayoutGetBlock(layout);
uiBut *but;
@@ -289,6 +314,14 @@ static void ui_node_menu_column(Main *bmain, NodeLinkArg *arg, uiLayout *layout,
bNodeTree *ngroup;
NodeLinkArg *argN;
int first = 1;
+ int compatibility= 0;
+
+ if(ntree->type == NTREE_SHADER) {
+ if(scene_use_new_shading_nodes(arg->scene))
+ compatibility= NODE_NEW_SHADING;
+ else
+ compatibility= NODE_OLD_SHADING;
+ }
if(nclass == NODE_CLASS_GROUP) {
for(ngroup=bmain->nodetree.first; ngroup; ngroup=ngroup->id.next) {
@@ -311,7 +344,7 @@ static void ui_node_menu_column(Main *bmain, NodeLinkArg *arg, uiLayout *layout,
column= uiLayoutColumn(layout, 0);
uiBlockSetCurLayout(block, column);
- uiItemL(column, cname, ICON_NONE);
+ uiItemL(column, cname, ICON_NODE);
but= block->buttons.last;
but->flag= UI_TEXT_LEFT;
@@ -320,7 +353,7 @@ static void ui_node_menu_column(Main *bmain, NodeLinkArg *arg, uiLayout *layout,
if(num > 1) {
if(j == 0) {
- uiItemL(column, ngroup->id.name+2, ICON_NONE);
+ uiItemL(column, ngroup->id.name+2, ICON_NODE);
but= block->buttons.last;
but->flag= UI_TEXT_LEFT;
}
@@ -367,7 +400,7 @@ static void ui_node_menu_column(Main *bmain, NodeLinkArg *arg, uiLayout *layout,
column= uiLayoutColumn(layout, 0);
uiBlockSetCurLayout(block, column);
- uiItemL(column, cname, ICON_NONE);
+ uiItemL(column, cname, ICON_NODE);
but= block->buttons.last;
but->flag= UI_TEXT_LEFT;
@@ -376,7 +409,7 @@ static void ui_node_menu_column(Main *bmain, NodeLinkArg *arg, uiLayout *layout,
if(num > 1) {
if(j == 0) {
- uiItemL(column, ntype->name, ICON_NONE);
+ uiItemL(column, ntype->name, ICON_NODE);
but= block->buttons.last;
but->flag= UI_TEXT_LEFT;
}
@@ -399,6 +432,14 @@ static void ui_node_menu_column(Main *bmain, NodeLinkArg *arg, uiLayout *layout,
}
}
+static void node_menu_column_foreach_cb(void *calldata, int nclass, const char *name)
+{
+ NodeLinkArg *arg = (NodeLinkArg*)calldata;
+
+ if(!ELEM(nclass, NODE_CLASS_GROUP, NODE_CLASS_LAYOUT))
+ ui_node_menu_column(arg, nclass, name);
+}
+
static void ui_template_node_link_menu(bContext *C, uiLayout *layout, void *but_p)
{
Main *bmain= CTX_data_main(C);
@@ -408,25 +449,17 @@ static void ui_template_node_link_menu(bContext *C, uiLayout *layout, void *but_
uiLayout *split, *column;
NodeLinkArg *arg = (NodeLinkArg*)but->func_argN;
bNodeSocket *sock = arg->sock;
- int compatibility= 0;
+ bNodeTreeType *ntreetype= ntreeGetType(arg->ntree->type);
- if(arg->ntree->type == NTREE_SHADER) {
- if(scene_use_new_shading_nodes(scene))
- compatibility= NODE_NEW_SHADING;
- else
- compatibility= NODE_OLD_SHADING;
- }
-
uiBlockSetCurLayout(block, layout);
split= uiLayoutSplit(layout, 0, 0);
- ui_node_menu_column(bmain, arg, split, "Input", NODE_CLASS_INPUT, compatibility);
- ui_node_menu_column(bmain, arg, split, "Output", NODE_CLASS_OUTPUT, compatibility);
- ui_node_menu_column(bmain, arg, split, "Shader", NODE_CLASS_SHADER, compatibility);
- ui_node_menu_column(bmain, arg, split, "Texture", NODE_CLASS_TEXTURE, compatibility);
- ui_node_menu_column(bmain, arg, split, "Color", NODE_CLASS_OP_COLOR, compatibility);
- ui_node_menu_column(bmain, arg, split, "Vector", NODE_CLASS_OP_VECTOR, compatibility);
- ui_node_menu_column(bmain, arg, split, "Convertor", NODE_CLASS_CONVERTOR, compatibility);
+ arg->bmain= bmain;
+ arg->scene= scene;
+ arg->layout= split;
+
+ if(ntreetype && ntreetype->foreach_nodeclass)
+ ntreetype->foreach_nodeclass(scene, arg, node_menu_column_foreach_cb);
column= uiLayoutColumn(split, 0);
uiBlockSetCurLayout(block, column);
@@ -445,7 +478,7 @@ static void ui_template_node_link_menu(bContext *C, uiLayout *layout, void *but_
uiButSetNFunc(but, ui_node_link, MEM_dupallocN(arg), SET_INT_IN_POINTER(UI_NODE_LINK_DISCONNECT));
}
- ui_node_menu_column(bmain, arg, column, "Group", NODE_CLASS_GROUP, compatibility);
+ ui_node_menu_column(arg, NODE_CLASS_GROUP, IFACE_("Group"));
}
void uiTemplateNodeLink(uiLayout *layout, bNodeTree *ntree, bNode *node, bNodeSocket *sock)
@@ -481,7 +514,7 @@ void uiTemplateNodeLink(uiLayout *layout, bNodeTree *ntree, bNode *node, bNodeSo
but->flag |= UI_BUT_NODE_ACTIVE;
}
-/************************* Node Tree Layout **************************/
+/**************************** Node Tree Layout *******************************/
static void ui_node_draw_input(uiLayout *layout, bContext *C,
bNodeTree *ntree, bNode *node, bNodeSocket *input, int depth);
@@ -518,6 +551,9 @@ static void ui_node_draw_input(uiLayout *layout, bContext *C, bNodeTree *ntree,
char label[UI_MAX_NAME_STR];
int indent = (depth > 1)? 2*(depth - 1): 0;
+ if(input->flag & SOCK_UNAVAIL)
+ return;
+
/* to avoid eternal loops on cyclic dependencies */
node->flag |= NODE_TEST;
lnode = (input->link)? input->link->fromnode: NULL;
@@ -552,6 +588,8 @@ static void ui_node_draw_input(uiLayout *layout, bContext *C, bNodeTree *ntree,
}
uiItemL(row, label, ICON_NONE);
+ bt= block->buttons.last;
+ bt->flag= UI_TEXT_LEFT;
if(lnode) {
/* input linked to a node */
diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c
index fed671ade20..8e592ad9f68 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -2563,7 +2563,7 @@ static void draw_em_measure_stats(View3D *v3d, RegionView3D *rv3d, Object *ob, E
copy_v3_v3(v1, eed->v1->co);
copy_v3_v3(v2, eed->v2->co);
- interp_v3_v3v3(vmid, v1, v2, 0.5f);
+ mid_v3_v3v3(vmid, v1, v2);
if(do_global) {
mul_mat3_m4_v3(ob->obmat, v1);
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index 5c8e170dfc7..8e20f331698 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -2233,7 +2233,6 @@ CustomDataMask ED_view3d_datamask(Scene *scene, View3D *v3d)
mask |= CD_MASK_MTFACE | CD_MASK_MCOL;
if(scene_use_new_shading_nodes(scene)) {
- /* todo: use orco in textured draw mode */
if(v3d->drawtype == OB_MATERIAL)
mask |= CD_MASK_ORCO;
}
diff --git a/source/blender/editors/space_view3d/view3d_snap.c b/source/blender/editors/space_view3d/view3d_snap.c
index 012e08f98cb..7cd9c07c00c 100644
--- a/source/blender/editors/space_view3d/view3d_snap.c
+++ b/source/blender/editors/space_view3d/view3d_snap.c
@@ -781,7 +781,7 @@ static void bundle_midpoint(Scene *scene, Object *ob, float vec[3])
}
if(ok) {
- interp_v3_v3v3(vec, min, max, 0.5);
+ mid_v3_v3v3(vec, min, max);
}
}
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 13d686508de..95daa11d97f 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -513,7 +513,7 @@ wmKeyMap* transform_modal_keymap(wmKeyConfig *keyconf)
{NUM_MODAL_INCREMENT_UP, "INCREMENT_UP", 0, "Numinput Increment Up", ""},
{NUM_MODAL_INCREMENT_DOWN, "INCREMENT_DOWN", 0, "Numinput Increment Down", ""},
{TFM_MODAL_PROPSIZE_UP, "PROPORTIONAL_SIZE_UP", 0, "Increase Proportional Influence", ""},
- {TFM_MODAL_PROPSIZE_DOWN, "PROPORTIONAL_SIZE_DOWN", 0, "Decrease Poportional Influence", ""},
+ {TFM_MODAL_PROPSIZE_DOWN, "PROPORTIONAL_SIZE_DOWN", 0, "Decrease Proportional Influence", ""},
{TFM_MODAL_AUTOIK_LEN_INC, "AUTOIK_CHAIN_LEN_UP", 0, "Increase Max AutoIK Chain Length", ""},
{TFM_MODAL_AUTOIK_LEN_DEC, "AUTOIK_CHAIN_LEN_DOWN", 0, "Decrease Max AutoIK Chain Length", ""},
{0, NULL, 0, NULL, NULL}};
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index 53e379a2d27..0e053e68496 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -619,6 +619,65 @@ static void recalcData_nla(TransInfo *t)
}
}
+/* helper for recalcData() - for Image Editor transforms */
+static void recalcData_image(TransInfo *t)
+{
+ if (t->obedit && t->obedit->type == OB_MESH) {
+ SpaceImage *sima= t->sa->spacedata.first;
+
+ flushTransUVs(t);
+ if(sima->flag & SI_LIVE_UNWRAP)
+ ED_uvedit_live_unwrap_re_solve();
+
+ DAG_id_tag_update(t->obedit->data, 0);
+ }
+}
+
+/* helper for recalcData() - for Movie Clip transforms */
+static void recalcData_clip(TransInfo *t)
+{
+ SpaceClip *sc= t->sa->spacedata.first;
+ MovieClip *clip= ED_space_clip(sc);
+ MovieTrackingTrack *track;
+
+ if(t->state == TRANS_CANCEL) {
+ track= clip->tracking.tracks.first;
+ while(track) {
+ if(TRACK_VIEW_SELECTED(sc, track)) {
+ MovieTrackingMarker *marker= BKE_tracking_ensure_marker(track, sc->user.framenr);
+
+ marker->flag= track->transflag;
+ }
+
+ track= track->next;
+ }
+ }
+
+ flushTransTracking(t);
+
+ track= clip->tracking.tracks.first;
+ while(track) {
+ if(TRACK_VIEW_SELECTED(sc, track)) {
+ if (t->mode == TFM_TRANSLATION) {
+ if(TRACK_AREA_SELECTED(track, TRACK_AREA_PAT))
+ BKE_tracking_clamp_track(track, CLAMP_PAT_POS);
+ if(TRACK_AREA_SELECTED(track, TRACK_AREA_SEARCH))
+ BKE_tracking_clamp_track(track, CLAMP_SEARCH_POS);
+ }
+ else if (t->mode == TFM_RESIZE) {
+ if(TRACK_AREA_SELECTED(track, TRACK_AREA_PAT))
+ BKE_tracking_clamp_track(track, CLAMP_PAT_DIM);
+ if(TRACK_AREA_SELECTED(track, TRACK_AREA_SEARCH))
+ BKE_tracking_clamp_track(track, CLAMP_SEARCH_DIM);
+ }
+ }
+
+ track= track->next;
+ }
+
+ DAG_id_tag_update(&clip->id, 0);
+}
+
/* helper for recalcData() - for 3d-view transforms */
static void recalcData_view3d(TransInfo *t)
{
@@ -853,60 +912,13 @@ void recalcData(TransInfo *t)
recalcData_nla(t);
}
else if (t->spacetype == SPACE_IMAGE) {
- if (t->obedit && t->obedit->type == OB_MESH) {
- SpaceImage *sima= t->sa->spacedata.first;
-
- flushTransUVs(t);
- if(sima->flag & SI_LIVE_UNWRAP)
- ED_uvedit_live_unwrap_re_solve();
-
- DAG_id_tag_update(t->obedit->data, 0);
- }
+ recalcData_image(t);
}
else if (t->spacetype == SPACE_VIEW3D) {
recalcData_view3d(t);
}
else if (t->spacetype == SPACE_CLIP) {
- SpaceClip *sc= t->sa->spacedata.first;
- MovieClip *clip= ED_space_clip(sc);
- MovieTrackingTrack *track;
-
- if(t->state == TRANS_CANCEL) {
- track= clip->tracking.tracks.first;
- while(track) {
- if(TRACK_VIEW_SELECTED(sc, track)) {
- MovieTrackingMarker *marker= BKE_tracking_ensure_marker(track, sc->user.framenr);
-
- marker->flag= track->transflag;
- }
-
- track= track->next;
- }
- }
-
- flushTransTracking(t);
-
- track= clip->tracking.tracks.first;
- while(track) {
- if(TRACK_VIEW_SELECTED(sc, track)) {
- if (t->mode == TFM_TRANSLATION) {
- if(TRACK_AREA_SELECTED(track, TRACK_AREA_PAT))
- BKE_tracking_clamp_track(track, CLAMP_PAT_POS);
- if(TRACK_AREA_SELECTED(track, TRACK_AREA_SEARCH))
- BKE_tracking_clamp_track(track, CLAMP_SEARCH_POS);
- }
- else if (t->mode == TFM_RESIZE) {
- if(TRACK_AREA_SELECTED(track, TRACK_AREA_PAT))
- BKE_tracking_clamp_track(track, CLAMP_PAT_DIM);
- if(TRACK_AREA_SELECTED(track, TRACK_AREA_SEARCH))
- BKE_tracking_clamp_track(track, CLAMP_SEARCH_DIM);
- }
- }
-
- track= track->next;
- }
-
- DAG_id_tag_update(&clip->id, 0);
+ recalcData_clip(t);
}
}
diff --git a/source/blender/imbuf/intern/anim_movie.c b/source/blender/imbuf/intern/anim_movie.c
index 3adb9a3791f..09b79e51648 100644
--- a/source/blender/imbuf/intern/anim_movie.c
+++ b/source/blender/imbuf/intern/anim_movie.c
@@ -890,7 +890,7 @@ static int ffmpeg_seek_by_byte(AVFormatContext *pFormatCtx)
static ImBuf * ffmpeg_fetchibuf(struct anim * anim, int position,
IMB_Timecode_Type tc) {
- int64_t pts_to_search = 0;
+ unsigned long long pts_to_search = 0;
double frame_rate;
double pts_time_base;
long long st_time;
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h
index 7991a903bbb..8e60fe984e6 100644
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@ -30,7 +30,8 @@
#define MODSTACK_DEBUG 1
-/* WARNING ALERT! TYPEDEF VALUES ARE WRITTEN IN FILES! SO DO NOT CHANGE! */
+/* WARNING ALERT! TYPEDEF VALUES ARE WRITTEN IN FILES! SO DO NOT CHANGE!
+ * (ONLY ADD NEW ITEMS AT THE END) */
typedef enum ModifierType {
eModifierType_None = 0,
diff --git a/source/blender/makesrna/intern/rna_movieclip.c b/source/blender/makesrna/intern/rna_movieclip.c
index afdf3cd9c46..ad53a96b817 100644
--- a/source/blender/makesrna/intern/rna_movieclip.c
+++ b/source/blender/makesrna/intern/rna_movieclip.c
@@ -66,24 +66,6 @@ static void rna_MovieClip_size_get(PointerRNA *ptr, int *values)
values[1]= clip->lastsize[1];
}
-static void rna_MovieClip_resolution_get(PointerRNA *ptr, float *values)
-{
- MovieClip *clip= (MovieClip*)ptr->id.data;
- ImBuf *ibuf;
-
- ibuf= BKE_movieclip_get_ibuf(clip, NULL);
- if (ibuf) {
- values[0]= ibuf->ppm[0];
- values[1]= ibuf->ppm[1];
-
- IMB_freeImBuf(ibuf);
- }
- else {
- values[0]= 0;
- values[1]= 0;
- }
-}
-
#else
static void rna_def_movieclip_proxy(BlenderRNA *brna)
@@ -235,10 +217,6 @@ static void rna_def_movieclip(BlenderRNA *brna)
RNA_def_property_int_funcs(prop, "rna_MovieClip_size_get" , NULL, NULL);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_float_vector(srna, "resolution" , 2 , NULL , 0, 0, "Resolution" , "X/Y pixels per meter" , 0 , 0);
- RNA_def_property_float_funcs(prop, "rna_MovieClip_resolution_get", NULL, NULL);
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
-
prop= RNA_def_property(srna, "display_aspect", PROP_FLOAT, PROP_XYZ);
RNA_def_property_float_sdna(prop, NULL, "aspx");
RNA_def_property_array(prop, 2);
diff --git a/source/blender/makesrna/intern/rna_nodetree_types.h b/source/blender/makesrna/intern/rna_nodetree_types.h
index b09854e94c6..78be14ebf7e 100644
--- a/source/blender/makesrna/intern/rna_nodetree_types.h
+++ b/source/blender/makesrna/intern/rna_nodetree_types.h
@@ -40,7 +40,7 @@ DefNode( ShaderNode, SH_NODE_VALTORGB, def_colorramp, "VALTO
DefNode( ShaderNode, SH_NODE_RGBTOBW, 0, "RGBTOBW", RGBToBW, "RGB to BW", "" )
DefNode( ShaderNode, SH_NODE_TEXTURE, def_texture, "TEXTURE", Texture, "Texture", "" )
DefNode( ShaderNode, SH_NODE_NORMAL, 0, "NORMAL", Normal, "Normal", "" )
-DefNode( ShaderNode, SH_NODE_GEOM, def_sh_geometry, "GEOM", Geom, "Geometry", "" )
+DefNode( ShaderNode, SH_NODE_GEOMETRY, def_sh_geometry, "GEOMETRY", Geometry, "Geometry", "" )
DefNode( ShaderNode, SH_NODE_MAPPING, def_sh_mapping, "MAPPING", Mapping, "Mapping", "" )
DefNode( ShaderNode, SH_NODE_CURVE_VEC, def_vector_curve, "CURVE_VEC", VectorCurve, "Vector Curve", "" )
DefNode( ShaderNode, SH_NODE_CURVE_RGB, def_rgb_curve, "CURVE_RGB", RGBCurve, "RGB Curve", "" )
@@ -53,40 +53,38 @@ DefNode( ShaderNode, SH_NODE_INVERT, 0, "INVER
DefNode( ShaderNode, SH_NODE_SEPRGB, 0, "SEPRGB", SeparateRGB, "Separate RGB", "" )
DefNode( ShaderNode, SH_NODE_COMBRGB, 0, "COMBRGB", CombineRGB, "Combine RGB", "" )
DefNode( ShaderNode, SH_NODE_HUE_SAT, 0, "HUE_SAT", HueSaturation, "Hue/Saturation", "" )
-DefNode( ShaderNode, SH_NODE_OUTPUT_MATERIAL, 0, "OUTPUT_MATERIAL",OutputMaterial, "Material Output", "" )
-DefNode( ShaderNode, SH_NODE_OUTPUT_LAMP, 0, "OUTPUT_LAMP", OutputLamp, "Lamp Output", "" )
-//DefNode( ShaderNode, SH_NODE_OUTPUT_TEXTURE, 0, "OUTPUT_TEXTURE", OutputTexture, "Texture Output", "" )
-DefNode( ShaderNode, SH_NODE_OUTPUT_WORLD, 0, "OUTPUT_WORLD", OutputWorld, "World Output", "" )
-DefNode( ShaderNode, SH_NODE_FRESNEL, 0, "FRESNEL", Fresnel, "Fresnel", "" )
-DefNode( ShaderNode, SH_NODE_LAYER_WEIGHT, 0, "LAYER_WEIGHT", LayerWeight, "LayerWeight", "" )
-DefNode( ShaderNode, SH_NODE_MIX_SHADER, 0, "MIX_SHADER", MixShader, "Mix Shader", "" )
-DefNode( ShaderNode, SH_NODE_ADD_SHADER, 0, "ADD_SHADER", AddShader, "Add Shader", "" )
-DefNode( ShaderNode, SH_NODE_ATTRIBUTE, def_sh_attribute, "ATTRIBUTE", Attribute, "Attribute", "")
-DefNode( ShaderNode, SH_NODE_BACKGROUND, 0, "BACKGROUND", Background, "Background", "")
-DefNode( ShaderNode, SH_NODE_HOLDOUT, 0, "HOLDOUT", Holdout, "Holdout", "")
-DefNode( ShaderNode, SH_NODE_BSDF_ANISOTROPIC, 0, "BSDF_ANISOTROPIC", BsdfAnisotropic, "Bsdf Anisotropic", "")
-DefNode( ShaderNode, SH_NODE_BSDF_DIFFUSE, 0, "BSDF_DIFFUSE", BsdfDiffuse, "Diffuse Bsdf", "")
-DefNode( ShaderNode, SH_NODE_BSDF_GLOSSY, def_glossy, "BSDF_GLOSSY", BsdfGlossy, "Glossy Bsdf", "")
-DefNode( ShaderNode, SH_NODE_BSDF_GLASS, def_glossy, "BSDF_GLASS", BsdfGlass, "Glass Bsdf", "")
-DefNode( ShaderNode, SH_NODE_BSDF_TRANSLUCENT, 0, "BSDF_TRANSLUCENT", BsdfTranslucent, "Translucent Bsdf", "")
-DefNode( ShaderNode, SH_NODE_BSDF_TRANSPARENT, 0, "BSDF_TRANSPARENT", BsdfTransparent, "Transparent Bsdf", "")
-DefNode( ShaderNode, SH_NODE_BSDF_VELVET, 0, "BSDF_VELVET", BsdfVelvet, "Velvet Bsdf", "")
-DefNode( ShaderNode, SH_NODE_VOLUME_TRANSPARENT, 0, "VOLUME_TRANSPARENT", VolumeTransparent, "Transparent Volume", "")
-DefNode( ShaderNode, SH_NODE_VOLUME_ISOTROPIC, 0, "VOLUME_ISOTROPIC", VolumeIsotropic, "Isotropic Volume", "")
-DefNode( ShaderNode, SH_NODE_EMISSION, 0, "EMISSION", Emission, "Emission", "")
-DefNode( ShaderNode, SH_NODE_GEOMETRY, 0, "GEOMETRY", Geometry, "Geometry", "")
-DefNode( ShaderNode, SH_NODE_LIGHT_PATH, 0, "LIGHT_PATH", Light_path, "Light_path", "")
-DefNode( ShaderNode, SH_NODE_TEX_IMAGE, def_sh_tex_image, "TEX_IMAGE", TexImage, "Image Texture", "")
-DefNode( ShaderNode, SH_NODE_TEX_ENVIRONMENT, def_sh_tex_environment, "TEX_ENVIRONMENT", TexEnvironment, "Environment Texture", "")
-DefNode( ShaderNode, SH_NODE_TEX_SKY, def_sh_tex_sky, "TEX_SKY", TexSky, "Sky Texture", "")
-DefNode( ShaderNode, SH_NODE_TEX_GRADIENT, def_sh_tex_gradient, "TEX_GRADIENT", TexGradient, "Gradient Texture", "")
-DefNode( ShaderNode, SH_NODE_TEX_NOISE, def_sh_tex_noise, "TEX_NOISE", TexNoise, "Noise Texture", "")
-DefNode( ShaderNode, SH_NODE_TEX_MAGIC, def_sh_tex_magic, "TEX_MAGIC", TexMagic, "Magic Texture", "")
-DefNode( ShaderNode, SH_NODE_TEX_WAVE, def_sh_tex_wave, "TEX_WAVE", TexWave, "Wave Texture", "")
-DefNode( ShaderNode, SH_NODE_TEX_MUSGRAVE, def_sh_tex_musgrave, "TEX_MUSGRAVE", TexMusgrave, "Musgrave Texture", "")
-DefNode( ShaderNode, SH_NODE_TEX_VORONOI, def_sh_tex_voronoi, "TEX_VORONOI", TexVoronoi, "Voronoi Texture", "")
-DefNode( ShaderNode, SH_NODE_TEX_COORD, 0, "TEX_COORD", TexCoord, "Texture Coordinate", "")
+DefNode( ShaderNode, SH_NODE_OUTPUT_MATERIAL, 0, "OUTPUT_MATERIAL", OutputMaterial, "Material Output", "" )
+DefNode( ShaderNode, SH_NODE_OUTPUT_LAMP, 0, "OUTPUT_LAMP", OutputLamp, "Lamp Output", "" )
+DefNode( ShaderNode, SH_NODE_OUTPUT_WORLD, 0, "OUTPUT_WORLD", OutputWorld, "World Output", "" )
+DefNode( ShaderNode, SH_NODE_FRESNEL, 0, "FRESNEL", Fresnel, "Fresnel", "" )
+DefNode( ShaderNode, SH_NODE_LAYER_WEIGHT, 0, "LAYER_WEIGHT", LayerWeight, "LayerWeight", "" )
+DefNode( ShaderNode, SH_NODE_MIX_SHADER, 0, "MIX_SHADER", MixShader, "Mix Shader", "" )
+DefNode( ShaderNode, SH_NODE_ADD_SHADER, 0, "ADD_SHADER", AddShader, "Add Shader", "" )
+DefNode( ShaderNode, SH_NODE_ATTRIBUTE, def_sh_attribute, "ATTRIBUTE", Attribute, "Attribute", "" )
+DefNode( ShaderNode, SH_NODE_BACKGROUND, 0, "BACKGROUND", Background, "Background", "" )
+DefNode( ShaderNode, SH_NODE_HOLDOUT, 0, "HOLDOUT", Holdout, "Holdout", "" )
+DefNode( ShaderNode, SH_NODE_BSDF_DIFFUSE, 0, "BSDF_DIFFUSE", BsdfDiffuse, "Diffuse Bsdf", "" )
+DefNode( ShaderNode, SH_NODE_BSDF_GLOSSY, def_glossy, "BSDF_GLOSSY", BsdfGlossy, "Glossy Bsdf", "" )
+DefNode( ShaderNode, SH_NODE_BSDF_GLASS, def_glossy, "BSDF_GLASS", BsdfGlass, "Glass Bsdf", "" )
+DefNode( ShaderNode, SH_NODE_BSDF_TRANSLUCENT, 0, "BSDF_TRANSLUCENT", BsdfTranslucent, "Translucent Bsdf", "" )
+DefNode( ShaderNode, SH_NODE_BSDF_TRANSPARENT, 0, "BSDF_TRANSPARENT", BsdfTransparent, "Transparent Bsdf", "" )
+DefNode( ShaderNode, SH_NODE_BSDF_VELVET, 0, "BSDF_VELVET", BsdfVelvet, "Velvet Bsdf", "" )
+DefNode( ShaderNode, SH_NODE_VOLUME_TRANSPARENT, 0, "VOLUME_TRANSPARENT", VolumeTransparent,"Transparent Volume","" )
+DefNode( ShaderNode, SH_NODE_VOLUME_ISOTROPIC, 0, "VOLUME_ISOTROPIC", VolumeIsotropic, "Isotropic Volume", "" )
+DefNode( ShaderNode, SH_NODE_EMISSION, 0, "EMISSION", Emission, "Emission", "" )
+DefNode( ShaderNode, SH_NODE_NEW_GEOMETRY, 0, "NEW_GEOMETRY", NewGeometry, "Geometry", "" )
+DefNode( ShaderNode, SH_NODE_LIGHT_PATH, 0, "LIGHT_PATH", Light_path, "Light_path", "" )
+DefNode( ShaderNode, SH_NODE_TEX_IMAGE, def_sh_tex_image, "TEX_IMAGE", TexImage, "Image Texture", "" )
+DefNode( ShaderNode, SH_NODE_TEX_ENVIRONMENT, def_sh_tex_environment, "TEX_ENVIRONMENT", TexEnvironment, "Environment Texture","" )
+DefNode( ShaderNode, SH_NODE_TEX_SKY, def_sh_tex_sky, "TEX_SKY", TexSky, "Sky Texture", "" )
+DefNode( ShaderNode, SH_NODE_TEX_GRADIENT, def_sh_tex_gradient, "TEX_GRADIENT", TexGradient, "Gradient Texture", "" )
+DefNode( ShaderNode, SH_NODE_TEX_NOISE, def_sh_tex_noise, "TEX_NOISE", TexNoise, "Noise Texture", "" )
+DefNode( ShaderNode, SH_NODE_TEX_MAGIC, def_sh_tex_magic, "TEX_MAGIC", TexMagic, "Magic Texture", "" )
+DefNode( ShaderNode, SH_NODE_TEX_WAVE, def_sh_tex_wave, "TEX_WAVE", TexWave, "Wave Texture", "" )
+DefNode( ShaderNode, SH_NODE_TEX_MUSGRAVE, def_sh_tex_musgrave, "TEX_MUSGRAVE", TexMusgrave, "Musgrave Texture", "" )
+DefNode( ShaderNode, SH_NODE_TEX_VORONOI, def_sh_tex_voronoi, "TEX_VORONOI", TexVoronoi, "Voronoi Texture", "" )
+DefNode( ShaderNode, SH_NODE_TEX_COORD, 0, "TEX_COORD", TexCoord, "Texture Coordinate","")
DefNode( CompositorNode, CMP_NODE_VIEWER, 0, "VIEWER", Viewer, "Viewer", "" )
DefNode( CompositorNode, CMP_NODE_RGB, 0, "RGB", RGB, "RGB", "" )
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index b1d4654f76b..ca325747d8e 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -76,7 +76,7 @@ EnumPropertyItem proportional_falloff_items[] ={
{PROP_ROOT, "ROOT", ICON_ROOTCURVE, "Root", "Root falloff"},
{PROP_SHARP, "SHARP", ICON_SHARPCURVE, "Sharp", "Sharp falloff"},
{PROP_LIN, "LINEAR", ICON_LINCURVE, "Linear", "Linear falloff"},
- {PROP_CONST, "CONSTANT", ICON_NOCURVE, "Constant", "Consant falloff"},
+ {PROP_CONST, "CONSTANT", ICON_NOCURVE, "Constant", "Constant falloff"},
{PROP_RANDOM, "RANDOM", ICON_RNDCURVE, "Random", "Random falloff"},
{0, NULL, 0, NULL, NULL}};
diff --git a/source/blender/makesrna/intern/rna_tracking.c b/source/blender/makesrna/intern/rna_tracking.c
index f72fd3d465c..2c6384c75d8 100644
--- a/source/blender/makesrna/intern/rna_tracking.c
+++ b/source/blender/makesrna/intern/rna_tracking.c
@@ -125,13 +125,6 @@ static void rna_tracking_trackerPyramid_update(Main *UNUSED(bmain), Scene *UNUSE
BKE_tracking_clamp_track(track, CLAMP_PYRAMID_LEVELS);
}
-static int rna_tracking_markers_length(PointerRNA *ptr)
-{
- MovieTrackingTrack *track= (MovieTrackingTrack *)ptr->data;
-
- return track->markersnr;
-}
-
static float rna_trackingCamera_focal_mm_get(PointerRNA *ptr)
{
MovieClip *clip= (MovieClip*)ptr->id.data;
@@ -249,7 +242,7 @@ static void rna_def_trackingSettings(BlenderRNA *brna)
prop= RNA_def_property(srna, "frames_limit", PROP_INT, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_int_sdna(prop, NULL, "frames_limit");
- RNA_def_property_range(prop, 0, INT_MAX);
+ RNA_def_property_range(prop, 0, SHRT_MAX);
RNA_def_property_ui_text(prop, "Frames Limit", "Amount of frames to be tracked during single tracking operation");
/* adjust frames */
@@ -425,7 +418,7 @@ static void rna_def_trackingTrack(BlenderRNA *brna)
static EnumPropertyItem tracker_items[] = {
{TRACKER_SAD, "SAD", 0, "SAD", "Sum of Absolute Differences tracker"},
- {TRACKER_KLT, "KLT", 0, "KLT", "Kanade–Lucas–Tomasi racker"},
+ {TRACKER_KLT, "KLT", 0, "KLT", "Kanade–Lucas–Tomasi tracker"},
{0, NULL, 0, NULL, NULL}};
rna_def_trackingMarker(brna);
@@ -499,7 +492,6 @@ static void rna_def_trackingTrack(BlenderRNA *brna)
prop= RNA_def_property(srna, "markers", PROP_COLLECTION, PROP_NONE);
RNA_def_property_struct_type(prop, "MovieTrackingMarker");
RNA_def_property_collection_sdna(prop, NULL, "markers", "markersnr");
- RNA_def_property_collection_funcs(prop, NULL, NULL, NULL, NULL, "rna_tracking_markers_length", NULL, NULL, NULL);
RNA_def_property_ui_text(prop, "Markers", "Collection of markers in track");
/* ** channels ** */
diff --git a/source/blender/nodes/CMakeLists.txt b/source/blender/nodes/CMakeLists.txt
index 484b58abe12..557b00d66b8 100644
--- a/source/blender/nodes/CMakeLists.txt
+++ b/source/blender/nodes/CMakeLists.txt
@@ -130,7 +130,6 @@ set(SRC
shader/nodes/node_shader_vectMath.c
shader/nodes/node_shader_attribute.c
shader/nodes/node_shader_background.c
- shader/nodes/node_shader_bsdf_anisotropic.c
shader/nodes/node_shader_bsdf_diffuse.c
shader/nodes/node_shader_bsdf_glossy.c
shader/nodes/node_shader_bsdf_glass.c
@@ -149,7 +148,6 @@ set(SRC
shader/nodes/node_shader_add_shader.c
shader/nodes/node_shader_output_lamp.c
shader/nodes/node_shader_output_material.c
- shader/nodes/node_shader_output_texture.c
shader/nodes/node_shader_output_world.c
shader/nodes/node_shader_tex_gradient.c
shader/nodes/node_shader_tex_coord.c
@@ -161,7 +159,6 @@ set(SRC
shader/nodes/node_shader_tex_sky.c
shader/nodes/node_shader_tex_voronoi.c
shader/nodes/node_shader_tex_wave.c
- shader/nodes/node_shader_noise.h
shader/node_shader_tree.c
shader/node_shader_util.c
diff --git a/source/blender/nodes/NOD_shader.h b/source/blender/nodes/NOD_shader.h
index 52d5f2f5e9c..996660fcb8b 100644
--- a/source/blender/nodes/NOD_shader.h
+++ b/source/blender/nodes/NOD_shader.h
@@ -82,7 +82,6 @@ void register_node_type_sh_background(ListBase *lb);
void register_node_type_sh_bsdf_diffuse(ListBase *lb);
void register_node_type_sh_bsdf_glossy(ListBase *lb);
void register_node_type_sh_bsdf_glass(ListBase *lb);
-void register_node_type_sh_bsdf_anisotropic(ListBase *lb);
void register_node_type_sh_bsdf_translucent(ListBase *lb);
void register_node_type_sh_bsdf_transparent(ListBase *lb);
void register_node_type_sh_bsdf_velvet(ListBase *lb);
@@ -95,7 +94,6 @@ void register_node_type_sh_add_shader(ListBase *lb);
void register_node_type_sh_output_lamp(ListBase *lb);
void register_node_type_sh_output_material(ListBase *lb);
-void register_node_type_sh_output_texture(ListBase *lb);
void register_node_type_sh_output_world(ListBase *lb);
void register_node_type_sh_tex_image(ListBase *lb);
diff --git a/source/blender/nodes/composite/node_composite_tree.c b/source/blender/nodes/composite/node_composite_tree.c
index d3f4a5b2999..06f88002a70 100644
--- a/source/blender/nodes/composite/node_composite_tree.c
+++ b/source/blender/nodes/composite/node_composite_tree.c
@@ -68,6 +68,20 @@ static void foreach_nodetree(Main *main, void *calldata, bNodeTreeCallback func)
}
}
+static void foreach_nodeclass(Scene *UNUSED(scene), void *calldata, bNodeClassCallback func)
+{
+ func(calldata, NODE_CLASS_INPUT, "Input");
+ func(calldata, NODE_CLASS_OUTPUT, "Output");
+ func(calldata, NODE_CLASS_OP_COLOR, "Color");
+ func(calldata, NODE_CLASS_OP_VECTOR, "Vector");
+ func(calldata, NODE_CLASS_OP_FILTER, "Filter");
+ func(calldata, NODE_CLASS_CONVERTOR, "Convertor");
+ func(calldata, NODE_CLASS_MATTE, "Matte");
+ func(calldata, NODE_CLASS_DISTORT, "Distort");
+ func(calldata, NODE_CLASS_GROUP, "Group");
+ func(calldata, NODE_CLASS_LAYOUT, "Layout");
+}
+
static void free_node_cache(bNodeTree *UNUSED(ntree), bNode *node)
{
bNodeSocket *sock;
@@ -207,6 +221,7 @@ bNodeTreeType ntreeType_Composite = {
/* free_cache */ free_cache,
/* free_node_cache */ free_node_cache,
/* foreach_nodetree */ foreach_nodetree,
+ /* foreach_nodeclass */ foreach_nodeclass,
/* localize */ localize,
/* local_sync */ local_sync,
/* local_merge */ local_merge,
diff --git a/source/blender/nodes/composite/nodes/node_composite_moviedistortion.c b/source/blender/nodes/composite/nodes/node_composite_moviedistortion.c
index 439616377a1..8411de39353 100644
--- a/source/blender/nodes/composite/nodes/node_composite_moviedistortion.c
+++ b/source/blender/nodes/composite/nodes/node_composite_moviedistortion.c
@@ -45,7 +45,7 @@ static bNodeSocketTemplate cmp_node_moviedistortion_out[]= {
{ -1, 0, "" }
};
-static void exec(void *UNUSED(data), bNode *node, bNodeStack **in, bNodeStack **out)
+static void exec(void *data, bNode *node, bNodeStack **in, bNodeStack **out)
{
if(in[0]->data) {
if(node->id) {
@@ -57,14 +57,18 @@ static void exec(void *UNUSED(data), bNode *node, bNodeStack **in, bNodeStack **
ibuf= IMB_allocImBuf(cbuf->x, cbuf->y, 32, 0);
if(ibuf) {
+ RenderData *rd= data;
ImBuf *obuf;
MovieTracking *tracking= &clip->tracking;
int width, height;
float overscan= 0.0f;
+ MovieClipUser user= {0};
+
+ BKE_movieclip_user_set_frame(&user, rd->cfra);
ibuf->rect_float= cbuf->rect;
- BKE_movieclip_get_size(clip, NULL, &width, &height);
+ BKE_movieclip_get_size(clip, &user, &width, &height);
if(!node->storage)
node->storage= BKE_tracking_distortion_create();
diff --git a/source/blender/nodes/shader/node_shader_tree.c b/source/blender/nodes/shader/node_shader_tree.c
index a5dbfdc930e..e116944e688 100644
--- a/source/blender/nodes/shader/node_shader_tree.c
+++ b/source/blender/nodes/shader/node_shader_tree.c
@@ -35,6 +35,7 @@
#include "DNA_lamp_types.h"
#include "DNA_material_types.h"
#include "DNA_node_types.h"
+#include "DNA_scene_types.h"
#include "DNA_world_types.h"
#include "BLI_listbase.h"
@@ -45,6 +46,7 @@
#include "BKE_global.h"
#include "BKE_main.h"
#include "BKE_node.h"
+#include "BKE_scene.h"
#include "BKE_utildefines.h"
#include "GPU_material.h"
@@ -74,6 +76,23 @@ static void foreach_nodetree(Main *main, void *calldata, bNodeTreeCallback func)
func(calldata, &wo->id, wo->nodetree);
}
+static void foreach_nodeclass(Scene *scene, void *calldata, bNodeClassCallback func)
+{
+ func(calldata, NODE_CLASS_INPUT, "Input");
+ func(calldata, NODE_CLASS_OUTPUT, "Output");
+
+ if(scene_use_new_shading_nodes(scene)) {
+ func(calldata, NODE_CLASS_SHADER, "Shader");
+ func(calldata, NODE_CLASS_TEXTURE, "Texture");
+ }
+
+ func(calldata, NODE_CLASS_OP_COLOR, "Color");
+ func(calldata, NODE_CLASS_OP_VECTOR, "Vector");
+ func(calldata, NODE_CLASS_CONVERTOR, "Convertor");
+ func(calldata, NODE_CLASS_GROUP, "Group");
+ func(calldata, NODE_CLASS_LAYOUT, "Layout");
+}
+
static void local_sync(bNodeTree *localtree, bNodeTree *ntree)
{
bNode *lnode;
@@ -108,6 +127,7 @@ bNodeTreeType ntreeType_Shader = {
/* free_cache */ NULL,
/* free_node_cache */ NULL,
/* foreach_nodetree */ foreach_nodetree,
+ /* foreach_nodeclass */ foreach_nodeclass,
/* localize */ NULL,
/* local_sync */ local_sync,
/* local_merge */ NULL,
@@ -209,7 +229,6 @@ void ntreeShaderEndExecTree(bNodeTreeExec *exec, int use_tree_data)
void ntreeShaderExecTree(bNodeTree *ntree, ShadeInput *shi, ShadeResult *shr)
{
ShaderCallData scd;
- float co[3] = {0.0f, 0.0f, 0.0f};
/*
@note: preserve material from ShadeInput for material id, nodetree execs change it
fix for bug "[#28012] Mat ID messy with shader nodes"
@@ -219,10 +238,8 @@ void ntreeShaderExecTree(bNodeTree *ntree, ShadeInput *shi, ShadeResult *shr)
bNodeTreeExec *exec = ntree->execdata;
/* convert caller data to struct */
- memset(&scd, 0, sizeof(scd));
scd.shi= shi;
scd.shr= shr;
- scd.co= co;
/* each material node has own local shaderesult, with optional copying */
memset(shr, 0, sizeof(ShadeResult));
diff --git a/source/blender/nodes/shader/node_shader_util.c b/source/blender/nodes/shader/node_shader_util.c
index 537fa64309e..dcfdb97f91a 100644
--- a/source/blender/nodes/shader/node_shader_util.c
+++ b/source/blender/nodes/shader/node_shader_util.c
@@ -325,7 +325,5 @@ void node_shader_gpu_tex_mapping(GPUMaterial *mat, bNode *node, GPUNodeStack *in
GPU_link(mat, "mapping", in[0].link, tmat, tmin, tmax, tdomin, tdomax, &in[0].link);
}
- else
- printf("skip mapping!\n");
}
diff --git a/source/blender/nodes/shader/node_shader_util.h b/source/blender/nodes/shader/node_shader_util.h
index 19976ada3ec..369defe490f 100644
--- a/source/blender/nodes/shader/node_shader_util.h
+++ b/source/blender/nodes/shader/node_shader_util.h
@@ -73,7 +73,6 @@
#include "IMB_imbuf.h"
#include "RE_pipeline.h"
-#include "RE_render_ext.h"
#include "RE_shader_ext.h"
#include "GPU_material.h"
@@ -83,10 +82,6 @@
typedef struct ShaderCallData {
ShadeInput *shi; /* from render pipe */
ShadeResult *shr; /* from render pipe */
-
- TexResult *texres;
- float *co;
- float *dxt, *dyt;
} ShaderCallData;
/* output socket defines */
diff --git a/source/blender/nodes/shader/nodes/node_shader_add_shader.c b/source/blender/nodes/shader/nodes/node_shader_add_shader.c
index 1cee889d601..d715971e618 100644
--- a/source/blender/nodes/shader/nodes/node_shader_add_shader.c
+++ b/source/blender/nodes/shader/nodes/node_shader_add_shader.c
@@ -42,10 +42,6 @@ static bNodeSocketTemplate sh_node_add_shader_out[]= {
{ -1, 0, "" }
};
-static void node_shader_exec_add_shader(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out))
-{
-}
-
static int node_shader_gpu_add_shader(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
{
return GPU_stack_link(mat, "node_add_shader", in, out);
@@ -62,7 +58,7 @@ void register_node_type_sh_add_shader(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, NULL);
node_type_storage(&ntype, "", NULL, NULL);
- node_type_exec(&ntype, node_shader_exec_add_shader);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_add_shader);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_attribute.c b/source/blender/nodes/shader/nodes/node_shader_attribute.c
index 57f8aed474c..4b238f72117 100644
--- a/source/blender/nodes/shader/nodes/node_shader_attribute.c
+++ b/source/blender/nodes/shader/nodes/node_shader_attribute.c
@@ -38,10 +38,6 @@ static bNodeSocketTemplate sh_node_attribute_out[]= {
{ -1, 0, "" }
};
-static void node_shader_exec_attribute(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out))
-{
-}
-
static void node_shader_init_attribute(bNodeTree *UNUSED(ntree), bNode* node, bNodeTemplate *UNUSED(ntemp))
{
NodeShaderAttribute *attr = MEM_callocN(sizeof(NodeShaderAttribute), "NodeShaderAttribute");
@@ -59,7 +55,7 @@ void register_node_type_sh_attribute(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, node_shader_init_attribute);
node_type_storage(&ntype, "NodeShaderAttribute", node_free_standard_storage, node_copy_standard_storage);
- node_type_exec(&ntype, node_shader_exec_attribute);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, NULL);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_background.c b/source/blender/nodes/shader/nodes/node_shader_background.c
index 55f77e66af9..b2bd837d66b 100644
--- a/source/blender/nodes/shader/nodes/node_shader_background.c
+++ b/source/blender/nodes/shader/nodes/node_shader_background.c
@@ -42,11 +42,6 @@ static bNodeSocketTemplate sh_node_background_out[]= {
{ -1, 0, "" }
};
-static void node_shader_exec_background(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out))
-{
-}
-
-
/* node type definition */
void register_node_type_sh_background(ListBase *lb)
{
@@ -58,7 +53,7 @@ void register_node_type_sh_background(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, NULL);
node_type_storage(&ntype, "", NULL, NULL);
- node_type_exec(&ntype, node_shader_exec_background);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, NULL);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_anisotropic.c b/source/blender/nodes/shader/nodes/node_shader_bsdf_anisotropic.c
index ef590dd7361..c71696b351c 100644
--- a/source/blender/nodes/shader/nodes/node_shader_bsdf_anisotropic.c
+++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_anisotropic.c
@@ -43,10 +43,6 @@ static bNodeSocketTemplate sh_node_bsdf_anisotropic_out[]= {
{ -1, 0, "" }
};
-static void node_shader_exec_bsdf_anisotropic(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out))
-{
-}
-
static int node_shader_gpu_bsdf_anisotropic(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
{
return GPU_stack_link(mat, "node_bsdf_anisotropic", in, out, GPU_builtin(GPU_VIEW_NORMAL), GPU_builtin(GPU_VIEW_POSITION));
@@ -63,7 +59,7 @@ void register_node_type_sh_bsdf_anisotropic(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, NULL);
node_type_storage(&ntype, "", NULL, NULL);
- node_type_exec(&ntype, node_shader_exec_bsdf_anisotropic);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_bsdf_anisotropic);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_diffuse.c b/source/blender/nodes/shader/nodes/node_shader_bsdf_diffuse.c
index 47f53ae4aa1..737f77d923e 100644
--- a/source/blender/nodes/shader/nodes/node_shader_bsdf_diffuse.c
+++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_diffuse.c
@@ -41,10 +41,6 @@ static bNodeSocketTemplate sh_node_bsdf_diffuse_out[]= {
{ -1, 0, "" }
};
-static void node_shader_exec_bsdf_diffuse(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out))
-{
-}
-
static int node_shader_gpu_bsdf_diffuse(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
{
return GPU_stack_link(mat, "node_bsdf_diffuse", in, out, GPU_builtin(GPU_VIEW_NORMAL));
@@ -61,7 +57,7 @@ void register_node_type_sh_bsdf_diffuse(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, NULL);
node_type_storage(&ntype, "", NULL, NULL);
- node_type_exec(&ntype, node_shader_exec_bsdf_diffuse);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_bsdf_diffuse);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_glass.c b/source/blender/nodes/shader/nodes/node_shader_bsdf_glass.c
index b8237e0e276..1bb62fead6d 100644
--- a/source/blender/nodes/shader/nodes/node_shader_bsdf_glass.c
+++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_glass.c
@@ -43,10 +43,6 @@ static bNodeSocketTemplate sh_node_bsdf_glass_out[]= {
{ -1, 0, "" }
};
-static void node_shader_exec_bsdf_glass(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out))
-{
-}
-
static int node_shader_gpu_bsdf_glass(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
{
return GPU_stack_link(mat, "node_bsdf_glass", in, out, GPU_builtin(GPU_VIEW_NORMAL), GPU_builtin(GPU_VIEW_POSITION));
@@ -63,7 +59,7 @@ void register_node_type_sh_bsdf_glass(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, NULL);
node_type_storage(&ntype, "", NULL, NULL);
- node_type_exec(&ntype, node_shader_exec_bsdf_glass);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_bsdf_glass);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_glossy.c b/source/blender/nodes/shader/nodes/node_shader_bsdf_glossy.c
index c8f9acfa206..2338a8a3cd2 100644
--- a/source/blender/nodes/shader/nodes/node_shader_bsdf_glossy.c
+++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_glossy.c
@@ -42,10 +42,6 @@ static bNodeSocketTemplate sh_node_bsdf_glossy_out[]= {
{ -1, 0, "" }
};
-static void node_shader_exec_bsdf_glossy(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out))
-{
-}
-
static int node_shader_gpu_bsdf_glossy(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
{
/* todo: is incoming vector normalized? */
@@ -63,7 +59,7 @@ void register_node_type_sh_bsdf_glossy(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, NULL);
node_type_storage(&ntype, "", NULL, NULL);
- node_type_exec(&ntype, node_shader_exec_bsdf_glossy);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_bsdf_glossy);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_translucent.c b/source/blender/nodes/shader/nodes/node_shader_bsdf_translucent.c
index 4ea41b379a1..2836714f477 100644
--- a/source/blender/nodes/shader/nodes/node_shader_bsdf_translucent.c
+++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_translucent.c
@@ -41,10 +41,6 @@ static bNodeSocketTemplate sh_node_bsdf_translucent_out[]= {
{ -1, 0, "" }
};
-static void node_shader_exec_bsdf_translucent(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out))
-{
-}
-
static int node_shader_gpu_bsdf_translucent(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
{
return GPU_stack_link(mat, "node_bsdf_translucent", in, out, GPU_builtin(GPU_VIEW_NORMAL));
@@ -61,7 +57,7 @@ void register_node_type_sh_bsdf_translucent(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, NULL);
node_type_storage(&ntype, "", NULL, NULL);
- node_type_exec(&ntype, node_shader_exec_bsdf_translucent);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_bsdf_translucent);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_transparent.c b/source/blender/nodes/shader/nodes/node_shader_bsdf_transparent.c
index fceb54a3369..5352bd9be30 100644
--- a/source/blender/nodes/shader/nodes/node_shader_bsdf_transparent.c
+++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_transparent.c
@@ -41,10 +41,6 @@ static bNodeSocketTemplate sh_node_bsdf_transparent_out[]= {
{ -1, 0, "" }
};
-static void node_shader_exec_bsdf_transparent(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out))
-{
-}
-
static int node_shader_gpu_bsdf_transparent(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
{
return GPU_stack_link(mat, "node_bsdf_transparent", in, out);
@@ -61,7 +57,7 @@ void register_node_type_sh_bsdf_transparent(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, NULL);
node_type_storage(&ntype, "", NULL, NULL);
- node_type_exec(&ntype, node_shader_exec_bsdf_transparent);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_bsdf_transparent);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_velvet.c b/source/blender/nodes/shader/nodes/node_shader_bsdf_velvet.c
index cc7eb626655..dfcf3b68d67 100644
--- a/source/blender/nodes/shader/nodes/node_shader_bsdf_velvet.c
+++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_velvet.c
@@ -42,10 +42,6 @@ static bNodeSocketTemplate sh_node_bsdf_velvet_out[]= {
{ -1, 0, "" }
};
-static void node_shader_exec_bsdf_velvet(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out))
-{
-}
-
static int node_shader_gpu_bsdf_velvet(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
{
return GPU_stack_link(mat, "node_bsdf_velvet", in, out, GPU_builtin(GPU_VIEW_NORMAL));
@@ -62,7 +58,7 @@ void register_node_type_sh_bsdf_velvet(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, NULL);
node_type_storage(&ntype, "", NULL, NULL);
- node_type_exec(&ntype, node_shader_exec_bsdf_velvet);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_bsdf_velvet);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_emission.c b/source/blender/nodes/shader/nodes/node_shader_emission.c
index 78644d5317d..6ef82890559 100644
--- a/source/blender/nodes/shader/nodes/node_shader_emission.c
+++ b/source/blender/nodes/shader/nodes/node_shader_emission.c
@@ -42,10 +42,6 @@ static bNodeSocketTemplate sh_node_emission_out[]= {
{ -1, 0, "" }
};
-static void node_shader_exec_emission(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out))
-{
-}
-
static int node_shader_gpu_emission(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
{
return GPU_stack_link(mat, "node_emission", in, out, GPU_builtin(GPU_VIEW_NORMAL));
@@ -62,7 +58,7 @@ void register_node_type_sh_emission(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, NULL);
node_type_storage(&ntype, "", NULL, NULL);
- node_type_exec(&ntype, node_shader_exec_emission);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_emission);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_fresnel.c b/source/blender/nodes/shader/nodes/node_shader_fresnel.c
index e93eac06eca..c5d55c9a1c8 100644
--- a/source/blender/nodes/shader/nodes/node_shader_fresnel.c
+++ b/source/blender/nodes/shader/nodes/node_shader_fresnel.c
@@ -40,10 +40,6 @@ static bNodeSocketTemplate sh_node_fresnel_out[]= {
{ -1, 0, "" }
};
-static void node_shader_exec_fresnel(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out))
-{
-}
-
static int node_shader_gpu_fresnel(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
{
/* todo: is incoming vector normalized? */
@@ -61,7 +57,7 @@ void register_node_type_sh_fresnel(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, NULL);
node_type_storage(&ntype, "", NULL, NULL);
- node_type_exec(&ntype, node_shader_exec_fresnel);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_fresnel);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_geom.c b/source/blender/nodes/shader/nodes/node_shader_geom.c
index caa427117e6..bc367dc9de5 100644
--- a/source/blender/nodes/shader/nodes/node_shader_geom.c
+++ b/source/blender/nodes/shader/nodes/node_shader_geom.c
@@ -138,7 +138,7 @@ void register_node_type_sh_geom(ListBase *lb)
{
static bNodeType ntype;
- node_type_base(&ntype, SH_NODE_GEOM, "Geometry", NODE_CLASS_INPUT, NODE_OPTIONS);
+ node_type_base(&ntype, SH_NODE_GEOMETRY, "Geometry", NODE_CLASS_INPUT, NODE_OPTIONS);
node_type_compatibility(&ntype, NODE_OLD_SHADING);
node_type_compatibility(&ntype, NODE_OLD_SHADING);
node_type_socket_templates(&ntype, NULL, sh_node_geom_out);
diff --git a/source/blender/nodes/shader/nodes/node_shader_geometry.c b/source/blender/nodes/shader/nodes/node_shader_geometry.c
index f077d700a74..63f6ba3928f 100644
--- a/source/blender/nodes/shader/nodes/node_shader_geometry.c
+++ b/source/blender/nodes/shader/nodes/node_shader_geometry.c
@@ -42,10 +42,6 @@ static bNodeSocketTemplate sh_node_geometry_out[]= {
{ -1, 0, "" }
};
-static void node_shader_exec_geometry(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out))
-{
-}
-
static int node_shader_gpu_geometry(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
{
return GPU_stack_link(mat, "node_geometry", in, out,
@@ -58,13 +54,13 @@ void register_node_type_sh_geometry(ListBase *lb)
{
static bNodeType ntype;
- node_type_base(&ntype, SH_NODE_GEOMETRY, "Geometry", NODE_CLASS_INPUT, 0);
+ node_type_base(&ntype, SH_NODE_NEW_GEOMETRY, "Geometry", NODE_CLASS_INPUT, 0);
node_type_compatibility(&ntype, NODE_NEW_SHADING);
node_type_socket_templates(&ntype, NULL, sh_node_geometry_out);
node_type_size(&ntype, 120, 60, 200);
node_type_init(&ntype, NULL);
node_type_storage(&ntype, "", NULL, NULL);
- node_type_exec(&ntype, node_shader_exec_geometry);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_geometry);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_holdout.c b/source/blender/nodes/shader/nodes/node_shader_holdout.c
index 170116aa833..747519c861e 100644
--- a/source/blender/nodes/shader/nodes/node_shader_holdout.c
+++ b/source/blender/nodes/shader/nodes/node_shader_holdout.c
@@ -40,10 +40,6 @@ static bNodeSocketTemplate sh_node_holdout_out[]= {
{ -1, 0, "" }
};
-static void node_shader_exec_holdout(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out))
-{
-}
-
/* node type definition */
void register_node_type_sh_holdout(ListBase *lb)
@@ -56,7 +52,7 @@ void register_node_type_sh_holdout(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, NULL);
node_type_storage(&ntype, "", NULL, NULL);
- node_type_exec(&ntype, node_shader_exec_holdout);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, NULL);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_layer_weight.c b/source/blender/nodes/shader/nodes/node_shader_layer_weight.c
index 79e5728fab6..16b58e18761 100644
--- a/source/blender/nodes/shader/nodes/node_shader_layer_weight.c
+++ b/source/blender/nodes/shader/nodes/node_shader_layer_weight.c
@@ -42,10 +42,6 @@ static bNodeSocketTemplate sh_node_layer_weight_out[]= {
{ -1, 0, "" }
};
-static void node_shader_exec_layer_weight(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out))
-{
-}
-
static int node_shader_gpu_layer_weight(GPUMaterial *UNUSED(mat), bNode *UNUSED(node), GPUNodeStack *UNUSED(in), GPUNodeStack *UNUSED(out))
{
return 0;
@@ -62,7 +58,7 @@ void register_node_type_sh_layer_weight(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, NULL);
node_type_storage(&ntype, "", NULL, NULL);
- node_type_exec(&ntype, node_shader_exec_layer_weight);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_layer_weight);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_light_path.c b/source/blender/nodes/shader/nodes/node_shader_light_path.c
index 0055257dda2..d399a0bddd4 100644
--- a/source/blender/nodes/shader/nodes/node_shader_light_path.c
+++ b/source/blender/nodes/shader/nodes/node_shader_light_path.c
@@ -42,10 +42,6 @@ static bNodeSocketTemplate sh_node_light_path_out[]= {
{ -1, 0, "" }
};
-static void node_shader_exec_light_path(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out))
-{
-}
-
static int node_shader_gpu_light_path(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
{
return GPU_stack_link(mat, "node_light_path", in, out);
@@ -62,7 +58,7 @@ void register_node_type_sh_light_path(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, NULL);
node_type_storage(&ntype, "", NULL, NULL);
- node_type_exec(&ntype, node_shader_exec_light_path);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_light_path);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_mixRgb.c b/source/blender/nodes/shader/nodes/node_shader_mixRgb.c
index 2652145feb5..5d7ec9a23ab 100644
--- a/source/blender/nodes/shader/nodes/node_shader_mixRgb.c
+++ b/source/blender/nodes/shader/nodes/node_shader_mixRgb.c
@@ -35,8 +35,8 @@
/* **************** MIX RGB ******************** */
static bNodeSocketTemplate sh_node_mix_rgb_in[]= {
{ SOCK_FLOAT, 1, "Fac", 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR},
- { SOCK_RGBA, 1, "Color", 0.5f, 0.5f, 0.5f, 1.0f},
- { SOCK_RGBA, 1, "Color", 0.5f, 0.5f, 0.5f, 1.0f},
+ { SOCK_RGBA, 1, "Color1", 0.5f, 0.5f, 0.5f, 1.0f},
+ { SOCK_RGBA, 1, "Color2", 0.5f, 0.5f, 0.5f, 1.0f},
{ -1, 0, "" }
};
static bNodeSocketTemplate sh_node_mix_rgb_out[]= {
diff --git a/source/blender/nodes/shader/nodes/node_shader_mix_shader.c b/source/blender/nodes/shader/nodes/node_shader_mix_shader.c
index a41a95a0fa4..5ce2a03f464 100644
--- a/source/blender/nodes/shader/nodes/node_shader_mix_shader.c
+++ b/source/blender/nodes/shader/nodes/node_shader_mix_shader.c
@@ -43,10 +43,6 @@ static bNodeSocketTemplate sh_node_mix_shader_out[]= {
{ -1, 0, "" }
};
-static void node_shader_exec_mix_shader(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out))
-{
-}
-
static int node_shader_gpu_mix_shader(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
{
return GPU_stack_link(mat, "node_mix_shader", in, out);
@@ -63,7 +59,7 @@ void register_node_type_sh_mix_shader(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, NULL);
node_type_storage(&ntype, "", NULL, NULL);
- node_type_exec(&ntype, node_shader_exec_mix_shader);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_mix_shader);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_output_lamp.c b/source/blender/nodes/shader/nodes/node_shader_output_lamp.c
index 33b6c49a356..2c954d1cf8f 100644
--- a/source/blender/nodes/shader/nodes/node_shader_output_lamp.c
+++ b/source/blender/nodes/shader/nodes/node_shader_output_lamp.c
@@ -36,10 +36,6 @@ static bNodeSocketTemplate sh_node_output_lamp_in[]= {
{ -1, 0, "" }
};
-static void node_shader_exec_output_lamp(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out))
-{
-}
-
/* node type definition */
void register_node_type_sh_output_lamp(ListBase *lb)
{
@@ -51,7 +47,7 @@ void register_node_type_sh_output_lamp(ListBase *lb)
node_type_size(&ntype, 120, 60, 200);
node_type_init(&ntype, NULL);
node_type_storage(&ntype, "", NULL, NULL);
- node_type_exec(&ntype, node_shader_exec_output_lamp);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, NULL);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_output_material.c b/source/blender/nodes/shader/nodes/node_shader_output_material.c
index 8d12380ca67..0059489fcc7 100644
--- a/source/blender/nodes/shader/nodes/node_shader_output_material.c
+++ b/source/blender/nodes/shader/nodes/node_shader_output_material.c
@@ -38,10 +38,6 @@ static bNodeSocketTemplate sh_node_output_material_in[]= {
{ -1, 0, "" }
};
-static void node_shader_exec_output_material(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out))
-{
-}
-
static int node_shader_gpu_output_material(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
{
GPUNodeLink *outlink;
@@ -64,7 +60,7 @@ void register_node_type_sh_output_material(ListBase *lb)
node_type_size(&ntype, 120, 60, 200);
node_type_init(&ntype, NULL);
node_type_storage(&ntype, "", NULL, NULL);
- node_type_exec(&ntype, node_shader_exec_output_material);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_output_material);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_output_texture.c b/source/blender/nodes/shader/nodes/node_shader_output_texture.c
deleted file mode 100644
index d436b23fb61..00000000000
--- a/source/blender/nodes/shader/nodes/node_shader_output_texture.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
- *
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The Original Code is Copyright (C) 2005 Blender Foundation.
- * All rights reserved.
- *
- * The Original Code is: all of this file.
- *
- * Contributor(s): none yet.
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-
-#include "../node_shader_util.h"
-
-/* **************** OUTPUT ******************** */
-
-static bNodeSocketTemplate sh_node_output_texture_in[]= {
- { SOCK_RGBA, 1, "Color", 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f},
- { -1, 0, "" }
-};
-
-static void node_shader_exec_output_texture(void *data, bNode *node, bNodeStack **in, bNodeStack **UNUSED(out))
-{
- if(data && (node->flag & NODE_DO_OUTPUT)) {
- ShaderCallData *scd= (ShaderCallData*)data;
- TexResult *texres = scd->texres;
- float col[4];
-
- if(!texres)
- return;
-
- nodestack_get_vec(col, SOCK_RGBA, in[0]);
-
- texres->tr= col[0];
- texres->tg= col[1];
- texres->tb= col[2];
- texres->ta= 1.0f;
-
- texres->tin= rgb_to_grayscale(col);
- }
-}
-
-/* node type definition */
-void register_node_type_sh_output_texture(ListBase *lb)
-{
- static bNodeType ntype;
-
- node_type_base(&ntype, SH_NODE_OUTPUT_TEXTURE, "Texture Output", NODE_CLASS_OUTPUT, 0);
- node_type_compatibility(&ntype, NODE_NEW_SHADING);
- node_type_socket_templates(&ntype, sh_node_output_texture_in, NULL);
- node_type_size(&ntype, 120, 60, 200);
- node_type_init(&ntype, NULL);
- node_type_storage(&ntype, "", NULL, NULL);
- node_type_exec(&ntype, node_shader_exec_output_texture);
- node_type_gpu(&ntype, NULL);
-
- nodeRegisterType(lb, &ntype);
-};
-
diff --git a/source/blender/nodes/shader/nodes/node_shader_output_world.c b/source/blender/nodes/shader/nodes/node_shader_output_world.c
index 72cc5c0fe1a..20bb3ab8f58 100644
--- a/source/blender/nodes/shader/nodes/node_shader_output_world.c
+++ b/source/blender/nodes/shader/nodes/node_shader_output_world.c
@@ -37,10 +37,6 @@ static bNodeSocketTemplate sh_node_output_world_in[]= {
{ -1, 0, "" }
};
-static void node_shader_exec_output_world(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out))
-{
-}
-
/* node type definition */
void register_node_type_sh_output_world(ListBase *lb)
{
@@ -52,7 +48,7 @@ void register_node_type_sh_output_world(ListBase *lb)
node_type_size(&ntype, 120, 60, 200);
node_type_init(&ntype, NULL);
node_type_storage(&ntype, "", NULL, NULL);
- node_type_exec(&ntype, node_shader_exec_output_world);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, NULL);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_coord.c b/source/blender/nodes/shader/nodes/node_shader_tex_coord.c
index 0239a64110d..a33e5599d77 100644
--- a/source/blender/nodes/shader/nodes/node_shader_tex_coord.c
+++ b/source/blender/nodes/shader/nodes/node_shader_tex_coord.c
@@ -43,10 +43,6 @@ static bNodeSocketTemplate sh_node_tex_coord_out[]= {
{ -1, 0, "" }
};
-static void node_shader_exec_tex_coord(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out))
-{
-}
-
static int node_shader_gpu_tex_coord(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
{
GPUNodeLink *orco = GPU_attribute(CD_ORCO, "");
@@ -68,7 +64,7 @@ void register_node_type_sh_tex_coord(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, NULL);
node_type_storage(&ntype, "", NULL, NULL);
- node_type_exec(&ntype, node_shader_exec_tex_coord);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_tex_coord);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_environment.c b/source/blender/nodes/shader/nodes/node_shader_tex_environment.c
index 3c0a1a22e5a..f9ab16ae84a 100644
--- a/source/blender/nodes/shader/nodes/node_shader_tex_environment.c
+++ b/source/blender/nodes/shader/nodes/node_shader_tex_environment.c
@@ -51,37 +51,6 @@ static void node_shader_init_tex_environment(bNodeTree *UNUSED(ntree), bNode* no
node->storage = tex;
}
-static void node_shader_exec_tex_environment(void *data, bNode *node, bNodeStack **in, bNodeStack **out)
-{
- Image *ima= (Image*)node->id;
- ShaderCallData *scd= (ShaderCallData*)data;
- NodeTexEnvironment *tex= (NodeTexEnvironment*)node->storage;
- bNodeSocket *vecsock = node->inputs.first;
- float vec[3];
-
- if(vecsock->link)
- nodestack_get_vec(vec, SOCK_VECTOR, in[0]);
- else
- copy_v3_v3(vec, scd->co);
-
- if(ima) {
- ImBuf *ibuf= BKE_image_get_ibuf(ima, NULL);
-
- if(ibuf) {
- float u= (atan2f(vec[1], vec[0]) + (float)M_PI)/(2*M_PI);
- float v= atan2f(vec[2], hypotf(vec[0], vec[1]))/M_PI + 0.5f;
- float rgb[4];
-
- ibuf_sample(ibuf, u, v, 0.0f, 0.0f, rgb);
-
- if(tex->color_space == SHD_COLORSPACE_SRGB)
- srgb_to_linearrgb_v3_v3(out[0]->vec, rgb);
- else
- copy_v3_v3(out[0]->vec, rgb);
- }
- }
-}
-
static int node_shader_gpu_tex_environment(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out)
{
Image *ima= (Image*)node->id;
@@ -112,7 +81,7 @@ void register_node_type_sh_tex_environment(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, node_shader_init_tex_environment);
node_type_storage(&ntype, "NodeTexEnvironment", node_free_standard_storage, node_copy_standard_storage);
- node_type_exec(&ntype, node_shader_exec_tex_environment);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_tex_environment);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_gradient.c b/source/blender/nodes/shader/nodes/node_shader_tex_gradient.c
index 71269ba85b6..076759fa75f 100644
--- a/source/blender/nodes/shader/nodes/node_shader_tex_gradient.c
+++ b/source/blender/nodes/shader/nodes/node_shader_tex_gradient.c
@@ -29,44 +29,6 @@
#include "../node_shader_util.h"
-static float gradient(float p[3], int type)
-{
- float x, y;
-
- x= p[0];
- y= p[1];
-
- if(type == SHD_BLEND_LINEAR) {
- return (1.0f + x)/2.0f;
- }
- else if(type == SHD_BLEND_QUADRATIC) {
- float r = MAX2((1.0f + x)/2.0f, 0.0f);
- return r*r;
- }
- else if(type == SHD_BLEND_EASING) {
- float r = MIN2(MAX2((1.0f + x)/2.0f, 0.0f), 1.0f);
- float t = r*r;
-
- return (3.0f*t - 2.0f*t*r);
- }
- else if(type == SHD_BLEND_DIAGONAL) {
- return (2.0f + x + y)/4.0f;
- }
- else if(type == SHD_BLEND_RADIAL) {
- return atan2(y, x)/(2.0f*(float)M_PI) + 0.5f;
- }
- else {
- float r = MAX2(1.0f - sqrtf(x*x + y*y + p[2]*p[2]), 0.0f);
-
- if(type == SHD_BLEND_QUADRATIC_SPHERE)
- return r*r;
- else if(type == SHD_BLEND_SPHERICAL)
- return r;
- }
-
- return 0.0f;
-}
-
/* **************** BLEND ******************** */
static bNodeSocketTemplate sh_node_tex_gradient_in[]= {
@@ -90,27 +52,6 @@ static void node_shader_init_tex_gradient(bNodeTree *UNUSED(ntree), bNode* node,
node->storage = tex;
}
-static void node_shader_exec_tex_gradient(void *data, bNode *node, bNodeStack **in, bNodeStack **out)
-{
- ShaderCallData *scd= (ShaderCallData*)data;
- NodeTexGradient *tex= (NodeTexGradient*)node->storage;
- bNodeSocket *vecsock = node->inputs.first;
- float vec[3], fac;
-
- if(vecsock->link)
- nodestack_get_vec(vec, SOCK_VECTOR, in[0]);
- else
- copy_v3_v3(vec, scd->co);
-
- fac= gradient(vec, tex->gradient_type);
- CLAMP(fac, 0.0f, 1.0f);
-
- out[0]->vec[0]= fac;
- out[0]->vec[1]= fac;
- out[0]->vec[2]= fac;
- out[1]->vec[0]= fac;
-}
-
static int node_shader_gpu_tex_gradient(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out)
{
if(!in[0].link)
@@ -132,7 +73,7 @@ void register_node_type_sh_tex_gradient(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, node_shader_init_tex_gradient);
node_type_storage(&ntype, "NodeTexGradient", node_free_standard_storage, node_copy_standard_storage);
- node_type_exec(&ntype, node_shader_exec_tex_gradient);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_tex_gradient);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_image.c b/source/blender/nodes/shader/nodes/node_shader_tex_image.c
index 562884a9ed9..a7b0925d001 100644
--- a/source/blender/nodes/shader/nodes/node_shader_tex_image.c
+++ b/source/blender/nodes/shader/nodes/node_shader_tex_image.c
@@ -51,35 +51,6 @@ static void node_shader_init_tex_image(bNodeTree *UNUSED(ntree), bNode* node, bN
node->storage = tex;
}
-static void node_shader_exec_tex_image(void *data, bNode *node, bNodeStack **in, bNodeStack **out)
-{
- Image *ima= (Image*)node->id;
- ShaderCallData *scd= (ShaderCallData*)data;
- NodeTexImage *tex= (NodeTexImage*)node->storage;
- bNodeSocket *vecsock = node->inputs.first;
- float vec[3];
-
- if(vecsock->link)
- nodestack_get_vec(vec, SOCK_VECTOR, in[0]);
- else
- copy_v3_v3(vec, scd->co);
-
- if(ima) {
- ImBuf *ibuf= BKE_image_get_ibuf(ima, NULL);
-
- if(ibuf) {
- float rgb[4];
-
- ibuf_sample(ibuf, vec[0], vec[1], 0.0f, 0.0f, rgb);
-
- if(tex->color_space == SHD_COLORSPACE_SRGB)
- srgb_to_linearrgb_v3_v3(out[0]->vec, rgb);
- else
- copy_v3_v3(out[0]->vec, rgb);
- }
- }
-}
-
static int node_shader_gpu_tex_image(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out)
{
Image *ima= (Image*)node->id;
@@ -110,7 +81,7 @@ void register_node_type_sh_tex_image(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, node_shader_init_tex_image);
node_type_storage(&ntype, "NodeTexImage", node_free_standard_storage, node_copy_standard_storage);
- node_type_exec(&ntype, node_shader_exec_tex_image);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_tex_image);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_magic.c b/source/blender/nodes/shader/nodes/node_shader_tex_magic.c
index 278f141f769..00327311da4 100644
--- a/source/blender/nodes/shader/nodes/node_shader_tex_magic.c
+++ b/source/blender/nodes/shader/nodes/node_shader_tex_magic.c
@@ -29,77 +29,6 @@
#include "../node_shader_util.h"
-static void magic(float rgb[3], float p[3], int n, float distortion)
-{
- float x = sinf((p[0] + p[1] + p[2])*5.0f);
- float y = cosf((-p[0] + p[1] - p[2])*5.0f);
- float z = -cosf((-p[0] - p[1] + p[2])*5.0f);
-
- if(n > 0) {
- x *= distortion;
- y *= distortion;
- z *= distortion;
- y = -cosf(x-y+z);
- y *= distortion;
-
- if(n > 1) {
- x= cosf(x-y-z);
- x *= distortion;
-
- if(n > 2) {
- z= sinf(-x-y-z);
- z *= distortion;
-
- if(n > 3) {
- x= -cosf(-x+y-z);
- x *= distortion;
-
- if(n > 4) {
- y= -sinf(-x+y+z);
- y *= distortion;
-
- if(n > 5) {
- y= -cosf(-x+y+z);
- y *= distortion;
-
- if(n > 6) {
- x= cosf(x+y+z);
- x *= distortion;
-
- if(n > 7) {
- z= sinf(x+y-z);
- z *= distortion;
-
- if(n > 8) {
- x= -cosf(-x-y+z);
- x *= distortion;
-
- if(n > 9) {
- y= -sinf(x-y+z);
- y *= distortion;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- if(distortion != 0.0f) {
- distortion *= 2.0f;
- x /= distortion;
- y /= distortion;
- z /= distortion;
- }
-
- rgb[0]= 0.5f - x;
- rgb[1]= 0.5f - y;
- rgb[2]= 0.5f - z;
-}
-
/* **************** OUTPUT ******************** */
static bNodeSocketTemplate sh_node_tex_magic_in[]= {
@@ -125,24 +54,6 @@ static void node_shader_init_tex_magic(bNodeTree *UNUSED(ntree), bNode* node, bN
node->storage = tex;
}
-static void node_shader_exec_tex_magic(void *data, bNode *node, bNodeStack **in, bNodeStack **out)
-{
- ShaderCallData *scd= (ShaderCallData*)data;
- NodeTexMagic *tex= (NodeTexMagic*)node->storage;
- bNodeSocket *vecsock = node->inputs.first;
- float vec[3], distortion;
-
- if(vecsock->link)
- nodestack_get_vec(vec, SOCK_VECTOR, in[0]);
- else
- copy_v3_v3(vec, scd->co);
-
- nodestack_get_vec(&distortion, SOCK_FLOAT, in[1]);
-
- magic(out[0]->vec, vec, tex->depth, distortion);
- out[1]->vec[0] = (out[0]->vec[0] + out[0]->vec[1] + out[0]->vec[2])*(1.0f/3.0f);
-}
-
static int node_shader_gpu_tex_magic(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out)
{
NodeTexMagic *tex = (NodeTexMagic*)node->storage;
@@ -167,7 +78,7 @@ void register_node_type_sh_tex_magic(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, node_shader_init_tex_magic);
node_type_storage(&ntype, "NodeTexMagic", node_free_standard_storage, node_copy_standard_storage);
- node_type_exec(&ntype, node_shader_exec_tex_magic);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_tex_magic);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_musgrave.c b/source/blender/nodes/shader/nodes/node_shader_tex_musgrave.c
index cb5a8d7da0b..45fa6338bfa 100644
--- a/source/blender/nodes/shader/nodes/node_shader_tex_musgrave.c
+++ b/source/blender/nodes/shader/nodes/node_shader_tex_musgrave.c
@@ -28,191 +28,6 @@
*/
#include "../node_shader_util.h"
-#include "node_shader_noise.h"
-
-/* Musgrave fBm
- *
- * H: fractal increment parameter
- * lacunarity: gap between successive frequencies
- * detail: number of frequencies in the fBm
- *
- * from "Texturing and Modelling: A procedural approach"
- */
-
-static float noise_musgrave_fBm(float p[3], int basis, float H, float lacunarity, float detail)
-{
- float rmd;
- float value = 0.0f;
- float pwr = 1.0f;
- float pwHL = pow(lacunarity, -H);
- int i;
-
- for(i = 0; i < (int)detail; i++) {
- value += noise_basis(p, basis) * pwr;
- pwr *= pwHL;
- mul_v3_fl(p, lacunarity);
- }
-
- rmd = detail - floor(detail);
- if(rmd != 0.0f)
- value += rmd * noise_basis(p, basis) * pwr;
-
- return value;
-}
-
-/* Musgrave Multifractal
- *
- * H: highest fractal dimension
- * lacunarity: gap between successive frequencies
- * detail: number of frequencies in the fBm
- */
-
-static float noise_musgrave_multi_fractal(float p[3], int basis, float H, float lacunarity, float detail)
-{
- float rmd;
- float value = 1.0f;
- float pwr = 1.0f;
- float pwHL = pow(lacunarity, -H);
- int i;
-
- for(i = 0; i < (int)detail; i++) {
- value *= (pwr * noise_basis(p, basis) + 1.0f);
- pwr *= pwHL;
- mul_v3_fl(p, lacunarity);
- }
-
- rmd = detail - floor(detail);
- if(rmd != 0.0f)
- value *= (rmd * pwr * noise_basis(p, basis) + 1.0f); /* correct? */
-
- return value;
-}
-
-/* Musgrave Heterogeneous Terrain
- *
- * H: fractal dimension of the roughest area
- * lacunarity: gap between successive frequencies
- * detail: number of frequencies in the fBm
- * offset: raises the terrain from `sea level'
- */
-
-static float noise_musgrave_hetero_terrain(float p[3], int basis, float H, float lacunarity, float detail, float offset)
-{
- float value, increment, rmd;
- float pwHL = pow(lacunarity, -H);
- float pwr = pwHL;
- int i;
-
- /* first unscaled octave of function; later detail are scaled */
- value = offset + noise_basis(p, basis);
- mul_v3_fl(p, lacunarity);
-
- for(i = 1; i < (int)detail; i++) {
- increment = (noise_basis(p, basis) + offset) * pwr * value;
- value += increment;
- pwr *= pwHL;
- mul_v3_fl(p, lacunarity);
- }
-
- rmd = detail - floor(detail);
- if(rmd != 0.0f) {
- increment = (noise_basis(p, basis) + offset) * pwr * value;
- value += rmd * increment;
- }
-
- return value;
-}
-
-/* Hybrid Additive/Multiplicative Multifractal Terrain
- *
- * H: fractal dimension of the roughest area
- * lacunarity: gap between successive frequencies
- * detail: number of frequencies in the fBm
- * offset: raises the terrain from `sea level'
- */
-
-static float noise_musgrave_hybrid_multi_fractal(float p[3], int basis, float H, float lacunarity, float detail, float offset, float gain)
-{
- float result, signal, weight, rmd;
- float pwHL = pow(lacunarity, -H);
- float pwr = pwHL;
- int i;
-
- result = noise_basis(p, basis) + offset;
- weight = gain * result;
- mul_v3_fl(p, lacunarity);
-
- for(i = 1; (weight > 0.001f) && (i < (int)detail); i++) {
- if(weight > 1.0f)
- weight = 1.0f;
-
- signal = (noise_basis(p, basis) + offset) * pwr;
- pwr *= pwHL;
- result += weight * signal;
- weight *= gain * signal;
- mul_v3_fl(p, lacunarity);
- }
-
- rmd = detail - floor(detail);
- if(rmd != 0.0f)
- result += rmd * ((noise_basis(p, basis) + offset) * pwr);
-
- return result;
-}
-
-/* Ridged Multifractal Terrain
- *
- * H: fractal dimension of the roughest area
- * lacunarity: gap between successive frequencies
- * detail: number of frequencies in the fBm
- * offset: raises the terrain from `sea level'
- */
-
-static float noise_musgrave_ridged_multi_fractal(float p[3], int basis, float H, float lacunarity, float detail, float offset, float gain)
-{
- float result, signal, weight;
- float pwHL = pow(lacunarity, -H);
- float pwr = pwHL;
- int i;
-
- signal = offset - fabsf(noise_basis(p, basis));
- signal *= signal;
- result = signal;
- weight = 1.0f;
-
- for(i = 1; i < (int)detail; i++) {
- mul_v3_fl(p, lacunarity);
- weight = CLAMPIS(signal * gain, 0.0f, 1.0f);
- signal = offset - fabsf(noise_basis(p, basis));
- signal *= signal;
- signal *= weight;
- result += signal * pwr;
- pwr *= pwHL;
- }
-
- return result;
-}
-
-static float musgrave(int type, float dimension, float lacunarity, float detail, float offset, float intensity, float gain, float scale, float vec[3])
-{
- float p[3];
- int basis = SHD_NOISE_PERLIN;
-
- mul_v3_v3fl(p, vec, scale);
-
- if(type == SHD_MUSGRAVE_MULTIFRACTAL)
- return intensity*noise_musgrave_multi_fractal(p, basis, dimension, lacunarity, detail);
- else if(type == SHD_MUSGRAVE_FBM)
- return intensity*noise_musgrave_fBm(p, basis, dimension, lacunarity, detail);
- else if(type == SHD_MUSGRAVE_HYBRID_MULTIFRACTAL)
- return intensity*noise_musgrave_hybrid_multi_fractal(p, basis, dimension, lacunarity, detail, offset, gain);
- else if(type == SHD_MUSGRAVE_RIDGED_MULTIFRACTAL)
- return intensity*noise_musgrave_ridged_multi_fractal(p, basis, dimension, lacunarity, detail, offset, gain);
- else if(type == SHD_MUSGRAVE_HETERO_TERRAIN)
- return intensity*noise_musgrave_hetero_terrain(p, basis, dimension, lacunarity, detail, offset);
-
- return 0.0f;
-}
/* **************** MUSGRAVE ******************** */
@@ -243,32 +58,6 @@ static void node_shader_init_tex_musgrave(bNodeTree *UNUSED(ntree), bNode* node,
node->storage = tex;
}
-static void node_shader_exec_tex_musgrave(void *data, bNode *node, bNodeStack **in, bNodeStack **out)
-{
- ShaderCallData *scd= (ShaderCallData*)data;
- NodeTexMusgrave *tex= (NodeTexMusgrave*)node->storage;
- bNodeSocket *vecsock = node->inputs.first;
- float vec[3], fac, scale, dimension, lacunarity, detail, offset, gain;
-
- if(vecsock->link)
- nodestack_get_vec(vec, SOCK_VECTOR, in[0]);
- else
- copy_v3_v3(vec, scd->co);
-
- nodestack_get_vec(&scale, SOCK_FLOAT, in[1]);
- nodestack_get_vec(&detail, SOCK_FLOAT, in[2]);
- nodestack_get_vec(&dimension, SOCK_FLOAT, in[3]);
- nodestack_get_vec(&lacunarity, SOCK_FLOAT, in[4]);
- nodestack_get_vec(&offset, SOCK_FLOAT, in[5]);
- nodestack_get_vec(&gain, SOCK_FLOAT, in[6]);
-
- fac= musgrave(tex->musgrave_type, dimension, lacunarity, detail, offset, 1.0f, gain, scale, vec);
- out[0]->vec[0]= fac;
- out[0]->vec[1]= fac;
- out[0]->vec[2]= fac;
- out[1]->vec[0]= fac;
-}
-
static int node_shader_gpu_tex_musgrave(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out)
{
if(!in[0].link)
@@ -290,7 +79,7 @@ void register_node_type_sh_tex_musgrave(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, node_shader_init_tex_musgrave);
node_type_storage(&ntype, "NodeTexMusgrave", node_free_standard_storage, node_copy_standard_storage);
- node_type_exec(&ntype, node_shader_exec_tex_musgrave);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_tex_musgrave);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_noise.c b/source/blender/nodes/shader/nodes/node_shader_tex_noise.c
index 8cde640f8b2..6c27384a24d 100644
--- a/source/blender/nodes/shader/nodes/node_shader_tex_noise.c
+++ b/source/blender/nodes/shader/nodes/node_shader_tex_noise.c
@@ -28,43 +28,6 @@
*/
#include "../node_shader_util.h"
-#include "node_shader_noise.h"
-
-static float noise_texture(float scale, float detail, float distortion, float vec[3], float color[3])
-{
- float p[3], pg[3], pb[3];
- int basis= SHD_NOISE_PERLIN;
-
- mul_v3_v3fl(p, vec, scale);
-
- if(distortion != 0.0f) {
- float r[3], p_offset[3], p_noffset[3];
- float offset[3] = {13.5f, 13.5f, 13.5f};
-
- add_v3_v3v3(p_offset, p, offset);
- sub_v3_v3v3(p_noffset, p, offset);
-
- r[0] = noise_basis(p_offset, basis) * distortion;
- r[1] = noise_basis(p, basis) * distortion;
- r[2] = noise_basis(p_noffset, basis) * distortion;
-
- add_v3_v3(p, r);
- }
-
- pg[0]= p[1];
- pg[1]= p[0];
- pg[2]= p[2];
-
- pb[0]= p[1];
- pb[1]= p[2];
- pb[2]= p[0];
-
- color[0]= noise_turbulence(p, basis, detail, 0);
- color[1]= noise_turbulence(pg, basis, detail, 0);
- color[2]= noise_turbulence(pb, basis, detail, 0);
-
- return color[0];
-}
/* **************** NOISE ******************** */
@@ -91,24 +54,6 @@ static void node_shader_init_tex_noise(bNodeTree *UNUSED(ntree), bNode* node, bN
node->storage = tex;
}
-static void node_shader_exec_tex_noise(void *data, bNode *node, bNodeStack **in, bNodeStack **out)
-{
- ShaderCallData *scd= (ShaderCallData*)data;
- bNodeSocket *vecsock = node->inputs.first;
- float vec[3], scale, detail, distortion;
-
- if(vecsock->link)
- nodestack_get_vec(vec, SOCK_VECTOR, in[0]);
- else
- copy_v3_v3(vec, scd->co);
-
- nodestack_get_vec(&scale, SOCK_FLOAT, in[1]);
- nodestack_get_vec(&detail, SOCK_FLOAT, in[2]);
- nodestack_get_vec(&distortion, SOCK_FLOAT, in[3]);
-
- out[1]->vec[0]= noise_texture(scale, detail, distortion, vec, out[0]->vec);
-}
-
static int node_shader_gpu_tex_noise(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out)
{
if(!in[0].link)
@@ -130,7 +75,7 @@ void register_node_type_sh_tex_noise(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, node_shader_init_tex_noise);
node_type_storage(&ntype, "NodeTexNoise", node_free_standard_storage, node_copy_standard_storage);
- node_type_exec(&ntype, node_shader_exec_tex_noise);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_tex_noise);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_sky.c b/source/blender/nodes/shader/nodes/node_shader_tex_sky.c
index 6fb1f4f51cf..3ab5e61196c 100644
--- a/source/blender/nodes/shader/nodes/node_shader_tex_sky.c
+++ b/source/blender/nodes/shader/nodes/node_shader_tex_sky.c
@@ -54,10 +54,6 @@ static void node_shader_init_tex_sky(bNodeTree *UNUSED(ntree), bNode* node, bNod
node->storage = tex;
}
-static void node_shader_exec_tex_sky(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out))
-{
-}
-
static int node_shader_gpu_tex_sky(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out)
{
if(!in[0].link)
@@ -79,7 +75,7 @@ void register_node_type_sh_tex_sky(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, node_shader_init_tex_sky);
node_type_storage(&ntype, "NodeTexSky", node_free_standard_storage, node_copy_standard_storage);
- node_type_exec(&ntype, node_shader_exec_tex_sky);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_tex_sky);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_voronoi.c b/source/blender/nodes/shader/nodes/node_shader_tex_voronoi.c
index 4045a25de88..c32063c8b2d 100644
--- a/source/blender/nodes/shader/nodes/node_shader_tex_voronoi.c
+++ b/source/blender/nodes/shader/nodes/node_shader_tex_voronoi.c
@@ -28,31 +28,6 @@
*/
#include "../node_shader_util.h"
-#include "node_shader_noise.h"
-
-static float voronoi_tex(int coloring, float scale, float vec[3], float color[3])
-{
- float da[4];
- float pa[4][3];
- float fac;
- float p[3];
-
- /* compute distance and point coordinate of 4 nearest neighbours */
- mul_v3_v3fl(p, vec, scale);
- voronoi_generic(p, SHD_VORONOI_DISTANCE_SQUARED, 1.0f, da, pa);
-
- /* output */
- if(coloring == SHD_VORONOI_INTENSITY) {
- fac = fabsf(da[0]);
- color[0]= color[1]= color[2]= fac;
- }
- else {
- cellnoise_color(color, pa[0]);
- fac= (color[0] + color[1] + color[2])*(1.0f/3.0f);
- }
-
- return fac;
-}
/* **************** VORONOI ******************** */
@@ -78,23 +53,6 @@ static void node_shader_init_tex_voronoi(bNodeTree *UNUSED(ntree), bNode* node,
node->storage = tex;
}
-static void node_shader_exec_tex_voronoi(void *data, bNode *node, bNodeStack **in, bNodeStack **out)
-{
- ShaderCallData *scd= (ShaderCallData*)data;
- NodeTexVoronoi *tex= (NodeTexVoronoi*)node->storage;
- bNodeSocket *vecsock = node->inputs.first;
- float vec[3], scale;
-
- if(vecsock->link)
- nodestack_get_vec(vec, SOCK_VECTOR, in[0]);
- else
- copy_v3_v3(vec, scd->co);
-
- nodestack_get_vec(&scale, SOCK_FLOAT, in[1]);
-
- out[1]->vec[0]= voronoi_tex(tex->coloring, scale, vec, out[0]->vec);
-}
-
static int node_shader_gpu_tex_voronoi(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out)
{
if(!in[0].link)
@@ -116,7 +74,7 @@ void register_node_type_sh_tex_voronoi(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, node_shader_init_tex_voronoi);
node_type_storage(&ntype, "NodeTexVoronoi", node_free_standard_storage, node_copy_standard_storage);
- node_type_exec(&ntype, node_shader_exec_tex_voronoi);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_tex_voronoi);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_wave.c b/source/blender/nodes/shader/nodes/node_shader_tex_wave.c
index a911f615b79..3574975c7b8 100644
--- a/source/blender/nodes/shader/nodes/node_shader_tex_wave.c
+++ b/source/blender/nodes/shader/nodes/node_shader_tex_wave.c
@@ -28,27 +28,6 @@
*/
#include "../node_shader_util.h"
-#include "node_shader_noise.h"
-
-static float wave(float vec[3], float scale, int type, float distortion, float detail)
-{
- float p[3], w, n;
-
- mul_v3_v3fl(p, vec, scale);
-
- if(type == SHD_WAVE_BANDS)
- n= (p[0] + p[1] + p[2])*10.0f;
- else /* if(type == SHD_WAVE_RINGS) */
- n= len_v3(p)*20.0f;
-
- w = noise_wave(SHD_WAVE_SINE, n);
-
- /* XXX size compare! */
- if(distortion != 0.0f)
- w += distortion * noise_turbulence(p, SHD_NOISE_PERLIN, detail, 0);
-
- return w;
-}
/* **************** WAVE ******************** */
@@ -77,29 +56,6 @@ static void node_shader_init_tex_wave(bNodeTree *UNUSED(ntree), bNode* node, bNo
node->storage = tex;
}
-static void node_shader_exec_tex_wave(void *data, bNode *node, bNodeStack **in, bNodeStack **out)
-{
- ShaderCallData *scd= (ShaderCallData*)data;
- NodeTexWave *tex= (NodeTexWave*)node->storage;
- bNodeSocket *vecsock = node->inputs.first;
- float vec[3], scale, detail, distortion, fac;
-
- if(vecsock->link)
- nodestack_get_vec(vec, SOCK_VECTOR, in[0]);
- else
- copy_v3_v3(vec, scd->co);
-
- nodestack_get_vec(&scale, SOCK_FLOAT, in[1]);
- nodestack_get_vec(&detail, SOCK_FLOAT, in[1]);
- nodestack_get_vec(&distortion, SOCK_FLOAT, in[2]);
-
- fac= wave(vec, scale, tex->wave_type, distortion, detail);
- out[0]->vec[0]= fac;
- out[0]->vec[1]= fac;
- out[0]->vec[2]= fac;
- out[1]->vec[0]= fac;
-}
-
static int node_shader_gpu_tex_wave(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out)
{
if(!in[0].link)
@@ -121,7 +77,7 @@ void register_node_type_sh_tex_wave(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, node_shader_init_tex_wave);
node_type_storage(&ntype, "NodeTexWave", node_free_standard_storage, node_copy_standard_storage);
- node_type_exec(&ntype, node_shader_exec_tex_wave);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_tex_wave);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_texture.c b/source/blender/nodes/shader/nodes/node_shader_texture.c
index 42460e141e2..dbf9fdbdb7e 100644
--- a/source/blender/nodes/shader/nodes/node_shader_texture.c
+++ b/source/blender/nodes/shader/nodes/node_shader_texture.c
@@ -36,7 +36,7 @@
/* **************** TEXTURE ******************** */
static bNodeSocketTemplate sh_node_texture_in[]= {
- { SOCK_VECTOR, 1, "Vector", 0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_NONE}, /* no limit */
+ { SOCK_VECTOR, 1, "Vector", 0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE}, /* no limit */
{ -1, 0, "" }
};
static bNodeSocketTemplate sh_node_texture_out[]= {
diff --git a/source/blender/nodes/shader/nodes/node_shader_volume_isotropic.c b/source/blender/nodes/shader/nodes/node_shader_volume_isotropic.c
index bc27478f309..9f4c1447f65 100644
--- a/source/blender/nodes/shader/nodes/node_shader_volume_isotropic.c
+++ b/source/blender/nodes/shader/nodes/node_shader_volume_isotropic.c
@@ -42,10 +42,6 @@ static bNodeSocketTemplate sh_node_volume_isotropic_out[]= {
{ -1, 0, "" }
};
-static void node_shader_exec_volume_isotropic(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out))
-{
-}
-
static int node_shader_gpu_volume_isotropic(GPUMaterial *UNUSED(mat), bNode *UNUSED(node), GPUNodeStack *UNUSED(in), GPUNodeStack *UNUSED(out))
{
return 0;
@@ -62,7 +58,7 @@ void register_node_type_sh_volume_isotropic(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, NULL);
node_type_storage(&ntype, "", NULL, NULL);
- node_type_exec(&ntype, node_shader_exec_volume_isotropic);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_volume_isotropic);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/shader/nodes/node_shader_volume_transparent.c b/source/blender/nodes/shader/nodes/node_shader_volume_transparent.c
index d931736d15a..910933bb5fa 100644
--- a/source/blender/nodes/shader/nodes/node_shader_volume_transparent.c
+++ b/source/blender/nodes/shader/nodes/node_shader_volume_transparent.c
@@ -42,10 +42,6 @@ static bNodeSocketTemplate sh_node_volume_transparent_out[]= {
{ -1, 0, "" }
};
-static void node_shader_exec_volume_transparent(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out))
-{
-}
-
static int node_shader_gpu_volume_transparent(GPUMaterial *UNUSED(mat), bNode *UNUSED(node), GPUNodeStack *UNUSED(in), GPUNodeStack *UNUSED(out))
{
return 0;
@@ -62,7 +58,7 @@ void register_node_type_sh_volume_transparent(ListBase *lb)
node_type_size(&ntype, 150, 60, 200);
node_type_init(&ntype, NULL);
node_type_storage(&ntype, "", NULL, NULL);
- node_type_exec(&ntype, node_shader_exec_volume_transparent);
+ node_type_exec(&ntype, NULL);
node_type_gpu(&ntype, node_shader_gpu_volume_transparent);
nodeRegisterType(lb, &ntype);
diff --git a/source/blender/nodes/texture/node_texture_tree.c b/source/blender/nodes/texture/node_texture_tree.c
index 5e5d44540dc..84bb53e2215 100644
--- a/source/blender/nodes/texture/node_texture_tree.c
+++ b/source/blender/nodes/texture/node_texture_tree.c
@@ -62,6 +62,19 @@ static void foreach_nodetree(Main *main, void *calldata, bNodeTreeCallback func)
}
}
+static void foreach_nodeclass(Scene *UNUSED(scene), void *calldata, bNodeClassCallback func)
+{
+ func(calldata, NODE_CLASS_INPUT, "Input");
+ func(calldata, NODE_CLASS_OUTPUT, "Output");
+ func(calldata, NODE_CLASS_OP_COLOR, "Color");
+ func(calldata, NODE_CLASS_PATTERN, "Patterns");
+ func(calldata, NODE_CLASS_TEXTURE, "Textures");
+ func(calldata, NODE_CLASS_CONVERTOR, "Convertor");
+ func(calldata, NODE_CLASS_DISTORT, "Distort");
+ func(calldata, NODE_CLASS_GROUP, "Group");
+ func(calldata, NODE_CLASS_LAYOUT, "Layout");
+}
+
static void local_sync(bNodeTree *localtree, bNodeTree *ntree)
{
bNode *lnode;
@@ -91,6 +104,7 @@ bNodeTreeType ntreeType_Texture = {
/* free_cache */ NULL,
/* free_node_cache */ NULL,
/* foreach_nodetree */ foreach_nodetree,
+ /* foreach_nodeclass */ foreach_nodeclass,
/* localize */ NULL,
/* local_sync */ local_sync,
/* local_merge */ NULL,
diff --git a/source/blender/render/intern/source/occlusion.c b/source/blender/render/intern/source/occlusion.c
index 7434425d24b..0984c9e784f 100644
--- a/source/blender/render/intern/source/occlusion.c
+++ b/source/blender/render/intern/source/occlusion.c
@@ -321,7 +321,7 @@ static void occ_face(const OccFace *face, float co[3], float normal[3], float *a
if(co) {
if(vlr->v4)
- interp_v3_v3v3(co, vlr->v1->co, vlr->v3->co, 0.5f);
+ mid_v3_v3v3(co, vlr->v1->co, vlr->v3->co);
else
cent_tri_v3(co, vlr->v1->co, vlr->v2->co, vlr->v3->co);
@@ -1623,7 +1623,7 @@ static void *exec_strandsurface_sample(void *data)
if(face[3]) {
co4= mesh->co[face[3]];
- interp_v3_v3v3(co, co1, co3, 0.5f);
+ mid_v3_v3v3(co, co1, co3);
normal_quad_v3( n,co1, co2, co3, co4);
}
else {