Jump to content

View more

Image of the Day

The night is still, but the invasion brings chaos. #screenshotsaturday #hanako #indiegame #gameart #ue4 #samurai https://t.co/cgILXuokoS
IOTD | Top Screenshots

The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.


Sign up now

Variable-radius Gaussian blur in GLSL

4: Adsense

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.


  • You cannot reply to this topic
No replies to this topic

#1 virnovus   Members   

128
Like
0Likes
Like

Posted 03 April 2013 - 08:04 AM

I wanted to do a simple depth-of-field postprocessing shader, that blurred the image by a value that was related to the depth buffer.  That is, the closer an object is, the more it's blurred.  Most of the Gaussian blur shaders I found were fixed-radius though, so they would blur the entire image by the same amount.
 
I looked at depth-of-field shaders, but they're a lot more complex than what I'd need, since they typically contain the functionality to blur distant objects more than close objects.  (In layman's terms, my shader should be farsighted, not nearsighted)
 
I was able to get a decent depth map, where white is close and black is far away, by using the following GLSL vertex shader:
 
varying float depth;
 
void main(void)
{
   gl_Position = ftransform();
   depth = 1.0 / gl_Position.z;
}
 
I can tweak the "1.0" value to adjust the falloff.  Now I want to use that depth value to determine the blur radius, or something equivalent.
 
I found an example of what seems to be what I'd need here:
 
 
But I don't really understand it well enough yet to know whether I'm on the right track.  This seems to be a pretty basic shader that I need, so either I'm thinking too hard or not thinking hard enough.  Anyone care to enlighten me?





Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.