UI: Add Look Developer Balls Size option
authorGeorge Vogiatzis <Gvgeo>
Sat, 4 May 2019 12:03:51 +0000 (14:03 +0200)
committerClément Foucault <foucault.clem@gmail.com>
Sat, 4 May 2019 12:11:04 +0000 (14:11 +0200)
Note: Some adjustments were made compared to the diff mainly for code
readability and made the default ball size 150px.

Reviewed By: fclem

Differential Revision: http://developer.blender.org/D4793

release/scripts/startup/bl_ui/space_userpref.py
source/blender/blenloader/intern/versioning_userdef.c
source/blender/draw/engines/eevee/eevee_lookdev.c
source/blender/makesdna/DNA_userdef_types.h
source/blender/makesrna/intern/rna_userdef.c

index d97a228..cb589fe 100644 (file)
@@ -579,7 +579,9 @@ class USERPREF_PT_viewport_display(PreferencePanel, Panel):
 
         flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
 
-        flow.prop(view, "gizmo_size", text="Gizmo Size")
+        col = flow.column()
+        col.prop(view, "gizmo_size")
+        col.prop(view, "lookdev_ball_size")
 
         flow.separator()
 
index 91611fe..46fd58e 100644 (file)
@@ -551,6 +551,10 @@ void BLO_version_defaults_userpref_blend(Main *bmain, UserDef *userdef)
       userdef->vbocollectrate = 60;
       userdef->vbotimeout = 120;
     }
+
+    if (userdef->lookdev_ball_size == 0) {
+      userdef->lookdev_ball_size = 150;
+    }
   }
 
   if (userdef->pixelsize == 0.0f) {
index 4be87bf..13f7ab1 100644 (file)
@@ -76,7 +76,11 @@ void EEVEE_lookdev_cache_init(EEVEE_Data *vedata,
     rcti rect;
     ED_region_visible_rect(draw_ctx->ar, &rect);
 
-    const int ball_size = max_ii(BLI_rcti_size_x(&rect) * 0.1f, 100.0f) * U.dpi_fac;
+    /* Make the viewport width scale the lookdev balls a bit.
+     * Scale between 1000px and 2000px. */
+    const float viewport_scale = clamp_f(
+        BLI_rcti_size_x(&rect) / (2000.0f * U.dpi_fac), 0.5f, 1.0f);
+    const int ball_size = U.lookdev_ball_size * U.dpi_fac * viewport_scale;
 
     if (ball_size != effects->ball_size || rect.xmax != effects->anchor[0] ||
         rect.ymin != effects->anchor[1]) {
index 4a7b46f..e3773e8 100644 (file)
@@ -643,7 +643,7 @@ typedef struct UserDef {
   char _pad3[4];
   short gizmo_flag, gizmo_size;
   short edit_studio_light;
-  char _pad6[2];
+  short lookdev_ball_size;
   short vbotimeout, vbocollectrate;
   short textimeout, texcollectrate;
   int memcachelimit;
index eade12b..a9bec82 100644 (file)
@@ -4108,6 +4108,15 @@ static void rna_def_userdef_view(BlenderRNA *brna)
   RNA_def_property_ui_text(prop, "Gizmo Size", "Diameter of the gizmo");
   RNA_def_property_update(prop, 0, "rna_userdef_update");
 
+  /* Lookdev */
+  prop = RNA_def_property(srna, "lookdev_ball_size", PROP_INT, PROP_PIXEL);
+  RNA_def_property_int_sdna(prop, NULL, "lookdev_ball_size");
+  RNA_def_property_range(prop, 50, 400);
+  RNA_def_property_int_default(prop, 150);
+  RNA_def_property_ui_text(
+      prop, "LookDev Balls Size", "Maximum diameter of the LookDev balls size");
+  RNA_def_property_update(prop, 0, "rna_userdef_update");
+
   /* View2D Grid Displays */
   prop = RNA_def_property(srna, "view2d_grid_spacing_min", PROP_INT, PROP_PIXEL);
   RNA_def_property_int_sdna(prop, NULL, "v2d_min_gridsize");