GPencil: Use common_view_lib.glsl

This commit is contained in:
Clément Foucault 2019-05-09 22:27:44 +02:00
parent 0d8ab0eac6
commit 7f87e6e18f
8 changed files with 33 additions and 28 deletions

View File

@ -61,6 +61,8 @@ extern char datatoc_gpencil_edit_point_geom_glsl[];
extern char datatoc_gpencil_edit_point_frag_glsl[];
extern char datatoc_gpencil_blend_frag_glsl[];
extern char datatoc_common_view_lib_glsl[];
/* *********** STATIC *********** */
static GPENCIL_e_data e_data = {NULL}; /* Engine data */
@ -167,31 +169,37 @@ static void GPENCIL_create_shaders(void)
{
/* normal fill shader */
if (!e_data.gpencil_fill_sh) {
e_data.gpencil_fill_sh = DRW_shader_create(
datatoc_gpencil_fill_vert_glsl, NULL, datatoc_gpencil_fill_frag_glsl, NULL);
e_data.gpencil_fill_sh = DRW_shader_create_with_lib(datatoc_gpencil_fill_vert_glsl,
NULL,
datatoc_gpencil_fill_frag_glsl,
datatoc_common_view_lib_glsl,
NULL);
}
/* normal stroke shader using geometry to display lines (line mode) */
if (!e_data.gpencil_stroke_sh) {
e_data.gpencil_stroke_sh = DRW_shader_create(datatoc_gpencil_stroke_vert_glsl,
datatoc_gpencil_stroke_geom_glsl,
datatoc_gpencil_stroke_frag_glsl,
NULL);
e_data.gpencil_stroke_sh = DRW_shader_create_with_lib(datatoc_gpencil_stroke_vert_glsl,
datatoc_gpencil_stroke_geom_glsl,
datatoc_gpencil_stroke_frag_glsl,
datatoc_common_view_lib_glsl,
NULL);
}
/* dot/rectangle mode for normal strokes using geometry */
if (!e_data.gpencil_point_sh) {
e_data.gpencil_point_sh = DRW_shader_create(datatoc_gpencil_point_vert_glsl,
datatoc_gpencil_point_geom_glsl,
datatoc_gpencil_point_frag_glsl,
NULL);
e_data.gpencil_point_sh = DRW_shader_create_with_lib(datatoc_gpencil_point_vert_glsl,
datatoc_gpencil_point_geom_glsl,
datatoc_gpencil_point_frag_glsl,
datatoc_common_view_lib_glsl,
NULL);
}
/* used for edit points or strokes with one point only */
if (!e_data.gpencil_edit_point_sh) {
e_data.gpencil_edit_point_sh = DRW_shader_create(datatoc_gpencil_edit_point_vert_glsl,
datatoc_gpencil_edit_point_geom_glsl,
datatoc_gpencil_edit_point_frag_glsl,
NULL);
e_data.gpencil_edit_point_sh = DRW_shader_create_with_lib(datatoc_gpencil_edit_point_vert_glsl,
datatoc_gpencil_edit_point_geom_glsl,
datatoc_gpencil_edit_point_frag_glsl,
datatoc_common_view_lib_glsl,
NULL);
}
/* used for edit lines for edit modes */

View File

@ -1,4 +1,3 @@
uniform mat4 ModelViewProjectionMatrix;
uniform vec2 Viewport;
layout(points) in;

View File

@ -1,4 +1,4 @@
uniform mat4 ModelViewProjectionMatrix;
uniform mat4 ModelMatrix;
in vec3 pos;
in vec4 color;
@ -9,7 +9,7 @@ out float finalThickness;
void main()
{
gl_Position = ModelViewProjectionMatrix * vec4(pos, 1.0);
gl_Position = point_object_to_ndc(pos);
finalColor = color;
finalThickness = size;
}

View File

@ -1,14 +1,15 @@
uniform mat4 ModelViewProjectionMatrix;
uniform mat4 ModelMatrix;
in vec3 pos;
in vec4 color;
in vec2 texCoord;
out vec4 finalColor;
out vec2 texCoord_interp;
void main(void)
{
gl_Position = ModelViewProjectionMatrix * vec4(pos, 1.0);
gl_Position = point_object_to_ndc(pos);
finalColor = color;
texCoord_interp = texCoord;
}

View File

@ -1,4 +1,3 @@
uniform mat4 ModelViewProjectionMatrix;
uniform vec2 Viewport;
uniform int xraymode;
uniform int use_follow_path;

View File

@ -1,5 +1,5 @@
uniform mat4 ModelViewProjectionMatrix;
uniform mat4 ProjectionMatrix;
uniform mat4 ModelMatrix;
uniform float pixsize; /* rv3d->pixsize */
uniform int keep_size;
@ -32,8 +32,8 @@ float defaultpixsize = pixsize * (1000.0 / pixfactor);
void main()
{
gl_Position = ModelViewProjectionMatrix * vec4(pos, 1.0);
finalprev_pos = ModelViewProjectionMatrix * vec4(prev_pos, 1.0);
gl_Position = point_object_to_ndc(pos);
finalprev_pos = point_object_to_ndc(prev_pos);
finalColor = color;
if (keep_size == TRUE) {

View File

@ -1,4 +1,3 @@
uniform mat4 ModelViewProjectionMatrix;
uniform vec2 Viewport;
uniform int xraymode;
uniform int color_type;

View File

@ -1,5 +1,4 @@
uniform mat4 ModelViewProjectionMatrix;
uniform mat4 ProjectionMatrix;
uniform mat4 ModelMatrix;
uniform float pixsize; /* rv3d->pixsize */
uniform int keep_size;
@ -30,7 +29,7 @@ float defaultpixsize = pixsize * (1000.0 / pixfactor);
void main(void)
{
gl_Position = ModelViewProjectionMatrix * vec4(pos, 1.0);
gl_Position = point_object_to_ndc(pos);
finalColor = color;
if (keep_size == TRUE) {