All shaders now import the GLSLCompat.glsllibnative-compilation-test
parent
12a2f0f63c
commit
d537a1c22e
@ -1,50 +0,0 @@ |
||||
#import "Common/ShaderLib/MultiSample.glsllib" |
||||
|
||||
uniform COLORTEXTURE m_Texture; |
||||
uniform float m_SampleDist; |
||||
uniform float m_SampleStrength; |
||||
uniform float m_Samples[10]; |
||||
|
||||
in vec2 texCoord; |
||||
out vec4 outFragColor; |
||||
|
||||
void main(void) |
||||
{ |
||||
// some sample positions |
||||
//float samples[10] = float[](-0.08,-0.05,-0.03,-0.02,-0.01,0.01,0.02,0.03,0.05,0.08); |
||||
|
||||
// 0.5,0.5 is the center of the screen |
||||
// so substracting texCoord from it will result in |
||||
// a vector pointing to the middle of the screen |
||||
vec2 dir = 0.5 - texCoord; |
||||
|
||||
// calculate the distance to the center of the screen |
||||
float dist = sqrt(dir.x*dir.x + dir.y*dir.y); |
||||
|
||||
// normalize the direction (reuse the distance) |
||||
dir = dir/dist; |
||||
|
||||
// this is the original colour of this fragment |
||||
// using only this would result in a nonblurred version |
||||
vec4 colorRes = getColor(m_Texture,texCoord); |
||||
|
||||
vec4 sum = colorRes; |
||||
|
||||
// take 10 additional blur samples in the direction towards |
||||
// the center of the screen |
||||
for (int i = 0; i < 10; i++){ |
||||
sum += getColor( m_Texture, texCoord + dir * m_Samples[i] * m_SampleDist ); |
||||
} |
||||
|
||||
// we have taken eleven samples |
||||
sum *= 1.0/11.0; |
||||
|
||||
// weighten the blur effect with the distance to the |
||||
// center of the screen ( further out is blurred more) |
||||
float t = dist * m_SampleStrength; |
||||
t = clamp( t ,0.0,1.0); //0 <= t <= 1 |
||||
|
||||
//Blend the original color with the averaged pixels |
||||
outFragColor =mix( colorRes, sum, t ); |
||||
|
||||
} |
Loading…
Reference in new issue