diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-10-30 18:20:48 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-10-30 18:44:23 +0300 |
commit | 26223f8d9a09a0554e94610039abf5c85284e2e3 (patch) | |
tree | c25677cc3d4ae2997189e58e01a75f9588254dd9 /source/blender | |
parent | a1cdf9cc3f7d9658ea41d901296e76000bc9d4fd (diff) |
Object Mode: Grid: Reduce line thickness a tiny bit and apply UI scaling
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/draw/modes/object_mode.c | 2 | ||||
-rw-r--r-- | source/blender/draw/modes/shaders/object_grid_frag.glsl | 12 |
2 files changed, 9 insertions, 5 deletions
diff --git a/source/blender/draw/modes/object_mode.c b/source/blender/draw/modes/object_mode.c index 1b20e32a770..b494fbc740e 100644 --- a/source/blender/draw/modes/object_mode.c +++ b/source/blender/draw/modes/object_mode.c @@ -1044,6 +1044,7 @@ static void OBJECT_cache_init(void *vedata) psl->grid = DRW_pass_create("Infinite Grid Pass", state); struct GPUBatch *geom = DRW_cache_grid_get(); + float grid_line_size = max_ff(0.0f, U.pixelsize - 1.0f) * 0.5f; static float mat[4][4]; unit_m4(mat); @@ -1055,6 +1056,7 @@ static void OBJECT_cache_init(void *vedata) DRW_shgroup_uniform_vec3(grp, "cameraPos", e_data.camera_pos, 1); DRW_shgroup_uniform_vec4(grp, "screenvecs[0]", e_data.screenvecs[0], 3); DRW_shgroup_uniform_vec4(grp, "gridSettings", e_data.grid_settings, 1); + DRW_shgroup_uniform_float_copy(grp, "lineKernel", grid_line_size); DRW_shgroup_uniform_float(grp, "gridOneOverLogSubdiv", &e_data.grid_settings[4], 1); DRW_shgroup_uniform_block(grp, "globalsBlock", globals_ubo); DRW_shgroup_uniform_vec2(grp, "viewportSize", DRW_viewport_size_get(), 1); diff --git a/source/blender/draw/modes/shaders/object_grid_frag.glsl b/source/blender/draw/modes/shaders/object_grid_frag.glsl index 4a3ac6abd84..928db048a46 100644 --- a/source/blender/draw/modes/shaders/object_grid_frag.glsl +++ b/source/blender/draw/modes/shaders/object_grid_frag.glsl @@ -12,6 +12,7 @@ uniform vec3 eye; uniform vec4 gridSettings; uniform vec2 viewportSize; uniform vec4 screenvecs[3]; +uniform float lineKernel = 0.0; uniform float gridOneOverLogSubdiv; uniform sampler2D depthBuffer; @@ -31,7 +32,8 @@ uniform int gridFlag; #define PLANE_YZ (1 << 6) #define GRID_BACK (1 << 9) /* grid is behind objects */ -#define GRID_LINE_SMOOTH 1.15 +#define GRID_LINE_SMOOTH_START -0.1 +#define GRID_LINE_SMOOTH_END 1.05 float get_grid(vec2 co, vec2 fwidthCos, float grid_size) { @@ -42,10 +44,10 @@ float get_grid(vec2 co, vec2 fwidthCos, float grid_size) * (make lines have the same width under perspective) */ grid_domain /= fwidthCos; - /* collapse waves and normalize */ - grid_domain.x = min(grid_domain.x, grid_domain.y) / half_size; + /* collapse waves */ + float line_dist = min(grid_domain.x, grid_domain.y); - return 1.0 - smoothstep(0.0, GRID_LINE_SMOOTH / grid_size, grid_domain.x * 0.5); + return 1.0 - smoothstep(GRID_LINE_SMOOTH_START, GRID_LINE_SMOOTH_END, line_dist - lineKernel); } vec3 get_axes(vec3 co, vec3 fwidthCos, float line_size) @@ -55,7 +57,7 @@ vec3 get_axes(vec3 co, vec3 fwidthCos, float line_size) * (make line have the same width under perspective) */ axes_domain /= fwidthCos; - return 1.0 - smoothstep(0.0, GRID_LINE_SMOOTH, axes_domain - line_size); + return 1.0 - smoothstep(GRID_LINE_SMOOTH_START, GRID_LINE_SMOOTH_END, axes_domain - (line_size + lineKernel)); } vec3 get_floor_pos(vec2 uv, out vec3 wPos) |