Guest User

Untitled

a guest
Jul 27th, 2015
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.49 KB | None | 0 0
  1. // passthrough.vert
  2. #version 120
  3.  
  4. attribute vec3 position;
  5. varying vec3 vertex;
  6.  
  7. void main() {
  8.     vertex = position;
  9.     gl_Position = gl_ModelViewProjectionMatrix * vec4(position, 1);
  10. }
  11.  
  12. // gaussian.frag
  13. #version 120
  14.  
  15. varying vec3 vertex;
  16.  
  17. const float gaussD3 = 0.0044318;
  18. const float gaussD2 = 0.0539910;
  19. const float gaussD1 = 0.2419710;
  20. const float gaussD0 = 0.3989423;
  21.  
  22. uniform sampler3D tex;
  23. uniform vec3 direction;
  24. uniform vec4 color;
  25.  
  26. // Simple gaussian blur in the specified direction (set direction.x, direction.y, direction.z)
  27. // standard deviation is 1, sample rate is 1 per pixel in a 3 pixel radius
  28. void main() {
  29.     vec4 sum = vec4(0.0);
  30.  
  31.     sum += texture3D(tex, vec3(vertex.x - 3*direction.x, vertex.y - 3*direction.y, vertex.z - 3*direction.z)) * gaussD3;
  32.     sum += texture3D(tex, vec3(vertex.x - 2*direction.x, vertex.y - 2*direction.y, vertex.z - 2*direction.z)) * gaussD2;
  33.     sum += texture3D(tex, vec3(vertex.x - 1*direction.x, vertex.y - 1*direction.y, vertex.z - 1*direction.z)) * gaussD1;
  34.     sum += texture3D(tex, vec3(vertex.x, vertex.y, vertex.z)) * gaussD0;
  35.     sum += texture3D(tex, vec3(vertex.x + 1*direction.x, vertex.y + 1*direction.y, vertex.z + 1*direction.z)) * gaussD1;
  36.     sum += texture3D(tex, vec3(vertex.x + 2*direction.x, vertex.y + 2*direction.y, vertex.z + 2*direction.z)) * gaussD2;
  37.     sum += texture3D(tex, vec3(vertex.x + 3*direction.x, vertex.y + 3*direction.y, vertex.z + 3*direction.z)) * gaussD3;
  38.  
  39.     gl_FragColor = color * sum;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment