Commit: 20573fbdc0115ead5853b090bcbf7d2364c328fd
Author: Antonio Vazquez
Date:   Mon Jun 12 16:56:11 2017 +0200
Branches: greasepencil-object
https://developer.blender.org/rB20573fbdc0115ead5853b090bcbf7d2364c328fd

Cleanup: Define camera view type for pixel size

New define to make more clear and separate the perspective and camera view 
modes for pixel size calculation

===================================================================

M       source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
M       source/blender/draw/engines/gpencil/shaders/gpencil_stroke_vert.glsl

===================================================================

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 a85632fec12..882031a94bf 100644
--- a/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
+++ b/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
@@ -43,6 +43,10 @@
 
 #include "gpencil_engine.h"
 
+#define PIX_PERSPECTIVE 1
+#define PIX_ORTHOGRAPHIC 2
+#define PIX_CAMERAVIEW 3
+
 /* allocate cache to store GP objects */
 tGPencilObjectCache *gpencil_object_cache_allocate(tGPencilObjectCache *cache, 
int *gp_cache_size, int *gp_cache_used)
 {
@@ -311,7 +315,15 @@ DRWShadingGroup 
*DRW_gpencil_shgroup_stroke_create(GPENCIL_Data *vedata, DRWPass
        DRW_shgroup_uniform_float(grp, "pixsize", &rv3d->pixsize, 1);
        DRW_shgroup_uniform_float(grp, "pixelsize", &U.pixelsize, 1);
 
-       stl->storage->is_persp = rv3d->is_persp ? 1 : 2;
+       if (rv3d->is_persp) {
+               stl->storage->is_persp = PIX_PERSPECTIVE;
+               if (rv3d->persp == RV3D_CAMOB) {
+                       stl->storage->is_persp = PIX_CAMERAVIEW;
+               }
+       }
+       else {
+               stl->storage->is_persp = PIX_ORTHOGRAPHIC;
+       }
        /* If disable zoom for strokes, disable scale */
        if ((gpd) && (gpd->flag & GP_DATA_STROKE_KEEPTHICKNESS)) {
                stl->storage->is_persp = 0;
diff --git 
a/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_vert.glsl 
b/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_vert.glsl
index d01fd3b6297..1caed680c2c 100644
--- a/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_vert.glsl
+++ b/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_vert.glsl
@@ -2,7 +2,7 @@ uniform mat4 ModelViewProjectionMatrix;
 
 uniform float pixsize;   /* rv3d->pixsize */
 uniform float pixelsize; /* U.pixelsize */
-uniform int is_persp;    /* rv3d->is_persp (1-yes, 2->Orto), 0: No 
scale_thickness */
+uniform int is_persp;    /* rv3d->is_persp (1-Persp, 2->Orto, 3->Cameraview), 
0: No scale */
 
 in vec3 pos;
 in vec4 color;
@@ -12,6 +12,9 @@ out vec4 finalColor;
 out float finalThickness;
 
 #define TRUE 1
+#define PIX_PERSPECTIVE 1
+#define PIX_ORTHOGRAPHIC 2
+#define PIX_CAMERAVIEW 3
 
 /* port of c code function */
 float mul_project_m4_v3_zfac(mat4 mat, vec3 co)
@@ -31,11 +34,11 @@ void main(void)
        float pixsize = mul_project_m4_v3_zfac(ModelViewProjectionMatrix, pos) 
* defaultpixsize;
        float scale_thickness = 1.0f;
        
-       if (is_persp == 1) {
+       if ((is_persp == PIX_PERSPECTIVE) || (is_persp == PIX_CAMERAVIEW)) {
                /* need a factor to mimmic old glLine size, 10.0f works fine */
                scale_thickness = (defaultpixsize / pixsize) * 10.0f;
        }
-       if (is_persp == 2) {
+       if (is_persp == PIX_ORTHOGRAPHIC) {
                scale_thickness = (1.0f / pixsize) / 100.0f;
        }

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to