原理:

1.渲染场景到fbo

2.对fbo进行高斯横向,纵向模糊,到新的fbo

3.对两张图进行叠加

模糊后的

效果就这样

给数据加大

  1. <-vertex->
  2.  
  3. #version
  4.  
  5. varying vec2 uv;
  6.  
  7. void main(void)
  8. {
  9.  
  10. uv = gl_MultiTexCoord0.st;
  11. gl_Position = ftransform();
  12. }
  13.  
  14. <-fragment->
  15.  
  16. #version
  17.  
  18. uniform sampler2D RTBlur;
  19. uniform float rt_w;
  20. uniform float rt_h;
  21. uniform int blurType;
  22.  
  23. varying vec2 uv;
  24.  
  25. const int g_iFilterTime = ; // 过滤次数
  26. const float g_fGene = (1.0/(1.0 + 2.0*(0.93 + 0.8 + 0.7 + 0.6 + 0.5 + 0.4 + 0.3 + 0.2 + 0.1))); // 衰减因子
  27.  
  28. void main(void)
  29. {
  30.  
  31. float aryAttenuation[g_iFilterTime];
  32. aryAttenuation[] = 0.93;
  33. aryAttenuation[] = 0.8;
  34. aryAttenuation[] = 0.7;
  35. aryAttenuation[] = 0.6;
  36. aryAttenuation[] = 0.5;
  37. aryAttenuation[] = 0.4;
  38. aryAttenuation[] = 0.3;
  39. aryAttenuation[] = 0.2;
  40. aryAttenuation[] = 0.1;
  41.  
  42. vec4 sum = texture2D(RTBlur, uv)*g_fGene;
  43. float blurStep =0.01;
  44.  
  45. if( == blurType)
  46. {
  47. // blur in y (vertical)
  48.  
  49. blurStep = 1.0 / rt_h;
  50. vec2 vec2Step =vec2(,blurStep);
  51. for(int i = ; i < g_iFilterTime; ++i)
  52. {
  53. sum += texture2D(RTBlur, uv + vec2Step)*aryAttenuation[i]*g_fGene;
  54. sum += texture2D(RTBlur, uv - vec2Step)*aryAttenuation[i]*g_fGene;
  55. vec2Step += vec2(,blurStep);
  56. }
  57.  
  58. }
  59. else
  60. {
  61. // blur in y (vertical)
  62.  
  63. blurStep = 1.0 / rt_w;
  64.  
  65. vec2 vec2Step =vec2(blurStep,);
  66. for(int i = ; i < g_iFilterTime; ++i)
  67. {
  68. sum += texture2D(RTBlur, uv + vec2Step)*aryAttenuation[i]*g_fGene;
  69. sum += texture2D(RTBlur, uv - vec2Step)*aryAttenuation[i]*g_fGene;
  70. vec2Step += vec2(blurStep,);
  71. }
  72.  
  73. }
  74.  
  75. gl_FragColor = sum;
  76. }

应该把需要发光的物体绘制boom,然后融合,这样才行,框架又得改。。。

glsl boom的更多相关文章

  1. 使用Visual Studio SDK制作GLSL词法着色插件

    使用Visual Studio SDK制作GLSL词法着色插件 我们在Visual Studio上开发OpenGL ES项目时,避免不了写Shader.这时在vs里直接编辑shader就会显得很方便. ...

  2. 基于虎书实现LALR(1)分析并生成GLSL编译器前端代码(C#)

    基于虎书实现LALR(1)分析并生成GLSL编译器前端代码(C#) 为了完美解析GLSL源码,获取其中的信息(都有哪些in/out/uniform等),我决定做个GLSL编译器的前端(以后简称编译器或 ...

  3. CSharpGL(39)GLSL光照示例:鼠标拖动太阳(光源)观察平行光的漫反射和镜面反射效果

    CSharpGL(39)GLSL光照示例:鼠标拖动太阳(光源)观察平行光的漫反射和镜面反射效果 开始 一图抵千言.首先来看鼠标拖动太阳(光源)的情形. 然后是鼠标拖拽旋转模型的情形. 然后我们移动摄像 ...

  4. CSharpGL(15)用GLSL渲染2种类型的文字

    CSharpGL(15)用GLSL渲染2种类型的文字 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码中包含10多个独立的Demo,更适合 ...

  5. CSharpGL(13)用GLSL实现点光源(point light)和平行光源(directional light)的漫反射(diffuse reflection)

    CSharpGL(13)用GLSL实现点光源(point light)和平行光源(directional light)的漫反射(diffuse reflection) 2016-08-13 由于CSh ...

  6. CSharpGL(11)用C#直接编写GLSL程序

    CSharpGL(11)用C#直接编写GLSL程序 +BIT祝威+悄悄在此留下版了个权的信息说: 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharp ...

  7. 【BOOM】一款有趣的Javascript动画效果

    实践出真知,有的时候看到一些有趣的现象就想着用自己所学的知识复现一下.    boomJS 缘起 前几天在 github 上看到同事的一个这样的小项目,在 IOS 上实现了这样一个小动画效果,看上去蛮 ...

  8. C#+OpenGL+FreeType显示3D文字(2) - 用GLSL+VBO绘制文字

    C#+OpenGL+FreeType显示3D文字(2) - 用GLSL+VBO绘制文字 +BIT祝威+悄悄在此留下版了个权的信息说: 上一篇得到了字形贴图及其位置字典(可导出为XML).本篇就利用此贴 ...

  9. OpenGL 4.5 Core Profile管线(GLSL与应用程序接口详解)【未完成】

    之前写过一篇博客,OpenGL管线(用经典管线代说着色器内部),说的主要是OpenGL的经典管线.大家都知道,现代OpenGL已经弃用(从OpenGL 3.0开始)经典管线功能(glBegin,变换矩 ...

随机推荐

  1. 如何在Oracle中一次执行多条sql语句 (.net C#)

    关键是不能换行,要加上begin ...sql... end;     每个SQL用:隔开,end后面必须加: 以下是拷贝于:http://www.cnblogs.com/teamleader/arc ...

  2. Lintcode: Minimum Subarray 解题报告

    Minimum Subarray 原题链接: http://lintcode.com/zh-cn/problem/minimum-subarray/# Given an array of intege ...

  3. mysql性能优化(一)

    随着项目的上线,关注开始关注服务器的运维和优化,其中后端数据库状态查看和参数调优是比不可少的一步,可能用到的两个小工具: mysqltuner.pl tuning-primer.sh 参考: [1] ...

  4. IE11 不能正常方法网页

    由于将IE11升级到了 11 之前的网站无法正常使用, 如果是开发人员碰到之问题,使用了微软的asp.net 控件,那么将服务器的.net framework 升级到 4.5 http://www.m ...

  5. DIV+CSS兼容解决DIV最大宽度和最小宽度问题

    在制作网页中,我们经常会碰到min/max-width,min/max-height在IE6底下是无效的,这也是web设计师最头疼的问题之一,以下的方法可以解决这些难题,并且比较简约.当然,如果你还有 ...

  6. MVC LinqToSql Json DbComparisonExpression 需要具有可比较类型的参数。

    需求是:使用post方式传入Controller一个id,然后返回给前台一个Json.突然就报了这个错误,折腾了俩小时, 发现是linq to sql 的语法错了

  7. 修改zerolog使log输出的文件名可以在goland里自动定位--技巧

    如何自动定位文件 最近发现goland会自动识别输出的文件或者url,但是有时候又识别不出来,折腾了一下,发现原来要求文件路径或url两边要有空格 改造zerolog 既然如此,那么让我们来改造一下z ...

  8. InstallShield Build错误:Internal build error 6041

    点击左侧菜单: Media-Release-选择release版本(例如Release1)-Build标签-   keey unused directories 改为no(默认为yes)

  9. CAS (7) —— Mac下配置CAS 4.x的JPATicketRegistry(服务端)

    CAS (7) -- Mac下配置CAS 4.x集群及JPATicketRegistry(服务端) tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 cas版本: ...

  10. Spring Cloud / Spring Boot There was an unexpected error (type=Unauthorized, status=401). Full authentication is required to access this resource.

    访问EndPoint时会出现没有权限   There was an unexpected error (type=Unauthorized, status=401). Full authenticat ...