反向

void main()
{FragColor = vec4(vec3(1.0 - texture(screenTexture, TexCoords)), 1.0);
}

灰度

均分灰度

void main()
{FragColor = texture(screenTexture, TexCoords);float average = (FragColor.r + FragColor.g + FragColor.b) / 3.0;//取所有的颜色分量,将它们平均化FragColor = vec4(average, average, average, 1.0);
}


加权灰度
人眼会对绿色更加敏感一些,而对蓝色不那么敏感

FragColor = texture(screenTexture, TexCoords);
float average = 0.2126 * FragColor.r + 0.7152 * FragColor.g + 0.0722 * FragColor.b;
FragColor = vec4(average, average, average, 1.0);

核效果

const float offset = 1.0 / 300.0;
 vec2 offsets[9] = vec2[](vec2(-offset,  offset), // 左上vec2( 0.0f,    offset), // 正上vec2( offset,  offset), // 右上vec2(-offset,  0.0f),   // 左vec2( 0.0f,    0.0f),   // 中vec2( offset,  0.0f),   // 右vec2(-offset, -offset), // 左下vec2( 0.0f,   -offset), // 正下vec2( offset, -offset)  // 右下);float kernel[9] = float[](-1, -1, -1,-1,  9, -1,-1, -1, -1);vec3 sampleTex[9];for(int i = 0; i < 9; i++){sampleTex[i] = vec3(texture(screenTexture, TexCoords.st + offsets[i]));//纹理坐标(s,t,p,q)}vec3 col = vec3(0.0);for(int i = 0; i < 9; i++)col += sampleTex[i] * kernel[i];FragColor = vec4(col, 1.0);

对一个纹理,取该纹理点的颜色值,以及八个偏移量点(向八个方向移动1/300的纹理长度,详见offsets【9】数组)的颜色值。
该纹理点的像素颜色即为 该纹理点的颜色值 * 9 - 八个方向的颜色值*1
虽然不理解为什么会变成这种效果,以及这种效果的现实意义。但确实会有不错的感官效果,且再游戏中(眩晕,辐射)等效果中有应用。

第十七课,帧缓存(后期处理)相关推荐

  1. NeHe OpenGL教程 第四十七课:CG顶点脚本

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  2. 理解OpenGL中帧缓存FrameBuffer 渲染缓存RenderingBuffer

    操作都是在默认帧缓冲的渲染缓冲上进行的.默认的帧缓冲是在你创建窗口的时候生成和配置的(GLFW帮我们做了这些). 帧缓存帮助我们离屏渲染,提高渲染速度 unsigned int captureFBO; ...

  3. Opengl编程学习笔记(五)——从FRAGMENT到PIXEL(framebuffer 帧缓存)

    1.帧缓存包括颜色.scissor.alpha.stencil.depth这些缓存,所以帧缓存不是一片缓存,而是所有这些缓存的组合,帧缓存它对应了屏幕上的每一个pixel(不是真正的pixel,而是一 ...

  4. opengles2.0 帧缓存对象(FBO)

    opengles2.0 帧缓存对象(FBO) 帧缓存对象(fbo)主要是用于做渲染到纹理. opengles2.0渲染到纹理的方法有三种: 第一,使用glCopyTexImage2D或者glCopyT ...

  5. CSharpGL(42)借助帧缓存实现渲染到纹理(RenderToTexture)

    CSharpGL(42)借助帧缓存实现渲染到纹理(RenderToTexture) 渲染到纹理(Render To Texture)是实现很多OpenGL高级效果的一个基础.本文记录了如何用CShar ...

  6. OpenGL帧缓存对象(FBO:Frame Buffer Object)(转载)

    原文地址http://www.songho.ca/opengl/gl_fbo.html 但有改动. OpenGL Frame BufferObject(FBO) Overview: 在OpenGL渲染 ...

  7. 在斜坡上哪个物体滚的最快_人教版一年级上册 第十七课 会滚的玩具

    同学们好,欢迎来到美术课堂!你们喜欢会滚的玩具吗?你们了解它们滚动的原理吗?今天我们就来一起制作会滚的玩具,一起来了解它们背后的小秘密吧! 教材展示 教案参考 01 教材分析 <会滚的玩具> ...

  8. NeHe OpenGL教程 第三十七课:卡通映射

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  9. python六十七课——网络编程(基础知识了解)

    网络编程: 什么是网络编程? 网络:它是一种隐形的媒介:可以将多台计算机使用(将它们连接到一起) 网络编程:将多台计算机之间可以相互通信了(做数据交互) 一旦涉及到网络编程,划分为两个方向存在,一方我 ...

  10. Asp.Net Web API 2第十七课——Creating an OData Endpoint in ASP.NET Web API 2(OData终结点)...

    原文:Asp.Net Web API 2第十七课--Creating an OData Endpoint in ASP.NET Web API 2(OData终结点) 前言 很久没更新博客了,加上刚过 ...

最新文章

  1. 机器学习、数据科学、人工智能、深度学习和统计学之间的区别!
  2. 基于MTCNN的人脸自动对齐技术原理及其Tensorflow实现测试
  3. 服务行为 之 并发与实例化
  4. 网页版nfc_苹果5大系统升级新特性浓缩汇总!秋季5G版iPhone稳了
  5. 葫芦全身都是宝的飞鸽传书2011
  6. mysql json字段的使用与意义
  7. hive拉链表实现方案一
  8. 好用的 curl 抓取 页面的封装函数
  9. 2022大众点评商家数据
  10. dosbox运行C语言,DosBox的基本设置和安装
  11. echarts全国各市地图坐标
  12. 【JPA/ddl-auto】关于JPA下hibernate通过设置ddl-auto完成数据库自动创建表格
  13. Aleo Wagyu钱包
  14. 免费下载数据集(转载)--大数据学习用
  15. 版本管理工具Subversion Edge的备份恢复与数据迁移方案
  16. python图书推荐系统_在线图书推荐系统的实现含源码(协同过滤)
  17. 工作流activiti
  18. BeanCurrentlyInCreationException: Error creating bean
  19. GIS算法:3_拓扑空间关系计算模型DE-9IM
  20. 00后大学生:无穷小微积分教材何在?

热门文章

  1. 【小程序专栏】第一个uniapp项目编译到微信开发者工具以及android真机运行
  2. 回文序列(水题,字符串操作)
  3. linux卸载python_linux安装和卸载python3
  4. 毕业生有1/3去了BAT,华工计算机实力如何?
  5. 手机提醒便签设置周末免打扰模式在哪里
  6. 中式红木家装,感受到高贵别致的生活品位
  7. 计算机专业对手速要求高吗,想好玩星际争霸2 需要什么配置,手速要达到多少比较好呢...
  8. HTML+CSS如何实现奔跑的小熊的动画?
  9. python绘制三维散点图(已验证)
  10. 【实战】我背着女朋友,用 Python 偷偷抓取了她的行踪