分享一个我厂 iOS 程序员写的水纹滤镜源码

2015-04-01 17:30:05 +08:00
 liuliupet

https://github.com/yangchenlarkin/GPUImageFilters
5512 次点击
所在节点    程序员
17 条回复
wzyuliyang
2015-04-01 18:35:59 +08:00
GPU?????
kepenj
2015-04-01 19:12:31 +08:00
感谢分享
sincway
2015-04-01 19:29:12 +08:00
看起来很不错的样子
PP
2015-04-01 20:42:16 +08:00
好逼真,我还以为我的屏幕出了问题。
liuliupet
2015-04-01 21:10:15 +08:00
@wzyuliyang OpenGLES
liuliupet
2015-04-01 21:12:52 +08:00
@sincway 在准备做一个哈哈镜的App
sumhat
2015-04-01 21:15:24 +08:00
目测源码里有一堆 double 型常量,你们厂只能祈祷那个程序员不要离职了....
lzsadam
2015-04-01 21:31:04 +08:00
猛一看还以为阿森纳有iOS程序员。
zhangchioulin
2015-04-01 21:40:53 +08:00
好逼真!!
sophymax
2015-04-01 22:59:45 +08:00
那用的是个什么库,GPUImage开头的那一堆?看到这个第一感觉是写的opengl shader,但打眼一看好像没shader文件,只有一堆GPUimagexxxxxx文件
ryd994
2015-04-01 23:35:31 +08:00
@sumhat 求问double常量是什么坑?
sumhat
2015-04-01 23:41:30 +08:00
@ryd994 就是形如这样的代码,摘录自楼主的 Github。一点注释都没有,后人完全没办法维护。

void main()
{
vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);
vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2);

float maskY = 0.2989 * colorToReplace.r + 0.5866 * colorToReplace.g + 0.1145 * colorToReplace.b;
float maskCr = 0.7132 * (colorToReplace.r - maskY);
float maskCb = 0.5647 * (colorToReplace.b - maskY);

float Y = 0.2989 * textureColor.r + 0.5866 * textureColor.g + 0.1145 * textureColor.b;
float Cr = 0.7132 * (textureColor.r - Y);
float Cb = 0.5647 * (textureColor.b - Y);

// float blendValue = 1.0 - smoothstep(thresholdSensitivity - smoothing, thresholdSensitivity , abs(Cr - maskCr) + abs(Cb - maskCb));
float blendValue = 1.0 - smoothstep(thresholdSensitivity, thresholdSensitivity + smoothing, distance(vec2(Cr, Cb), vec2(maskCr, maskCb)));
gl_FragColor = mix(textureColor, textureColor2, blendValue);
}
theoractice
2015-04-02 01:41:40 +08:00
liyonghelpme
2015-04-02 09:18:12 +08:00
学shader 上这个网站哈哈 有一起玩得同学没 https://www.shadertoy.com/
magicianzrh
2015-04-02 09:56:04 +08:00
kepenj
2015-04-02 13:28:13 +08:00
theoractice
2015-04-21 14:32:33 +08:00
@sumhat 那些常量是色彩空间转换公式里用到的。RGB转灰度时也会用到类似的常量。
科学家研究的结果,不需要改~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/180910

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX