diff options
| author | Ray <[email protected]> | 2016-10-16 18:24:13 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2016-10-16 18:24:13 +0200 |
| commit | a9315fc422a3a036891f50f0c2be5059c3db8b31 (patch) | |
| tree | 9f5213dac656079e2163bc5d091200dc837672b8 /shaders | |
| parent | 53056f3e7e84e18b8ebfc4a2ab2f7f1fbe7ae36c (diff) | |
| parent | 1c05017548ea21dd1a44c31e9fc80b8700891f11 (diff) | |
| download | raylib-a9315fc422a3a036891f50f0c2be5059c3db8b31.tar.gz raylib-a9315fc422a3a036891f50f0c2be5059c3db8b31.zip | |
Merge pull request #189 from raysan5/develop
Develop branch integration
Diffstat (limited to 'shaders')
| -rw-r--r-- | shaders/glsl100/bloom.fs | 28 | ||||
| -rw-r--r-- | shaders/glsl330/bloom.fs | 28 |
2 files changed, 30 insertions, 26 deletions
diff --git a/shaders/glsl100/bloom.fs b/shaders/glsl100/bloom.fs index 82278fc3..a8e1d20f 100644 --- a/shaders/glsl100/bloom.fs +++ b/shaders/glsl100/bloom.fs @@ -12,26 +12,28 @@ uniform vec4 colDiffuse; // NOTE: Add here your custom variables +const vec2 size = vec2(800, 450); // render size +const float samples = 5.0; // pixels per axis; higher = bigger glow, worse performance +const float quality = 2.5; // lower = smaller glow, better quality + void main() { vec4 sum = vec4(0); - vec4 tc = vec4(0); + vec2 sizeFactor = vec2(1)/size*quality; + + // Texel color fetching from texture sampler + vec4 source = texture2D(texture0, fragTexCoord); - for (int i = -4; i < 4; i++) + const int range = 2; // should be = (samples - 1)/2; + + for (int x = -range; x <= range; x++) { - for (int j = -3; j < 3; j++) + for (int y = -range; y <= range; y++) { - sum += texture2D(texture0, fragTexCoord + vec2(j, i)*0.004) * 0.25; + sum += texture2D(texture0, fragTexCoord + vec2(x, y)*sizeFactor); } } - - // Texel color fetching from texture sampler - vec4 texelColor = texture2D(texture0, fragTexCoord); - + // Calculate final fragment color - if (texelColor.r < 0.3) tc = sum*sum*0.012 + texelColor; - else if (texelColor.r < 0.5) tc = sum*sum*0.009 + texelColor; - else tc = sum*sum*0.0075 + texelColor; - - gl_FragColor = tc; + gl_FragColor = ((sum/(samples*samples)) + source)*colDiffuse; }
\ No newline at end of file diff --git a/shaders/glsl330/bloom.fs b/shaders/glsl330/bloom.fs index 102e6605..333d5b05 100644 --- a/shaders/glsl330/bloom.fs +++ b/shaders/glsl330/bloom.fs @@ -13,26 +13,28 @@ out vec4 finalColor; // NOTE: Add here your custom variables +const vec2 size = vec2(800, 450); // render size +const float samples = 5.0; // pixels per axis; higher = bigger glow, worse performance +const float quality = 2.5; // lower = smaller glow, better quality + void main() { vec4 sum = vec4(0); - vec4 tc = vec4(0); + vec2 sizeFactor = vec2(1)/size*quality; + + // Texel color fetching from texture sampler + vec4 source = texture(texture0, fragTexCoord); + + const int range = 2; // should be = (samples - 1)/2; - for (int i = -4; i < 4; i++) + for (int x = -range; x <= range; x++) { - for (int j = -3; j < 3; j++) + for (int y = -range; y <= range; y++) { - sum += texture(texture0, fragTexCoord + vec2(j, i)*0.004)*0.25; + sum += texture(texture0, fragTexCoord + vec2(x, y)*sizeFactor); } } - - // Texel color fetching from texture sampler - vec4 texelColor = texture(texture0, fragTexCoord); - - // Calculate final fragment color - if (texelColor.r < 0.3) tc = sum*sum*0.012 + texelColor; - else if (texelColor.r < 0.5) tc = sum*sum*0.009 + texelColor; - else tc = sum*sum*0.0075 + texelColor; - finalColor = tc; + // Calculate final fragment color + finalColor = ((sum/(samples*samples)) + source)*colDiffuse; }
\ No newline at end of file |
