[Bf-blender-cvs] [ecb4d23df92] greasepencil-object: Try to fix pixsize in render mode
Antonio Vazquez
noreply at git.blender.org
Wed Feb 7 19:51:45 CET 2018
Commit: ecb4d23df9295ae594469e94020c0f39737d1efa
Author: Antonio Vazquez
Date: Wed Feb 7 19:41:11 2018 +0100
Branches: greasepencil-object
https://developer.blender.org/rBecb4d23df9295ae594469e94020c0f39737d1efa
Try to fix pixsize in render mode
Still the pixsize is not working becaus ethe values are not valid.
===================================================================
M source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
M source/blender/draw/engines/gpencil/gpencil_engine.c
M source/blender/draw/engines/gpencil/gpencil_engine.h
M source/blender/draw/engines/gpencil/gpencil_vfx.c
===================================================================
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 6fcfa2df3ce..29b8b77df92 100644
--- a/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
+++ b/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
@@ -350,7 +350,7 @@ DRWShadingGroup *DRW_gpencil_shgroup_stroke_create(GPENCIL_e_data *e_data, GPENC
DRW_shgroup_uniform_vec2(grp, "Viewport", viewport_size, 1);
- DRW_shgroup_uniform_float(grp, "pixsize", DRW_viewport_pixelsize_get(), 1);
+ DRW_shgroup_uniform_float(grp, "pixsize", stl->storage->pixsize, 1);
DRW_shgroup_uniform_float(grp, "pixelsize", &U.pixelsize, 1);
/* avoid wrong values */
@@ -442,7 +442,7 @@ DRWShadingGroup *DRW_gpencil_shgroup_point_create(GPENCIL_e_data *e_data, GPENCI
stl->g_data->tot_sh_point++;
DRW_shgroup_uniform_vec2(grp, "Viewport", viewport_size, 1);
- DRW_shgroup_uniform_float(grp, "pixsize", DRW_viewport_pixelsize_get(), 1);
+ DRW_shgroup_uniform_float(grp, "pixsize", stl->storage->pixsize, 1);
DRW_shgroup_uniform_float(grp, "pixelsize", &U.pixelsize, 1);
/* avoid wrong values */
diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.c b/source/blender/draw/engines/gpencil/gpencil_engine.c
index 09fdcd4de95..d2b09509556 100644
--- a/source/blender/draw/engines/gpencil/gpencil_engine.c
+++ b/source/blender/draw/engines/gpencil/gpencil_engine.c
@@ -27,6 +27,7 @@
#include "DRW_render.h"
#include "BKE_global.h"
+#include "BKE_camera.h"
#include "BKE_object.h"
#include "BKE_paint.h"
#include "BKE_gpencil.h"
@@ -293,6 +294,20 @@ static void GPENCIL_cache_init(void *vedata)
}
/* save render state */
stl->storage->is_render = DRW_state_is_image_render();
+
+ /* save pixsize */
+ if (!stl->storage->is_render) {
+ stl->storage->pixsize = DRW_viewport_pixelsize_get();
+ }
+ else {
+ const float *viewport_size = DRW_viewport_size_get();
+ CameraParams params;
+ BKE_camera_params_init(¶ms);
+ BKE_camera_params_from_object(¶ms, scene->camera);
+ BKE_camera_params_compute_viewplane(¶ms, viewport_size[0], viewport_size[1], 1.0f, 1.0f);
+ stl->storage->pixsize = ¶ms.viewdx;
+ }
+
/* detect if painting session */
bGPdata *obact_gpd = NULL;
if ((obact) && (obact->type == OB_GPENCIL) && (obact->data))
diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.h b/source/blender/draw/engines/gpencil/gpencil_engine.h
index 13909e5c07e..0f7651fe6b2 100644
--- a/source/blender/draw/engines/gpencil/gpencil_engine.h
+++ b/source/blender/draw/engines/gpencil/gpencil_engine.h
@@ -167,6 +167,7 @@ typedef struct GPENCIL_Storage {
int uselines;
float gridsize[2];
float gridcolor[3];
+ const float *pixsize;
/* Render Matrices and data */
float persmat[4][4], persinv[4][4];
diff --git a/source/blender/draw/engines/gpencil/gpencil_vfx.c b/source/blender/draw/engines/gpencil/gpencil_vfx.c
index 24d65e2cbb2..5537e5e2115 100644
--- a/source/blender/draw/engines/gpencil/gpencil_vfx.c
+++ b/source/blender/draw/engines/gpencil/gpencil_vfx.c
@@ -239,7 +239,7 @@ static void DRW_gpencil_vfx_pixel(
copy_v3_v3(stl->vfx[ob_idx].vfx_pixel.loc, &ob->loc[0]);
DRW_shgroup_uniform_vec3(vfx_shgrp, "loc", stl->vfx[ob_idx].vfx_pixel.loc, 1);
- DRW_shgroup_uniform_float(vfx_shgrp, "pixsize", DRW_viewport_pixelsize_get(), 1);
+ DRW_shgroup_uniform_float(vfx_shgrp, "pixsize", stl->storage->pixsize, 1);
DRW_shgroup_uniform_float(vfx_shgrp, "pixelsize", &U.pixelsize, 1);
DRW_shgroup_uniform_int(vfx_shgrp, "pixfactor", &gpd->pixfactor, 1);
@@ -285,7 +285,7 @@ static void DRW_gpencil_vfx_swirl(
DRW_shgroup_uniform_float(vfx_shgrp, "angle", &stl->vfx[ob_idx].vfx_swirl.angle, 1);
DRW_shgroup_uniform_int(vfx_shgrp, "transparent", &stl->vfx[ob_idx].vfx_swirl.transparent, 1);
- DRW_shgroup_uniform_float(vfx_shgrp, "pixsize", DRW_viewport_pixelsize_get(), 1);
+ DRW_shgroup_uniform_float(vfx_shgrp, "pixsize", stl->storage->pixsize, 1);
DRW_shgroup_uniform_float(vfx_shgrp, "pixelsize", &U.pixelsize, 1);
DRW_shgroup_uniform_int(vfx_shgrp, "pixfactor", &gpd->pixfactor, 1);
@@ -415,7 +415,7 @@ static void DRW_gpencil_vfx_light(
stl->vfx[ob_idx].vfx_light.ambient = mmd->ambient;
DRW_shgroup_uniform_float(vfx_shgrp, "ambient", &stl->vfx[ob_idx].vfx_light.ambient, 1);
- DRW_shgroup_uniform_float(vfx_shgrp, "pixsize", DRW_viewport_pixelsize_get(), 1);
+ DRW_shgroup_uniform_float(vfx_shgrp, "pixsize", stl->storage->pixsize, 1);
DRW_shgroup_uniform_float(vfx_shgrp, "pixelsize", &U.pixelsize, 1);
DRW_shgroup_uniform_int(vfx_shgrp, "pixfactor", &gpd->pixfactor, 1);
More information about the Bf-blender-cvs
mailing list