[Bf-blender-cvs] [813aea9b233] soc-2018-npr: Now with seperate line thickness factor.

Nick Wu noreply at git.blender.org
Wed Jun 13 15:19:44 CEST 2018


Commit: 813aea9b233c74ce2fcfe178504d8c7d03e20a73
Author: Nick Wu
Date:   Wed Jun 13 21:18:37 2018 +0800
Branches: soc-2018-npr
https://developer.blender.org/rB813aea9b233c74ce2fcfe178504d8c7d03e20a73

Now with seperate line thickness factor.

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

M	release/scripts/startup/bl_ui/properties_scene.py
M	source/blender/draw/engines/lanpr/lanpr_engine.c
M	source/blender/draw/engines/lanpr/shaders/lanpr_atlas_preview.geometry
M	source/blender/draw/engines/lanpr/shaders/lanpr_atlas_project_clip.fragment
M	source/blender/makesdna/DNA_scene_types.h
M	source/blender/makesrna/intern/rna_scene.c

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

diff --git a/release/scripts/startup/bl_ui/properties_scene.py b/release/scripts/startup/bl_ui/properties_scene.py
index 69adf75daa3..38e911e5a96 100644
--- a/release/scripts/startup/bl_ui/properties_scene.py
+++ b/release/scripts/startup/bl_ui/properties_scene.py
@@ -513,9 +513,39 @@ class SCENE_PT_lanpr(SceneButtonsPanel, PropertyPanel, Panel):
                 row.prop(lanpr, "enable_intersection", text="Intersection", toggle=True)
 
                 row = col.row(align=True)
-                row.prop(lanpr, "crease_color", text="")
-                row.prop(lanpr, "edge_mark_color", text="")
-                row.prop(lanpr, "material_color", text="")
+                if lanpr.enable_crease:
+                    row.prop(lanpr, "crease_color", text="")
+                else:
+                    row.label(text="OFF")
+                
+                if lanpr.enable_edge_mark:
+                    row.prop(lanpr, "edge_mark_color", text="")
+                else:
+                    row.label(text="OFF")
+
+                if lanpr.enable_material_seperate:
+                    row.prop(lanpr, "material_color", text="")
+                else:
+                    row.label(text="OFF")
+
+                row.label(text="INOP")
+
+                row = col.row(align=True)
+                if lanpr.enable_crease:
+                    row.prop(lanpr, "line_thickness_crease", text="")
+                else:
+                    row.label(text="OFF")
+                
+                if lanpr.enable_edge_mark:
+                    row.prop(lanpr, "line_thickness_edge_mark", text="")
+                else:
+                    row.label(text="OFF")
+
+                if lanpr.enable_material_seperate:
+                    row.prop(lanpr, "line_thickness_material", text="")
+                else:
+                    row.label(text="OFF")
+
                 row.label(text="INOP")
 
                 layout.prop(lanpr, "crease_threshold")
diff --git a/source/blender/draw/engines/lanpr/lanpr_engine.c b/source/blender/draw/engines/lanpr/lanpr_engine.c
index 3fe38c74b0d..7876c0c8bc6 100644
--- a/source/blender/draw/engines/lanpr/lanpr_engine.c
+++ b/source/blender/draw/engines/lanpr/lanpr_engine.c
@@ -277,6 +277,9 @@ static void lanpr_cache_init(void *vedata){
 		DRW_shgroup_uniform_float(stl->g_data->dpix_preview_shgrp, "depth_alpha_influence", &lanpr->depth_alpha_influence, 1);
 		DRW_shgroup_uniform_float(stl->g_data->dpix_preview_shgrp, "depth_alpha_curve", &lanpr->depth_alpha_curve, 1);
 		DRW_shgroup_uniform_float(stl->g_data->dpix_preview_shgrp, "line_thickness", &lanpr->line_thickness, 1);
+		DRW_shgroup_uniform_float(stl->g_data->dpix_preview_shgrp, "line_thickness_crease", &lanpr->line_thickness_crease, 1);
+		DRW_shgroup_uniform_float(stl->g_data->dpix_preview_shgrp, "line_thickness_material", &lanpr->line_thickness_material, 1);
+		DRW_shgroup_uniform_float(stl->g_data->dpix_preview_shgrp, "line_thickness_edge_mark", &lanpr->line_thickness_edge_mark, 1);
 		DRW_shgroup_uniform_float(stl->g_data->dpix_preview_shgrp, "zNear", &stl->g_data->dpix_znear, 1);
 		DRW_shgroup_uniform_float(stl->g_data->dpix_preview_shgrp, "zFar", &stl->g_data->dpix_zfar, 1);
 
diff --git a/source/blender/draw/engines/lanpr/shaders/lanpr_atlas_preview.geometry b/source/blender/draw/engines/lanpr/shaders/lanpr_atlas_preview.geometry
index 86ff277cae7..68307c63596 100644
--- a/source/blender/draw/engines/lanpr/shaders/lanpr_atlas_preview.geometry
+++ b/source/blender/draw/engines/lanpr/shaders/lanpr_atlas_preview.geometry
@@ -25,9 +25,15 @@ uniform vec4 crease_color;
 uniform vec4 material_color;
 uniform vec4 edge_mark_color;
 
+uniform float line_thickness_crease;
+uniform float line_thickness_material;
+uniform float line_thickness_edge_mark;
+
+float use_thickness = line_thickness;
+
 out vec4 out_color;
 
-vec4 use_color;
+vec4 use_color = color;
 
 float get_linear_depth(float z){
 	float ze = 2.0 * zNear * zFar / (zFar + zNear - z * (zFar - zNear));
@@ -58,7 +64,7 @@ void draw_line(vec4 p1, vec4 p2){
     
 	vec4 a,b,c,d;
     
-	vec4 offset = Normal*line_thickness*0.001;
+	vec4 offset = Normal*use_thickness*0.001;
 	a = p1 + offset;
     b = p1 - offset;
 	c = p2 + offset;
@@ -88,10 +94,9 @@ void main() {
 
 	vec4 edge_mask = texelFetch(edge_mask_tex, ivec2(gl_in[0].gl_Position.xy), 0);
 
-	if(edge_mask.g>0) use_color = edge_mark_color;
-	else if(edge_mask.r>0) use_color = material_color;
-    else if(p1.w!=p2.w) use_color = crease_color;
-	else use_color = color;
+	if(edge_mask.g>0)      { use_color = edge_mark_color; use_thickness = line_thickness*line_thickness_edge_mark; }
+	else if(edge_mask.r>0) { use_color = material_color;  use_thickness = line_thickness*line_thickness_material;  }
+    else if(p1.w!=p2.w)    { use_color = crease_color;    use_thickness = line_thickness*line_thickness_crease;    }
 
 	draw_line(p1,p2);
 }
\ No newline at end of file
diff --git a/source/blender/draw/engines/lanpr/shaders/lanpr_atlas_project_clip.fragment b/source/blender/draw/engines/lanpr/shaders/lanpr_atlas_project_clip.fragment
index b397c30e631..c8f127304f1 100644
--- a/source/blender/draw/engines/lanpr/shaders/lanpr_atlas_project_clip.fragment
+++ b/source/blender/draw/engines/lanpr/shaders/lanpr_atlas_project_clip.fragment
@@ -350,11 +350,11 @@ bool testProfileEdge( ivec2 texcoord, vec3 world_position )
     float dot1 = dot(camera_to_line.xyz, vec3(face_normal_1.xyz));
 	float dot2 = dot(vec3(face_normal_0.xyz), vec3(face_normal_1.xyz));
 
-    is_crease = (dot2<crease_threshold)?1:0;
+    bool contour = (dot0 >= 0.0 && dot1 <= 0.0) || (dot0 <= 0.0 && dot1 >= 0.0);
+    is_crease = ((!contour)&&(dot2<crease_threshold))?1:0;
 
-    return (dot0 >= 0.0 && dot1 <= 0.0) ||
-           (dot0 <= 0.0 && dot1 >= 0.0) ||
-           ((enable_crease>0) && is_crease>0) ||
+    return contour ||
+           ((enable_crease>0) && (is_crease>0)) ||
            ((enable_material>0) && (edge_mask.r>0)) ||
            ((enable_edge_mark>0) && (edge_mask.g>0)) ||
            false;
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index 8ab35e98c36..a911b23b6d4 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -1444,7 +1444,12 @@ typedef struct SceneLANPR{
 	float normal_strength;
 
 	float line_thickness;
-	
+
+	/*line style layer*/
+	float line_thickness_crease;
+	float line_thickness_material;
+	float line_thickness_edge_mark;
+
 	int   use_same_taper;
 	float taper_left_distance;
 	float taper_left_strength;
@@ -1474,8 +1479,6 @@ typedef struct SceneLANPR{
 	float depth_alpha_curve;
 
     /* line components */
-
-	int   size_compensation;
 	
 	int   enable_crease;
 	int   enable_edge_mark;
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index d53bcf2f622..1f3825674d3 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -6341,6 +6341,22 @@ static void rna_def_scene_lanpr(BlenderRNA *brna)
 	RNA_def_property_array(prop, 4);
 	RNA_def_property_ui_text(prop, "Edge Mark Color", "Drawing edge marks using this color");
 	RNA_def_property_ui_range(prop, 0.0f, 1.0f, 0.1, 2);
+
+	prop = RNA_def_property(srna, "line_thickness_crease", PROP_FLOAT, PROP_FACTOR);
+	RNA_def_property_float_default(prop, 1.0f);
+	RNA_def_property_ui_text(prop, "Line Thickness", "Thickness of crease line");
+	RNA_def_property_ui_range(prop, 0.0f, 1.0f, 0.01, 2);
+
+	prop = RNA_def_property(srna, "line_thickness_material", PROP_FLOAT, PROP_FACTOR);
+	RNA_def_property_float_default(prop, 1.0f);
+	RNA_def_property_ui_text(prop, "Line Thickness", "Thickness of material line");
+	RNA_def_property_ui_range(prop, 0.0f, 1.0f, 0.01, 2);
+
+	prop = RNA_def_property(srna, "line_thickness_edge_mark", PROP_FLOAT, PROP_FACTOR);
+	RNA_def_property_float_default(prop, 1.0f);
+	RNA_def_property_ui_text(prop, "Line Thickness", "Thickness of edge mark line");
+	RNA_def_property_ui_range(prop, 0.0f, 1.0f, 0.01, 2);
+
 }
 
 void RNA_def_scene(BlenderRNA *brna)



More information about the Bf-blender-cvs mailing list