Advertisement
Guest User

bufferA_bge

a guest
Apr 6th, 2019
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.14 KB | None | 0 0
  1.  
  2.  
  3. uniform float bgl_RenderedTextureWidth;
  4. uniform float bgl_RenderedTextureHeight;
  5. uniform sampler2D bgl_RenderedTexture;
  6. //render attachment bloom disabled
  7. //uniform sampler2D bgl_DataTextures[7];
  8. uniform sampler2D iChannel0;
  9. //REplaced bge_RenderedTexture with this^^^
  10.  
  11.  
  12. vec2 iResolution = vec2(bgl_RenderedTextureWidth, bgl_RenderedTextureHeight); // viewport resolution (in pixels)
  13.  
  14. vec3 makeBloom(float lod, vec2 offset, vec2 bCoord){
  15.    
  16.     vec2 pixelSize = 1.0 / vec2(iResolution.x, iResolution.y);
  17.  
  18.     offset += pixelSize;
  19.  
  20.     float lodFactor = exp2(lod);
  21.  
  22.     vec3 bloom = vec3(0.0);
  23.     vec3 bloom2 = vec3(0.0);
  24.    
  25.     vec2 scale = lodFactor * pixelSize;
  26.  
  27.     vec2 coord = (bCoord.xy-offset)*lodFactor;
  28.     float totalWeight = 0.0;
  29.  
  30.     if (any(greaterThanEqual(abs(coord - 0.5), scale + 0.5)))
  31.         return vec3(0.0);
  32.  
  33.     for (int i = -5; i < 5; i++) {
  34.         for (int j = -5; j < 5; j++) {
  35.  
  36.             float wg = pow(1.0-length(vec2(i,j)) * 0.125,6.0);
  37.  
  38.             bloom = pow(texture(iChannel0,gl_FragCoord.xy/ iResolution.xy).rgb,vec3(2.2))*wg + bloom;
  39.             //New bloom falloff has instant FX but tapers off over time
  40.             bloom = bloom* .99975;
  41.             bloom = bloom*63;
  42.            
  43.             bloom2 =  pow(texture(bgl_RenderedTexture,vec2(i,j) * scale + lodFactor * pixelSize + coord, lod).rgb,vec3(2.2))*wg + bloom2;
  44.            
  45.            
  46.             bloom = vec3(bloom[0]+bloom2[0],bloom[1]+bloom2[1],bloom[2]+bloom2[2]);
  47.             bloom = bloom /64;
  48.             totalWeight += wg;
  49.  
  50.         }
  51.     }
  52.  
  53.     bloom /= totalWeight;
  54.  
  55.     return bloom;
  56. }
  57.  
  58. void mainImage( out vec4 fragColor, in vec2 fragCoord )
  59. {
  60.     vec2 uv = fragCoord / iResolution.xy;
  61.    
  62.     vec3 blur = makeBloom(2.,vec2(0.0,0.0), uv);
  63.         blur += makeBloom(3.,vec2(0.3,0.0), uv);
  64.         blur += makeBloom(4.,vec2(0.0,0.3), uv);
  65.         blur += makeBloom(5.,vec2(0.1,0.3), uv);
  66.         blur += makeBloom(6.,vec2(0.2,0.3), uv);
  67.  
  68.     fragColor = vec4(pow(blur, vec3(1.0 / 2.2)),1.0);
  69. }
  70.  
  71. void main() {
  72.     vec4 color = vec4(0.0, 0.0, 0.0, 1.0);
  73.     mainImage(color, gl_FragCoord.xy);
  74.  
  75.     gl_FragColor = color;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement