Sign in to follow this  

Quick Blurring

This topic is 4308 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Many of you will have probably seen the Aero Glass interface for Vista,... well, I was just wondering how they did the blur in the "glass" effect. The window borders, amongst other things, are semi-transparent and blur what's behind them. I always thought that blurring was a rather intensive operation that needed convolution filters/algorithms, and I thought on most consumer cards this was not accelerated. So my question is, how might Microsoft be implementing this blur? Do DX10 graphics cards have special support for accelerated blurring, or are they just using a shader and an efficient algorithm?

Share this post


Link to post
Share on other sites
A DX10 card isn't needed for running Vista. I installed a beta from a friend yesterday and it worked on a GeForce 7800GTX (DX9 hw). To say the truth i haven't really saw the blurring you mentioned, (i ran them for about 2 hours only), so i don't know exactly what you are refering to.

From what i've read Vista use SM2.0 (when availiable) for all the shader effects so its possible that they do it using
Quote:

a shader and an efficient algorithm


One note about the beta. The overall performance of the system wasn't good. Even the mouse movement was jerky some times. And i couldn't run more than one app at a time. They seem to take too much memory (600MB swap file on a PC with 512 RAM, 110MB was free).

HellRaiZer

Share this post


Link to post
Share on other sites
Given that the blur is done only for the "decor", I believe it is doable even without gpu. e.g. by using simple filters like this (look at the post by me): http://www.gamedev.net/community/forums/topic.asp?topic_id=345768

It is probably much faster when implemented with pixel shaders (i'm not familiar with those, so this is just speculation).

Share this post


Link to post
Share on other sites
Blur's actually a really simple operation to perform. Yes, it requires a convolution, but that's not hard to do - you don't even need to use shaders.

Imagine that your kernel is 5x5. Therefore, every pixel of the result is kernel[1][1] * pixel(x-2,y-2) + kernel[2][1] * pixel(x-1, y-2) + kernel[3][1] * pixel(x, y-2)... etc. If you limit yourself to DirectX-7 level hardware, whereby you can access four textures (four copies of the scene) per pass, then you can acheve these 25 components in six passes of the entire scene(if we omit the central pixel which we already have in place).

In practice, it doesn't require 25 components. The kernel is seperable, allowing us to perform a simple horizontal blur first followed by a simple vertical blur second - 5 samples for each - but to reduce things even further we can exploit bilinear filtering to read two samples at the same time. It's harder to get the weightings you want but still doable - the result is that you only need 4 bilinear-filtered samples for each.

So the whole thing comes out in two passes. Once you've got your blurred image of the scene, you can just copy from it through to the main framebuffer around the borders of the windows.

Share this post


Link to post
Share on other sites

This topic is 4308 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this