mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-12-11 21:31:30 +00:00
793525a50a
This fixes a Sys_Error when loading the level for the first demo (and probably many other times). It was mod_numknown getting set to 0 that triggered the issue, but that seems to be necessary for the other renderers. I think the whole model loading and caching system needs an overhaul as this doesn't feel quite right due to removing part of the advantage of caching the model data.
134 lines
5.2 KiB
C
134 lines
5.2 KiB
C
#ifndef __mod_internal_h
|
|
#define __mod_internal_h
|
|
|
|
#include "QF/darray.h"
|
|
#include "QF/iqm.h"
|
|
#include "QF/model.h"
|
|
#include "QF/skin.h"
|
|
#include "QF/plugin/vid_render.h"
|
|
|
|
typedef struct mod_alias_skin_s {
|
|
int skin_num;
|
|
int group_num; // -1 if not in an animated group
|
|
byte *texels;
|
|
maliasskindesc_t *skindesc;
|
|
} mod_alias_skin_t;
|
|
|
|
typedef struct stvertset_s DARRAY_TYPE (stvert_t) stvertset_t;
|
|
typedef struct mtriangleset_s DARRAY_TYPE (mtriangle_t) mtriangleset_t;
|
|
typedef struct trivertxset_s DARRAY_TYPE (trivertx_t *) trivertxset_t;
|
|
typedef struct askinset_s DARRAY_TYPE (mod_alias_skin_t) askinset_t;
|
|
|
|
typedef struct mod_alias_ctx_s {
|
|
aliashdr_t *header;
|
|
model_t *mod;
|
|
stvertset_t stverts;
|
|
mtriangleset_t triangles;
|
|
trivertxset_t poseverts;
|
|
askinset_t skins;
|
|
int aliasbboxmins[3];
|
|
int aliasbboxmaxs[3];
|
|
} mod_alias_ctx_t;
|
|
|
|
typedef struct mod_sprite_ctx_s {
|
|
model_t *mod;
|
|
dsprite_t *dsprite;
|
|
msprite_t *sprite;
|
|
int numframes;
|
|
int *frame_numbers;
|
|
dspriteframe_t **dframes; ///< array of pointers to dframes (in)
|
|
mspriteframe_t ***frames; ///< array of pointers to mframe pointers (out)
|
|
} mod_sprite_ctx_t;
|
|
|
|
int Mod_CalcFullbright (byte *out, const byte *in, size_t pixels);
|
|
int Mod_ClearFullbright (byte *out, const byte *in, size_t pixels);
|
|
void Mod_FloodFillSkin (byte *skin, int skinwidth, int skinheight);
|
|
//FIXME gl specific. rewrite to use above
|
|
int Mod_Fullbright (byte * skin, int width, int height, const char *name);
|
|
|
|
void Mod_LoadBrushModel (model_t *mod, void *buffer);
|
|
void Mod_FindClipDepth (hull_t *hull);
|
|
|
|
model_t *Mod_FindName (const char *name);
|
|
float RadiusFromBounds (const vec3_t mins, const vec3_t maxs) __attribute__((pure));
|
|
|
|
struct vulkan_ctx_s;
|
|
|
|
extern vid_model_funcs_t *m_funcs;
|
|
|
|
void gl_Mod_MakeAliasModelDisplayLists (mod_alias_ctx_t *alias_ctx, void *_m,
|
|
int _s, int extra);
|
|
void gl_Mod_LoadAllSkins (mod_alias_ctx_t *alias_ctx);
|
|
void gl_Mod_FinalizeAliasModel (mod_alias_ctx_t *alias_ctx);
|
|
void gl_Mod_LoadExternalSkins (mod_alias_ctx_t *alias_ctx);
|
|
void gl_Mod_IQMFinish (model_t *mod);
|
|
|
|
void glsl_Mod_MakeAliasModelDisplayLists (mod_alias_ctx_t *alias_ctx,
|
|
void *_m, int _s, int extra);
|
|
void glsl_Mod_LoadAllSkins (mod_alias_ctx_t *alias_ctx);
|
|
void glsl_Mod_FinalizeAliasModel (mod_alias_ctx_t *alias_ctx);
|
|
void glsl_Mod_LoadExternalSkins (mod_alias_ctx_t *alias_ctx);
|
|
void glsl_Mod_IQMFinish (model_t *mod);
|
|
|
|
void sw_Mod_MakeAliasModelDisplayLists (mod_alias_ctx_t *alias_ctx, void *_m,
|
|
int _s, int extra);
|
|
void sw_Mod_LoadAllSkins (mod_alias_ctx_t *alias_ctx);
|
|
void sw_Mod_FinalizeAliasModel (mod_alias_ctx_t *alias_ctx);
|
|
void sw_Mod_IQMFinish (model_t *mod);
|
|
|
|
void gl_Mod_LoadLighting (model_t *mod, bsp_t *bsp);
|
|
void gl_Mod_SubdivideSurface (model_t *mod, msurface_t *fa);
|
|
struct texture_s;
|
|
void gl_Mod_ProcessTexture (model_t *mod, struct texture_s *tx);
|
|
|
|
void glsl_Mod_LoadLighting (model_t *mod, bsp_t *bsp);
|
|
void glsl_Mod_ProcessTexture (model_t *mod, struct texture_s *tx);
|
|
|
|
void sw_Mod_LoadLighting (model_t *mod, bsp_t *bsp);
|
|
|
|
void Vulkan_Mod_LoadLighting (model_t *mod, bsp_t *bsp,
|
|
struct vulkan_ctx_s *ctx);
|
|
void Vulkan_Mod_SubdivideSurface (model_t *mod, msurface_t *fa,
|
|
struct vulkan_ctx_s *ctx);
|
|
void Vulkan_Mod_ProcessTexture (model_t *mod, struct texture_s *tx,
|
|
struct vulkan_ctx_s *ctx);
|
|
|
|
void Mod_LoadSpriteFrame (mspriteframe_t *frame, const dspriteframe_t *dframe);
|
|
void gl_Mod_SpriteLoadFrames (mod_sprite_ctx_t *sprite_ctx);
|
|
void glsl_Mod_SpriteLoadFrames (mod_sprite_ctx_t *sprite_ctx);
|
|
void sw_Mod_SpriteLoadFrames (mod_sprite_ctx_t *sprite_ctx);
|
|
|
|
void Mod_LoadIQM (model_t *mod, void *buffer);
|
|
void Mod_FreeIQM (iqm_t *iqm);
|
|
iqmblend_t *Mod_IQMBuildBlendPalette (iqm_t *iqm, int *size);
|
|
void Mod_LoadAliasModel (model_t *mod, void *buffer,
|
|
cache_allocator_t allocator);
|
|
void Mod_LoadSpriteModel (model_t *mod, void *buffer);
|
|
|
|
void Skin_Init (void);
|
|
void Skin_Shutdown (void);
|
|
void Skin_Free (skin_t *skin);
|
|
skin_t *Skin_SetColormap (skin_t *skin, int cmap);
|
|
skin_t *Skin_SetSkin (skin_t *skin, int cmap, const char *skinname);
|
|
void Skin_SetTranslation (int cmap, int top, int bottom);
|
|
int Skin_CalcTopColors (byte *out, const byte *in, size_t pixels, int stride);
|
|
int Skin_CalcTopMask (byte *out, const byte *in, size_t pixels, int stride);
|
|
int Skin_CalcBottomColors(byte *out, const byte *in, size_t pixels, int stride);
|
|
int Skin_CalcBottomMask (byte *out, const byte *in, size_t pixels, int stride);
|
|
int Skin_ClearTopColors (byte *out, const byte *in, size_t pixels);
|
|
int Skin_ClearBottomColors (byte *out, const byte *in, size_t pixels);
|
|
|
|
void sw_Skin_SetupSkin (skin_t *skin, int cmap);
|
|
void sw_Skin_ProcessTranslation (int cmap, const byte *translation);
|
|
void sw_Skin_InitTranslations (void);
|
|
|
|
void glsl_Skin_SetupSkin (skin_t *skin, int cmap);
|
|
void glsl_Skin_ProcessTranslation (int cmap, const byte *translation);
|
|
void glsl_Skin_InitTranslations (void);
|
|
|
|
void gl_Skin_SetupSkin (skin_t *skin, int cmap);
|
|
void gl_Skin_ProcessTranslation (int cmap, const byte *translation);
|
|
void gl_Skin_InitTranslations (void);
|
|
void gl_Skin_Init_Textures (void);
|
|
void gl_Skin_SetPlayerSkin (int width, int height, const byte *data);
|
|
#endif// __mod_internal_h
|