diff options
6 files changed, 31 insertions, 25 deletions
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 05a009b9b19..71cc129d222 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -4924,7 +4924,9 @@ class VIEW3D_PT_overlay_gpencil_options(Panel): if overlay.use_gpencil_grid: row = layout.row(align=True) - row.prop(overlay, "gpencil_grid_scale") + col = row.column() + col.prop(overlay, "gpencil_grid_scale") + row = layout.row(align=True) col = row.column() col.prop(overlay, "gpencil_grid_lines", text="Subdivisions") col.prop(overlay, "gpencil_grid_axis", text="Plane") diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c index 7d059d6f996..1e2ae48ccb1 100644 --- a/source/blender/blenloader/intern/versioning_280.c +++ b/source/blender/blenloader/intern/versioning_280.c @@ -1102,7 +1102,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain) for (SpaceLink *sl = area->spacedata.first; sl; sl = sl->next) { if (sl->spacetype == SPACE_VIEW3D) { View3D *v3d = (View3D *)sl; - v3d->overlay.gpencil_grid_scale = 1.0f; // Scale + ARRAY_SET_ITEMS(v3d->overlay.gpencil_grid_scale, 1.0f, 1.0f); // Scale v3d->overlay.gpencil_grid_lines = GP_DEFAULT_GRID_LINES; // NUmber of lines v3d->overlay.gpencil_paper_opacity = 0.5f; v3d->overlay.gpencil_grid_axis = V3D_GP_GRID_AXIS_Y; @@ -1882,7 +1882,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain) for (SpaceLink *sl = sa->spacedata.first; sl; sl = sl->next) { if (sl->spacetype == SPACE_VIEW3D) { View3D *v3d = (View3D *)sl; - v3d->overlay.gpencil_grid_scale = 1.0f; + ARRAY_SET_ITEMS(v3d->overlay.gpencil_grid_scale, 1.0f, 1.0f); } } } diff --git a/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c b/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c index 63e05e186dd..3edeb78fbdc 100644 --- a/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c +++ b/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c @@ -654,8 +654,11 @@ GPUBatch *DRW_gpencil_get_grid(void) float col_grid[4]; /* verify we have something to draw and valid values */ - if (v3d->overlay.gpencil_grid_scale == 0.0f) { - v3d->overlay.gpencil_grid_scale = 1.0f; + if (v3d->overlay.gpencil_grid_scale[0] == 0.0f) { + v3d->overlay.gpencil_grid_scale[0] = 1.0f; + } + if (v3d->overlay.gpencil_grid_scale[1] == 0.0f) { + v3d->overlay.gpencil_grid_scale[1] = 1.0f; } if (v3d->overlay.gpencil_grid_opacity < 0.1f) { @@ -694,9 +697,10 @@ GPUBatch *DRW_gpencil_get_grid(void) const char *grid_unit = NULL; const int gridlines = (v3d->overlay.gpencil_grid_lines <= 0) ? 1 : v3d->overlay.gpencil_grid_lines; - const float grid_scale = v3d->overlay.gpencil_grid_scale * ED_scene_grid_scale(scene, &grid_unit); - const float grid = grid_scale; - const float space = (grid_scale / gridlines); + const float grid_w = v3d->overlay.gpencil_grid_scale[0] * ED_scene_grid_scale(scene, &grid_unit); + const float grid_h = v3d->overlay.gpencil_grid_scale[1] * ED_scene_grid_scale(scene, &grid_unit); + const float space_w = (grid_w / gridlines); + const float space_h = (grid_h / gridlines); const uint vertex_len = 2 * (gridlines * 4 + 2); @@ -713,36 +717,37 @@ GPUBatch *DRW_gpencil_get_grid(void) int idx = 0; for (int a = 1; a <= gridlines; a++) { - const float line = a * space; + const float line_w = a * space_w; + const float line_h = a * space_h; - set_grid_point(vbo, idx, col_grid, pos_id, color_id, -grid, -line, axis); + set_grid_point(vbo, idx, col_grid, pos_id, color_id, -grid_w, -line_h, axis); idx++; - set_grid_point(vbo, idx, col_grid, pos_id, color_id, +grid, -line, axis); + set_grid_point(vbo, idx, col_grid, pos_id, color_id, +grid_w, -line_h, axis); idx++; - set_grid_point(vbo, idx, col_grid, pos_id, color_id, -grid, +line, axis); + set_grid_point(vbo, idx, col_grid, pos_id, color_id, -grid_w, +line_h, axis); idx++; - set_grid_point(vbo, idx, col_grid, pos_id, color_id, +grid, +line, axis); + set_grid_point(vbo, idx, col_grid, pos_id, color_id, +grid_w, +line_h, axis); idx++; - set_grid_point(vbo, idx, col_grid, pos_id, color_id, -line, -grid, axis); + set_grid_point(vbo, idx, col_grid, pos_id, color_id, -line_w, -grid_h, axis); idx++; - set_grid_point(vbo, idx, col_grid, pos_id, color_id, -line, +grid, axis); + set_grid_point(vbo, idx, col_grid, pos_id, color_id, -line_w, +grid_h, axis); idx++; - set_grid_point(vbo, idx, col_grid, pos_id, color_id, +line, -grid, axis); + set_grid_point(vbo, idx, col_grid, pos_id, color_id, +line_w, -grid_h, axis); idx++; - set_grid_point(vbo, idx, col_grid, pos_id, color_id, +line, +grid, axis); + set_grid_point(vbo, idx, col_grid, pos_id, color_id, +line_w, +grid_h, axis); idx++; } /* center lines */ if (do_center) { - set_grid_point(vbo, idx, col_grid, pos_id, color_id, -grid, 0.0f, axis); + set_grid_point(vbo, idx, col_grid, pos_id, color_id, -grid_w, 0.0f, axis); idx++; - set_grid_point(vbo, idx, col_grid, pos_id, color_id, +grid, 0.0f, axis); + set_grid_point(vbo, idx, col_grid, pos_id, color_id, +grid_w, 0.0f, axis); idx++; - set_grid_point(vbo, idx, col_grid, pos_id, color_id, 0.0f, -grid, axis); + set_grid_point(vbo, idx, col_grid, pos_id, color_id, 0.0f, -grid_h, axis); idx++; - set_grid_point(vbo, idx, col_grid, pos_id, color_id, 0.0f, +grid, axis); + set_grid_point(vbo, idx, col_grid, pos_id, color_id, 0.0f, +grid_h, axis); idx++; } return GPU_batch_create_ex(GPU_PRIM_LINES, vbo, NULL, GPU_BATCH_OWNS_VBO); diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index 1cfb60f808c..6f6b94e000c 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -350,7 +350,7 @@ static SpaceLink *view3d_new(const ScrArea *UNUSED(sa), const Scene *scene) v3d->near = 0.01f; v3d->far = 1000.0f; - v3d->overlay.gpencil_grid_scale = 1.0; // Scales + ARRAY_SET_ITEMS(v3d->overlay.gpencil_grid_scale, 1.0f, 1.0f); // Scales v3d->overlay.gpencil_grid_lines = GP_DEFAULT_GRID_LINES; // NUmber of Lines v3d->overlay.gpencil_paper_opacity = 0.5f; v3d->overlay.gpencil_grid_axis = V3D_GP_GRID_AXIS_Y; diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h index c73def54cc6..7876153cbce 100644 --- a/source/blender/makesdna/DNA_view3d_types.h +++ b/source/blender/makesdna/DNA_view3d_types.h @@ -188,10 +188,9 @@ typedef struct View3DOverlay { /* Other settings */ float wireframe_threshold; - char _pad0[4]; /* grease pencil settings */ - float gpencil_grid_scale; + float gpencil_grid_scale[2]; float gpencil_paper_opacity; int gpencil_grid_lines; int gpencil_grid_axis; diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index d067088ec4b..fdf16ce37de 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -2961,7 +2961,7 @@ static void rna_def_space_view3d_overlay(BlenderRNA *brna) "Display a grid over grease pencil paper"); RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); - prop = RNA_def_property(srna, "gpencil_grid_scale", PROP_FLOAT, PROP_NONE); + prop = RNA_def_property(srna, "gpencil_grid_scale", PROP_FLOAT, PROP_XYZ); RNA_def_property_float_sdna(prop, NULL, "overlay.gpencil_grid_scale"); RNA_def_property_range(prop, 0.01f, FLT_MAX); RNA_def_property_float_default(prop, 1.0f); |