/* ============== RB_AddCoronaFlares ============== */ void RB_AddCoronaFlares( void ) { corona_t *cor; int i, j, k; fog_t *fog; if ( r_flares->integer != 1 && r_flares->integer != 3 ) { return; } if ( !( tr.world ) ) { // (SA) possible currently at the player model selection menu return; } cor = backEnd.refdef.coronas; fog = tr.world->fogs; for ( i = 0 ; i < backEnd.refdef.num_coronas ; i++, cor++ ) { // find which fog volume the corona is in for ( j = 1 ; j < tr.world->numfogs ; j++ ) { fog = &tr.world->fogs[j]; for ( k = 0 ; k < 3 ; k++ ) { if ( cor->origin[k] < fog->bounds[0][k] || cor->origin[k] > fog->bounds[1][k] ) { break; } } if ( k == 3 ) { break; } } if ( j == tr.world->numfogs ) { j = 0; } RB_AddFlare( (void *)cor, j, cor->origin, cor->color, cor->scale, NULL, cor->id, cor->visible ); } }
/* ================== RB_AddDlightFlares ================== */ void RB_AddDlightFlares( void ) { dlight_t *l; int i, j, k; fog_t *fog; if ( !r_flares->integer ) { return; } l = backEnd.refdef.dlights; fog = tr.world->fogs; for (i=0 ; i<backEnd.refdef.num_dlights ; i++, l++) { // find which fog volume the light is in for ( j = 1 ; j < tr.world->numfogs ; j++ ) { fog = &tr.world->fogs[j]; for ( k = 0 ; k < 3 ; k++ ) { if ( l->origin[k] < fog->bounds[0][k] || l->origin[k] > fog->bounds[1][k] ) { break; } } if ( k == 3 ) { break; } } if ( j == tr.world->numfogs ) { j = 0; } RB_AddFlare( (void *)l, j, l->origin, l->color, NULL, 1.0f ); } }
static void RB_AddDlightFlares() { if ( r_flares->integer < 2 ) { return; } int id = 0; dlight_t* l = backEnd.refdef.dlights; mbrush46_fog_t* fog = tr.world->fogs; for ( int i = 0; i < backEnd.refdef.num_dlights; i++, l++ ) { // find which fog volume the light is in int j; for ( j = 1; j < tr.world->numfogs; j++ ) { fog = &tr.world->fogs[ j ]; int k; for ( k = 0; k < 3; k++ ) { if ( l->origin[ k ] < fog->bounds[ 0 ][ k ] || l->origin[ k ] > fog->bounds[ 1 ][ k ] ) { break; } } if ( k == 3 ) { break; } } if ( j == tr.world->numfogs ) { j = 0; } RB_AddFlare( ( void* )l, j, l->origin, l->color, 1.0f, NULL, id++, true ); } }
/* ============== RB_AddCoronaFlares ============== */ void RB_AddCoronaFlares( void ) { corona_t *cor; int i; if ( r_flares->integer != 1 && r_flares->integer != 3 ) { return; } cor = backEnd.refdef.coronas; for ( i = 0 ; i < backEnd.refdef.num_coronas ; i++, cor++ ) { RB_AddFlare( (void *)cor, R_PointFogNum( &backEnd.refdef, cor->origin, 0 ), cor->origin, cor->color, cor->scale, NULL, cor->id, cor->visible, cor->shader ); } }
/* ================== RB_AddDlightFlares ================== */ void RB_AddDlightFlares( void ) { dlight_t *l; int i; int id = 0; if ( r_flares->integer < 2 ) { return; } l = backEnd.refdef.dlights; for (i=0 ; i<backEnd.refdef.num_dlights ; i++, l++) { RB_AddFlare( (void *)l, R_PointFogNum( &backEnd.refdef, l->origin, 0 ), l->origin, l->color, 1.0f, NULL, id++, qtrue, tr.flareShader ); } }
/* ================== RB_AddLightFlares ================== */ void RB_AddLightFlares(void) { trRefLight_t *l; int i; if(!r_flares->integer) return; l = backEnd.refdef.lights; for(i = 0; i < backEnd.refdef.numLights; i++, l++) { if(!l->isStatic) continue; RB_AddFlare((void *)l, l->l.origin, l->l.color, NULL); } }
/* ================== RB_AddDlightFlares ================== */ void RB_AddDlightFlares( void ) { dlight_t *l; int i, j, k; int id = 0; fog_t *fog = NULL; if ( r_flares->integer < 2 ) { return; } l = backEnd.refdef.dlights; if(tr.world) fog = tr.world->fogs; for ( i = 0 ; i < backEnd.refdef.num_dlights ; i++, l++ ) { // find which fog volume the light is in if(fog) { // find which fog volume the light is in for ( j = 1 ; j < tr.world->numfogs ; j++ ) { fog = &tr.world->fogs[j]; for ( k = 0 ; k < 3 ; k++ ) { if ( l->origin[k] < fog->bounds[0][k] || l->origin[k] > fog->bounds[1][k] ) { break; } } if ( k == 3 ) { break; } } if ( j == tr.world->numfogs ) { j = 0; } } else j = 0; RB_AddFlare( (void *)l, j, l->origin, l->color, 1.0f, NULL, id++, qtrue ); //----(SA) also set scale } }
/* ================== RB_AddLightFlares ================== */ void RB_AddLightFlares(void) { int i, j, k; trRefLight_t *l; fog_t *fog; if(!r_flares->integer) return; l = backEnd.refdef.lights; fog = tr.world->fogs; for(i = 0; i < backEnd.refdef.numLights; i++, l++) { if(!l->isStatic) continue; // find which fog volume the light is in for(j = 1; j < tr.world->numFogs; j++) { fog = &tr.world->fogs[j]; for(k = 0; k < 3; k++) { if(l->l.origin[k] < fog->bounds[0][k] || l->l.origin[k] > fog->bounds[1][k]) { break; } } if(k == 3) { break; } } if(j == tr.world->numFogs) { j = 0; } RB_AddFlare((void *)l, j, l->l.origin, l->l.color, NULL); } }
/* ================== RB_AddDlightFlares ================== */ void RB_AddDlightFlares( void ) { dlight_t *l; int i, j, k; fog_t *fog = NULL; if ( !r_flaresDlight->integer ) { // leilei - dynamic light flares will be separate from flares return; } l = backEnd.refdef.dlights; if(tr.world) fog = tr.world->fogs; for (i=0 ; i<backEnd.refdef.num_dlights ; i++, l++) { if(fog) { // find which fog volume the light is in for ( j = 1 ; j < tr.world->numfogs ; j++ ) { fog = &tr.world->fogs[j]; for ( k = 0 ; k < 3 ; k++ ) { if ( l->origin[k] < fog->bounds[0][k] || l->origin[k] > fog->bounds[1][k] ) { break; } } if ( k == 3 ) { break; } } if ( j == tr.world->numfogs ) { j = 0; } } else j = 0; RB_AddFlare( (void *)l, j, l->origin, l->color, NULL, l->radius * 0.6, r_flaresDlight->integer, 1.0f, 1); } }
static void Tess_SurfaceFlare( srfFlare_t *surf ) { vec3_t dir; vec3_t origin; float d; GLimp_LogComment( "--- Tess_SurfaceFlare ---\n" ); Tess_CheckVBOAndIBO( tess.vbo, tess.ibo ); VectorMA( surf->origin, 2.0, surf->normal, origin ); VectorSubtract( origin, backEnd.viewParms.orientation.origin, dir ); VectorNormalize( dir ); d = -DotProduct( dir, surf->normal ); VectorMA( origin, r_ignore->value, dir, origin ); if ( d < 0 ) { return; } RB_AddFlare( ( void * ) surf, tess.fogNum, origin, surf->color, surf->normal ); }
static void RB_SurfaceFlare(srfFlare_t *surf) { if (r_flares->integer) RB_AddFlare(surf, tess.fogNum, surf->origin, surf->color, surf->normal); }