demotool/shaders/blur-pass.f.glsl

30 lines
1 KiB
Text
Raw Normal View History

#version 450 core
2017-10-04 17:48:25 +02:00
//! type fragment
layout( location = 0 ) uniform sampler2D u_InputTexture;
layout( location = 1 ) uniform vec2 u_OutputSize;
2017-09-30 21:22:38 +02:00
layout( location = 2 ) uniform int u_SourceLOD;
layout( location = 3 ) uniform vec2 u_Direction;
layout( location = 4 ) uniform vec4 u_Weights;
layout( location = 0 ) out vec3 color;
void main( void )
{
vec2 tmp = gl_FragCoord.xy / u_OutputSize;
2017-09-30 19:41:45 +02:00
vec2 disp = u_Direction / u_OutputSize;
color = u_Weights.x * textureLod( u_InputTexture , tmp , u_SourceLOD ).xyz
+ u_Weights.y * (
2017-09-30 19:41:45 +02:00
textureLod( u_InputTexture , tmp + disp , u_SourceLOD ).xyz
+ textureLod( u_InputTexture , tmp - disp , u_SourceLOD ).xyz )
+ u_Weights.z * (
2017-09-30 19:41:45 +02:00
textureLod( u_InputTexture , tmp + disp * 2 , u_SourceLOD ).xyz
+ textureLod( u_InputTexture , tmp - disp * 2 , u_SourceLOD ).xyz )
2017-09-30 18:30:26 +02:00
+ u_Weights.w * (
2017-09-30 19:41:45 +02:00
textureLod( u_InputTexture , tmp + disp * 3 , u_SourceLOD ).xyz
+ textureLod( u_InputTexture , tmp - disp * 3 , u_SourceLOD ).xyz )
2017-09-30 18:30:26 +02:00
;
2017-10-06 10:30:06 +02:00
color /= u_Weights.x + 2 * ( u_Weights.y + u_Weights.z + u_Weights.w );
}