美文网首页
瘦脸shader

瘦脸shader

作者: 七维树 | 来源:发表于2018-03-01 16:25 被阅读176次

局部平移算法,参数解释:

 uniform highp float radius;
半径越大受影响的点越多,也就是从脸的边缘受影响的区域越大
 uniform highp float aspectRatio;
宽高比
 uniform float leftContourPoints[MAX];
 uniform float rightContourPoints[MAX];
左右两边的参考点数组,长度要相同
 uniform float deltaArray[MAX];
每个参考点移动的距离数组,长度和参考点相同
 uniform int arraySize;
数组长度
 precision highp float;

 varying highp vec2 textureCoordinate;
 uniform sampler2D inputImageTexture;

 uniform highp float radius;

 uniform highp float aspectRatio;

 uniform float leftContourPoints[MAX_CONTOUR_POINT_COUNT*2];
 uniform float rightContourPoints[MAX_CONTOUR_POINT_COUNT*2];
 uniform float deltaArray[MAX_CONTOUR_POINT_COUNT];
 uniform int arraySize;

 highp vec2 warpPositionToUse(vec2 currentPoint, vec2 contourPointA,  vec2 contourPointB, float radius, float delta, float aspectRatio)
 {
     vec2 positionToUse = currentPoint;

     vec2 currentPointToUse = vec2(currentPoint.x, currentPoint.y * aspectRatio + 0.5 - 0.5 * aspectRatio);
     vec2 contourPointAToUse = vec2(contourPointA.x, contourPointA.y * aspectRatio + 0.5 - 0.5 * aspectRatio);

     float r = distance(currentPointToUse, contourPointAToUse);
     if(r < radius)
     {
         vec2 dir = normalize(contourPointB - contourPointA);
         float dist = radius * radius - r * r;
         float alpha = dist / (dist + (r-delta) * (r-delta));
         alpha = alpha * alpha;

         positionToUse = positionToUse - alpha * delta * dir;

     }

     return positionToUse;

 }


 void main()
 {
     vec2 positionToUse = textureCoordinate;

     for(int i = 0; i < arraySize; i++)
     {

         positionToUse = warpPositionToUse(positionToUse, vec2(leftContourPoints[i * 2], leftContourPoints[i * 2 + 1]), vec2(rightContourPoints[i * 2], rightContourPoints[i * 2 + 1]), radius, deltaArray[i], aspectRatio);
         positionToUse = warpPositionToUse(positionToUse, vec2(rightContourPoints[i * 2], rightContourPoints[i * 2 + 1]), vec2(leftContourPoints[i * 2], leftContourPoints[i * 2 + 1]), radius, deltaArray[i], aspectRatio);
     }

     gl_FragColor = texture2D(inputImageTexture, positionToUse);

 }

相关文章

  • 瘦脸shader

    局部平移算法,参数解释:

  • 瘦脸,瘦脸,瘦脸就美吗

    当下,谁都爱美。美是人之所向。 什么是美,似乎没有什么标准。美女们却以瘦来称美。 为此,整形医院纷纷崛起,而且人流...

  • 5个不花钱的小技巧,让你轻松瘦脸!

    在这个瓜子脸称王的时代,瘦脸成了人们日常搜索的关键词。当然瘦脸方法很多,饮食瘦脸、运动瘦脸、瘦脸果瘦脸,下面子牙给...

  • 应妹子要求,上瘦脸对比照,速看,回头删除奥。

    瘦脸前 瘦脸后

  • 瘦脸

  • 瘦脸

    周四我们成长队的小伙伴们继续一起探索,这次换了一个新的方式,邀请了国家二级心理咨询师澄澄老师,玩了OH卡的主卡和青...

  • 瘦脸

    一. 脸部发胖的因素 1.脂肪:面部脂肪过多,过少运动,容易胖脸。 2.面部骨骼:“大骨骼”、“大脸庞”无法改变大...

  • 瘦脸

    【一个穴位,轻松瘦脸】脸瘦不瘦与我们的【胃经】是否通畅有一定关系,而【颊车穴】是胃经上非常重要穴位,经常按摩此穴,...

  • 怎么才能瘦脸?黑胡椒精油的瘦脸功效

    怎么才能瘦脸?自从瓜子脸成为时代的审美标准后,怎么才能瘦脸、怎样瘦脸最快、怎样瘦脸最简单就成了搜索的关键词。瘦脸方...

  • 吃什么水果瘦脸最快?

    ** 吃番茄瘦脸吗?** ** 吃木瓜瘦脸吗?** ** 吃柠檬瘦脸吗?** ** 吃葡萄...

网友评论

      本文标题:瘦脸shader

      本文链接:https://www.haomeiwen.com/subject/wdtnxftx.html