forked from organicmaps/organicmaps
[drape] line shader optimization
This commit is contained in:
parent
8d76e8fee4
commit
e3d23660d2
1 changed files with 10 additions and 16 deletions
|
@ -17,29 +17,23 @@ varying vec3 v_mask;
|
|||
|
||||
void main(void)
|
||||
{
|
||||
float r = v_radius.y;
|
||||
float dist = abs(v_radius.x);
|
||||
float squareDist = v_radius.x * v_radius.x;
|
||||
float squareRadius = v_radius.y * v_radius.y;
|
||||
|
||||
float capY = (v_dx + 1.0 * sign(v_dx)) * v_radius.z / 2.0;
|
||||
float joinY = (v_dx + 1.0) * v_radius.y / 2.0;
|
||||
|
||||
if (v_type.x < -0.5)
|
||||
{
|
||||
float y = (v_dx + 1.0) * v_radius.y / 2.0;
|
||||
float y = joinY;
|
||||
if (v_type.y < 0.5)
|
||||
y = v_radius.y - (v_dx + 1.0) * v_radius.y / 2.0;
|
||||
y = v_radius.y - joinY;
|
||||
|
||||
float sq = dist * dist + y * y;
|
||||
if (sq >= v_radius.y * v_radius.y)
|
||||
if (squareDist + y * y > squareRadius)
|
||||
discard;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (v_type.y > 0.1 && abs(v_dx) >= 1.0)
|
||||
{
|
||||
float y = (v_dx + 1.0 * sign(v_dx)) * v_radius.z / 2.0;
|
||||
float gip2 = dist * dist + y * y;
|
||||
if(gip2 > v_radius.y * v_radius.y)
|
||||
discard;
|
||||
}
|
||||
}
|
||||
else if (v_type.y > 0.1 && abs(v_dx) >= 1.0 && (squareDist + capY > squareRadius))
|
||||
discard;
|
||||
|
||||
vec4 color = getTexel(int(v_color.z), v_color.xy);
|
||||
color.a = getTexel(int(v_mask.z), v_mask.xy).a;
|
||||
|
|
Loading…
Add table
Reference in a new issue