Cycles: svn merge -r41225:41232 ^/trunk/blender
[blender.git] / source / blender / blenkernel / BKE_node.h
index b75a8cb29ecfce620d92337023fff9d198c19d7d..3ba6cd3793ed8ca7d4629d0d438040f49a86473a 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * $Id$
- *
  * ***** BEGIN GPL LICENSE BLOCK *****
  *
  * This program is free software; you can redistribute it and/or
@@ -85,6 +83,7 @@ typedef struct bNodeSocketTemplate {
        float val1, val2, val3, val4;   /* default alloc value for inputs */
        float min, max;
        PropertySubType subtype;
+       int flag;
        
        /* after this line is used internal only */
        struct bNodeSocket *sock;               /* used to hold verified socket */
@@ -132,7 +131,7 @@ typedef struct bNodeType {
        char name[32];
        float width, minwidth, maxwidth;
        float height, minheight, maxheight;
-       short nclass, flag;
+       short nclass, flag, compatibility;
        
        /* templates for static sockets */
        bNodeSocketTemplate *inputs, *outputs;
@@ -232,8 +231,13 @@ typedef struct bNodeType {
 #define NODE_CLASS_PARTICLES           25
 #define NODE_CLASS_TRANSFORM           30
 #define NODE_CLASS_COMBINE                     31
+#define NODE_CLASS_SHADER                      40
 #define NODE_CLASS_LAYOUT                      100
 
+/* nodetype->compatibility */
+#define NODE_OLD_SHADING       1
+#define NODE_NEW_SHADING       2
+
 /* enum values for input/output */
 #define SOCK_IN                1
 #define SOCK_OUT       2
@@ -345,6 +349,7 @@ struct bNode        *nodeGetActive(struct bNodeTree *ntree);
 struct bNode   *nodeGetActiveID(struct bNodeTree *ntree, short idtype);
 int                            nodeSetActiveID(struct bNodeTree *ntree, short idtype, struct ID *id);
 void                   nodeClearActiveID(struct bNodeTree *ntree, short idtype);
+struct bNode   *nodeGetActiveTexture(struct bNodeTree *ntree);
 
 void                   nodeUpdate(struct bNodeTree *ntree, struct bNode *node);
 int                            nodeUpdateID(struct bNodeTree *ntree, struct ID *id);
@@ -390,6 +395,7 @@ void                        node_type_exec_new(struct bNodeType *ntype,
                                                                   void (*newexecfunc)(void *data, int thread, struct bNode *, void *nodedata, struct bNodeStack **, struct bNodeStack **));
 void                   node_type_gpu(struct bNodeType *ntype, int (*gpufunc)(struct GPUMaterial *mat, struct bNode *node, struct GPUNodeStack *in, struct GPUNodeStack *out));
 void                   node_type_gpu_ext(struct bNodeType *ntype, int (*gpuextfunc)(struct GPUMaterial *mat, struct bNode *node, void *nodedata, struct GPUNodeStack *in, struct GPUNodeStack *out));
+void                   node_type_compatibility(struct bNodeType *ntype, short compatibility);
 
 /* ************** COMMON NODES *************** */
 
@@ -434,7 +440,7 @@ struct ShadeResult;
 #define SH_NODE_RGBTOBW                105
 #define SH_NODE_TEXTURE                106
 #define SH_NODE_NORMAL         107
-#define SH_NODE_GEOMETRY       108
+#define SH_NODE_GEOM           108
 #define SH_NODE_MAPPING                109
 #define SH_NODE_CURVE_VEC      110
 #define SH_NODE_CURVE_RGB      111
@@ -449,6 +455,44 @@ struct ShadeResult;
 #define SH_NODE_HUE_SAT                122
 #define NODE_DYNAMIC           123
 
+#define SH_NODE_OUTPUT_MATERIAL                        124
+#define SH_NODE_OUTPUT_WORLD                   125
+#define SH_NODE_OUTPUT_LAMP                            126
+#define SH_NODE_FRESNEL                                        127
+#define SH_NODE_MIX_SHADER                             128
+#define SH_NODE_ATTRIBUTE                              129
+#define SH_NODE_BACKGROUND                             130
+#define SH_NODE_BSDF_ANISOTROPIC               131
+#define SH_NODE_BSDF_DIFFUSE                   132
+#define SH_NODE_BSDF_GLOSSY                            133
+#define SH_NODE_BSDF_GLASS                             134
+#define SH_NODE_BSDF_TRANSLUCENT               137
+#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_LIGHT_PATH                             142
+#define SH_NODE_TEX_IMAGE                              143
+#define SH_NODE_TEX_NOISE                              144
+#define SH_NODE_TEX_SKY                                        145
+#define SH_NODE_TEX_BLEND                              146
+#define SH_NODE_TEX_VORONOI                            147
+#define SH_NODE_TEX_MAGIC                              148
+#define SH_NODE_TEX_MARBLE                             149
+#define SH_NODE_TEX_CLOUDS                             150
+#define SH_NODE_TEX_WOOD                               151
+#define SH_NODE_TEX_MUSGRAVE                   152
+#define SH_NODE_TEX_STUCCI                             153
+#define SH_NODE_TEX_DISTNOISE                  154
+#define SH_NODE_TEX_COORD                              155
+#define SH_NODE_ADD_SHADER                             156
+#define SH_NODE_TEX_ENVIRONMENT                        157
+#define SH_NODE_OUTPUT_TEXTURE                 158
+#define SH_NODE_HOLDOUT                                        159
+#define SH_NODE_BLEND_WEIGHT                   160
+#define SH_NODE_VOLUME_TRANSPARENT             161
+#define SH_NODE_VOLUME_ISOTROPIC               162
+
 /* custom defines options for Material node */
 #define SH_NODE_MAT_DIFF   1
 #define SH_NODE_MAT_SPEC   2