我正在与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
无效。该滤镜负责模糊处理。
如果有人指出我做错了事,我将不胜感激。