From: divverent Date: Sat, 10 Oct 2009 11:52:40 +0000 (+0000) Subject: fix r_bloom_blur logic to not change brightness any more X-Git-Tag: xonotic-v0.1.0preview~1307 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=fbcb8637cb9d5e04c81876ef2444e648a80282ee;p=xonotic%2Fdarkplaces.git fix r_bloom_blur logic to not change brightness any more git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@9327 d7cf8633-e32d-0410-b094-e92efae38249 --- diff --git a/gl_rmain.c b/gl_rmain.c index 251572af..993ac166 100644 --- a/gl_rmain.c +++ b/gl_rmain.c @@ -4073,6 +4073,8 @@ void R_Bloom_MakeTexture(void) brighten = r_bloom_brighten.value; if (r_hdr.integer) brighten *= r_hdr_range.value; + if(range >= 1) + brighten *= pow((3 * range) / (2 * range - 1), 2); // compensate for the "dot particle" R_Mesh_TexBind(0, R_GetTexture(r_bloomstate.texture_bloom)); R_Mesh_TexCoordPointer(0, 2, r_bloomstate.offsettexcoord2f, 0, 0); @@ -4080,6 +4082,7 @@ void R_Bloom_MakeTexture(void) { // blend on at multiple vertical offsets to achieve a vertical blur // TODO: do offset blends using GLSL + // TODO instead of changing the texcoords, change the target positions to prevent artifacts at edges GL_BlendFunc(GL_ONE, GL_ZERO); for (x = -range;x <= range;x++) { @@ -4101,7 +4104,9 @@ void R_Bloom_MakeTexture(void) // (probably not realistic but looks good enough) //r = ((range*range+1)/((float)(x*x+1)))/(range*2+1); //r = (dir ? 1.0f : brighten)/(range*2+1); - r = (dir ? 1.0f : brighten)/(range*2+1)*(1 - x*x/(float)(range*range)); + r = (dir ? 1.0f : brighten) / (range * 2 + 1); + if(range >= 1) + r *= (1 - x*x/(float)(range*range)); GL_Color(r, r, r, 1); R_Mesh_Draw(0, 4, 0, 2, NULL, polygonelements, 0, 0); r_refdef.stats.bloom_drawpixels += r_bloomstate.bloomwidth * r_bloomstate.bloomheight;