iOS 滤镜特效之屏幕分裂 六屏显示

一个类似于抖音分屏特效,将视频分成六屏显示;
基于GPUImageFilter实现功能;

import "GPUImage.h"


#import "GPUImageSixScreenFilter.h"

NSString *const kGPUImageSixScreenFilterFragmentShaderString = SHADER_STRING
(
 precision highp float;
 varying vec2 textureCoordinate;
 uniform sampler2D inputImageTexture;
 
 void main()
 {
     
     highp vec2 uv = textureCoordinate;
     
/**如果是分四屏  对应参数为:
  float center1 = 0.5;
  if (uv.x <= center1) {
         uv.x = uv.x * 2.0;
     } else {
         uv.x = (uv.x - center1) * 2.0;
     } 
**/ 
     float center1 = 0.333333;
     float center2 = 0.666666;
     
     if (uv.x <= center1) {
         uv.x = uv.x * 3.0;
     } else if (uv.x <= center2) {
         uv.x = (uv.x - center1) * 3.0;
     } else {
         uv.x = (uv.x - center2) * 3.0;
     }
     
     if (uv.y <= center1) {
         uv.y = uv.y * 3.0;
     } else if (uv.y <= center2) {
         uv.y = (uv.y - center1) * 3.0;
     } else {
         uv.y = (uv.y - center2) * 3.0;
     }
     
     gl_FragColor = texture2D(inputImageTexture, uv);
 }
 );

@implementation GPUImageSixScreenFilter

- (instancetype)init
{
    self = [super initWithFragmentShaderFromString:kGPUImageSixScreenFilterFragmentShaderString];
    if (self) {
        
    }
    return self;
}

推荐阅读更多精彩内容

  • 写文章[https://www.jianshu.com/writer#/] 发现[https://www.jian...
    牛小牛啊阅读 345评论 0 3
  • 有人说, 世间万事最怕认真二字,只要专心致志,一门深入,无论做什么事,都有可能获得最高成就。 时间是宝...
    最好的小丁儿阅读 106评论 0 0
  • 离开校园已久,各种五花八门讲座,一概谢绝。 除了讲述敦煌。 从《书香敦煌》公众号上,看到本次讲座题目《敦煌艺术文化...
    花雨凤飞阅读 231评论 4 14
  • 今天在某勾招聘平台的反馈邮件中,建议我用STAR法则对简历进行修改。 之前一直在想怎样的简历才能受到招聘者的青睐,...
    皑pure阅读 824评论 0 2
  • 测验阅卷中,一位老师发现某些学生在近段时间的学习学科中出现了各种各样的低级错误。有些知识点,比如防止腐蚀标签的“腐...
    我才是不爱吃甜点的熊阅读 402评论 0 4