This commit groups several options that were tested in grease pencil branch: - Changes to fill algorithms and improves, specially in small areas and stroke corners. New options has been added in order to define how the fill is working and internally there are optimizations in detect the small areas in the extremes. Kudos to @charlie for coding this fill improvements. - New 3D cursor view plane option. Now it's possible to lock the drawing plane to the 3D cursor and use the 3D cursor orientation. This allows more flexibility when you are drawing and reduce the need to create geometry to draw over surfaces. - Canvas Grid now can be locked to 3D cursor. - New option to reproject stroke using 3D cursor. - Small tweaks and fixes. Changes reviewed by @pepeland and @mendio
33 lines
706 B
GLSL
33 lines
706 B
GLSL
uniform mat4 ModelViewProjectionMatrix;
|
|
uniform mat4 ProjectionMatrix;
|
|
|
|
uniform float pixsize; /* rv3d->pixsize */
|
|
uniform int keep_size;
|
|
uniform float objscale;
|
|
uniform float pixfactor;
|
|
|
|
in vec3 pos;
|
|
in vec4 color;
|
|
in float thickness;
|
|
|
|
out vec4 finalColor;
|
|
out float finalThickness;
|
|
|
|
#define TRUE 1
|
|
|
|
float defaultpixsize = pixsize * (1000.0 / pixfactor);
|
|
|
|
void main(void)
|
|
{
|
|
gl_Position = ModelViewProjectionMatrix * vec4( pos, 1.0 );
|
|
finalColor = color;
|
|
|
|
if (keep_size == TRUE) {
|
|
finalThickness = thickness;
|
|
}
|
|
else {
|
|
float size = (ProjectionMatrix[3][3] == 0.0) ? (thickness / (gl_Position.z * defaultpixsize)) : (thickness / defaultpixsize);
|
|
finalThickness = max(size * objscale, 1.0);
|
|
}
|
|
}
|