Commit: 1f1da268402f241d83417ea0cc04ef74d0f9097f Author: mano-wii Date: Tue Oct 16 23:03:38 2018 +0200 Branches: blender2.8 https://developer.blender.org/rB1f1da268402f241d83417ea0cc04ef74d0f9097f
Edit Mesh Overlay Geometry Shader: Ignore correction geometry for loops that are not part of an edge. By the tests I could only observe a considerable difference in the peformanse when the vertex size is 30. Vertice 3 showed no difference in a suzzane with subdivision modifier level 3 + show-on-cage. Point Size 30: 7.29ms vs 2.55ms Reviewers: fclem Reviewed By: fclem Differential Revision: https://developer.blender.org/D3805 =================================================================== M release/scripts/addons M source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl =================================================================== diff --git a/release/scripts/addons b/release/scripts/addons index 2d1a067b12a..5f7fba0565a 160000 --- a/release/scripts/addons +++ b/release/scripts/addons @@ -1 +1 @@ -Subproject commit 2d1a067b12aa1c43e7935c09e424808ec78dccb2 +Subproject commit 5f7fba0565a7c9ae93eae31a08fc9bbbd16d333a diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl index a2f91381d57..6523d0d3898 100644 --- a/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl +++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl @@ -179,28 +179,37 @@ void main() /* Remember that we are assuming the last vertex * of a triangle is the provoking vertex (decide what flat attribs are). */ - /* Do 0 -> 1 edge strip */ - faceColor = vec4(fcol.rgb, 0.0); - mask_edge_flag(0, eflag); - doVertexOfs(0, fixvec[0]); - doVertexOfs(1, fixvecaf[0]); + if ((eflag[2] & EDGE_EXISTS) != 0) { + /* Do 0 -> 1 edge strip */ + faceColor = vec4(fcol.rgb, 0.0); + mask_edge_flag(0, eflag); + doVertexOfs(0, fixvec[0]); + doVertexOfs(1, fixvecaf[0]); + } doVertex(0); doVertex(1); + /* Do face triangle */ faceColor = fcol; flag = eflag; doVertex(2); faceColor.a = 0.0; /* to not let face color bleed */ - /* Do 1 -> 2 edge strip */ - mask_edge_flag(1, eflag); - doVertexOfs(1, fixvec[1]); - doVertexOfs(2, fixvecaf[1]); - EndPrimitive(); - /* Do 2 -> 0 edge strip */ - mask_edge_flag(2, eflag); - doVertex(2); - doVertex(0); - doVertexOfs(2, fixvec[2]); - doVertexOfs(0, fixvecaf[2]); + + if ((eflag[0] & EDGE_EXISTS) != 0) { + /* Do 1 -> 2 edge strip */ + mask_edge_flag(1, eflag); + doVertexOfs(1, fixvec[1]); + doVertexOfs(2, fixvecaf[1]); + } EndPrimitive(); + + if ((eflag[1] & EDGE_EXISTS) != 0) { + /* Do 2 -> 0 edge strip */ + mask_edge_flag(2, eflag); + doVertex(2); + doVertex(0); + doVertexOfs(2, fixvec[2]); + doVertexOfs(0, fixvecaf[2]); + EndPrimitive(); + } } _______________________________________________ Bf-blender-cvs mailing list [email protected] https://lists.blender.org/mailman/listinfo/bf-blender-cvs
