• glsl boom


    原理:

    1.渲染场景到fbo

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

    3.对两张图进行叠加

    模糊后的

    效果就这样

    给数据加大

    <-vertex->
    
      #version 120
    
      varying vec2 uv;
    
      void main(void)
      {
    
      uv = gl_MultiTexCoord0.st;
      gl_Position = ftransform();
      }
    
    
    
    
    
    
    <-fragment->
    
    
      #version 120
    
      uniform sampler2D RTBlur;
      uniform float  rt_w;
      uniform float  rt_h;
      uniform int blurType;
    
      varying vec2 uv;
    
      const int g_iFilterTime = 9; // 过滤次数
      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))); // 衰减因子
    
      void main(void)
      {
    
      float aryAttenuation[g_iFilterTime];
      aryAttenuation[0] = 0.93;
      aryAttenuation[1] = 0.8;
      aryAttenuation[2] = 0.7;
      aryAttenuation[3] = 0.6;
      aryAttenuation[4] = 0.5;
      aryAttenuation[5] = 0.4;
      aryAttenuation[6] = 0.3;
      aryAttenuation[7] = 0.2;
      aryAttenuation[8] = 0.1;
    
      vec4 sum =  texture2D(RTBlur, uv)*g_fGene;
      float blurStep =0.01;
    
    
      if(1 == blurType)
      {
      // blur in y (vertical)
    
    
      blurStep = 1.0 / rt_h;
      vec2 vec2Step =vec2(0,blurStep);
      for(int i = 0; i < g_iFilterTime; ++i)
        {
        sum += texture2D(RTBlur, uv + vec2Step)*aryAttenuation[i]*g_fGene;
        sum += texture2D(RTBlur, uv - vec2Step)*aryAttenuation[i]*g_fGene;
        vec2Step += vec2(0,blurStep);
        }
      
      }
      else
      {
        // blur in y (vertical)
      
       
       blurStep = 1.0 / rt_w;
       
        vec2 vec2Step =vec2(blurStep,0);
       for(int i = 0; i < g_iFilterTime; ++i)
        {
        sum += texture2D(RTBlur, uv + vec2Step)*aryAttenuation[i]*g_fGene;
        sum += texture2D(RTBlur, uv - vec2Step)*aryAttenuation[i]*g_fGene;
        vec2Step += vec2(blurStep,0);
        }
      
      
      }
       
     
       gl_FragColor = sum;
    }

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

  • 相关阅读:
    js实现点击图片 弹出放大效果
    Linux 命令
    前台input输入框,输入内容并同步增加输入框长度
    Git
    Git 常用命令
    Windows环境git执行git add命令warning: ....
    Tomcat配置https、访问http自动跳转至https
    An internal error occurred during: "Importing Maven projects". Unsupported IClasspathEntry kind=4
    自定义滚动条mCustomScrollbar
    本地项目,发布至服务器
  • 原文地址:https://www.cnblogs.com/dragon2012/p/5774636.html
Copyright © 2020-2023  润新知