Jump to content
  • Advertisement
  • entries
    422
  • comments
    1540
  • views
    490121

Image Quality

Sign in to follow this  
jollyjeffers

214 views

So, back on the HDRI stuff again...

Thanks to Ysaneya's comment to one of my previous entries, I realised that trying to "roll my own" filtering algorithm was a nice learning exercise, but not really useful. So I got rid of it and put a simple bilinear filtering function in:
//g_rcp_bloom_tex_w is a float constant indicating the reciprocal of the width
//g_rcp_bloom_tex_h is a float constant indicating the reciprocal of the height
// -----
float xWeight = frac( t.x / g_rcp_bloom_tex_w ) - 0.5;
float xDir = xWeight;
xWeight = abs( xWeight );
xDir /= xWeight;
xDir *= g_rcp_bloom_tex_w;

float yWeight = frac( t.y / g_rcp_bloom_tex_h ) - 0.5;
float yDir = yWeight;
yWeight = abs( yWeight );
yDir /= yWeight;
yDir *= g_rcp_bloom_tex_h;

// sample the bloom texture for the 4 relevant pixels
float4 b = ((1.0f - xWeight) * (1.0f - yWeight)) * tex2D( tex2, t );
b += (xWeight * (1.0f - yWeight)) * tex2D( tex2, t + float2( xDir, 0.0f ) );
b += (yWeight * (1.0f - xWeight)) * tex2D( tex2, t + float2( 0.0f, yDir ) );
b += (xWeight * yWeight) * tex2D( tex2, t + float2( xDir, yDir ) );



It's based on a couple of articles - one at (deceased [sad]) flipcode and one from wikipedia - that showed the correct weights to use. The rest of the implementation I cooked up on my own - so there could well be something better kicking around [grin]

I'm very happy with the results:
Sign in to follow this  


2 Comments


Recommended Comments

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
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!