diff options
Diffstat (limited to 'KaplaDemo/externalIP/resources/shaders/bloomV_fs.cpp')
| -rw-r--r-- | KaplaDemo/externalIP/resources/shaders/bloomV_fs.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/KaplaDemo/externalIP/resources/shaders/bloomV_fs.cpp b/KaplaDemo/externalIP/resources/shaders/bloomV_fs.cpp new file mode 100644 index 00000000..05f858e3 --- /dev/null +++ b/KaplaDemo/externalIP/resources/shaders/bloomV_fs.cpp @@ -0,0 +1,30 @@ + uniform sampler2D colorTex; + uniform sampler2D blurTex; + uniform float sy; + + void main (void) + { + const float hdrScale = 1.5; + const int kernelSize = 10; + const float invScale = 1.0 / (hdrScale * float(kernelSize) * 100.0); + + vec3 colorP = texture2D(colorTex, gl_TexCoord[0]).rgb; + vec3 bloom = vec3(0.0, 0.0, 0.0); + + for (int y = -kernelSize; y <= kernelSize; y++) + { + float s = gl_TexCoord[0].s; + float t = gl_TexCoord[0].t + y * sy; + vec3 color = texture2D(blurTex, vec2(s,t)).rgb; + float luminance = dot(color, vec3(0.2125, 0.7154, 0.0721)); + if (luminance > 1.0) + { + bloom += color * ((kernelSize+1) - abs(float(y))); + } + } + + vec3 hdrColor = invScale * bloom + colorP; + + vec3 toneMappedColor = 2.0 * hdrColor / (hdrColor + vec3(1.0)); + gl_FragColor = vec4(toneMappedColor, 1.0); + }
\ No newline at end of file |