UFO: Alien Invasion
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
r_lightmap.cpp File Reference
#include "r_local.h"
#include "r_error.h"
#include "r_entity.h"
#include "r_lightmap.h"

Go to the source code of this file.

Functions

static void R_UploadLightmapPage (void)
 
static bool R_AllocLightmapBlock (int w, int h, int *x, int *y)
 returns a texture number and the position inside it More...
 
static void R_BuildDefaultLightmap (mBspSurface_t *surf, byte *sout, byte *dout, int stride)
 Fullbridght lightmap. More...
 
static void R_BuildLightmap (mBspSurface_t *surf, byte *sout, byte *dout, int stride)
 Consume raw lightmap and deluxemap RGB/XYZ data from the surface samples, and write them into the strided block in the atlas page. More...
 
void R_CreateSurfaceLightmap (mBspSurface_t *surf)
 
static void R_DisposeLightmaps (void)
 
void R_BeginBuildingLightmaps (void)
 
void R_EndBuildingLightmaps (void)
 
void R_Trace (const Line &trLine, float size, int contentmask)
 Moves the given mins/maxs volume through the world from start to end. More...
 

Variables

lightmaps_t r_lightmaps
 

Detailed Description

In video memory, lightmaps are chunked into NxN RGB pages. In the bsp, they are just sequentially stored RGB blocks per surface

Definition in file r_lightmap.cpp.

Function Documentation

static bool R_AllocLightmapBlock ( int  w,
int  h,
int x,
int y 
)
static

returns a texture number and the position inside it

Find a suitable location to store data in the texture atlas

Definition at line 96 of file r_lightmap.cpp.

References lightmaps_s::allocated, lightmaps_s::deluxemap_count, lightmaps_s::deluxemap_texnums, glGenTextures(), i, lightmaps_s::incomplete_atlas, lightmaps_s::lightmap_count, lightmaps_s::lightmap_texnums, and lightmaps_s::size.

Referenced by R_CreateSurfaceLightmap().

static void R_BuildDefaultLightmap ( mBspSurface_t surf,
byte sout,
byte dout,
int  stride 
)
static
static void R_BuildLightmap ( mBspSurface_t surf,
byte sout,
byte dout,
int  stride 
)
static

Consume raw lightmap and deluxemap RGB/XYZ data from the surface samples, and write them into the strided block in the atlas page.

See also
R_BuildDefaultLightmap

Definition at line 174 of file r_lightmap.cpp.

References DELUXEMAP_SAMPLE_SIZE, mBspTexInfo_s::flags, mBspSurface_s::lightColor, mBspSurface_s::lightmap, LIGHTMAP_SAMPLE_SIZE, mBspSurface_s::lightmap_scale, Mem_PoolAllocTypeN, mBspSurface_s::samples, mBspSurface_s::stextents, SURF_ALPHATEST, SURF_BLEND33, SURF_BLEND66, mBspSurface_s::texinfo, and vid_lightPool.

Referenced by R_CreateSurfaceLightmap().

static void R_DisposeLightmaps ( void  )
static
void R_Trace ( const Line trLine,
float  size,
int  contentmask 
)

Moves the given mins/maxs volume through the world from start to end.

Parameters
[in]trLineStart and end vectors of the trace
[in]sizeBounding box size used for tracing
[in]contentmaskSearched content the trace should watch for

Definition at line 317 of file r_lightmap.cpp.

References model_s::bsp, CM_CompleteBoxTrace(), CM_TransformedBoxTrace, AABB::expand(), mBspModel_s::firstnode, trace_s::fraction, i, m, trace_s::mapTile, mBspModel_s::maptile, mapTiles_s::mapTiles, rendererData_t::mapTiles, mod_bsp_submodel, rendererData_t::numEntities, entity_t::origin, R_GetEntity(), r_locals, r_numMapTiles, refdef, tr, rendererData_t::trace, TRACE_ALL_LEVELS, rendererData_t::traceEntity, rlocals_s::tracenum, and model_s::type.

Referenced by R_DrawFlareSurfaces(), R_UpdateLightList(), and R_UpdateShadowOrigin().

Variable Documentation

lightmaps_t r_lightmaps

Definition at line 32 of file r_lightmap.cpp.

Referenced by R_LoadBspVertexArrays().