[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