Merge branch 'master' into blender2.8
authorCampbell Barton <ideasman42@gmail.com>
Tue, 11 Apr 2017 00:59:31 +0000 (10:59 +1000)
committerCampbell Barton <ideasman42@gmail.com>
Tue, 11 Apr 2017 01:01:16 +0000 (11:01 +1000)
intern/cycles/kernel/split/kernel_scene_intersect.h
release/scripts/startup/bl_ui/space_image.py
release/scripts/startup/bl_ui/space_userpref.py
source/blender/editors/space_view3d/drawobject.c

index 684760eedeeb0bd65e58e56ce03ea62009abc3c6..5dc94caec853480f363d04660d45a9db70c75fee 100644 (file)
@@ -59,6 +59,11 @@ ccl_device void kernel_scene_intersect(KernelGlobals *kg)
        /* intersect scene */
        uint visibility = path_state_ray_visibility(kg, &state);
 
+       if(state.bounce > kernel_data.integrator.ao_bounces) {
+               visibility = PATH_RAY_SHADOW;
+               ray.t = kernel_data.background.ao_distance;
+       }
+
 #ifdef __HAIR__
        float difl = 0.0f, extmax = 0.0f;
        uint lcg_state = 0;
@@ -75,11 +80,6 @@ ccl_device void kernel_scene_intersect(KernelGlobals *kg)
                lcg_state = lcg_state_init(&rng, state.rng_offset, state.sample, 0x51633e2d);
        }
 
-       if(state.bounce > kernel_data.integrator.ao_bounces) {
-               visibility = PATH_RAY_SHADOW;
-               ray.t = kernel_data.background.ao_distance;
-       }
-
        bool hit = scene_intersect(kg, ray, visibility, &isect, &lcg_state, difl, extmax);
 #else
        bool hit = scene_intersect(kg, ray, visibility, &isect, NULL, 0.0f, 0.0f);
index b274657b4f4ef6f343b95e58da0fc7212052bade..c748e71a0a244337e2293bcbb1c63119cda52ff7 100644 (file)
@@ -18,6 +18,7 @@
 
 # <pep8 compliant>
 import bpy
+import math
 from bpy.types import Header, Menu, Panel
 from bl_ui.properties_paint_common import (
         UnifiedPaintPanel,
@@ -727,11 +728,73 @@ class IMAGE_PT_tools_transform_uvs(Panel, UVToolsPanel):
         col.operator("transform.translate")
         col.operator("transform.rotate")
         col.operator("transform.resize", text="Scale")
-        col.separator()
-
         col.operator("transform.shear")
 
 
+class IMAGE_PT_tools_align_uvs(Panel, UVToolsPanel):
+    bl_label = "UV Align"
+
+    @classmethod
+    def poll(cls, context):
+        sima = context.space_data
+        return sima.show_uvedit and not context.tool_settings.use_uv_sculpt
+
+    def draw(self, context):
+        layout = self.layout
+        layout.operator_context = 'EXEC_REGION_WIN'
+
+        split = layout.split()
+        col = split.column(align=True)
+        col.operator("transform.mirror", text="Mirror X").constraint_axis[0] = True
+        col.operator("transform.mirror", text="Mirror Y").constraint_axis[1] = True
+        col = split.column(align=True)
+        col.operator("transform.rotate", text="Rotate +90°").value = math.pi / 2
+        col.operator("transform.rotate", text="Rotate  - 90°").value = math.pi / -2
+
+        split = layout.split()
+        col = split.column(align=True)
+        col.operator("uv.align", text="Straighten").axis = 'ALIGN_S'
+        col.operator("uv.align", text="Straighten X").axis = 'ALIGN_T'
+        col.operator("uv.align", text="Straighten Y").axis = 'ALIGN_U'
+        col = split.column(align=True)
+        col.operator("uv.align", text="Align Auto").axis = 'ALIGN_AUTO'
+        col.operator("uv.align", text="Align X").axis = 'ALIGN_X'
+        col.operator("uv.align", text="Align Y").axis = 'ALIGN_Y'
+
+
+class IMAGE_PT_tools_uvs(Panel, UVToolsPanel):
+    bl_label = "UV Tools"
+
+    @classmethod
+    def poll(cls, context):
+        sima = context.space_data
+        return sima.show_uvedit and not context.tool_settings.use_uv_sculpt
+
+    def draw(self, context):
+        layout = self.layout
+
+        col = layout.column(align=True)
+        row = col.row(align=True)
+        row.operator("uv.weld")
+        row.operator("uv.stitch")
+        col.operator("uv.remove_doubles")
+        col.operator("uv.average_islands_scale")
+        col.operator("uv.pack_islands")
+        col.operator("mesh.faces_mirror_uv")
+        col.operator("uv.minimize_stretch")
+
+        layout.label(text="UV Unwrap:")
+        row = layout.row(align=True)
+        row.operator("uv.pin").clear = False
+        row.operator("uv.pin", text="Unpin").clear = True
+        col = layout.column(align=True)
+        row = col.row(align=True)
+        row.operator("uv.mark_seam", text="Mark Seam").clear = False
+        row.operator("uv.mark_seam", text="Clear Seam").clear = True
+        col.operator("uv.seams_from_islands", text="Mark Seams from Islands")
+        col.operator("uv.unwrap")
+
+
 class IMAGE_PT_paint(Panel, ImagePaintPanel):
     bl_label = "Paint"
     bl_category = "Tools"
@@ -1100,6 +1163,29 @@ class IMAGE_PT_tools_mask(MASK_PT_tools, Panel):
 # --- end mask ---
 
 
+class IMAGE_PT_options_uvs(Panel, UVToolsPanel):
+    bl_label = "UV Options"
+    bl_category = "Options"
+
+    @classmethod
+    def poll(cls, context):
+        sima = context.space_data
+        return sima.show_uvedit
+
+    def draw(self, context):
+        layout = self.layout
+
+        sima = context.space_data
+        uv = sima.uv_editor
+        toolsettings = context.tool_settings
+
+        col = layout.column(align=True)
+        col.prop(toolsettings, "use_uv_sculpt")
+        col.prop(uv, "use_live_unwrap")
+        col.prop(uv, "use_snap_to_pixels")
+        col.prop(uv, "lock_bounds")
+
+
 class ImageScopesPanel:
     @classmethod
     def poll(cls, context):
@@ -1267,6 +1353,9 @@ classes = (
     IMAGE_PT_game_properties,
     IMAGE_PT_view_properties,
     IMAGE_PT_tools_transform_uvs,
+    IMAGE_PT_tools_align_uvs,
+    IMAGE_PT_tools_uvs,
+    IMAGE_PT_options_uvs,
     IMAGE_PT_paint,
     IMAGE_PT_tools_brush_overlay,
     IMAGE_PT_tools_brush_texture,
index e50beba50d8ad8da03ba628d07191bcfd0141e23..5ed481a215a44c37a24d3178cd81369bb8225c25 100644 (file)
@@ -1222,23 +1222,25 @@ class USERPREF_PT_input(Panel):
         sub = col.column()
         sub.label(text="View Navigation:")
         sub.row().prop(inputs, "navigation_mode", expand=True)
-        if inputs.navigation_mode == 'WALK':
-            walk = inputs.walk_navigation
 
-            sub.prop(walk, "use_mouse_reverse")
-            sub.prop(walk, "mouse_speed")
-            sub.prop(walk, "teleport_time")
+        sub.label(text="Walk Navigation:")
 
-            sub = col.column(align=True)
-            sub.prop(walk, "walk_speed")
-            sub.prop(walk, "walk_speed_factor")
+        walk = inputs.walk_navigation
 
-            sub.separator()
-            sub.prop(walk, "use_gravity")
-            sub = col.column(align=True)
-            sub.active = walk.use_gravity
-            sub.prop(walk, "view_height")
-            sub.prop(walk, "jump_height")
+        sub.prop(walk, "use_mouse_reverse")
+        sub.prop(walk, "mouse_speed")
+        sub.prop(walk, "teleport_time")
+
+        sub = col.column(align=True)
+        sub.prop(walk, "walk_speed")
+        sub.prop(walk, "walk_speed_factor")
+
+        sub.separator()
+        sub.prop(walk, "use_gravity")
+        sub = col.column(align=True)
+        sub.active = walk.use_gravity
+        sub.prop(walk, "view_height")
+        sub.prop(walk, "jump_height")
 
         if inputs.use_ndof:
             col.separator()
index ff8f4e7181876631a342a96fd8010959b092eea1..4d00db871da79393ef9d79e213c9d8e4a29745d3 100644 (file)
@@ -4515,7 +4515,6 @@ static void draw_mesh_fancy(Scene *scene, SceneLayer *sl, ARegion *ar, View3D *v
        
        if (is_obact && BKE_paint_select_vert_test(ob)) {
                const bool use_depth = (v3d->flag & V3D_ZBUF_SELECT) != 0;
-               glColor3f(0.0f, 0.0f, 0.0f);
                glPointSize(UI_GetThemeValuef(TH_VERTEX_SIZE));
 
                if (!use_depth) glDisable(GL_DEPTH_TEST);
@@ -4977,7 +4976,6 @@ static void draw_mesh_fancy_new(Scene *scene, SceneLayer *sl, ARegion *ar, View3
 #if 0 // (merwin) what is this for?
        if (is_obact && BKE_paint_select_vert_test(ob)) {
                const bool use_depth = (v3d->flag & V3D_ZBUF_SELECT) != 0;
-               glColor3f(0.0f, 0.0f, 0.0f);
                glPointSize(UI_GetThemeValuef(TH_VERTEX_SIZE));
 
                if (!use_depth) glDisable(GL_DEPTH_TEST);