opengl gpuimage 对yuv数据模糊处理

猿说编程 2017-03-01 04:11:00
void main()
{
vec4 textureColor;
vec4 outColor;
vec4 U;
vec4 V;

if(PixFormat == 1000.0f)
{
//RGB32
textureColor = vec4(texture2D(textureUniformRGBA,textureCoordinate));
textureColor.a = textureColor.a*RGB_Alpha;
}
else
{
//YUV420 TO RGB32
textureColor = vec4((texture2D(textureUniformY, textureCoordinate).r - 16./255.) * 1.164);
U = vec4(texture2D(textureUniformU, textureCoordinate).r - 128./255.);
V = vec4(texture2D(textureUniformV, textureCoordinate).r - 128./255.);
textureColor += V * vec4(1.596, -0.813, 0, 0);
textureColor += U * vec4(0, -0.392, 2.017, 0);
textureColor.a = RGB_Alpha;
}
if(1 == dark)
{
float brightness = 0.45f;
//模糊


vec2 firstOffset = vec2(1.3846153846 * texelWidthOffset, 1.3846153846 * texelHeightOffset) * blurSize;
vec2 secondOffset = vec2(3.2307692308 * texelWidthOffset, 3.2307692308 * texelHeightOffset) * blurSize;

centerTextureCoordinate = textureCoordinate;
oneStepLeftTextureCoordinate = textureCoordinate - firstOffset;
twoStepsLeftTextureCoordinate = textureCoordinate - secondOffset;
oneStepRightTextureCoordinate = textureCoordinate + firstOffset;
twoStepsRightTextureCoordinate = textureCoordinate + secondOffset;

vec4 fragmentColor = texture2D(textureUniformRGBA, centerTextureCoordinate) * 0.2270270270;
fragmentColor += texture2D(textureUniformRGBA, oneStepLeftTextureCoordinate) * 0.3162162162;
fragmentColor += texture2D(textureUniformRGBA, oneStepRightTextureCoordinate) * 0.3162162162;
fragmentColor += texture2D(textureUniformRGBA, twoStepsLeftTextureCoordinate) * 0.0702702703;/
fragmentColor += texture2D(textureUniformRGBA, twoStepsRightTextureCoordinate) * 0.0702702703;

//加暗
textureColor = vec4((fragmentColor.rgb * vec3(brightness)), fragmentColor.a);
//最后画面
gl_FragColor = textureColor;

}



目前的问题就是:如果输入数据是rgb32的话,使用这个脚本正常,如果输入数据是yuv的话,没办法使用这个脚本做模糊处理,主要是不知道yuv转换后的textureColor ,怎么做模糊的那部分处理,能直接在这个脚本上修改吗?


我现在的做法的:如果输入数据是yuv,我先转为rgb32后,在作为参数传入到shader脚本,如果是1080P的视频,我每帧画面都需要先转换为rgb32后在使用opengl 绘制,效率低了点。
...全文
1064 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzw88486969 2017-12-13
  • 打赏
  • 举报
回复
自己解决了,是怎么解决的呢,,,把分给你自己了?
猿说编程 2017-03-30
  • 打赏
  • 举报
回复
自己已经解决
rightorwrong 2017-03-02
  • 打赏
  • 举报
回复
opengl能处理yuv吗 或者看能不能找到需要处理的yuv数据
源码下载地址: https://pan.quark.cn/s/40677b766bda "ContextCapture 倾斜摄影快速、创新及全面空三建模与单机集群硬件部署方案2018" 此资源聚焦于倾斜摄影(ContextCapture)空三建模及单机集群硬件部署方案,致力于为用户呈现最快、最优成本效益的台式工作站、移动工作站、并行集群的多样化部署选择。以下是该资源的详细知识点概述: 一、相关设备型号说明 * UltraLAB 是西安坤隆计算机科技有限公司推出的专属图形工作站品牌,具备三大卓越优势:顶尖的计算硬件架构、精准的行业应用定制服务、专业的硬件系统优化工艺。 二、硬件部署方案 * 台式工作站部署建议:设备特色在于当前市场上最快的台式计算架构,适用于办公场景下,部门层级常规的倾斜摄影空三处理、三维建模。 * 便携式工作站部署建议:设备特色在于当前市场上最快的移动计算架构,适用于移动倾斜摄影的空三处理、三维建模工作站。 * 大数据处理工作站推荐:设备特色在于极限自动超频加速与16个并行存储构造,具备空三处理和三维建模最强的计算性能及海量高速并行存储性能。 * 多设备并行计算集群部署建议:针对海量图像数据计算产生的巨大需求,单机计算能力处理时间过长,效率不高,通过多台机器并行集群,进行空三处理、三维建模,显著减少处理时间。 三、部署方案深入解析 * 2.1 倾斜摄影建模(台式工作站)部署方案:设备特色在于最高的计算处理能力~6核5.2GHz,内存最大配置可达64GB,配备最新图灵架构的RTX显卡,相比市场其他品牌机器(单CPU、双Xeon处理器)更快、更具成本效益。 * 2.2 倾斜摄影建模(移动便携式工作站)硬件部署方案:设备特色在于最高的计算处理能力~6...

2,554

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧