diff options
Diffstat (limited to 'source/blender/draw/modes/shaders/edit_mesh_overlay_vert.glsl')
-rw-r--r-- | source/blender/draw/modes/shaders/edit_mesh_overlay_vert.glsl | 82 |
1 files changed, 40 insertions, 42 deletions
diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_vert.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_vert.glsl index c43ae6073c6..8c54470cd5a 100644 --- a/source/blender/draw/modes/shaders/edit_mesh_overlay_vert.glsl +++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_vert.glsl @@ -26,75 +26,73 @@ out int selectOveride; void main() { #if !defined(FACE) - mat4 projmat = ProjectionMatrix; - projmat[3][2] -= ofs; + mat4 projmat = ProjectionMatrix; + projmat[3][2] -= ofs; - gl_Position = projmat * (ModelViewMatrix * vec4(pos, 1.0)); + gl_Position = projmat * (ModelViewMatrix * vec4(pos, 1.0)); #else - gl_Position = ModelViewProjectionMatrix * vec4(pos, 1.0); + gl_Position = ModelViewProjectionMatrix * vec4(pos, 1.0); #endif - ivec4 m_data = data & dataMask; + ivec4 m_data = data & dataMask; #if defined(VERT) - finalColor = EDIT_MESH_vertex_color(m_data.y); - gl_PointSize = sizeVertex * 2.0; - gl_Position.z -= 3e-5 * ((ProjectionMatrix[3][3] == 0.0) ? 1.0 : 0.0); - /* Make selected and active vertex always on top. */ - if ((data.x & VERT_SELECTED) != 0) { - gl_Position.z -= 1e-7; - } - if ((data.x & VERT_ACTIVE) != 0) { - gl_Position.z -= 1e-7; - } + finalColor = EDIT_MESH_vertex_color(m_data.y); + gl_PointSize = sizeVertex * 2.0; + gl_Position.z -= 3e-5 * ((ProjectionMatrix[3][3] == 0.0) ? 1.0 : 0.0); + /* Make selected and active vertex always on top. */ + if ((data.x & VERT_SELECTED) != 0) { + gl_Position.z -= 1e-7; + } + if ((data.x & VERT_ACTIVE) != 0) { + gl_Position.z -= 1e-7; + } #elif defined(EDGE) # ifdef FLAT - finalColor = EDIT_MESH_edge_color_inner(m_data.y); - selectOveride = 1; + finalColor = EDIT_MESH_edge_color_inner(m_data.y); + selectOveride = 1; # else - finalColor = EDIT_MESH_edge_vertex_color(m_data.y); - selectOveride = (m_data.y & EDGE_SELECTED); + finalColor = EDIT_MESH_edge_vertex_color(m_data.y); + selectOveride = (m_data.y & EDGE_SELECTED); # endif - float crease = float(m_data.z) / 255.0; - float bweight = float(m_data.w) / 255.0; - finalColorOuter = EDIT_MESH_edge_color_outer(m_data.y, m_data.x, crease, bweight); + float crease = float(m_data.z) / 255.0; + float bweight = float(m_data.w) / 255.0; + finalColorOuter = EDIT_MESH_edge_color_outer(m_data.y, m_data.x, crease, bweight); #elif defined(FACE) - finalColor = EDIT_MESH_face_color(m_data.x); - finalColor.a *= faceAlphaMod; + finalColor = EDIT_MESH_face_color(m_data.x); + finalColor.a *= faceAlphaMod; #elif defined(FACEDOT) - finalColor = EDIT_MESH_facedot_color(norAndFlag.w); - /* Bias Facedot Z position in clipspace. */ - gl_Position.z -= 0.00035; - gl_PointSize = sizeFaceDot; + finalColor = EDIT_MESH_facedot_color(norAndFlag.w); + /* Bias Facedot Z position in clipspace. */ + gl_Position.z -= 0.00035; + gl_PointSize = sizeFaceDot; #endif #if !defined(FACE) && !defined(EDGE_DECORATION) - /* Facing based color blend */ - vec4 vpos = ModelViewMatrix * vec4(pos, 1.0); - vec3 view_normal = normalize(NormalMatrix * vnor + 1e-4); - vec3 view_vec = (ProjectionMatrix[3][3] == 0.0) ? - normalize(vpos.xyz) : - vec3(0.0, 0.0, 1.0); - float facing = dot(view_vec, view_normal); - facing = 1.0 - abs(facing) * 0.3; - - finalColor = mix(colorEditMeshMiddle, finalColor, facing); - finalColor.a = 1.0; + /* Facing based color blend */ + vec4 vpos = ModelViewMatrix * vec4(pos, 1.0); + vec3 view_normal = normalize(NormalMatrix * vnor + 1e-4); + vec3 view_vec = (ProjectionMatrix[3][3] == 0.0) ? normalize(vpos.xyz) : vec3(0.0, 0.0, 1.0); + float facing = dot(view_vec, view_normal); + facing = 1.0 - abs(facing) * 0.3; + + finalColor = mix(colorEditMeshMiddle, finalColor, facing); + finalColor.a = 1.0; # if defined(EDGE) && !defined(FLAT) - /* Hack to blend color in pixel shader in case of overide. */ - finalColor.a = facing; + /* Hack to blend color in pixel shader in case of overide. */ + finalColor.a = facing; # endif #endif #ifdef USE_WORLD_CLIP_PLANES - world_clip_planes_calc_clip_distance((ModelMatrix * vec4(pos, 1.0)).xyz); + world_clip_planes_calc_clip_distance((ModelMatrix * vec4(pos, 1.0)).xyz); #endif } |