Common.MatDefs.Blur.RadialBlur.frag Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jme3-core Show documentation
Show all versions of jme3-core Show documentation
jMonkeyEngine is a 3-D game engine for adventurous Java developers
#import "Common/ShaderLib/GLSLCompat.glsllib"
#import "Common/ShaderLib/MultiSample.glsllib"
uniform COLORTEXTURE m_Texture;
uniform float m_SampleDist;
uniform float m_SampleStrength;
uniform float m_Samples[10];
varying vec2 texCoord;
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 subtracting 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;
// weight the blur effect by 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
gl_FragColor = mix( colorRes, sum, t );
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy