common: add loadversion to mbsp_t

This commit is contained in:
Eric Wasylishen 2017-10-03 14:17:42 -06:00
parent 71d675ce09
commit 2dc22b7088
5 changed files with 22 additions and 21 deletions

View File

@ -1607,6 +1607,7 @@ ConvertBSPFormat(int32_t version, bspdata_t *bspdata)
FreeBSP29((bsp29_t *)bsp29); FreeBSP29((bsp29_t *)bsp29);
/* Conversion complete! */ /* Conversion complete! */
mbsp->loadversion = bspdata->version;
bspdata->version = version; bspdata->version = version;
return; return;
@ -1664,6 +1665,7 @@ ConvertBSPFormat(int32_t version, bspdata_t *bspdata)
FreeQ2BSP((q2bsp_t *)q2bsp); FreeQ2BSP((q2bsp_t *)q2bsp);
/* Conversion complete! */ /* Conversion complete! */
mbsp->loadversion = bspdata->version;
bspdata->version = version; bspdata->version = version;
return; return;
@ -1713,6 +1715,7 @@ ConvertBSPFormat(int32_t version, bspdata_t *bspdata)
FreeBSP2RMQ((bsp2rmq_t *)bsp2rmq); FreeBSP2RMQ((bsp2rmq_t *)bsp2rmq);
/* Conversion complete! */ /* Conversion complete! */
mbsp->loadversion = bspdata->version;
bspdata->version = version; bspdata->version = version;
return; return;
@ -1762,6 +1765,7 @@ ConvertBSPFormat(int32_t version, bspdata_t *bspdata)
FreeBSP2((bsp2_t *)bsp2); FreeBSP2((bsp2_t *)bsp2);
/* Conversion complete! */ /* Conversion complete! */
mbsp->loadversion = bspdata->version;
bspdata->version = version; bspdata->version = version;
return; return;

View File

@ -665,6 +665,8 @@ typedef struct {
} q2bsp_t; } q2bsp_t;
typedef struct { typedef struct {
int32_t loadversion;
int nummodels; int nummodels;
dmodelh2_t *dmodels; dmodelh2_t *dmodels;
@ -741,8 +743,8 @@ typedef struct {
} q2_dheader_t; } q2_dheader_t;
typedef struct { typedef struct {
int32_t version;
int32_t loadversion; int32_t loadversion;
int32_t version;
int hullcount; int hullcount;
struct { struct {

View File

@ -78,6 +78,6 @@ vec_t GetLightValue(const globalconfig_t &cfg, const light_t *entity, vec_t dist
std::map<int, qvec3f> GetDirectLighting(const globalconfig_t &cfg, raystream_t *rs, const vec3_t origin, const vec3_t normal); std::map<int, qvec3f> GetDirectLighting(const globalconfig_t &cfg, raystream_t *rs, const vec3_t origin, const vec3_t normal);
void SetupDirt(globalconfig_t &cfg); void SetupDirt(globalconfig_t &cfg);
float DirtAtPoint(const globalconfig_t &cfg, raystream_t *rs, const vec3_t point, const vec3_t normal, const modelinfo_t *selfshadow); float DirtAtPoint(const globalconfig_t &cfg, raystream_t *rs, const vec3_t point, const vec3_t normal, const modelinfo_t *selfshadow);
void LightFace(bspdata_t *bspdata, bsp2_dface_t *face, facesup_t *facesup, const globalconfig_t &cfg); void LightFace(const mbsp_t *bsp, bsp2_dface_t *face, facesup_t *facesup, const globalconfig_t &cfg);
#endif /* __LIGHT_LTFACE_H__ */ #endif /* __LIGHT_LTFACE_H__ */

View File

@ -223,8 +223,7 @@ const modelinfo_t *ModelInfoForFace(const mbsp_t *bsp, int facenum)
static void * static void *
LightThread(void *arg) LightThread(void *arg)
{ {
bspdata_t *bspdata = (bspdata_t *)arg; const mbsp_t *bsp = (const mbsp_t *)arg;
mbsp_t *bsp = &bspdata->data.mbsp;
#ifdef HAVE_EMBREE #ifdef HAVE_EMBREE
_MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON); _MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON);
@ -247,24 +246,24 @@ LightThread(void *arg)
} }
if (!faces_sup) if (!faces_sup)
LightFace(bspdata, f, nullptr, cfg_static); LightFace(bsp, f, nullptr, cfg_static);
else if (scaledonly) else if (scaledonly)
{ {
f->lightofs = -1; f->lightofs = -1;
f->styles[0] = 255; f->styles[0] = 255;
LightFace(bspdata, f, faces_sup + facenum, cfg_static); LightFace(bsp, f, faces_sup + facenum, cfg_static);
} }
else if (faces_sup[facenum].lmscale == face_modelinfo->lightmapscale) else if (faces_sup[facenum].lmscale == face_modelinfo->lightmapscale)
{ {
LightFace(bspdata, f, nullptr, cfg_static); LightFace(bsp, f, nullptr, cfg_static);
faces_sup[facenum].lightofs = f->lightofs; faces_sup[facenum].lightofs = f->lightofs;
for (int i = 0; i < MAXLIGHTMAPS; i++) for (int i = 0; i < MAXLIGHTMAPS; i++)
faces_sup[facenum].styles[i] = f->styles[i]; faces_sup[facenum].styles[i] = f->styles[i];
} }
else else
{ {
LightFace(bspdata, f, nullptr, cfg_static); LightFace(bsp, f, nullptr, cfg_static);
LightFace(bspdata, f, faces_sup + facenum, cfg_static); LightFace(bsp, f, faces_sup + facenum, cfg_static);
} }
} }
@ -426,7 +425,7 @@ LightWorld(bspdata_t *bspdata, qboolean forcedscale)
info.bsp = bsp; info.bsp = bsp;
RunThreadsOn(0, info.all_batches.size(), LightBatchThread, &info); RunThreadsOn(0, info.all_batches.size(), LightBatchThread, &info);
#else #else
RunThreadsOn(0, bsp->numfaces, LightThread, bspdata); RunThreadsOn(0, bsp->numfaces, LightThread, bsp);
#endif #endif
logprint("Lighting Completed.\n\n"); logprint("Lighting Completed.\n\n");

View File

@ -2585,11 +2585,9 @@ BoxBlurImage(const std::vector<qvec4f> &input, int w, int h, int radius)
} }
static void static void
WriteLightmaps(bspdata_t *bspdata, bsp2_dface_t *face, facesup_t *facesup, const lightsurf_t *lightsurf, WriteLightmaps(const mbsp_t *bsp, bsp2_dface_t *face, facesup_t *facesup, const lightsurf_t *lightsurf,
const lightmapdict_t *lightmaps) const lightmapdict_t *lightmaps)
{ {
mbsp_t *bsp = &bspdata->data.mbsp;
// intermediate collection for sorting lightmaps // intermediate collection for sorting lightmaps
std::vector<std::pair<float, const lightmap_t *>> sortable; std::vector<std::pair<float, const lightmap_t *>> sortable;
@ -2658,7 +2656,7 @@ WriteLightmaps(bspdata_t *bspdata, bsp2_dface_t *face, facesup_t *facesup, const
int size = (lightsurf->texsize[0] + 1) * (lightsurf->texsize[1] + 1); int size = (lightsurf->texsize[0] + 1) * (lightsurf->texsize[1] + 1);
// q2 support // q2 support
if (bspdata->loadversion == Q2_BSPVERSION) if (bsp->loadversion == Q2_BSPVERSION)
size *= 3; size *= 3;
byte *out, *lit, *lux; byte *out, *lit, *lux;
@ -2709,7 +2707,7 @@ WriteLightmaps(bspdata_t *bspdata, bsp2_dface_t *face, facesup_t *facesup, const
*lit++ = color[1]; *lit++ = color[1];
*lit++ = color[2]; *lit++ = color[2];
if (bspdata->loadversion == Q2_BSPVERSION) { if (bsp->loadversion == Q2_BSPVERSION) {
*out++ = color[0]; *out++ = color[0];
*out++ = color[1]; *out++ = color[1];
*out++ = color[2]; *out++ = color[2];
@ -2769,10 +2767,8 @@ static void LightFaceShutdown(lightsurf_t *lightsurf)
* ============ * ============
*/ */
void void
LightFace(bspdata_t *bspdata, bsp2_dface_t *face, facesup_t *facesup, const globalconfig_t &cfg) LightFace(const mbsp_t *bsp, bsp2_dface_t *face, facesup_t *facesup, const globalconfig_t &cfg)
{ {
mbsp_t *bsp = &bspdata->data.mbsp;
/* Find the correct model offset */ /* Find the correct model offset */
const modelinfo_t *modelinfo = ModelInfoForFace(bsp, Face_GetNum(bsp, face)); const modelinfo_t *modelinfo = ModelInfoForFace(bsp, Face_GetNum(bsp, face));
if (modelinfo == nullptr) { if (modelinfo == nullptr) {
@ -2904,7 +2900,7 @@ LightFace(bspdata_t *bspdata, bsp2_dface_t *face, facesup_t *facesup, const glob
/* Apply gamma, rangescale, and clamp */ /* Apply gamma, rangescale, and clamp */
LightFace_ScaleAndClamp(lightsurf, lightmaps); LightFace_ScaleAndClamp(lightsurf, lightmaps);
WriteLightmaps(bspdata, face, facesup, lightsurf, lightmaps); WriteLightmaps(bsp, face, facesup, lightsurf, lightmaps);
LightFaceShutdown(lightsurf); LightFaceShutdown(lightsurf);
} }