[iortcw] 294/497: MP: Remove duplicate tr_bloom.c file
Simon McVittie
smcv at debian.org
Fri Sep 8 10:37:10 UTC 2017
This is an automated email from the git hooks/post-receive script.
smcv pushed a commit to annotated tag 1.42d
in repository iortcw.
commit 8696b2684aa059a7a9871ae98cd4df2777af4460
Author: M4N4T4RMS at gmail.com <M4N4T4RMS at gmail.com@e65d2741-a53d-b2dc-ae96-bb75fa5e4c4a>
Date: Sun Feb 15 13:12:10 2015 +0000
MP: Remove duplicate tr_bloom.c file
---
MP/code/rend2/tr_bloom.c | 446 -----------------------------------------------
1 file changed, 446 deletions(-)
diff --git a/MP/code/rend2/tr_bloom.c b/MP/code/rend2/tr_bloom.c
deleted file mode 100644
index ff3deb1..0000000
--- a/MP/code/rend2/tr_bloom.c
+++ /dev/null
@@ -1,446 +0,0 @@
-/*
-Copyright (C) 1997-2001 Id Software, Inc.
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-*/
-// tr_bloom.c: 2D lighting post process effect
-
-#include "tr_local.h"
-
-
-static cvar_t *r_bloom;
-static cvar_t *r_bloom_sample_size;
-static cvar_t *r_bloom_fast_sample;
-static cvar_t *r_bloom_alpha;
-static cvar_t *r_bloom_darken;
-static cvar_t *r_bloom_intensity;
-static cvar_t *r_bloom_diamond_size;
-
-/*
-==============================================================================
-
- LIGHT BLOOMS
-
-==============================================================================
-*/
-
-static float Diamond8x[8][8] =
-{
- { 0.0f, 0.0f, 0.0f, 0.1f, 0.1f, 0.0f, 0.0f, 0.0f, },
- { 0.0f, 0.0f, 0.2f, 0.3f, 0.3f, 0.2f, 0.0f, 0.0f, },
- { 0.0f, 0.2f, 0.4f, 0.6f, 0.6f, 0.4f, 0.2f, 0.0f, },
- { 0.1f, 0.3f, 0.6f, 0.9f, 0.9f, 0.6f, 0.3f, 0.1f, },
- { 0.1f, 0.3f, 0.6f, 0.9f, 0.9f, 0.6f, 0.3f, 0.1f, },
- { 0.0f, 0.2f, 0.4f, 0.6f, 0.6f, 0.4f, 0.2f, 0.0f, },
- { 0.0f, 0.0f, 0.2f, 0.3f, 0.3f, 0.2f, 0.0f, 0.0f, },
- { 0.0f, 0.0f, 0.0f, 0.1f, 0.1f, 0.0f, 0.0f, 0.0f }
-};
-
-static float Diamond6x[6][6] =
-{
- { 0.0f, 0.0f, 0.1f, 0.1f, 0.0f, 0.0f, },
- { 0.0f, 0.3f, 0.5f, 0.5f, 0.3f, 0.0f, },
- { 0.1f, 0.5f, 0.9f, 0.9f, 0.5f, 0.1f, },
- { 0.1f, 0.5f, 0.9f, 0.9f, 0.5f, 0.1f, },
- { 0.0f, 0.3f, 0.5f, 0.5f, 0.3f, 0.0f, },
- { 0.0f, 0.0f, 0.1f, 0.1f, 0.0f, 0.0f }
-};
-
-static float Diamond4x[4][4] =
-{
- { 0.3f, 0.4f, 0.4f, 0.3f, },
- { 0.4f, 0.9f, 0.9f, 0.4f, },
- { 0.4f, 0.9f, 0.9f, 0.4f, },
- { 0.3f, 0.4f, 0.4f, 0.3f }
-};
-
-static struct {
- struct {
- image_t *texture;
- int width, height;
- float readW, readH;
- } effect;
- struct {
- image_t *texture;
- int width, height;
- float readW, readH;
- } screen;
- struct {
- int width, height;
- } work;
- qboolean started;
-} bloom;
-
-
-static void ID_INLINE R_Bloom_Quad( int width, int height, float texX, float texY, float texWidth, float texHeight ) {
- int x = 0;
- int y = 0;
- x = 0;
- y += glConfig.vidHeight - height;
- width += x;
- height += y;
-
- texWidth += texX;
- texHeight += texY;
-
- qglBegin( GL_QUADS );
- qglTexCoord2f( texX, texHeight );
- qglVertex2f( x, y );
-
- qglTexCoord2f( texX, texY );
- qglVertex2f( x, height );
-
- qglTexCoord2f( texWidth, texY );
- qglVertex2f( width, height );
-
- qglTexCoord2f( texWidth, texHeight );
- qglVertex2f( width, y );
- qglEnd ();
-}
-
-
-/*
-=================
-R_Bloom_InitTextures
-=================
-*/
-static void R_Bloom_InitTextures( void )
-{
- byte *data;
-
- // find closer power of 2 to screen size
- for (bloom.screen.width = 1;bloom.screen.width< glConfig.vidWidth;bloom.screen.width *= 2);
- for (bloom.screen.height = 1;bloom.screen.height < glConfig.vidHeight;bloom.screen.height *= 2);
-
- bloom.screen.readW = glConfig.vidWidth / (float)bloom.screen.width;
- bloom.screen.readH = glConfig.vidHeight / (float)bloom.screen.height;
-
- // find closer power of 2 to effect size
- bloom.work.width = r_bloom_sample_size->integer;
- bloom.work.height = bloom.work.width * ( glConfig.vidWidth / glConfig.vidHeight );
-
- for (bloom.effect.width = 1;bloom.effect.width < bloom.work.width;bloom.effect.width *= 2);
- for (bloom.effect.height = 1;bloom.effect.height < bloom.work.height;bloom.effect.height *= 2);
-
- bloom.effect.readW = bloom.work.width / (float)bloom.effect.width;
- bloom.effect.readH = bloom.work.height / (float)bloom.effect.height;
-
-
- // disable blooms if we can't handle a texture of that size
- if( bloom.screen.width > glConfig.maxTextureSize ||
- bloom.screen.height > glConfig.maxTextureSize ||
- bloom.effect.width > glConfig.maxTextureSize ||
- bloom.effect.height > glConfig.maxTextureSize ||
- bloom.work.width > glConfig.vidWidth ||
- bloom.work.height > glConfig.vidHeight
- ) {
- ri.Cvar_Set( "r_bloom", "0" );
- Com_Printf( S_COLOR_YELLOW"WARNING: 'R_InitBloomTextures' too high resolution for light bloom, effect disabled\n" );
- return;
- }
-
- data = ri.Hunk_AllocateTempMemory( bloom.screen.width * bloom.screen.height * 4 );
- Com_Memset( data, 0, bloom.screen.width * bloom.screen.height * 4 );
- bloom.screen.texture = R_CreateImage( "***bloom screen texture***", data, bloom.screen.width, bloom.screen.height, qfalse, qfalse, qfalse );
- ri.Hunk_FreeTempMemory( data );
-
- data = ri.Hunk_AllocateTempMemory( bloom.effect.width * bloom.effect.height * 4 );
- Com_Memset( data, 0, bloom.effect.width * bloom.effect.height * 4 );
- bloom.effect.texture = R_CreateImage( "***bloom effect texture***", data, bloom.effect.width, bloom.effect.height, qfalse, qfalse, qfalse );
- ri.Hunk_FreeTempMemory( data );
- bloom.started = qtrue;
-}
-
-/*
-=================
-R_InitBloomTextures
-=================
-*/
-void R_InitBloomTextures( void )
-{
- if( !r_bloom->integer )
- return;
- memset( &bloom, 0, sizeof( bloom ));
- R_Bloom_InitTextures ();
-}
-
-/*
-=================
-R_Bloom_DrawEffect
-=================
-*/
-static void R_Bloom_DrawEffect( void )
-{
- GL_Bind( bloom.effect.texture );
- GL_State( GLS_DEPTHTEST_DISABLE | GLS_SRCBLEND_ONE | GLS_DSTBLEND_ONE );
- qglColor4f( r_bloom_alpha->value, r_bloom_alpha->value, r_bloom_alpha->value, 1.0f );
- R_Bloom_Quad( glConfig.vidWidth, glConfig.vidHeight, 0, 0, bloom.effect.readW, bloom.effect.readW );
-}
-
-
-/*
-=================
-R_Bloom_GeneratexDiamonds
-=================
-*/
-static void R_Bloom_WarsowEffect( void )
-{
- int i, j, k;
- float intensity, scale, *diamond;
-
-
- qglColor4f( 1.0f, 1.0f, 1.0f, 1.0f );
- //Take the backup texture and downscale it
- GL_Bind( bloom.screen.texture );
- GL_State( GLS_DEPTHTEST_DISABLE | GLS_SRCBLEND_ONE | GLS_DSTBLEND_ZERO );
- R_Bloom_Quad( bloom.work.width, bloom.work.height, 0, 0, bloom.screen.readW, bloom.screen.readH );
- //Copy downscaled framebuffer into a texture
- GL_Bind( bloom.effect.texture );
- qglCopyTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, 0, 0, bloom.work.width, bloom.work.height );
- // darkening passes with repeated filter
- if( r_bloom_darken->integer ) {
- int i;
- GL_State( GLS_DEPTHTEST_DISABLE | GLS_SRCBLEND_DST_COLOR | GLS_DSTBLEND_ZERO );
-
- for( i = 0; i < r_bloom_darken->integer; i++ ) {
- R_Bloom_Quad( bloom.work.width, bloom.work.height,
- 0, 0,
- bloom.effect.readW, bloom.effect.readH );
- }
- qglCopyTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, 0, 0, bloom.work.width, bloom.work.height );
- }
- /* Copy the result to the effect texture */
- GL_Bind( bloom.effect.texture );
- qglCopyTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, 0, 0, bloom.work.width, bloom.work.height );
-
- // bluring passes, warsow uses a repeated semi blend on a selectable diamond grid
- qglColor4f( 1.0f, 1.0f, 1.0f, 1.0f );
- GL_State( GLS_DEPTHTEST_DISABLE | GLS_SRCBLEND_ONE | GLS_DSTBLEND_ONE_MINUS_SRC_COLOR );
- if( r_bloom_diamond_size->integer > 7 || r_bloom_diamond_size->integer <= 3 ) {
- if( r_bloom_diamond_size->integer != 8 )
- ri.Cvar_Set( "r_bloom_diamond_size", "8" );
- } else if( r_bloom_diamond_size->integer > 5 ) {
- if( r_bloom_diamond_size->integer != 6 )
- ri.Cvar_Set( "r_bloom_diamond_size", "6" );
- } else if( r_bloom_diamond_size->integer > 3 ) {
- if( r_bloom_diamond_size->integer != 4 )
- ri.Cvar_Set( "r_bloom_diamond_size", "4" );
- }
-
- switch( r_bloom_diamond_size->integer ) {
- case 4:
- k = 2;
- diamond = &Diamond4x[0][0];
- scale = r_bloom_intensity->value * 0.8f;
- break;
- case 6:
- k = 3;
- diamond = &Diamond6x[0][0];
- scale = r_bloom_intensity->value * 0.5f;
- break;
- default:
-// case 8:
- k = 4;
- diamond = &Diamond8x[0][0];
- scale = r_bloom_intensity->value * 0.3f;
- break;
- }
-
- for( i = 0; i < r_bloom_diamond_size->integer; i++ ) {
- for( j = 0; j < r_bloom_diamond_size->integer; j++, diamond++ ) {
- float x, y;
- intensity = *diamond * scale;
- if( intensity < 0.01f )
- continue;
- qglColor4f( intensity, intensity, intensity, 1.0 );
- x = (i - k) * ( 2 / 640.0f ) * bloom.effect.readW;
- y = (j - k) * ( 2 / 480.0f ) * bloom.effect.readH;
-
- R_Bloom_Quad( bloom.work.width, bloom.work.height, x, y, bloom.effect.readW, bloom.effect.readH );
- }
- }
- qglCopyTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, 0, 0, bloom.work.width, bloom.work.height );
-}
-
-/*
-=================
-R_Bloom_BackupScreen
-Backup the full original screen to a texture for downscaling and later restoration
-=================
-*/
-static void R_Bloom_BackupScreen( void ) {
- GL_Bind( bloom.screen.texture );
- qglCopyTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, 0, 0, glConfig.vidWidth, glConfig.vidHeight );
-}
-/*
-=================
-R_Bloom_RestoreScreen
-Restore the temporary framebuffer section we used with the backup texture
-=================
-*/
-static void R_Bloom_RestoreScreen( void ) {
- GL_State( GLS_DEPTHTEST_DISABLE | GLS_SRCBLEND_ONE | GLS_DSTBLEND_ZERO );
- GL_Bind( bloom.screen.texture );
- qglColor4f( 1, 1, 1, 1 );
- R_Bloom_Quad( bloom.work.width, bloom.work.height, 0, 0,
- bloom.work.width / (float)bloom.screen.width,
- bloom.work.height / (float)bloom.screen.height );
-}
-
-
-/*
-=================
-R_Bloom_DownsampleView
-Scale the copied screen back to the sample size used for subsequent passes
-=================
-*/
-/*static void R_Bloom_DownsampleView( void )
-{
- // TODO, Provide option to control the color strength here /
-// qglColor4f( r_bloom_darken->value, r_bloom_darken->value, r_bloom_darken->value, 1.0f );
- qglColor4f( 1.0f, 1.0f, 1.0f, 1.0f );
- GL_Bind( bloom.screen.texture );
- GL_State( GLS_DEPTHTEST_DISABLE | GLS_SRCBLEND_ONE | GLS_DSTBLEND_ZERO );
- //Downscale it
- R_Bloom_Quad( bloom.work.width, bloom.work.height, 0, 0, bloom.screen.readW, bloom.screen.readH );
-#if 1
- GL_Bind( bloom.effect.texture );
- qglCopyTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, 0, 0, bloom.work.width, bloom.work.height );
- // darkening passes
- if( r_bloom_darken->integer ) {
- int i;
- GL_State( GLS_DEPTHTEST_DISABLE | GLS_SRCBLEND_DST_COLOR | GLS_DSTBLEND_ZERO );
-
- for( i = 0; i < r_bloom_darken->integer; i++ ) {
- R_Bloom_Quad( bloom.work.width, bloom.work.height,
- 0, 0,
- bloom.effect.readW, bloom.effect.readH );
- }
- qglCopyTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, 0, 0, bloom.work.width, bloom.work.height );
- }
-#endif
- // Copy the result to the effect texture /
- GL_Bind( bloom.effect.texture );
- qglCopyTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, 0, 0, bloom.work.width, bloom.work.height );
-}
-
-static void R_Bloom_CreateEffect( void ) {
- int dir, x;
- int range;
-
- //First step will zero dst, rest will one add
- GL_State( GLS_DEPTHTEST_DISABLE | GLS_SRCBLEND_ONE | GLS_DSTBLEND_ZERO );
-// GL_Bind( bloom.screen.texture );
- GL_Bind( bloom.effect.texture );
- range = 4;
- for (dir = 0;dir < 2;dir++)
- {
- // blend on at multiple vertical offsets to achieve a vertical blur
- // TODO: do offset blends using GLSL
- for (x = -range;x <= range;x++)
- {
- float xoffset, yoffset, r;
- if (!dir){
- xoffset = 0;
- yoffset = x*1.5;
- } else {
- xoffset = x*1.5;
- yoffset = 0;
- }
- xoffset /= bloom.work.width;
- yoffset /= bloom.work.height;
- // this r value looks like a 'dot' particle, fading sharply to
- // black at the edges
- // (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 = 2.0f /(range*2+1)*(1 - x*x/(float)(range*range));
-// r *= r_bloom_darken->value;
- qglColor4f(r, r, r, 1);
- R_Bloom_Quad( bloom.work.width, bloom.work.height,
- xoffset, yoffset,
- bloom.effect.readW, bloom.effect.readH );
-// bloom.screen.readW, bloom.screen.readH );
- GL_State( GLS_DEPTHTEST_DISABLE | GLS_SRCBLEND_ONE | GLS_DSTBLEND_ONE );
- }
- }
- GL_Bind( bloom.effect.texture );
- qglCopyTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, 0, 0, bloom.work.width, bloom.work.height );
-}*/
-
-/*
-=================
-R_BloomScreen
-=================
-*/
-void R_BloomScreen( void )
-{
- if( !r_bloom->integer )
- return;
- if ( backEnd.doneBloom )
- return;
- if ( !backEnd.doneSurfaces )
- return;
- backEnd.doneBloom = qtrue;
- if( !bloom.started ) {
- R_Bloom_InitTextures();
- if( !bloom.started )
- return;
- }
-
- if ( !backEnd.projection2D )
- RB_SetGL2D();
-#if 0
- // set up full screen workspace
- GL_TexEnv( GL_MODULATE );
- qglScissor( 0, 0, glConfig.vidWidth, glConfig.vidHeight );
- qglViewport( 0, 0, glConfig.vidWidth, glConfig.vidHeight );
- qglMatrixMode( GL_PROJECTION );
- qglLoadIdentity ();
- qglOrtho( 0, glConfig.vidWidth, glConfig.vidHeight, 0, 0, 1 );
- qglMatrixMode( GL_MODELVIEW );
- qglLoadIdentity ();
-
- GL_Cull( CT_TWO_SIDED );
-#endif
-
- qglColor4f( 1, 1, 1, 1 );
-
- //Backup the old screen in a texture
- R_Bloom_BackupScreen();
- // create the bloom texture using one of a few methods
- R_Bloom_WarsowEffect ();
-// R_Bloom_CreateEffect();
- // restore the screen-backup to the screen
- R_Bloom_RestoreScreen();
- // Do the final pass using the bloom texture for the final effect
- R_Bloom_DrawEffect ();
-}
-
-
-void R_BloomInit( void ) {
- memset( &bloom, 0, sizeof( bloom ));
-
- r_bloom = ri.Cvar_Get( "r_bloom", "0", CVAR_ARCHIVE );
- r_bloom_alpha = ri.Cvar_Get( "r_bloom_alpha", "0.3", CVAR_ARCHIVE );
- r_bloom_diamond_size = ri.Cvar_Get( "r_bloom_diamond_size", "8", CVAR_ARCHIVE );
- r_bloom_intensity = ri.Cvar_Get( "r_bloom_intensity", "1.3", CVAR_ARCHIVE );
- r_bloom_darken = ri.Cvar_Get( "r_bloom_darken", "4", CVAR_ARCHIVE );
- r_bloom_sample_size = ri.Cvar_Get( "r_bloom_sample_size", "128", CVAR_ARCHIVE|CVAR_LATCH );
- r_bloom_fast_sample = ri.Cvar_Get( "r_bloom_fast_sample", "0", CVAR_ARCHIVE|CVAR_LATCH );
-}
-
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/iortcw.git
More information about the Pkg-games-commits
mailing list