使用OpenGL ES简单实现一个特效

玩抖音的时候,刷到一个抖音红发GET特效,感觉实现起来应该不太难。
在这里插入图片描述
于是小试牛刀。以刷到的一个视频一帧为原图
在这里插入图片描述

抖音红发GET特效拍出来的效果为

在这里插入图片描述

我实现的效果为:
在这里插入图片描述

基于Android平台,以OpenGL ES为工具,开发了一个滤镜相机。红发get特效实现的核心shader源码为

precision mediump float;

uniform vec3                iResolution;
uniform float               iGlobalTime;
uniform sampler2D           iChannel0;
varying vec2                texCoord;

float luminanceRatio = 1.0;


void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    vec2 uv = fragCoord.xy;

    vec3 tex = texture2D( iChannel0, uv ).rgb;
    float shade = dot(tex, vec3(luminanceRatio));

    vec3 col = mix(vec3(0.5, 0.4, 0.2) * (1.0-2.0*abs(shade-0.5)), 
    vec3(1.5, 0.2, 0.1), 1.0-shade);

    fragColor = vec4(col,1.0);
}

void main() {
    mainImage(gl_FragColor, texCoord);
}

这只是一个简单粗略的模仿。大家可以稍微了解下shader语法,然后再逐行研究下以上源码。可以看到基本的shader操作和图像处理,并没有想象的那么难。

大家看到还有什么好玩的特效,可以评论区发出来,一起研究下怎么实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值