From 2dc22b70880c2846decdbfe1846c588a21a2a08f Mon Sep 17 00:00:00 2001 From: Eric Wasylishen Date: Tue, 3 Oct 2017 14:17:42 -0600 Subject: [PATCH] common: add loadversion to mbsp_t --- common/bspfile.cc | 6 +++++- include/common/bspfile.hh | 4 +++- include/light/ltface.hh | 2 +- light/light.cc | 17 ++++++++--------- light/ltface.cc | 14 +++++--------- 5 files changed, 22 insertions(+), 21 deletions(-) diff --git a/common/bspfile.cc b/common/bspfile.cc index 2d4b19f9..c8f00edc 100644 --- a/common/bspfile.cc +++ b/common/bspfile.cc @@ -1607,6 +1607,7 @@ ConvertBSPFormat(int32_t version, bspdata_t *bspdata) FreeBSP29((bsp29_t *)bsp29); /* Conversion complete! */ + mbsp->loadversion = bspdata->version; bspdata->version = version; return; @@ -1664,6 +1665,7 @@ ConvertBSPFormat(int32_t version, bspdata_t *bspdata) FreeQ2BSP((q2bsp_t *)q2bsp); /* Conversion complete! */ + mbsp->loadversion = bspdata->version; bspdata->version = version; return; @@ -1713,6 +1715,7 @@ ConvertBSPFormat(int32_t version, bspdata_t *bspdata) FreeBSP2RMQ((bsp2rmq_t *)bsp2rmq); /* Conversion complete! */ + mbsp->loadversion = bspdata->version; bspdata->version = version; return; @@ -1762,8 +1765,9 @@ ConvertBSPFormat(int32_t version, bspdata_t *bspdata) FreeBSP2((bsp2_t *)bsp2); /* Conversion complete! */ + mbsp->loadversion = bspdata->version; bspdata->version = version; - + return; } diff --git a/include/common/bspfile.hh b/include/common/bspfile.hh index 85ad3649..5d0687d0 100644 --- a/include/common/bspfile.hh +++ b/include/common/bspfile.hh @@ -665,6 +665,8 @@ typedef struct { } q2bsp_t; typedef struct { + int32_t loadversion; + int nummodels; dmodelh2_t *dmodels; @@ -741,8 +743,8 @@ typedef struct { } q2_dheader_t; typedef struct { - int32_t version; int32_t loadversion; + int32_t version; int hullcount; struct { diff --git a/include/light/ltface.hh b/include/light/ltface.hh index 9b0770fa..2fa8c49c 100644 --- a/include/light/ltface.hh +++ b/include/light/ltface.hh @@ -78,6 +78,6 @@ vec_t GetLightValue(const globalconfig_t &cfg, const light_t *entity, vec_t dist std::map GetDirectLighting(const globalconfig_t &cfg, raystream_t *rs, const vec3_t origin, const vec3_t normal); 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); -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__ */ diff --git a/light/light.cc b/light/light.cc index e59854a1..8339192d 100644 --- a/light/light.cc +++ b/light/light.cc @@ -223,9 +223,8 @@ const modelinfo_t *ModelInfoForFace(const mbsp_t *bsp, int facenum) static void * LightThread(void *arg) { - bspdata_t *bspdata = (bspdata_t *)arg; - mbsp_t *bsp = &bspdata->data.mbsp; - + const mbsp_t *bsp = (const mbsp_t *)arg; + #ifdef HAVE_EMBREE _MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON); // _MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_ON); @@ -247,24 +246,24 @@ LightThread(void *arg) } if (!faces_sup) - LightFace(bspdata, f, nullptr, cfg_static); + LightFace(bsp, f, nullptr, cfg_static); else if (scaledonly) { f->lightofs = -1; 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) { - LightFace(bspdata, f, nullptr, cfg_static); + LightFace(bsp, f, nullptr, cfg_static); faces_sup[facenum].lightofs = f->lightofs; for (int i = 0; i < MAXLIGHTMAPS; i++) faces_sup[facenum].styles[i] = f->styles[i]; } else { - LightFace(bspdata, f, nullptr, cfg_static); - LightFace(bspdata, f, faces_sup + facenum, cfg_static); + LightFace(bsp, f, nullptr, cfg_static); + LightFace(bsp, f, faces_sup + facenum, cfg_static); } } @@ -426,7 +425,7 @@ LightWorld(bspdata_t *bspdata, qboolean forcedscale) info.bsp = bsp; RunThreadsOn(0, info.all_batches.size(), LightBatchThread, &info); #else - RunThreadsOn(0, bsp->numfaces, LightThread, bspdata); + RunThreadsOn(0, bsp->numfaces, LightThread, bsp); #endif logprint("Lighting Completed.\n\n"); diff --git a/light/ltface.cc b/light/ltface.cc index bb0d37fc..7762f0c6 100644 --- a/light/ltface.cc +++ b/light/ltface.cc @@ -2585,11 +2585,9 @@ BoxBlurImage(const std::vector &input, int w, int h, int radius) } 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) { - mbsp_t *bsp = &bspdata->data.mbsp; - // intermediate collection for sorting lightmaps std::vector> 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); // q2 support - if (bspdata->loadversion == Q2_BSPVERSION) + if (bsp->loadversion == Q2_BSPVERSION) size *= 3; 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[2]; - if (bspdata->loadversion == Q2_BSPVERSION) { + if (bsp->loadversion == Q2_BSPVERSION) { *out++ = color[0]; *out++ = color[1]; *out++ = color[2]; @@ -2769,10 +2767,8 @@ static void LightFaceShutdown(lightsurf_t *lightsurf) * ============ */ 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 */ const modelinfo_t *modelinfo = ModelInfoForFace(bsp, Face_GetNum(bsp, face)); 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 */ LightFace_ScaleAndClamp(lightsurf, lightmaps); - WriteLightmaps(bspdata, face, facesup, lightsurf, lightmaps); + WriteLightmaps(bsp, face, facesup, lightsurf, lightmaps); LightFaceShutdown(lightsurf); }