common: add loadversion to mbsp_t
This commit is contained in:
parent
71d675ce09
commit
2dc22b7088
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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__ */
|
||||||
|
|
|
||||||
|
|
@ -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");
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue