[Bf-blender-cvs] [85aa8ab2733] soc-2019-npr: LANPR: shaders now support main color/thickness.
YimingWu
noreply at git.blender.org
Wed Jun 26 07:29:33 CEST 2019
Commit: 85aa8ab273390dde12ea701edf357f2729e6e466
Author: YimingWu
Date: Wed Jun 26 13:28:02 2019 +0800
Branches: soc-2019-npr
https://developer.blender.org/rB85aa8ab273390dde12ea701edf357f2729e6e466
LANPR: shaders now support main color/thickness.
===================================================================
M source/blender/draw/engines/lanpr/lanpr_engine.c
M source/blender/draw/engines/lanpr/lanpr_ops.c
M source/blender/draw/engines/lanpr/shaders/lanpr_dpix_preview_geom.glsl
M source/blender/draw/engines/lanpr/shaders/lanpr_software_chain_geom.glsl
M source/blender/draw/engines/lanpr/shaders/lanpr_software_line_chain_geom.glsl
===================================================================
diff --git a/source/blender/draw/engines/lanpr/lanpr_engine.c b/source/blender/draw/engines/lanpr/lanpr_engine.c
index 868ec878a56..51f1adf894b 100644
--- a/source/blender/draw/engines/lanpr/lanpr_engine.c
+++ b/source/blender/draw/engines/lanpr/lanpr_engine.c
@@ -313,7 +313,7 @@ static void lanpr_cache_init(void *vedata)
DRW_shgroup_uniform_vec4(
stl->g_data->dpix_preview_shgrp, "viewport", stl->g_data->dpix_viewport, 1);
DRW_shgroup_uniform_vec4(stl->g_data->dpix_preview_shgrp,
- "color",
+ "contour_color",
ll->use_same_style ? ll->color : ll->contour_color,
1);
DRW_shgroup_uniform_vec4(stl->g_data->dpix_preview_shgrp,
@@ -352,9 +352,11 @@ static void lanpr_cache_init(void *vedata)
DRW_shgroup_uniform_float(
stl->g_data->dpix_preview_shgrp, "depth_alpha_curve", &lanpr->depth_alpha_curve, 1);
static float unit_thickness = 1.0f;
+ DRW_shgroup_uniform_float(
+ stl->g_data->dpix_preview_shgrp, "line_thickness", &ll->thickness, 1);
DRW_shgroup_uniform_float(stl->g_data->dpix_preview_shgrp,
- "line_thickness",
- ll->use_same_style ? &ll->thickness : &ll->thickness_contour,
+ "line_thickness_contour",
+ ll->use_same_style ? &unit_thickness : &ll->thickness_contour,
1);
DRW_shgroup_uniform_float(stl->g_data->dpix_preview_shgrp,
"line_thickness_crease",
diff --git a/source/blender/draw/engines/lanpr/lanpr_ops.c b/source/blender/draw/engines/lanpr/lanpr_ops.c
index 11c54269a92..4f1637276ae 100644
--- a/source/blender/draw/engines/lanpr/lanpr_ops.c
+++ b/source/blender/draw/engines/lanpr/lanpr_ops.c
@@ -3922,8 +3922,10 @@ void lanpr_software_draw_scene(void *vedata, GPUFrameBuffer *dfb, int is_render)
lanpr_calculate_normal_object_vector(ll, normal_object_direction);
- DRW_shgroup_uniform_vec4(
- rb->ChainShgrp, "color", ll->use_same_style ? ll->color : ll->contour_color, 1);
+ DRW_shgroup_uniform_vec4(rb->ChainShgrp,
+ "contour_color",
+ ll->use_same_style ? ll->color : ll->contour_color,
+ 1);
DRW_shgroup_uniform_vec4(
rb->ChainShgrp, "crease_color", ll->use_same_style ? ll->color : ll->crease_color, 1);
DRW_shgroup_uniform_vec4(rb->ChainShgrp,
@@ -3939,9 +3941,10 @@ void lanpr_software_draw_scene(void *vedata, GPUFrameBuffer *dfb, int is_render)
ll->use_same_style ? ll->color : ll->intersection_color,
1);
static float unit_thickness = 1.0f;
+ DRW_shgroup_uniform_float(rb->ChainShgrp, "thickness", &ll->thickness, 1);
DRW_shgroup_uniform_float(rb->ChainShgrp,
- "thickness",
- ll->use_same_style ? &ll->thickness : &ll->thickness_contour,
+ "thickness_contour",
+ ll->use_same_style ? &unit_thickness : &ll->thickness_contour,
1);
DRW_shgroup_uniform_float(rb->ChainShgrp,
"thickness_crease",
@@ -4015,7 +4018,8 @@ void lanpr_software_draw_scene(void *vedata, GPUFrameBuffer *dfb, int is_render)
lanpr_calculate_normal_object_vector(ll, normal_object_direction);
- DRW_shgroup_uniform_vec4(ll->shgrp, "color", ll->color, 1);
+ DRW_shgroup_uniform_vec4(
+ ll->shgrp, "contour_color", ll->use_same_style ? ll->color : ll->contour_color, 1);
DRW_shgroup_uniform_vec4(
ll->shgrp, "crease_color", ll->use_same_style ? ll->color : ll->crease_color, 1);
DRW_shgroup_uniform_vec4(
@@ -4028,22 +4032,31 @@ void lanpr_software_draw_scene(void *vedata, GPUFrameBuffer *dfb, int is_render)
"intersection_color",
ll->use_same_style ? ll->color : ll->intersection_color,
1);
+ static float uniform_thickness = 1.0f;
DRW_shgroup_uniform_float(ll->shgrp, "thickness", &ll->thickness, 1);
+ DRW_shgroup_uniform_float(ll->shgrp,
+ "thickness_contour",
+ ll->use_same_style ? &uniform_thickness :
+ &ll->thickness_contour,
+ 1);
DRW_shgroup_uniform_float(ll->shgrp,
"thickness_crease",
- ll->use_same_style ? &ll->thickness : &ll->thickness_crease,
+ ll->use_same_style ? &uniform_thickness :
+ &ll->thickness_crease,
1);
DRW_shgroup_uniform_float(ll->shgrp,
"thickness_material",
- ll->use_same_style ? &ll->thickness : &ll->thickness_material,
+ ll->use_same_style ? &uniform_thickness :
+ &ll->thickness_material,
1);
DRW_shgroup_uniform_float(ll->shgrp,
"thickness_edge_mark",
- ll->use_same_style ? &ll->thickness : &ll->thickness_edge_mark,
+ ll->use_same_style ? &uniform_thickness :
+ &ll->thickness_edge_mark,
1);
DRW_shgroup_uniform_float(ll->shgrp,
"thickness_intersection",
- ll->use_same_style ? &ll->thickness :
+ ll->use_same_style ? &uniform_thickness :
&ll->thickness_intersection,
1);
DRW_shgroup_uniform_vec4(ll->shgrp, "preview_viewport", stl->g_data->dpix_viewport, 1);
diff --git a/source/blender/draw/engines/lanpr/shaders/lanpr_dpix_preview_geom.glsl b/source/blender/draw/engines/lanpr/shaders/lanpr_dpix_preview_geom.glsl
index 36846c94d94..e9f5ebdb161 100644
--- a/source/blender/draw/engines/lanpr/shaders/lanpr_dpix_preview_geom.glsl
+++ b/source/blender/draw/engines/lanpr/shaders/lanpr_dpix_preview_geom.glsl
@@ -20,14 +20,15 @@ uniform float depth_alpha_curve;
uniform float z_near;
uniform float z_far;
-uniform vec4 color;
uniform vec4 background_color;
+uniform vec4 contour_color;
uniform vec4 crease_color;
uniform vec4 material_color;
uniform vec4 edge_mark_color;
uniform vec4 intersection_color;
+uniform float line_thickness_contour;
uniform float line_thickness_crease;
uniform float line_thickness_material;
uniform float line_thickness_edge_mark;
@@ -153,8 +154,6 @@ void main()
int is_crease = 0;
- use_color = color;
-
float th = line_thickness;
if (normal_mode == 0) {
th = line_thickness;
@@ -168,8 +167,6 @@ void main()
th = factor_to_thickness(factor);
}
- use_thickness = th;
-
if (edge_mask.g > 0) {
use_color = edge_mark_color;
use_thickness = th * line_thickness_edge_mark;
@@ -187,6 +184,10 @@ void main()
use_thickness = th * line_thickness_crease;
is_crease = 1;
}
+ else {
+ use_color = contour_color;
+ use_thickness = th * line_thickness_contour;
+ }
draw_line(p1, p2, is_crease);
}
\ No newline at end of file
diff --git a/source/blender/draw/engines/lanpr/shaders/lanpr_software_chain_geom.glsl b/source/blender/draw/engines/lanpr/shaders/lanpr_software_chain_geom.glsl
index 0e1872aeec1..514a0d0be14 100644
--- a/source/blender/draw/engines/lanpr/shaders/lanpr_software_chain_geom.glsl
+++ b/source/blender/draw/engines/lanpr/shaders/lanpr_software_chain_geom.glsl
@@ -15,6 +15,7 @@ uniform float normal_thickness_begin;
uniform float normal_thickness_end;
uniform float thickness;
+uniform float thickness_contour;
uniform float thickness_crease;
uniform float thickness_material;
uniform float thickness_edge_mark;
@@ -37,7 +38,7 @@ uniform int occlusion_level_end;
// uniform float zNear;
// uniform float zFar;
-uniform vec4 color;
+uniform vec4 contour_color;
uniform vec4 crease_color;
uniform vec4 material_color;
uniform vec4 edge_mark_color;
@@ -194,7 +195,7 @@ void decide_line_style(int component_id)
}
if (component_id == 0) {
- out_color = color;
+ out_color = contour_color;
use_thickness = th * enable_contour;
return;
}
diff --git a/source/blender/draw/engines/lanpr/shaders/lanpr_software_line_chain_geom.glsl b/source/blender/draw/engines/lanpr/shaders/lanpr_software_line_chain_geom.glsl
index 5523c49fcc4..30f88593e66 100644
--- a/source/blender/draw/engines/lanpr/shaders/lanpr_software_line_chain_geom.glsl
+++ b/source/blender/draw/engines/lanpr/shaders/lanpr_software_line_chain_geom.glsl
@@ -11,6 +11,7 @@ uniform float normal_thickness_begin;
uniform float normal_thickness_end;
uniform float thickness;
+uniform float thickness_contour;
uniform float thickness_crease;
uniform float thickness_material;
uniform float thickness_edge_mark;
@@ -24,7 +25,7 @@ uniform float thickness_intersection;
// uniform float zNear;
// uniform float zFar;
-uniform vec4 color;
+uniform vec4 contour_color;
uniform vec4 crease_color;
uniform vec4 material_color;
uniform vec4 edge_mark_color;
@@ -101,8 +102,8 @@ void decide_color_and_thickness(float component_id)
}
if (component_id < 1.5) {
- out_color = color;
- use_thickness = th;
+ out_color = contour_color;
+ use_thickness = th * thickness_contour;
return;
}
if (component_id < 2.5) {
More information about the Bf-blender-cvs
mailing list