Commit: b6b0d986bb538e20eafb809069c3dfc8e724387f
Author: Nick Wu
Date:   Thu Sep 6 10:49:22 2018 +0800
Branches: soc-2018-npr
https://developer.blender.org/rBb6b0d986bb538e20eafb809069c3dfc8e724387f

Fixed contour priority. Fixed software mode line type shader.

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

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_dpix_project_clip_frag.glsl
M       
source/blender/draw/engines/lanpr/shaders/lanpr_software_passthrough_vert.glsl

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

diff --git a/source/blender/draw/engines/lanpr/lanpr_ops.c 
b/source/blender/draw/engines/lanpr/lanpr_ops.c
index ddc55eb411b..394c87db01b 100644
--- a/source/blender/draw/engines/lanpr/lanpr_ops.c
+++ b/source/blender/draw/engines/lanpr/lanpr_ops.c
@@ -2075,8 +2075,8 @@ int 
lanpr_triangle_line_imagespace_intersection_v2(SpinLock *spl, LANPR_RenderTr
        //printf("%f %f %f   %f %f\n", FBC0[2], FBC1[2], FBC2[2], LFBC[2], 
RFBC[2]);
 
        //bound box.
-       if (MIN3(FBC0[2], FBC1[2], FBC2[2]) > MAX2(LFBC[2], RFBC[2]))
-               return 0;
+       //if (MIN3(FBC0[2], FBC1[2], FBC2[2]) > MAX2(LFBC[2], RFBC[2]))
+       //      return 0;
        if (MAX3(FBC0[0], FBC1[0], FBC2[0]) < MIN2(LFBC[0], RFBC[0])) return 0;
        if (MIN3(FBC0[0], FBC1[0], FBC2[0]) > MAX2(LFBC[0], RFBC[0])) return 0;
        if (MAX3(FBC0[1], FBC1[1], FBC2[1]) < MIN2(LFBC[1], RFBC[1])) return 0;
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 5591cc6aa5f..79ccbe12b63 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
@@ -104,10 +104,11 @@ void main() {
 
        int is_crease = 0;
 
-       if (edge_mask.g > 0)      { use_color = edge_mark_color;     
use_thickness = line_thickness * line_thickness_edge_mark; }
+       if (p1.w>0)               { use_color = color;               
use_thickness = line_thickness; } // contour override
+       else 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 (edge_mask.b > 0) { use_color = intersection_color;  
use_thickness = line_thickness * line_thickness_intersection;  }
-       else if (p1.w != p2.w)    { use_color = crease_color;        
use_thickness = line_thickness * line_thickness_crease; is_crease = 1; }
+       else if (p2.w>0)          { use_color = crease_color;        
use_thickness = line_thickness * line_thickness_crease; is_crease = 1; }
 
        draw_line(p1, p2, is_crease);
 }
\ No newline at end of file
diff --git 
a/source/blender/draw/engines/lanpr/shaders/lanpr_dpix_project_clip_frag.glsl 
b/source/blender/draw/engines/lanpr/shaders/lanpr_dpix_project_clip_frag.glsl
index 1fbd4e6f0cc..f5fff375e7d 100644
--- 
a/source/blender/draw/engines/lanpr/shaders/lanpr_dpix_project_clip_frag.glsl
+++ 
b/source/blender/draw/engines/lanpr/shaders/lanpr_dpix_project_clip_frag.glsl
@@ -337,7 +337,8 @@ bool pointBeyondNear(vec3 p)
        return beyond;
 }
 
-bool testProfileEdge(ivec2 texcoord, vec3 world_position)
+// 1 for contour 2 for others
+int testProfileEdge(ivec2 texcoord, vec3 world_position)
 {
        // This should really be the inverse transpose of the modelview matrix, 
but
        // that only matters if the camera has a weird anisotropic scale or 
skew.
@@ -362,12 +363,12 @@ bool testProfileEdge(ivec2 texcoord, vec3 world_position)
                          ((dot2 - crease_threshold) / (crease_fade_threshold - 
crease_threshold) / 2) : 0;
        // use 0 to 0.5 to repesent the range, because 1 will represent another 
meaning
 
-       return contour ||
-              ((enable_crease > 0) && (is_crease > 0)) ||
+       if(contour) return 1;
+       else if(((enable_crease > 0) && (is_crease > 0)) ||
               ((enable_material > 0) && (edge_mask.r > 0)) ||
               ((enable_edge_mark > 0) && (edge_mask.g > 0)) ||
               ((enable_intersection > 0) && (edge_mask.b > 0)) ||
-              false;
+              false) return 2;
 }
 
 void main(){
@@ -427,8 +428,8 @@ void main(){
        // If this segment is a profile edge, test to see if it should be 
turned on.
        //if (v1_world_pos.w > 0.5)
        //{
-       bool profile_on = testProfileEdge(texcoord, v0_clipped_near);
-       if (!profile_on)
+       int profile_on = testProfileEdge(texcoord, v0_clipped_near);
+       if (profile_on==0)
        {
                // Profile edge should be off.
                gl_FragData[0] = vec4(0.0, 1.0, 0.5, 0.0);
@@ -510,9 +511,8 @@ void main(){
        //if(v0_clipped_pre_div == v1_clipped_pre_div)gl_FragData[0] =vec4(1);
        //else gl_FragData[0] = vec4(v0_clipped_pre_div.xyz,1);
 
-
-       gl_FragData[0] = vec4(v0_clipped_pre_div.xyz, 1);//v0_clipped_pre_div;
-       gl_FragData[1] = vec4(v1_clipped_pre_div.xyz, is_crease > 0 ? 
crease_strength : 1);//v1_clipped_pre_div;
+       gl_FragData[0] = vec4(v0_clipped_pre_div.xyz, profile_on==1 ? 1 : 
0);//contour has priority
+       gl_FragData[1] = vec4(v1_clipped_pre_div.xyz, is_crease > 0 ? 
crease_strength : 1);
        //gl_FragData[2] = packOffsetTexel(num_samples, segment_screen_length,
        //num_samples, segment_screen_length);
        //num_samples + total_padding, segment_screen_length);
diff --git 
a/source/blender/draw/engines/lanpr/shaders/lanpr_software_passthrough_vert.glsl
 
b/source/blender/draw/engines/lanpr/shaders/lanpr_software_passthrough_vert.glsl
index b2ca775be80..358c0480ec9 100644
--- 
a/source/blender/draw/engines/lanpr/shaders/lanpr_software_passthrough_vert.glsl
+++ 
b/source/blender/draw/engines/lanpr/shaders/lanpr_software_passthrough_vert.glsl
@@ -23,5 +23,5 @@ void main(){
        gType = type;
        gLevel = level;
        gNormal = normal;
-       gl_Position = vec4(vec2(p), 0, 1);
+       gl_Position = vec4(vec3(p), 1);
 }

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to