[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(&params);
+			BKE_camera_params_from_object(&params, scene->camera);
+			BKE_camera_params_compute_viewplane(&params, viewport_size[0], viewport_size[1], 1.0f, 1.0f);
+			stl->storage->pixsize = &params.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