Merge branch 'master' into blender2.8
authorCampbell Barton <ideasman42@gmail.com>
Mon, 21 Aug 2017 05:41:03 +0000 (15:41 +1000)
committerCampbell Barton <ideasman42@gmail.com>
Mon, 21 Aug 2017 05:41:03 +0000 (15:41 +1000)
12 files changed:
1  2 
intern/cycles/blender/addon/properties.py
intern/cycles/blender/addon/ui.py
intern/cycles/blender/blender_object.cpp
intern/cycles/blender/blender_sync.cpp
intern/cycles/device/device_cuda.cpp
make.bat
release/scripts/startup/bl_ui/space_view3d.py
source/blender/blenkernel/BKE_mesh.h
source/blender/blenkernel/intern/mesh_evaluate.c
source/blender/editors/object/object_transform.c
source/blender/nodes/shader/nodes/node_shader_fresnel.c
source/blender/nodes/shader/nodes/node_shader_layer_weight.c

Simple merge
Simple merge
diff --cc make.bat
Simple merge
Simple merge
@@@ -48,17 -48,26 +48,26 @@@ static int node_shader_gpu_fresnel(GPUM
                GPU_link(mat, "direction_transform_m4v3", in[1].link, GPU_builtin(GPU_VIEW_MATRIX), &in[1].link);
        }
        
 -      return GPU_stack_link(mat, "node_fresnel", in, out, GPU_builtin(GPU_VIEW_POSITION));
 +      return GPU_stack_link(mat, node, "node_fresnel", in, out, GPU_builtin(GPU_VIEW_POSITION));
  }
  
- static void node_shader_exec_fresnel(void *data, int UNUSED(thread), bNode *UNUSED(node), bNodeExecData *UNUSED(execdata), bNodeStack **in, bNodeStack **out)
+ static void node_shader_exec_fresnel(void *data, int UNUSED(thread), bNode *node, bNodeExecData *UNUSED(execdata), bNodeStack **in, bNodeStack **out)
  {
        ShadeInput *shi = ((ShaderCallData *)data)->shi;
-       float eta = max_ff(in[0]->vec[0], 0.00001);
+       /* Compute IOR. */
+       float eta;
+       nodestack_get_vec(&eta, SOCK_FLOAT, in[0]);
+       eta = max_ff(eta, 0.00001);
+       eta = shi->flippednor ? 1 / eta : eta;
+       /* Get normal from socket, but only if linked. */
+       bNodeSocket *sock_normal = node->inputs.first;
+       sock_normal = sock_normal->next;
  
        float n[3];
-       if (in[1]->hasinput) {
-               copy_v3_v3(n, in[1]->vec);
+       if (sock_normal->link) {
+               nodestack_get_vec(n, SOCK_VECTOR, in[1]);
        }
        else {
                copy_v3_v3(n, shi->vn);
@@@ -49,18 -49,26 +49,26 @@@ static int node_shader_gpu_layer_weight
                GPU_link(mat, "direction_transform_m4v3", in[1].link, GPU_builtin(GPU_VIEW_MATRIX), &in[1].link);
        }
  
 -      return GPU_stack_link(mat, "node_layer_weight", in, out, GPU_builtin(GPU_VIEW_POSITION));
 +      return GPU_stack_link(mat, node, "node_layer_weight", in, out, GPU_builtin(GPU_VIEW_POSITION));
  }
  
- static void node_shader_exec_layer_weight(void *data, int UNUSED(thread), bNode *UNUSED(node), bNodeExecData *UNUSED(execdata), bNodeStack **in, bNodeStack **out)
+ static void node_shader_exec_layer_weight(void *data, int UNUSED(thread), bNode *node, bNodeExecData *UNUSED(execdata), bNodeStack **in, bNodeStack **out)
  {
        ShadeInput *shi = ((ShaderCallData *)data)->shi;
-       float blend = in[0]->vec[0];
+       /* Compute IOR. */
+       float blend;
+       nodestack_get_vec(&blend, SOCK_FLOAT, in[0]);
        float eta = max_ff(1 - blend, 0.00001);
+       eta = shi->flippednor ? eta : 1 / eta;
+       /* Get normal from socket, but only if linked. */
+       bNodeSocket *sock_normal = node->inputs.first;
+       sock_normal = sock_normal->next;
  
        float n[3];
-       if (in[1]->hasinput) {
-               copy_v3_v3(n, in[1]->vec);
+       if (sock_normal->link) {
+               nodestack_get_vec(n, SOCK_VECTOR, in[1]);
        }
        else {
                copy_v3_v3(n, shi->vn);