如何使用GPUImage2实现YUCIHighPassSkinSmoothing

时间:2019-07-25 18:44:31

标签: ios swift shader gpuimage

我正在与GPUImage 2一起实施YUCIHighPassSkinSmoothing。原始版本使用GPUImage编写,是在Objective-C上完成的。

目前,我使用GPUImage 2实现了所有类和着色器,但由于某种原因,它并不是流畅的视频。这是一个小的demo,展示了它的工作原理。

查看Source文件夹以查看我对该过滤器的实现。

HighPassSkinSmoothingFilter负责平滑。我认为在将所有滤镜添加到使用下一个着色器的composeFilter中是有问题的

varying highp vec2 textureCoordinate;
    varying highp vec2 textureCoordinate2;
    varying highp vec2 textureCoordinate3;

    uniform sampler2D inputImageTexture;
    uniform sampler2D inputImageTexture2;
    uniform sampler2D inputImageTexture3;

    void main() {
        highp vec4 image = texture2D(inputImageTexture, textureCoordinate);
        highp vec4 toneCurvedImage = texture2D(inputImageTexture2, textureCoordinate2);
        highp vec4 mask = texture2D(inputImageTexture3, textureCoordinate3);
        gl_FragColor = vec4(mix(image.rgb,toneCurvedImage.rgb, 1.0 - mask.b),1.0);
    }    

如您所见,它使用3个输入,这是我添加这些输入的方式:

self.configureGroup { (input, output) in
    self.dissolveFilter.activatePassthroughOnNextFrame = true
    input --> composeFilter
    input --> self.dissolveFilter
    input --> self.skinToneCurveFilter --> self.dissolveFilter --> composeFilter
    input --> exposureFilter --> self.maskGenerator --> composeFilter

    composeFilter --> self.sharpenFilter --> output
}

由于某些原因,maskGenerator无效。该滤镜负责模糊处理。

如果有人指出我做错了事,我将不胜感激。

0 个答案:

没有答案