/* ============== 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 ); } }
/* ================= R_ComputeFogNum ================= */ int R_ComputeFogNum( mdvModel_t *model, trRefEntity_t *ent ) { mdvFrame_t *mdvFrame; vec3_t localOrigin; if ( tr.refdef.rdflags & RDF_NOWORLDMODEL ) { return 0; } // FIXME: non-normalized axis issues mdvFrame = model->frames + ent->e.frame; VectorAdd( ent->e.origin, mdvFrame->localOrigin, localOrigin ); return R_PointFogNum( &tr.refdef, localOrigin, mdvFrame->radius ); }
/* ================== 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 ); } }
int R_MDRComputeFogNum( mdrHeader_t *header, trRefEntity_t *ent ) { mdrFrame_t *mdrFrame; vec3_t localOrigin; int frameSize; if ( tr.refdef.rdflags & RDF_NOWORLDMODEL ) { return 0; } frameSize = (size_t)( &((mdrFrame_t *)0)->bones[ header->numBones ] ); // FIXME: non-normalized axis issues mdrFrame = ( mdrFrame_t * ) ( ( byte * ) header + header->ofsFrames + frameSize * ent->e.frame); VectorAdd( ent->e.origin, mdrFrame->localOrigin, localOrigin ); return R_PointFogNum( &tr.refdef, localOrigin, mdrFrame->radius ); }
/* ================= R_ComputeIQMFogNum ================= */ int R_ComputeIQMFogNum( iqmData_t *skeleton, trRefEntity_t *ent ) { const vec_t *bounds; const vec_t defaultBounds[6] = { -8, -8, -8, 8, 8, 8 }; vec3_t diag, center; vec3_t localOrigin; vec_t radius; if ( tr.refdef.rdflags & RDF_NOWORLDMODEL ) { return 0; } // FIXME: non-normalized axis issues if (skeleton->bounds) { bounds = skeleton->bounds + 6*ent->e.frame; } else { bounds = defaultBounds; } VectorSubtract( bounds+3, bounds, diag ); VectorMA( bounds, 0.5f, diag, center ); VectorAdd( ent->e.origin, center, localOrigin ); radius = 0.5f * VectorLength( diag ); return R_PointFogNum( &tr.refdef, localOrigin, radius ); }
/* ================= R_SpriteFogNum See if a sprite is inside a fog volume ================= */ int R_SpriteFogNum( trRefEntity_t *ent ) { return R_PointFogNum( &tr.refdef, ent->e.origin, ent->e.radius ); }