Skip to content

Commit

Permalink
Further preparatory refactoring and clean up for texture atlases.
Browse files Browse the repository at this point in the history
I decided to tackle some of the remaining issues before attempting to merge the atlas stuff. Still a little more to be done however.
  • Loading branch information
danij-deng committed Mar 15, 2011
1 parent 739c16f commit ac14fc2
Show file tree
Hide file tree
Showing 50 changed files with 890 additions and 902 deletions.
144 changes: 94 additions & 50 deletions doomsday/engine/api/dd_share.h
Expand Up @@ -930,25 +930,109 @@ typedef struct {
//
//------------------------------------------------------------------------

// Texture Namespaces
#define TEXTURES_SYSTEM_RESOURCE_NAMESPACE_NAME "System"
#define TEXTURES_FLATS_RESOURCE_NAMESPACE_NAME "Flats"
#define TEXTURES_SPRITES_RESOURCE_NAMESPACE_NAME "Sprites"
#define TEXTURES_PATCHES_RESOURCE_NAMESPACE_NAME "Patches"
#define TEXTURES_TEXTURES_RESOURCE_NAMESPACE_NAME "Textures"
/**
* @defgroup materialFlags Material Flags
* @{
*/
#define MATF_CUSTOM 0x0001 // Material is not derived from an IWAD resource (directly, at least).
#define MATF_NO_DRAW 0x0002 // Material should never be drawn.
#define MATF_SKYMASK 0x0004 // Sky-mask surfaces using this material.
/**@{*/

#define DDMAX_MATERIAL_LAYERS 1

/**
* @defgroup animationGroupFlags Animation Group Flags
* @{
*/
#define AGF_SMOOTH 0x1
#define AGF_FIRST_ONLY 0x2
#define AGF_PRECACHE 0x4000 // Group is just for precaching.
/**@}*/

/**
* Material Namespaces
*/

/**
* @defgroup materialNamespaceNames Material Namespace Names
* @{
*/
#define MN_SYSTEM_NAME "System"
#define MN_FLATS_NAME "Flats"
#define MN_TEXTURES_NAME "Textures"
#define MN_SPRITES_NAME "Sprites"
/**@}*/

typedef enum {
MN_ANY = -1,
MATERIALNAMESPACE_FIRST = 1000,
MN_SYSTEM = MATERIALNAMESPACE_FIRST,
MN_FLATS,
MN_TEXTURES,
MN_SPRITES,
MATERIALNAMESPACE_LAST = MN_SPRITES
} materialnamespaceid_t;

#define MATERIALNAMESPACE_COUNT (\
MATERIALNAMESPACE_LAST + 1 - MATERIALNAMESPACE_FIRST )

#define VALID_MATERIALNAMESPACE(id) (\
(id) >= MATERIALNAMESPACE_FIRST && (id) <= MATERIALNAMESPACE_LAST)

/**
* Texture Namespaces
*/

/**
* @defgroup textureNamespaceNames Texture Namespace Names
* @{
*/
#define TN_SYSTEM_NAME "System"
#define TN_FLATS_NAME "Flats"
#define TN_TEXTURES_NAME "Textures"
#define TN_SPRITES_NAME "Sprites"
#define TN_PATCHES_NAME "Patches"
/**@{*/

typedef enum {
TN_ANY = -1,
TEXTURENAMESPACE_FIRST = 0,
TEXTURENAMESPACE_FIRST = 2000,
TN_SYSTEM = TEXTURENAMESPACE_FIRST,
TN_FLATS,
TN_TEXTURES,
TN_PATCHES,
TN_SPRITES,
TEXTURENAMESPACE_COUNT
TN_PATCHES,
TEXTURENAMESPACE_LAST = TN_PATCHES
} texturenamespaceid_t;

#define VALID_TEXTURENAMESPACEID(id)((id) >= TEXTURENAMESPACE_FIRST && (id) < TEXTURENAMESPACE_COUNT)
#define TEXTURENAMESPACE_COUNT (\
TEXTURENAMESPACE_LAST + 1 - TEXTURENAMESPACE_FIRST )

#define VALID_TEXTURENAMESPACE(id) (\
(id) >= TEXTURENAMESPACE_FIRST && (id) <= TEXTURENAMESPACE_LAST)

typedef struct {
patchid_t id;
boolean isCustom; // @c true if the patch does not originate from an IWAD.
short offset;
short topOffset;
short width;
short height;
// Temporary until the big DGL drawing rewrite.
short extraOffset[2]; // Only used with upscaled and sharpened patches.
} patchinfo_t;

typedef struct {
struct material_s* material;
int flip;
int offset;
int topOffset;
int width;
int height;
float texCoord[2]; // Prepared texture coordinates.
int numFrames; // Number of frames the sprite has.
} spriteinfo_t;

/**
* Processing modes for GL_LoadGraphics.
Expand All @@ -960,46 +1044,6 @@ typedef enum gfxmode_e {
LGM_WHITE_ALPHA = 3
} gfxmode_t;

#define DDMAX_MATERIAL_LAYERS 1

// Material Namespaces
#define MATERIALS_SYSTEM_RESOURCE_NAMESPACE_NAME "System"
#define MATERIALS_FLATS_RESOURCE_NAMESPACE_NAME "Flats"
#define MATERIALS_SPRITES_RESOURCE_NAMESPACE_NAME "Sprites"
#define MATERIALS_TEXTURES_RESOURCE_NAMESPACE_NAME "Textures"

// Material flags:
#define MATF_CUSTOM 0x0001 // Material is not derived from an IWAD resource (directly, at least).
#define MATF_NO_DRAW 0x0002 // Material should never be drawn.
#define MATF_SKYMASK 0x0004 // Sky-mask surfaces using this material.

// Animation group flags.
#define AGF_SMOOTH 0x1
#define AGF_FIRST_ONLY 0x2
#define AGF_PRECACHE 0x4000 // Group is just for precaching.

typedef struct {
patchid_t id;
boolean isCustom; // @c true if the patch does not originate from an IWAD.
short offset;
short topOffset;
short width;
short height;
// temporary until the big DGL drawing rewrite.
short extraOffset[2]; // Only used with upscaled and sharpened patches.
} patchinfo_t;

typedef struct {
struct material_s* material;
int flip;
int offset;
int topOffset;
int width;
int height;
float texCoord[2]; // Prepared texture coordinates.
int numFrames; // Number of frames the sprite has.
} spriteinfo_t;

typedef unsigned int colorpaletteid_t;

//------------------------------------------------------------------------
Expand Down
2 changes: 2 additions & 0 deletions doomsday/engine/api/dd_uri.h
Expand Up @@ -43,6 +43,8 @@ const ddstring_t* Uri_Scheme(const dduri_t* uri);
const ddstring_t* Uri_Path(const dduri_t* uri);

void Uri_SetScheme(dduri_t* uri, const char* scheme);
void Uri_SetPath(dduri_t* uri, const char* path);

void Uri_SetUri3(dduri_t* uri, const char* path, resourceclass_t defaultResourceClass);
void Uri_SetUri2(dduri_t* uri, const char* path);
void Uri_SetUri(dduri_t* uri, const ddstring_t* path);
Expand Down
20 changes: 12 additions & 8 deletions doomsday/engine/api/doomsday.def
@@ -1,7 +1,7 @@
; Doomsday Engine API (Routines exported from Doomsday.exe).
;
; Highest ordinal is currently: --> 499 <--
; Other free ordinals: 30, 437
; Highest ordinal is currently: --> 503 <--
; Other free ordinals: 30, 336

NAME "DOOMSDAY"
EXPORTS
Expand All @@ -21,6 +21,8 @@ EXPORTS
DD_GetVariable @43 NONAME
DD_GetPlayer @44 NONAME
DD_MaterialForTextureIndex @234 NONAME
DD_ParseTextureNamespace @502 NONAME
DD_ParseMaterialNamespace @503 NONAME

; Base: Types.
; Animator.
Expand Down Expand Up @@ -88,6 +90,8 @@ EXPORTS
Uri_ComposePath @488 NONAME
Uri_ToString @489 NONAME
Uri_Equality @493 NONAME
Uri_SetPath @437 NONAME
Uri_SetScheme @500 NONAME

; Base: Definitions.
Def_Get @11 NONAME
Expand Down Expand Up @@ -334,11 +338,10 @@ EXPORTS
P_SetPolyobjCallback @83 NONAME

; Play: Materials.
Materials_GetName @337 NONAME
Materials_GetPath @494 NONAME
Materials_CheckNumForName @495 NONAME
Materials_NumForName2 @336 NONAME
Materials_NumForName @496 NONAME
Materials_GetSymbolicName @337 NONAME
Materials_GetUri @494 NONAME
Materials_IndexForName @495 NONAME
Materials_IndexForUri @496 NONAME
Materials_Precache @436 NONAME
Materials_CreateAnimGroup @241 NONAME
Materials_AddAnimGroupFrame @242 NONAME
Expand Down Expand Up @@ -463,7 +466,8 @@ EXPORTS
GL_GrabScreen @109 NONAME
GL_SetFilter @132 NONAME
GL_SetFilterColor @441 NONAME
GL_TextureIndexForName @438 NONAME
GL_GLTextureIndexForUri @438 NONAME
GL_GLTextureIndexForUri2 @501 NONAME

; Graphics: Text
FR_FontIdForName @106 NONAME
Expand Down
19 changes: 11 additions & 8 deletions doomsday/engine/api/doomsday.h
Expand Up @@ -133,7 +133,10 @@ boolean DD_GetGameInfo(ddgameinfo_t* info);
void* DD_GetVariable(int ddvalue);
ddplayer_t* DD_GetPlayer(int number);

materialnum_t DD_MaterialForTextureIndex(uint index, texturenamespaceid_t texNamespace);
texturenamespaceid_t DD_ParseTextureNamespace(const char* str);
materialnamespaceid_t DD_ParseMaterialNamespace(const char* str);

materialnum_t DD_MaterialForTextureIndex(uint index, texturenamespaceid_t texNamespace);

// Base: Definitions.
int Def_Get(int type, const char* id, void* out);
Expand Down Expand Up @@ -414,13 +417,11 @@ void Con_SetString(const char* name, char* text);
void P_SetPolyobjCallback(void (*func)(struct mobj_s*, void*, void*));

// Play: Materials.
materialnum_t Materials_CheckNumForName2(const dduri_t* path);
materialnum_t Materials_CheckNumForName(const char* path);
materialnum_t Materials_NumForName2(const dduri_t* path);
materialnum_t Materials_NumForName(const char* path);
dduri_t* Materials_GetPath(material_t* mat);
materialnum_t Materials_IndexForUri(const dduri_t* uri);
materialnum_t Materials_IndexForName(const char* path);
dduri_t* Materials_GetUri(material_t* mat);

const char* Materials_GetName(material_t* mat);
const char* Materials_GetSymbolicName(material_t* mat);
void Materials_Precache(material_t* mat, boolean yes);
int Materials_CreateAnimGroup(int flags);
void Materials_AddAnimGroupFrame(int groupNum, materialnum_t num, int tics, int randomTics);
Expand Down Expand Up @@ -480,7 +481,9 @@ void Con_SetString(const char* name, char* text);
byte* GL_GrabScreen(void);
void GL_SetFilter(boolean enable);
void GL_SetFilterColor(float r, float g, float b, float a);
uint GL_TextureIndexForName(const char* name, texturenamespaceid_t texNamespace);

uint GL_GLTextureIndexForUri(const dduri_t* uri);
uint GL_GLTextureIndexForUri2(const dduri_t* uri, boolean silent);

//------------------------------------------------------------------------
//
Expand Down
3 changes: 3 additions & 0 deletions doomsday/engine/portable/include/dd_main.h
Expand Up @@ -79,6 +79,9 @@ void* DD_GetVariable(int ddvalue);

ddplayer_t* DD_GetPlayer(int number);

texturenamespaceid_t DD_ParseTextureNamespace(const char* str);
materialnamespaceid_t DD_ParseMaterialNamespace(const char* str);

materialnum_t DD_MaterialForTextureIndex(uint index, texturenamespaceid_t texNamespace);

const char* value_Str(int val);
Expand Down
13 changes: 7 additions & 6 deletions doomsday/engine/portable/include/gl_texmanager.h
Expand Up @@ -252,17 +252,18 @@ boolean GL_OptimalTextureSize(int width, int height, boolean noStretch,

void GL_ReleaseGLTexture(gltextureid_t id);

const struct gltexture_s* GL_GetGLTexture(gltextureid_t id);
const struct gltexture_s* GL_ToGLTexture(gltextureid_t id);
const struct gltexturevariant_s* GL_PrepareGLTexture(gltextureid_t id, void* context, byte* result);

uint GL_TextureIndexForName(const char* name, texturenamespaceid_t texNamespace);

const struct gltexture_s* GL_CreateGLTexture(const char* name, uint index, gltexture_type_t type);

const struct gltexture_s* GL_GetGLTextureByName(const char* name, texturenamespaceid_t texNamespace);
const struct gltexture_s* GL_GetGLTextureByUri(const dduri_t* uri);
const struct gltexture_s* GL_GLTextureByUri2(const dduri_t* uri, boolean silent);
const struct gltexture_s* GL_GLTextureByUri(const dduri_t* uri);

const struct gltexture_s* GL_GLTextureByIndex(int index, texturenamespaceid_t texNamespace);

const struct gltexture_s* GL_GetGLTextureByIndex(int index, texturenamespaceid_t texNamespace);
uint GL_GLTextureIndexForUri2(const dduri_t* uri, boolean silent);
uint GL_GLTextureIndexForUri(const dduri_t* uri);

/**
* Updates the minification mode of ALL gltextures.
Expand Down

0 comments on commit ac14fc2

Please sign in to comment.