In file include/csengine/polytext.h:

class csPolyTexture

This class represents a lighted texture for a polygon

Public Fields

static float cfg_cosinus_factor
Option variable: control how much the angle of the light with the polygon it hits affects the final light value
static bool do_accurate_things
Option variable: do accurate lighting of things. This is much slower however.
float Fmin_u
fp bounding box (0..1 texture space)
static bool subtex_dynlight
If the sub-texture optimization is enabled (subtex_size != 0) then this option gives an additional optimization
static int subtex_size
The size of the sub-textures

Public Methods

int CountCleanSubtextures ()
Return the number of clean sub-textures
int CountDirtySubtextures ()
Return the number of dirty sub-textures
void CreateBoundingTextureBox ()
Calculate the bounding box in (u,v) space for the lighted texture
void CreateDirtyMatrix ()
Create the dirty matrix if needed
csPolyTexture ()
void FillLightMap (csLightView& lview)
Update the lightmap for the given light
int GetAndU ()
int GetDu ()
int GetDv ()
float GetFdu ()
float GetFdv ()
int GetHeight ()
Get height of lighted texture.
csLightMap* GetLightMap ()
int GetMipmapLevel ()
int GetMipmapSize ()
Get the mipmap size used for this texture.
int GetOrigWidth ()
int GetShiftU ()
ITextureHandle* GetTextureHandle ()
int GetWidth ()
Get width of lighted texture (power of 2).
void InitLightMaps ()
Initialize the lightmaps
void MakeAllDirty ()
Make the dirty matrix completely dirty
void MakeDirtyDynamicLights ()
bool RecalcDynamicLights ()
Recalculate all pseudo and real dynamic lights if the texture is dirty
void SetMipmapLevel (int mm)
void SetMipmapSize (int mm)
Set the mipmap size used for this texture.
void SetPolygon (csPolygon3D* p)
Set the corresponding polygon for this polytexture
void SetTextureHandle (ITextureHandle* th)
Set the texture to be used for this polytexture.
void ShineDynLightMap (csLightPatch* lp)
Update the real lightmap for a given csLightPatch (used for a dynamic light)
virtual ~csPolyTexture ()

Private Fields

int and_u
int dirty_cnt
Number of dirty sub-textures (if 0 whole texture is clean and in the cache
int dirty_h
Height of dirty matrix.
UByte* dirty_matrix
Dirty matrix used in combination with the sub-texture optimization
int dirty_size
Size of dirty matrix (dirty_w*dirty_h).
int dirty_w
Width of dirty matrix.
int du
int dv
bool dyn_dirty
If true, dynamic lighting needs to be recalculated.
float fdu
float fdv
int h
Height of lighted texture.
int Imin_u
Bounding box of corresponding polygon in 2D texture space
csLightMap* lm
LightMap.
int mipmap_level
The mipmap level (0..3) that this PolyTexture is used for.
int mipmap_shift
Mipmap shift corresponding to the mipmap_size above.
int mipmap_size
Mipmap size to use for lightmap boxes: 16, 8, 4, or 2.
csPolygon3D* polygon
The corresponding polygon.
int shf_u
int size
Size including vertical margins (note: size is in pixels, multiply this value by the real number of bytes for every pixel to get the real size)
void* tcache_data
Private texture cache data.
ITextureHandle* txt_handle
The corresponding unlighted texture.
int w
Width of lighted texture ('w' is a power of 2).
int w_orig
Original width (not a power of 2) (w_orig <= w).

Documentation

This class represents a lighted texture for a polygon. A polygon generally has four of these (one for every mipmap level).
void* tcache_data
Private texture cache data.

UByte* dirty_matrix
Dirty matrix used in combination with the sub-texture optimization

int dirty_w
Width of dirty matrix.

int dirty_h
Height of dirty matrix.

int dirty_size
Size of dirty matrix (dirty_w*dirty_h).

int dirty_cnt
Number of dirty sub-textures (if 0 whole texture is clean and in the cache

csPolygon3D* polygon
The corresponding polygon.

ITextureHandle* txt_handle
The corresponding unlighted texture.

int Imin_u
Bounding box of corresponding polygon in 2D texture space. Note that the u-axis of this bounding box is made a power of 2 for efficiency reasons.

int shf_u

int and_u

int w
Width of lighted texture ('w' is a power of 2).

int h
Height of lighted texture.

int w_orig
Original width (not a power of 2) (w_orig <= w).

int size
Size including vertical margins (note: size is in pixels, multiply this value by the real number of bytes for every pixel to get the real size)

int du

int dv

float fdu

float fdv

csLightMap* lm
LightMap.

int mipmap_level
The mipmap level (0..3) that this PolyTexture is used for.

int mipmap_size
Mipmap size to use for lightmap boxes: 16, 8, 4, or 2.

int mipmap_shift
Mipmap shift corresponding to the mipmap_size above.

bool dyn_dirty
If true, dynamic lighting needs to be recalculated.

static bool do_accurate_things
Option variable: do accurate lighting of things. This is much slower however.

static float cfg_cosinus_factor
Option variable: control how much the angle of the light with the polygon it hits affects the final light value. Values ranges from -1 to 1. With -1 the polygons will get no light at all. With 0 it will be perfect cosine rule. With 1 the cosine is ignored and it will be like Crystal Space was in the past. Note that changing this value at runtime only has an effect on dynamic lights.

static int subtex_size
The size of the sub-textures. Calculations of the textures in the texture cache are done on parts of the textures (sub-textures). This number defines the horizontal and vertical dimensions of such sub-textures. If this value is set to 0 then this sub-texture optimization is not used.
Must be a power of 2 and larger or equal than the largest lightmap box-size that is used.

static bool subtex_dynlight
If the sub-texture optimization is enabled (subtex_size != 0) then this option gives an additional optimization. With this option enabled dynamic lights will only cause updating of the really touched sub-textures. This results in even more efficient behaviour.

csPolyTexture()

virtual ~csPolyTexture()

int GetMipmapSize()
Get the mipmap size used for this texture.

void SetMipmapSize(int mm)
Set the mipmap size used for this texture.

csLightMap* GetLightMap()

int GetWidth()
Get width of lighted texture (power of 2).

int GetHeight()
Get height of lighted texture.

int GetDu()

int GetDv()

float GetFdu()

float GetFdv()

int GetShiftU()

int GetAndU()

int GetOrigWidth()

void SetPolygon(csPolygon3D* p)
Set the corresponding polygon for this polytexture

void SetMipmapLevel(int mm)

int GetMipmapLevel()

void SetTextureHandle(ITextureHandle* th)
Set the texture to be used for this polytexture.

ITextureHandle* GetTextureHandle()

void CreateBoundingTextureBox()
Calculate the bounding box in (u,v) space for the lighted texture

void InitLightMaps()
Initialize the lightmaps

void FillLightMap(csLightView& lview)
Update the lightmap for the given light

void ShineDynLightMap(csLightPatch* lp)
Update the real lightmap for a given csLightPatch (used for a dynamic light)

void MakeDirtyDynamicLights()

float Fmin_u
fp bounding box (0..1 texture space)

bool RecalcDynamicLights()
Recalculate all pseudo and real dynamic lights if the texture is dirty. The function returns true if there was a recalculation (then the texture needs to be removed from the texture cache).

void CreateDirtyMatrix()
Create the dirty matrix if needed. This function will also check if the dirty matrix has the right size. If not it will recreate it. The dirty matrix is used in combination with the sub-texture optimization. If recreation of the dirty matrix was needed it will be made all dirty.

void MakeAllDirty()
Make the dirty matrix completely dirty

int CountDirtySubtextures()
Return the number of dirty sub-textures

int CountCleanSubtextures()
Return the number of clean sub-textures


This class has no child classes.

alphabetic index hierarchy of classes


this page has been generated automatically by doc++

(c)opyright by Malte Zöckler, Roland Wunderling
contact: doc++@zib.de