基于GPUImage模仿抖音灵魂出窍效果

灵魂出窍.gif

我们针对这个效果分析下实现的思路。
1.底部的视频大小没有变化。
2.上面有一个放大缩小的视频,然后带点透明度。
参看前面的实现方案基于GPUImage模仿抖音放大缩小效果 稍微改下shader就可以了。

fragmentShader实现效果如下

NSString *const kGLImageSoulOutFragmentShaderString = SHADER_STRING
(
 precision highp float;
 varying vec2 textureCoordinate;
 uniform float scale;//缩放比
 
 uniform sampler2D inputImageTexture;
 
 void main()
 {
     
     highp vec2 uv = textureCoordinate;
     
     vec4 originColor = texture2D(inputImageTexture, uv);
     //uv坐标的中心点并非是(0.0,0.0),所以这里进行一次偏移,后面在偏移回来就可以了
     vec2 center = vec2(0.5, 0.5);
     uv -= center;
     uv = uv / scale;
     uv += center;
     vec4 overlayColor = texture2D(inputImageTexture, uv);
     
     //线性混合
     vec4 color = mix(originColor,overlayColor,fract(scale)*0.2);
     gl_FragColor = color;
     
 }
 );

你可能感兴趣的:(基于GPUImage模仿抖音灵魂出窍效果)