diff --git a/engine/client/cl_plugin.inc b/engine/client/cl_plugin.inc index 43f7ac44c..ad3583235 100644 --- a/engine/client/cl_plugin.inc +++ b/engine/client/cl_plugin.inc @@ -234,7 +234,7 @@ static qhandle_t QDECL Plug_Draw_LoadImageData(const char *name, const char *mim t = Image_CreateTexture(name, NULL, IF_PREMULTIPLYALPHA|IF_NOMIPMAP|IF_UIPIC|IF_CLAMP); if (TEXVALID(t)) { - Image_Upload(t, format, rgbdata, NULL, width, height, IF_PREMULTIPLYALPHA|IF_NOMIPMAP|IF_UIPIC|IF_CLAMP); + Image_Upload(t, format, rgbdata, NULL, width, height, 1, IF_PREMULTIPLYALPHA|IF_NOMIPMAP|IF_UIPIC|IF_CLAMP); ret = Plug_Draw_LoadImage(name, 3, NULL); } diff --git a/engine/client/client.h b/engine/client/client.h index 36d9362aa..b11453594 100644 --- a/engine/client/client.h +++ b/engine/client/client.h @@ -19,7 +19,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ // client.h -#include "particles.h" +#include "../common/particles.h" enum { diff --git a/engine/client/image.c b/engine/client/image.c index 1c637375d..d773991a3 100644 --- a/engine/client/image.c +++ b/engine/client/image.c @@ -8085,7 +8085,7 @@ static int Image_GetPicMip(unsigned int flags) return picmip; } -static void Image_RoundDimensions(int *scaled_width, int *scaled_height, unsigned int flags) +static void Image_RoundDimensions(int *scaled_width, int *scaled_height, int *scaled_depth, unsigned int flags) { if (sh_config.texture_non_power_of_two) //NPOT is a simple extension that relaxes errors. { @@ -8101,10 +8101,14 @@ static void Image_RoundDimensions(int *scaled_width, int *scaled_height, unsigne { int width = *scaled_width; int height = *scaled_height; + int depth = *scaled_depth; for (*scaled_width = 1 ; *scaled_width < width ; *scaled_width<<=1) ; for (*scaled_height = 1 ; *scaled_height < height ; *scaled_height<<=1) ; + if ((flags&IF_TEXTYPEMASK) == IF_TEXTYPE_3D) + for (*scaled_depth = 1 ; *scaled_depth < depth ; *scaled_depth<<=1) + ; /*round npot textures down if we're running on an embedded system*/ if (sh_config.npot_rounddown) @@ -8113,6 +8117,9 @@ static void Image_RoundDimensions(int *scaled_width, int *scaled_height, unsigne *scaled_width >>= 1; if (*scaled_height != height) *scaled_height >>= 1; + if ((flags&IF_TEXTYPEMASK) == IF_TEXTYPE_3D) + if (*scaled_depth != depth) + *scaled_depth >>= 1; } } @@ -8121,34 +8128,76 @@ static void Image_RoundDimensions(int *scaled_width, int *scaled_height, unsigne int picmip = Image_GetPicMip(flags); *scaled_width >>= picmip; *scaled_height >>= picmip; + if ((flags&IF_TEXTYPEMASK) == IF_TEXTYPE_3D) + *scaled_depth >>= picmip; } TRACE(("dbg: GL_RoundDimensions: %f\n", gl_max_size.value)); - if (sh_config.texture2d_maxsize) + switch((flags&IF_TEXTYPEMASK)>>IF_TEXTYPESHIFT) { - if (*scaled_width > sh_config.texture2d_maxsize) - *scaled_width = sh_config.texture2d_maxsize; - if (*scaled_height > sh_config.texture2d_maxsize) - *scaled_height = sh_config.texture2d_maxsize; - } -#ifdef HAVE_CLIENT - if (!(flags & (IF_UIPIC|IF_RENDERTARGET))) - { - if (gl_max_size.value) + default: + break; + case PTI_CUBE: + case PTI_CUBE_ARRAY: + if (sh_config.texturecube_maxsize) { - if (*scaled_width > gl_max_size.value) - *scaled_width = gl_max_size.value; - if (*scaled_height > gl_max_size.value) - *scaled_height = gl_max_size.value; + if (*scaled_width > sh_config.texturecube_maxsize) + *scaled_width = sh_config.texturecube_maxsize; + if (*scaled_height > sh_config.texturecube_maxsize) + *scaled_height = sh_config.texturecube_maxsize; + } + if (sh_config.texture2darray_maxlayers) + if (*scaled_depth > sh_config.texture2darray_maxlayers) + *scaled_depth = sh_config.texture2darray_maxlayers; + break; + case PTI_3D: + if (sh_config.texture3d_maxsize) + { + if (*scaled_width > sh_config.texture3d_maxsize) + *scaled_width = sh_config.texture3d_maxsize; + if (*scaled_height > sh_config.texture3d_maxsize) + *scaled_height = sh_config.texture3d_maxsize; + if (*scaled_depth > sh_config.texture3d_maxsize) + *scaled_depth = sh_config.texture3d_maxsize; + } + break; + case PTI_2D: + case PTI_2D_ARRAY: + if (sh_config.texture2d_maxsize) + { + if (*scaled_width > sh_config.texture2d_maxsize) + *scaled_width = sh_config.texture2d_maxsize; + if (*scaled_height > sh_config.texture2d_maxsize) + *scaled_height = sh_config.texture2d_maxsize; + } + if (sh_config.texture2darray_maxlayers) + if (*scaled_depth > sh_config.texture2darray_maxlayers) + *scaled_depth = sh_config.texture2darray_maxlayers; + +#ifdef HAVE_CLIENT + if (!(flags & (IF_UIPIC|IF_RENDERTARGET))) + { + if (gl_max_size.value) + { + if (*scaled_width > gl_max_size.value) + *scaled_width = gl_max_size.value; + if (*scaled_height > gl_max_size.value) + *scaled_height = gl_max_size.value; + if (*scaled_height > gl_max_size.value) + *scaled_height = gl_max_size.value; + } } - } #endif + break; + } if (*scaled_width < 1) *scaled_width = 1; if (*scaled_height < 1) *scaled_height = 1; + if (*scaled_depth < 1) + *scaled_depth = 1; } static void Image_Tr_NoTransform(struct pendingtextureinfo *mips, int dummy) @@ -11727,7 +11776,7 @@ void Image_Premultiply(struct pendingtextureinfo *mips) //resamples and depalettes as required //ALWAYS frees rawdata, even on failure (but never mips). -static qboolean Image_GenMip0(struct pendingtextureinfo *mips, unsigned int flags, void *rawdata, void *palettedata, int imgwidth, int imgheight, uploadfmt_t fmt, qboolean freedata) +static qboolean Image_GenMip0(struct pendingtextureinfo *mips, unsigned int flags, void *rawdata, void *palettedata, int imgwidth, int imgheight, int imgdepth, uploadfmt_t fmt, qboolean freedata) { unsigned int *rgbadata = rawdata; int i; @@ -11736,7 +11785,7 @@ static qboolean Image_GenMip0(struct pendingtextureinfo *mips, unsigned int flag mips->mip[0].width = imgwidth; mips->mip[0].height = imgheight; - mips->mip[0].depth = 1; + mips->mip[0].depth = imgdepth; mips->mipcount = 1; switch(fmt) @@ -11745,16 +11794,17 @@ static qboolean Image_GenMip0(struct pendingtextureinfo *mips, unsigned int flag if (fmt&PTI_FULLMIPCHAIN) { fmt = fmt&~PTI_FULLMIPCHAIN; - Image_RoundDimensions(&mips->mip[0].width, &mips->mip[0].height, flags); - if (mips->mip[0].width == imgwidth && mips->mip[0].height == imgheight) //make sure its okay + Image_RoundDimensions(&mips->mip[0].width, &mips->mip[0].height, &mips->mip[0].depth, flags); + if (mips->mip[0].width == imgwidth && mips->mip[0].height == imgheight && mips->mip[0].depth == imgdepth) //make sure its okay { size_t sz = 0; + int is3d = (mips->type == PTI_3D)?1:0; Image_BlockSizeForEncoding(fmt, &bb, &bw, &bh, &bd); - for (i = 0; i < countof(mips->mip) && (imgwidth || imgheight); i++, imgwidth>>=1, imgheight>>=1) + for (i = 0; i < countof(mips->mip) && (imgwidth || imgheight || (is3d && imgdepth)); i++, imgwidth>>=1, imgheight>>=1, imgdepth>>=is3d) { mips->mip[i].width = max(1,imgwidth); mips->mip[i].height = max(1,imgheight); - mips->mip[i].depth = 1; + mips->mip[i].depth = max(1,imgdepth); mips->mip[i].datasize = bb * ((mips->mip[i].width+bw-1)/bw) * ((mips->mip[i].height+bh-1)/bh) * ((mips->mip[i].depth+bd-1)/bd); mips->mip[i].needfree = false; sz += mips->mip[i].datasize; @@ -11778,6 +11828,11 @@ static qboolean Image_GenMip0(struct pendingtextureinfo *mips, unsigned int flag mips->encoding = fmt; break; + baddepth: + Con_Printf("R_LoadRawTexture: bad depth for format\n"); + if (freedata) + BZ_Free(rawdata); + return false; case TF_INVALID: Con_Printf("R_LoadRawTexture: bad format\n"); if (freedata) @@ -11786,9 +11841,9 @@ static qboolean Image_GenMip0(struct pendingtextureinfo *mips, unsigned int flag case TF_MIP4_P8: //8bit indexed data. - Image_RoundDimensions(&mips->mip[0].width, &mips->mip[0].height, flags); + Image_RoundDimensions(&mips->mip[0].width, &mips->mip[0].height, &mips->mip[0].depth, flags); flags |= IF_NOPICMIP; - if (/*!r_dodgymiptex.ival &&*/ mips->mip[0].width == imgwidth && mips->mip[0].height == imgheight) + if (/*!r_dodgymiptex.ival &&*/ mips->mip[0].width == imgwidth && mips->mip[0].height == imgheight && mips->mip[0].depth == 1) { unsigned int pixels = (imgwidth>>0) * (imgheight>>0) + @@ -11825,7 +11880,7 @@ static qboolean Image_GenMip0(struct pendingtextureinfo *mips, unsigned int flag { //if we can compact it, then do so! mips->encoding = PTI_L8; //can just do this in-place. - for (i = 0; i < imgwidth * imgheight; i++) + for (i = 0; i < imgwidth * imgheight * imgdepth; i++) ((qbyte*)rgbadata)[i] = ((qbyte*)rgbadata)[i*4]; } //otherwise treat it as whatever the gpu prefers @@ -11840,7 +11895,7 @@ static qboolean Image_GenMip0(struct pendingtextureinfo *mips, unsigned int flag { //if we can compact it, then do so! mips->encoding = PTI_L8A8; //can just do this in-place. - for (i = 0; i < imgwidth * imgheight; i++) + for (i = 0; i < imgwidth * imgheight * imgdepth; i++) { ((qbyte*)rgbadata)[i*2+0] = ((qbyte*)rgbadata)[i*4+0]; ((qbyte*)rgbadata)[i*2+1] = ((qbyte*)rgbadata)[i*4+3]; @@ -11853,10 +11908,10 @@ static qboolean Image_GenMip0(struct pendingtextureinfo *mips, unsigned int flag break; case TF_MIP4_SOLID8: //8bit opaque data - Image_RoundDimensions(&mips->mip[0].width, &mips->mip[0].height, flags); + Image_RoundDimensions(&mips->mip[0].width, &mips->mip[0].height, &mips->mip[0].depth, flags); flags |= IF_NOPICMIP; #ifdef HAVE_CLIENT - if (!r_dodgymiptex.ival && mips->mip[0].width == imgwidth && mips->mip[0].height == imgheight) + if (!r_dodgymiptex.ival && mips->mip[0].width == imgwidth && mips->mip[0].height == imgheight && mips->mip[0].depth == 1) { //special hack required to preserve the hand-drawn lower mips. unsigned int pixels = (imgwidth>>0) * (imgheight>>0) + @@ -11891,17 +11946,17 @@ static qboolean Image_GenMip0(struct pendingtextureinfo *mips, unsigned int flag #endif //fall through case TF_SOLID8: - rgbadata = BZ_Malloc(imgwidth * imgheight*4); + rgbadata = BZ_Malloc(imgdepth * imgwidth * imgheight*4); if (sh_config.texfmt[PTI_BGRX8]) { //bgra8 is typically faster when supported. mips->encoding = PTI_BGRX8; - for (i = 0; i < imgwidth * imgheight; i++) + for (i = 0; i < imgwidth * imgheight * imgdepth; i++) rgbadata[i] = d_8to24bgrtable[((qbyte*)rawdata)[i]]; } else { mips->encoding = PTI_RGBX8; - for (i = 0; i < imgwidth * imgheight; i++) + for (i = 0; i < imgwidth * imgheight * imgdepth; i++) rgbadata[i] = d_8to24rgbtable[((qbyte*)rawdata)[i]]; } if (freedata) @@ -11911,8 +11966,8 @@ static qboolean Image_GenMip0(struct pendingtextureinfo *mips, unsigned int flag case TF_TRANS8: { mips->encoding = PTI_RGBX8; - rgbadata = BZ_Malloc(imgwidth * imgheight*4); - for (i = 0; i < imgwidth * imgheight; i++) + rgbadata = BZ_Malloc(imgdepth * imgwidth * imgheight*4); + for (i = 0; i < imgwidth * imgheight * imgdepth; i++) { if (((qbyte*)rawdata)[i] == 0xff) {//fixme: blend non-0xff neighbours. no, just use premultiplied alpha instead, where it matters. @@ -11930,8 +11985,8 @@ static qboolean Image_GenMip0(struct pendingtextureinfo *mips, unsigned int flag case TF_H2_TRANS8_0: { mips->encoding = PTI_RGBX8; - rgbadata = BZ_Malloc(imgwidth * imgheight*4); - for (i = 0; i < imgwidth * imgheight; i++) + rgbadata = BZ_Malloc(imgdepth * imgwidth * imgheight*4); + for (i = 0; i < imgwidth * imgheight * imgdepth; i++) { qbyte px = ((qbyte*)rawdata)[i]; //Note: The proper value here is 0. @@ -11952,8 +12007,8 @@ static qboolean Image_GenMip0(struct pendingtextureinfo *mips, unsigned int flag break; case TF_TRANS8_FULLBRIGHT: mips->encoding = PTI_RGBA8; - rgbadata = BZ_Malloc(imgwidth * imgheight*4); - for (i = 0, valid = false; i < imgwidth * imgheight; i++) + rgbadata = BZ_Malloc(imgdepth * imgwidth * imgheight*4); + for (i = 0, valid = false; i < imgwidth * imgheight * imgdepth; i++) { if (((qbyte*)rawdata)[i] == 255 || ((qbyte*)rawdata)[i] < 256-vid.fullbright) rgbadata[i] = 0; @@ -11974,10 +12029,12 @@ static qboolean Image_GenMip0(struct pendingtextureinfo *mips, unsigned int flag break; case TF_HEIGHT8PAL: + if (imgdepth != 1) + goto baddepth; mips->encoding = PTI_RGBA8; rgbadata = BZ_Malloc(imgwidth * imgheight*5); { - qbyte *heights = (qbyte*)(rgbadata + (imgwidth*imgheight)); + qbyte *heights = (qbyte*)(rgbadata + (imgwidth*imgheight * imgdepth)); for (i = 0; i < imgwidth * imgheight; i++) { unsigned int rgb = d_8to24rgbtable[((qbyte*)rawdata)[i]]; @@ -11994,6 +12051,8 @@ static qboolean Image_GenMip0(struct pendingtextureinfo *mips, unsigned int flag freedata = true; break; case TF_HEIGHT8: + if (imgdepth != 1) + goto baddepth; mips->encoding = PTI_RGBA8; rgbadata = BZ_Malloc(imgwidth * imgheight*4); #ifndef HAVE_CLIENT @@ -12007,6 +12066,8 @@ static qboolean Image_GenMip0(struct pendingtextureinfo *mips, unsigned int flag break; case TF_BGR24_FLIP: + if (imgdepth != 1) + goto baddepth; mips->encoding = PTI_RGBX8; rgbadata = BZ_Malloc(imgwidth * imgheight*4); for (i = 0; i < imgheight; i++) @@ -12037,10 +12098,10 @@ static qboolean Image_GenMip0(struct pendingtextureinfo *mips, unsigned int flag (imgwidth>>2) * (imgheight>>2) + (imgwidth>>3) * (imgheight>>3); palettedata = (qbyte*)rawdata + pixels; - Image_RoundDimensions(&mips->mip[0].width, &mips->mip[0].height, flags); + Image_RoundDimensions(&mips->mip[0].width, &mips->mip[0].height, &mips->mip[0].depth, flags); flags |= IF_NOPICMIP; #ifdef HAVE_CLIENT - if (!r_dodgymiptex.ival && mips->mip[0].width == imgwidth && mips->mip[0].height == imgheight) + if (!r_dodgymiptex.ival && mips->mip[0].width == imgwidth && mips->mip[0].height == imgheight && mips->mip[0].depth == 1) { unsigned int pixels = (imgwidth>>0) * (imgheight>>0) + @@ -12105,11 +12166,11 @@ static qboolean Image_GenMip0(struct pendingtextureinfo *mips, unsigned int flag BZ_Free(rawdata); return false; } - rgbadata = BZ_Malloc(imgwidth * imgheight*4); + rgbadata = BZ_Malloc(imgdepth * imgwidth * imgheight*4); if (fmt == TF_MIP4_8PAL24_T255) { mips->encoding = PTI_RGBA8; - for (i = 0; i < imgwidth * imgheight; i++) + for (i = 0; i < imgwidth * imgheight * imgdepth; i++) { qbyte idx = ((qbyte*)rawdata)[i]; if (idx == 255) @@ -12124,7 +12185,7 @@ static qboolean Image_GenMip0(struct pendingtextureinfo *mips, unsigned int flag else { mips->encoding = PTI_RGBX8; - for (i = 0; i < imgwidth * imgheight; i++) + for (i = 0; i < imgwidth * imgheight * imgdepth; i++) { qbyte *p = ((qbyte*)palettedata) + ((qbyte*)rawdata)[i]*3; //FIXME: endian @@ -12144,8 +12205,8 @@ static qboolean Image_GenMip0(struct pendingtextureinfo *mips, unsigned int flag return false; } mips->encoding = PTI_RGBA8; - rgbadata = BZ_Malloc(imgwidth * imgheight*4); - for (i = 0; i < imgwidth * imgheight; i++) + rgbadata = BZ_Malloc(imgdepth * imgwidth * imgheight*4); + for (i = 0; i < imgwidth * imgheight * imgdepth; i++) rgbadata[i] = ((unsigned int*)palettedata)[((qbyte*)rawdata)[i]]; if (freedata) BZ_Free(rawdata); @@ -12155,8 +12216,8 @@ static qboolean Image_GenMip0(struct pendingtextureinfo *mips, unsigned int flag #ifdef HEXEN2 case TF_H2_T7G1: /*8bit data, odd indexes give greyscale transparence*/ mips->encoding = PTI_RGBA8; - rgbadata = BZ_Malloc(imgwidth * imgheight*4); - for (i = 0; i < imgwidth * imgheight; i++) + rgbadata = BZ_Malloc(imgdepth * imgwidth * imgheight*4); + for (i = 0; i < imgwidth * imgheight * imgdepth; i++) { qbyte p = ((qbyte*)rawdata)[i]; rgbadata[i] = d_8to24rgbtable[p] & 0x00ffffff; @@ -12173,8 +12234,8 @@ static qboolean Image_GenMip0(struct pendingtextureinfo *mips, unsigned int flag break; case TF_H2_T4A4: /*8bit data, weird packing*/ mips->encoding = PTI_RGBA8; - rgbadata = BZ_Malloc(imgwidth * imgheight*4); - for (i = 0; i < imgwidth * imgheight; i++) + rgbadata = BZ_Malloc(imgdepth * imgheight * imgwidth*4); + for (i = 0; i < imgwidth * imgheight * imgdepth; i++) { static const int ColorIndex[16] = {0x00, 0x1f, 0x2f, 0x3f, 0x4f, 0x5f, 0x6f, 0x7f, 0x8f, 0x9f, 0xaf, 0xbf, 0xc7, 0xcf, 0xdf, 0xe7}; static const unsigned ColorPercent[16] = {25, 51, 76, 102, 114, 127, 140, 153, 165, 178, 191, 204, 216, 229, 237, 247}; @@ -12478,15 +12539,16 @@ static qboolean Image_GenMip0(struct pendingtextureinfo *mips, unsigned int flag } - Image_RoundDimensions(&mips->mip[0].width, &mips->mip[0].height, flags); + Image_RoundDimensions(&mips->mip[0].width, &mips->mip[0].height, &mips->mip[0].depth, flags); if (rgbadata) { - if (mips->mip[0].width == imgwidth && mips->mip[0].height == imgheight) + if (mips->mip[0].width == imgwidth && mips->mip[0].height == imgheight && mips->mip[0].depth == imgdepth) mips->mip[0].data = rgbadata; else { - mips->mip[0].data = Image_ResampleTexture(mips->encoding, rgbadata, imgwidth, imgheight, NULL, mips->mip[0].width, mips->mip[0].height); - if (mips->mip[0].data) + if (imgdepth == 1 && + (mips->mip[0].data=Image_ResampleTexture(mips->encoding, rgbadata, imgwidth, imgheight, NULL, mips->mip[0].width, mips->mip[0].height)) //actually rescale it here. + ) { if (freedata) BZ_Free(rgbadata); @@ -12497,7 +12559,7 @@ static qboolean Image_GenMip0(struct pendingtextureinfo *mips, unsigned int flag mips->mip[0].data = rgbadata; mips->mip[0].width = imgwidth; mips->mip[0].height = imgheight; - mips->mip[0].depth = 1; + mips->mip[0].depth = imgdepth; } } } @@ -12762,7 +12824,7 @@ struct pendingtextureinfo *Image_LoadMipsFromMemory(int flags, const char *iname mips->type = (flags & IF_TEXTYPEMASK)>>IF_TEXTYPESHIFT; if (mips->type == PTI_ANY) mips->type = PTI_2D; //d - if (Image_GenMip0(mips, flags, rgbadata, NULL, imgwidth, imgheight, format, true)) + if (Image_GenMip0(mips, flags, rgbadata, NULL, imgwidth, imgheight, 1, format, true)) { Image_GenerateMips(mips, flags); Image_ChangeFormatFlags(mips, flags, format, fname); @@ -13032,7 +13094,7 @@ static qboolean Image_LoadRawTexture(texid_t tex, unsigned int flags, void *rawd mips = Z_Malloc(sizeof(*mips)); mips->type = (flags&IF_TEXTYPEMASK)>>IF_TEXTYPESHIFT; - if (!Image_GenMip0(mips, flags, rawdata, palettedata, imgwidth, imgheight, fmt, true)) + if (!Image_GenMip0(mips, flags, rawdata, palettedata, imgwidth, imgheight, 1, fmt, true)) { Z_Free(mips); if (flags & IF_NOWORKER) @@ -13779,18 +13841,18 @@ image_t *QDECL Image_GetTexture(const char *identifier, const char *subpath, uns } return tex; } -void Image_Upload (texid_t tex, uploadfmt_t fmt, void *data, void *palette, int width, int height, unsigned int flags) +void Image_Upload (texid_t tex, uploadfmt_t fmt, void *data, void *palette, int width, int height, int depth, unsigned int flags) { struct pendingtextureinfo mips; size_t i; //skip if we're not actually changing the data/size/format. - if (!data && tex->format == fmt && tex->width == width && tex->height == height && tex->depth == 1 && tex->status == TEX_LOADED) + if (!data && tex->format == fmt && tex->width == width && tex->height == height && tex->depth == depth && tex->status == TEX_LOADED) return; mips.extrafree = NULL; mips.type = (flags&IF_TEXTYPEMASK)>>IF_TEXTYPESHIFT; - if (!Image_GenMip0(&mips, flags, data, palette, width, height, fmt, false)) + if (!Image_GenMip0(&mips, flags, data, palette, width, height, depth, fmt, false)) return; Image_GenerateMips(&mips, flags); Image_ChangeFormatFlags(&mips, flags, fmt, tex->ident); @@ -13798,7 +13860,7 @@ void Image_Upload (texid_t tex, uploadfmt_t fmt, void *data, void *palette, in tex->format = fmt; tex->width = width; tex->height = height; - tex->depth = 1; + tex->depth = depth; tex->status = TEX_LOADED; for (i = 0; i < mips.mipcount; i++) diff --git a/engine/client/m_mp3.c b/engine/client/m_mp3.c index 5b561517a..50f398903 100644 --- a/engine/client/m_mp3.c +++ b/engine/client/m_mp3.c @@ -2694,7 +2694,7 @@ void QDECL Media_UpdateTexture(void *ctx, uploadfmt_t fmt, int width, int height cin_t *cin = ctx; if (!TEXVALID(cin->texture)) TEXASSIGN(cin->texture, Image_CreateTexture("***cin***", NULL, IF_CLAMP|IF_NOMIPMAP)); - Image_Upload(cin->texture, fmt, data, palette, width, height, IF_CLAMP|IF_NOMIPMAP|IF_NOGAMMA); + Image_Upload(cin->texture, fmt, data, palette, width, height, 1, IF_CLAMP|IF_NOMIPMAP|IF_NOGAMMA); } texid_tf Media_UpdateForShader(cin_t *cin) { diff --git a/engine/client/pr_menu.c b/engine/client/pr_menu.c index 5990a1075..d62be3718 100644 --- a/engine/client/pr_menu.c +++ b/engine/client/pr_menu.c @@ -900,7 +900,7 @@ void QCBUILTIN PF_CL_uploadimage (pubprogfuncs_t *prinst, struct globalvars_s *p G_INT(OFS_RETURN) = 0; //size isn't right. which means the pointer might be invalid too. else { - Image_Upload(tid, format, imgptr, NULL, width, height, RT_IMAGEFLAGS); + Image_Upload(tid, format, imgptr, NULL, width, height, 1, RT_IMAGEFLAGS); tid->width = width; tid->height = height; G_INT(OFS_RETURN) = 1; diff --git a/engine/client/quakedef.h b/engine/client/quakedef.h index 9a13937e6..cea93aeec 100644 --- a/engine/client/quakedef.h +++ b/engine/client/quakedef.h @@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #ifndef __QUAKEDEF_H__ #define __QUAKEDEF_H__ -#include "bothdefs.h" //first thing included by ALL files. +#include "../common/bothdefs.h" //first thing included by ALL files. //for msvc #pragma message lines #if defined(_MSC_VER) @@ -163,19 +163,19 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. extern "C" { #endif -#include "common.h" -#include "bspfile.h" +#include "../common/common.h" +#include "../common/bspfile.h" #include "vid.h" -#include "sys.h" -#include "zone.h" -#include "mathlib.h" -#include "cvar.h" -#include "translate.h" -#include "net.h" +#include "../common/sys.h" +#include "../common/zone.h" +#include "../common/mathlib.h" +#include "../common/cvar.h" +#include "../common/translate.h" +#include "../common/net.h" #ifndef WEBSVONLY -#include "protocol.h" -#include "cmd.h" -#include "console.h" +#include "../common/protocol.h" +#include "../common/cmd.h" +#include "../common/console.h" #include "screen.h" #include "wad.h" #include "sbar.h" @@ -183,28 +183,28 @@ extern "C" { #include "merged.h" #include "render.h" #include "client.h" -#include "gl_model.h" +#include "../gl/gl_model.h" -#include "vm.h" +#include "../common/vm.h" #include "input.h" #include "keys.h" #include "view.h" #include "menu.h" -#include "crc.h" +#include "../common/crc.h" #include "cdaudio.h" -#include "pmove.h" +#include "../common/pmove.h" -#include "progtype.h" -#include "progdefs.h" -#include "progs.h" -#include "world.h" -#include "q2game.h" +#include "../qclib/progtype.h" +#include "../server/progdefs.h" +#include "../server/progs.h" +#include "../common/world.h" +#include "../server/q2game.h" #include "../http/iweb.h" #ifdef CLIENTONLY #define SSV_IsSubServer() false #else -#include "server.h" +#include "../server/server.h" #endif #endif diff --git a/engine/client/r_2d.c b/engine/client/r_2d.c index 7bd2b8f7f..1a7422e27 100644 --- a/engine/client/r_2d.c +++ b/engine/client/r_2d.c @@ -499,7 +499,7 @@ apic_t *R2D_LoadAtlasedPic(const char *name) { atlas.lastid = atlasid; if (atlas.dirty) - Image_Upload(atlas.tex, atlas.fmt, atlas.data, NULL, atlas.allocation.width, atlas.allocation.height, IF_NOMIPMAP); + Image_Upload(atlas.tex, atlas.fmt, atlas.data, NULL, atlas.allocation.width, atlas.allocation.height, 1, IF_NOMIPMAP); atlas.tex = r_nulltex; atlas.fmt = sh_config.texfmt[PTI_BGRA8]?PTI_BGRA8:PTI_RGBA8; atlas.shader = NULL; @@ -638,7 +638,7 @@ void R2D_ImageAtlas(float x, float y, float w, float h, float s1, float t1, floa return; if (atlas.dirty) { - Image_Upload(atlas.tex, atlas.fmt, atlas.data, NULL, atlas.allocation.width, atlas.allocation.height, IF_NOMIPMAP); + Image_Upload(atlas.tex, atlas.fmt, atlas.data, NULL, atlas.allocation.width, atlas.allocation.height, 1, IF_NOMIPMAP); atlas.dirty = false; } @@ -905,7 +905,7 @@ void R2D_TransPicTranslate (float x, float y, int width, int height, qbyte *pic, translate_shader->defaulttextures->base = translate_texture; } /* could avoid reuploading already translated textures but this func really isn't used enough anyway */ - Image_Upload(translate_texture, TF_RGBA32, trans, NULL, 64, 64, IF_UIPIC|IF_NOMIPMAP|IF_NOGAMMA); + Image_Upload(translate_texture, TF_RGBA32, trans, NULL, 64, 64, 1, IF_UIPIC|IF_NOMIPMAP|IF_NOGAMMA); R2D_ScalePic(x, y, width, height, translate_shader); } @@ -1766,7 +1766,7 @@ void R2D_Crosshair_Update(void) } } - Image_Upload(ch_int_texture, TF_RGBA32, crossdata, NULL, CS_WIDTH, CS_HEIGHT, IF_UIPIC|IF_NOMIPMAP|IF_NOGAMMA); + Image_Upload(ch_int_texture, TF_RGBA32, crossdata, NULL, CS_WIDTH, CS_HEIGHT, 1, IF_UIPIC|IF_NOMIPMAP|IF_NOGAMMA); } @@ -1885,7 +1885,7 @@ texid_t R2D_RT_Configure(const char *id, int width, int height, uploadfmt_t rtfm tid->flags = ((tid->flags & ~(IF_NEAREST|IF_LINEAR)) | (imageflags & (IF_NEAREST|IF_LINEAR))); tid->width = -1; } - Image_Upload(tid, rtfmt, NULL, NULL, width, height, imageflags); + Image_Upload(tid, rtfmt, NULL, NULL, width, height, 1, imageflags); tid->width = width; tid->height = height; } diff --git a/engine/client/r_surf.c b/engine/client/r_surf.c index 594864c6b..9aa93d4ef 100644 --- a/engine/client/r_surf.c +++ b/engine/client/r_surf.c @@ -3504,12 +3504,27 @@ void Surf_DrawWorld (void) #ifdef Q3BSPS else if (currentmodel->fromgame == fg_quake3) { - if (webostate && webostate->cluster[0] == r_viewcluster && webostate->cluster[1] == r_viewcluster2) + if (!webogenerating) { - } - else - { - if (!webogenerating) + qboolean gennew = false; + if (!webostate) + gennew = true; //generate an initial one, if we can. + + if (!gennew && webostate && (webostate->cluster[0] != r_viewcluster || webostate->cluster[1] != r_viewcluster2)) + { + if (webostate->pvs.buffersize != currentmodel->pvsbytes || r_viewcluster2 != -1) + gennew = true; //o.O + else if (memcmp(webostate->pvs.buffer, webostate->wmodel->funcs.ClusterPVS(webostate->wmodel, r_viewcluster, NULL, PVM_FAST), currentmodel->pvsbytes)) + gennew = true; + else + { //okay, so the pvs didn't change despite the clusters changing. this happens when using unvised maps or lots of func_detail + //just hack the cluster numbers so we don't have to do the memcmp above repeatedly for no reason. + webostate->cluster[0] = r_viewcluster; + webostate->cluster[1] = r_viewcluster2; + } + } + + if (gennew) { if (!currentmodel->numbatches) { @@ -3522,9 +3537,33 @@ void Surf_DrawWorld (void) batch->user.bmodel.ebobatch = currentmodel->numbatches; currentmodel->numbatches++; } + /*TODO submodels too*/ } + webogeneratingstate = true; - webogenerating = BZ_Malloc(sizeof(*webogenerating) + sizeof(webogenerating->batches[0]) * (currentmodel->numbatches-1) + currentmodel->pvsbytes); + + webogenerating = NULL; + if (webostate) + webostate->lastvalid = cls.framecount; + for (link = &webostates; (kill=*link); ) + { + if (kill->lastvalid < cls.framecount-5 && kill->wmodel == currentmodel) + { //this one looks old... kill it. + if (webogenerating) + R_DestroyWorldEBO(webogenerating); //can't use more than one! + webogenerating = kill; + *link = kill->next; + } + else + link = &(*link)->next; + } + if (!webogenerating) + { + webogenerating = BZ_Malloc(sizeof(*webogenerating) + sizeof(webogenerating->batches[0]) * (currentmodel->numbatches-1) + currentmodel->pvsbytes); + memset(&webogenerating->ebo, 0, sizeof(webogenerating->ebo)); + webogenerating->ebomem = NULL; + webogenerating->numbatches = 0; + } webogenerating->wmodel = currentmodel; webogenerating->cluster[0] = r_viewcluster; webogenerating->cluster[1] = r_viewcluster2; diff --git a/engine/client/render.h b/engine/client/render.h index 70f47e791..74917d786 100644 --- a/engine/client/render.h +++ b/engine/client/render.h @@ -484,7 +484,7 @@ qboolean Image_UnloadTexture(image_t *tex); //true if it did something. void Image_DestroyTexture (image_t *tex); qboolean Image_LoadTextureFromMemory(texid_t tex, int flags, const char *iname, const char *fname, qbyte *filedata, int filesize); //intended really for worker threads, but should be fine from the main thread too qboolean Image_LocateHighResTexture(image_t *tex, flocation_t *bestloc, char *bestname, size_t bestnamesize, unsigned int *bestflags); -void Image_Upload (texid_t tex, uploadfmt_t fmt, void *data, void *palette, int width, int height, unsigned int flags); +void Image_Upload (texid_t tex, uploadfmt_t fmt, void *data, void *palette, int width, int height, int depth, unsigned int flags); void Image_Purge(void); //purge any textures which are not needed any more (releases memory, but doesn't give null pointers). void Image_Init(void); void Image_Shutdown(void); diff --git a/engine/client/snd_sdl.c b/engine/client/snd_sdl.c index fa7b4c52b..cf4971b42 100644 --- a/engine/client/snd_sdl.c +++ b/engine/client/snd_sdl.c @@ -327,10 +327,12 @@ static qboolean QDECL SDL_InitCard(soundcardinfo_t *sc, const char *devicename) sc->sn.samplebytes = 2; sc->sn.sampleformat = QSF_S16; break; +#if SDL_MAJOR_VERSION >= 2 case AUDIO_F32SYS: sc->sn.samplebytes = 4; sc->sn.sampleformat = QSF_F32; break; +#endif default: //unsupported. shouldn't have obtained that. #if SDL_MAJOR_VERSION >= 2 diff --git a/engine/client/view.c b/engine/client/view.c index bcfab9c7e..2416c5bd2 100644 --- a/engine/client/view.c +++ b/engine/client/view.c @@ -373,12 +373,10 @@ void V_DriftPitch (playerview_t *pv) static void QDECL V_Gamma_Callback(struct cvar_s *var, char *oldvalue); -static cshift_t cshift_empty = { {130,80,50}, 0 }; -static cshift_t cshift_water = { {130,80,50}, 128 }; -static cshift_t cshift_slime = { {0,25,5}, 150 }; -static cshift_t cshift_lava = { {255,80,0}, 150 }; - -//static cshift_t cshift_server = { {130,80,50}, 0 }; +static cvar_t v_cshift_empty = CVARFD("v_cshift_empty", "130 80 50 0", CVAR_ARCHIVE, "The colour tint to use when in the open air (additionally scaled by v_contentblend."); +static cvar_t v_cshift_water = CVARFD("v_cshift_water", "130 80 50 128", CVAR_ARCHIVE, "The colour tint to use when underwater (additionally scaled by v_contentblend."); +static cvar_t v_cshift_slime = CVARFD("v_cshift_slime", "0 25 5 150", CVAR_ARCHIVE, "The colour tint to use when submerged in slime (additionally scaled by v_contentblend."); +static cvar_t v_cshift_lava = CVARFD("v_cshift_lava", "255 80 0 150", CVAR_ARCHIVE, "The colour tint to use when burried in lava (ouchie!) (additionally scaled by v_contentblend."); cvar_t v_gamma = CVARAFCD("gamma", "1.0", "v_gamma", CVAR_ARCHIVE|CVAR_RENDERERCALLBACK, V_Gamma_Callback, "Controls how bright the screen is. Setting this to anything but 1 without hardware gamma requires glsl support and can noticably harm your framerate."); cvar_t v_gammainverted = CVARFCD("v_gammainverted", "0", CVAR_ARCHIVE, V_Gamma_Callback, "Boolean that controls whether the gamma should be inverted (like quake) or not."); @@ -629,10 +627,8 @@ void V_cshift_f (void) return; } - cshift_empty.destcolor[0] = r; - cshift_empty.destcolor[1] = g; - cshift_empty.destcolor[2] = b; - cshift_empty.percent = p; + //always empty, to match vanilla. + Cvar_Set(&v_cshift_empty, va("%d %d %d %d", r, g, b, p)); } @@ -725,17 +721,21 @@ void V_SetContentsColor (int contents) { int i; playerview_t *pv = r_refdef.playerview; + cvar_t *v; if (contents & FTECONTENTS_LAVA) - pv->cshifts[CSHIFT_CONTENTS] = cshift_lava; + v = &v_cshift_lava; else if (contents & (FTECONTENTS_SLIME | FTECONTENTS_SOLID)) - pv->cshifts[CSHIFT_CONTENTS] = cshift_slime; + v = &v_cshift_slime; else if (contents & FTECONTENTS_WATER) - pv->cshifts[CSHIFT_CONTENTS] = cshift_water; + v = &v_cshift_water; else - pv->cshifts[CSHIFT_CONTENTS] = cshift_empty; + v = &v_cshift_empty; - pv->cshifts[CSHIFT_CONTENTS].percent *= v_contentblend.value; + pv->cshifts[CSHIFT_CONTENTS].destcolor[0] = v->vec4[0]; + pv->cshifts[CSHIFT_CONTENTS].destcolor[1] = v->vec4[1]; + pv->cshifts[CSHIFT_CONTENTS].destcolor[2] = v->vec4[2]; + pv->cshifts[CSHIFT_CONTENTS].percent = v->vec4[3] * v_contentblend.value; if (pv->cshifts[CSHIFT_CONTENTS].percent) { //bound contents so it can't go negative @@ -2624,6 +2624,11 @@ void V_Init (void) Cvar_Register (&v_iroll_level, VIEWVARS); Cvar_Register (&v_ipitch_level, VIEWVARS); + Cvar_Register (&v_cshift_empty, VIEWVARS); + Cvar_Register (&v_cshift_water, VIEWVARS); + Cvar_Register (&v_cshift_slime, VIEWVARS); + Cvar_Register (&v_cshift_lava, VIEWVARS); + Cvar_Register (&v_contentblend, VIEWVARS); Cvar_Register (&v_damagecshift, VIEWVARS); Cvar_Register (&v_quadcshift, VIEWVARS); diff --git a/engine/common/cvar.h b/engine/common/cvar.h index 2cebfc617..4d8582f5f 100644 --- a/engine/common/cvar.h +++ b/engine/common/cvar.h @@ -53,7 +53,7 @@ Cvars are restricted from having the same names as commands to keep this interface from being ambiguous. */ -#include "hash.h" +#include "../qclib/hash.h" typedef struct cvar_s { diff --git a/engine/common/world.h b/engine/common/world.h index 549f4fa4f..58ba045db 100644 --- a/engine/common/world.h +++ b/engine/common/world.h @@ -19,7 +19,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ // world.h -#include "quakedef.h" +#include "../client/quakedef.h" typedef struct plane_s { diff --git a/engine/gl/gl_backend.c b/engine/gl/gl_backend.c index a546579eb..169473b05 100644 --- a/engine/gl/gl_backend.c +++ b/engine/gl/gl_backend.c @@ -1448,7 +1448,7 @@ void GenerateFogTexture(texid_t *tex, float density, float zscale) if (!TEXVALID(*tex)) *tex = Image_CreateTexture("***fog***", NULL, IF_CLAMP|IF_NOMIPMAP); - Image_Upload(*tex, TF_RGBA32, fogdata, NULL, FOGS, FOGT, IF_CLAMP|IF_NOMIPMAP); + Image_Upload(*tex, TF_RGBA32, fogdata, NULL, FOGS, FOGT, 1, IF_CLAMP|IF_NOMIPMAP); } void GLBE_DestroyFBOs(void) diff --git a/engine/gl/gl_bloom.c b/engine/gl/gl_bloom.c index 2d1f52bbf..fdc26e90e 100644 --- a/engine/gl/gl_bloom.c +++ b/engine/gl/gl_bloom.c @@ -318,7 +318,7 @@ void R_BloomBlend (texid_t source, int x, int y, int w, int h) { sprintf(name, "***bloom*%c*%i***", 'a'+0, 0); TEXASSIGN(pingtex[0][0], Image_CreateTexture(name, NULL, IF_CLAMP|IF_NOMIPMAP|IF_NOPICMIP|IF_LINEAR)); - Image_Upload(pingtex[0][0], PTI_RGBA8, NULL, NULL, texwidth[0], texheight[0], IF_CLAMP|IF_NOMIPMAP|IF_NOPICMIP|IF_LINEAR|IF_NOSRGB); + Image_Upload(pingtex[0][0], PTI_RGBA8, NULL, NULL, texwidth[0], texheight[0], 1, IF_CLAMP|IF_NOMIPMAP|IF_NOPICMIP|IF_LINEAR|IF_NOSRGB); } if (R2D_Flush) @@ -341,13 +341,13 @@ void R_BloomBlend (texid_t source, int x, int y, int w, int h) { sprintf(name, "***bloom*%c*%i***", 'a'+0, i); TEXASSIGN(pingtex[0][i], Image_CreateTexture(name, NULL, IF_CLAMP|IF_NOMIPMAP|IF_NOPICMIP|IF_LINEAR)); - Image_Upload(pingtex[0][i], PTI_RGBA8, NULL, NULL, texwidth[i], texheight[i], IF_CLAMP|IF_NOMIPMAP|IF_NOPICMIP|IF_LINEAR|IF_NOSRGB); + Image_Upload(pingtex[0][i], PTI_RGBA8, NULL, NULL, texwidth[i], texheight[i], 1, IF_CLAMP|IF_NOMIPMAP|IF_NOPICMIP|IF_LINEAR|IF_NOSRGB); } if (!TEXVALID(pingtex[1][i])) { sprintf(name, "***bloom*%c*%i***", 'a'+1, i); TEXASSIGN(pingtex[1][i], Image_CreateTexture(name, NULL, IF_CLAMP|IF_NOMIPMAP|IF_NOPICMIP|IF_LINEAR)); - Image_Upload(pingtex[1][i], PTI_RGBA8, NULL, NULL, texwidth[i], texheight[i], IF_CLAMP|IF_NOMIPMAP|IF_NOPICMIP|IF_LINEAR|IF_NOSRGB); + Image_Upload(pingtex[1][i], PTI_RGBA8, NULL, NULL, texwidth[i], texheight[i], 1, IF_CLAMP|IF_NOMIPMAP|IF_NOPICMIP|IF_LINEAR|IF_NOSRGB); } if (R2D_Flush) diff --git a/engine/gl/gl_font.c b/engine/gl/gl_font.c index 6859f9baa..6a431a976 100644 --- a/engine/gl/gl_font.c +++ b/engine/gl/gl_font.c @@ -510,7 +510,7 @@ static void Font_Flush(void) return; if (fontplanes.planechanged) { - Image_Upload(fontplanes.texnum[fontplanes.activeplane], TF_RGBA32, (void*)fontplanes.plane, NULL, PLANEWIDTH, PLANEHEIGHT, IF_UIPIC|IF_NEAREST|IF_NOPICMIP|IF_NOMIPMAP|IF_NOGAMMA|IF_NOPURGE); + Image_Upload(fontplanes.texnum[fontplanes.activeplane], TF_RGBA32, (void*)fontplanes.plane, NULL, PLANEWIDTH, PLANEHEIGHT, 1, IF_UIPIC|IF_NEAREST|IF_NOPICMIP|IF_NOMIPMAP|IF_NOGAMMA|IF_NOPURGE); fontplanes.planechanged = false; } @@ -576,7 +576,7 @@ void Font_FlushPlane(void) if (fontplanes.planechanged) { - Image_Upload(fontplanes.texnum[fontplanes.activeplane], TF_RGBA32, (void*)fontplanes.plane, NULL, PLANEWIDTH, PLANEHEIGHT, IF_UIPIC|IF_NEAREST|IF_NOPICMIP|IF_NOMIPMAP|IF_NOGAMMA|IF_NOPURGE); + Image_Upload(fontplanes.texnum[fontplanes.activeplane], TF_RGBA32, (void*)fontplanes.plane, NULL, PLANEWIDTH, PLANEHEIGHT, 1, IF_UIPIC|IF_NEAREST|IF_NOPICMIP|IF_NOMIPMAP|IF_NOGAMMA|IF_NOPURGE); fontplanes.planechanged = false; } @@ -2348,6 +2348,7 @@ struct font_s *Font_LoadFont(const char *fontfilename, float vheight, float scal { const char *start; + qboolean success; start = fontfilename; for(;;) { @@ -2356,12 +2357,15 @@ struct font_s *Font_LoadFont(const char *fontfilename, float vheight, float scal *end = 0; if (fmt == FMT_HORIZONTAL) - Font_LoadHorizontalFont(f, height, start); + success = Font_LoadHorizontalFont(f, height, start); #ifdef AVAIL_FREETYPE else if (fmt == FMT_AUTO && Font_LoadFreeTypeFont(f, height, start)) - ; + success = true; #endif - else if (!TEXLOADED(f->singletexture) && *start) + else + success = false; + + if (!success && !TEXLOADED(f->singletexture) && *start) { f->singletexture = R_LoadHiResTexture(start, "fonts:charsets", IF_PREMULTIPLYALPHA|(r_font_linear.ival?IF_LINEAR:IF_NEAREST)|IF_UIPIC|IF_NOPICMIP|IF_NOMIPMAP|IF_NOPURGE|IF_LOADNOW); if (f->singletexture->status == TEX_LOADING) diff --git a/engine/gl/gl_model.h b/engine/gl/gl_model.h index b55fc0bb5..f7213b2d1 100644 --- a/engine/gl/gl_model.h +++ b/engine/gl/gl_model.h @@ -21,8 +21,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #ifndef __MODEL__ #define __MODEL__ -#include "modelgen.h" -#include "spritegn.h" +#include "../client/modelgen.h" +#include "../client/spritegn.h" struct hull_s; struct trace_s; diff --git a/engine/gl/gl_rmain.c b/engine/gl/gl_rmain.c index 488c472b8..8ee50e5f3 100644 --- a/engine/gl/gl_rmain.c +++ b/engine/gl/gl_rmain.c @@ -221,7 +221,7 @@ void GL_SetupSceneProcessingTextures (void) } } - Image_Upload(scenepp_texture_warp, TF_RGBX32, pp_warp_tex, NULL, PP_WARP_TEX_SIZE, PP_WARP_TEX_SIZE, IF_LINEAR|IF_NOMIPMAP|IF_NOGAMMA); + Image_Upload(scenepp_texture_warp, TF_RGBX32, pp_warp_tex, NULL, PP_WARP_TEX_SIZE, PP_WARP_TEX_SIZE, 1, IF_LINEAR|IF_NOMIPMAP|IF_NOGAMMA); // TODO: init edge texture - this is ampscale * 2, with ampscale calculated // init warp texture - this specifies offset in @@ -265,7 +265,7 @@ void GL_SetupSceneProcessingTextures (void) } } - Image_Upload(scenepp_texture_edge, TF_RGBX32, pp_edge_tex, NULL, PP_AMP_TEX_SIZE, PP_AMP_TEX_SIZE, IF_LINEAR|IF_NOMIPMAP|IF_NOGAMMA); + Image_Upload(scenepp_texture_edge, TF_RGBX32, pp_edge_tex, NULL, PP_AMP_TEX_SIZE, PP_AMP_TEX_SIZE, 1, IF_LINEAR|IF_NOMIPMAP|IF_NOGAMMA); } void R_RotateForEntity (float *m, float *modelview, const entity_t *e, const model_t *mod) diff --git a/engine/gl/gl_shader.c b/engine/gl/gl_shader.c index 0f46b53e7..7b9ed3ebe 100644 --- a/engine/gl/gl_shader.c +++ b/engine/gl/gl_shader.c @@ -1302,28 +1302,28 @@ static qboolean Shader_ParseProgramConst(char *script, char **cvarnames, int *cv const struct sh_defaultsamplers_s sh_defaultsamplers[] = { - {"s_shadowmap", 1u<<0}, - {"s_projectionmap", 1u<<1}, - {"s_diffuse", 1u<<2}, - {"s_normalmap", 1u<<3}, - {"s_specular", 1u<<4}, - {"s_upper", 1u<<5}, - {"s_lower", 1u<<6}, - {"s_fullbright", 1u<<7}, - {"s_paletted", 1u<<8}, - {"s_reflectcube", 1u<<9}, - {"s_reflectmask", 1u<<10}, - {"s_displacement", 1u<<11}, - {"s_occlusion", 1u<<12}, - {"s_lightmap", 1u<<13}, - {"s_deluxemap", 1u<<14}, + {"s_shadowmap", 1u< 1 - {"s_lightmap1", 1u<<15}, - {"s_lightmap2", 1u<<16}, - {"s_lightmap3", 1u<<17}, - {"s_deluxemap1", 1u<<18}, - {"s_deluxemap2", 1u<<19}, - {"s_deluxemap3", 1u<<20}, + {"s_lightmap1", 1u<visual, mask, &attr); /*ask the window manager to stop triggering bugs in Xlib*/ prots[0] = x11.pXInternAtom(vid_dpy, "WM_DELETE_WINDOW", False); - x11.pXSetWMProtocols(vid_dpy, wnd, prots, sizeof(prots)/sizeof(prots[0])); + prots[1] = x11.pXInternAtom(vid_dpy, "_NET_WM_PING", False); + x11.pXSetWMProtocols(vid_dpy, wnd, prots, countof(prots)); x11.pXSetWMNormalHints(vid_dpy, wnd, &szhints); /*set caption*/ x11.pXStoreName(vid_dpy, wnd, "FTE QuakeWorld"); x11.pXSetIconName(vid_dpy, wnd, "FTEQW"); X_StoreIcon(wnd); + X_StorePID(wnd); /*make it visible*/ x11.pXMapWindow(vid_dpy, wnd); diff --git a/engine/gl/gl_vidsdl.c b/engine/gl/gl_vidsdl.c index 2ff950501..edb52a1b6 100644 --- a/engine/gl/gl_vidsdl.c +++ b/engine/gl/gl_vidsdl.c @@ -308,8 +308,10 @@ static void SDLVID_EnumerateVideoModes (const char *driver, const char *output, static qboolean SDLVID_Init (rendererstate_t *info, unsigned char *palette, r_qrenderer_t qrenderer) { int flags = 0; +#if SDL_MAJOR_VERSION >= 2 int display = -1; SDL_DisplayMode modeinfo, *usemode; +#endif SDL_Init(SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE); #if !defined(FTE_TARGET_WEB) && SDL_MAJOR_VERSION < 2 @@ -345,10 +347,10 @@ static qboolean SDLVID_Init (rendererstate_t *info, unsigned char *palette, r_qr if (info->stereo) SDL_GL_SetAttribute(SDL_GL_STEREO, 1); +#if SDL_MAJOR_VERSION >= 2 if (info->srgb) SDL_GL_SetAttribute(SDL_GL_FRAMEBUFFER_SRGB_CAPABLE, 1); -#if SDL_MAJOR_VERSION >= 2 //FIXME: this stuff isn't part of info. //this means it shouldn't be exposed to the menu or widely advertised. if (*vid_gl_context_version.string) diff --git a/engine/gl/r_bishaders.h b/engine/gl/r_bishaders.h index ac6912023..fe6526874 100644 --- a/engine/gl/r_bishaders.h +++ b/engine/gl/r_bishaders.h @@ -54,7 +54,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND {QR_VULKAN, -1, "fixedemu", "\xFF\x53\x50\x56\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x2C\x00\x00\x00\x14\x00\x00\x00\x40\x00\x00\x00" "\x74\x10\x00\x00\xB4\x10\x00\x00\x00\x0F\x00\x00\x01\x00\x42\x31\x63\x6F\x6E\x73\x74\x63\x6F\x6C\x6F\x75\x72\x00\x00\x00\x00\x00" -"\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x5B\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00" +"\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x5B\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00" "\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00" "\x0F\x00\x0F\x00\x00\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x1C\x00\x00\x00\x39\x00\x00\x00\x3B\x00\x00\x00" "\x43\x00\x00\x00\x4C\x00\x00\x00\x50\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5A\x00\x00\x00\x03\x00\x03\x00" @@ -185,7 +185,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x3D\x00\x04\x00\x06\x00\x00\x00\x30\x00\x00\x00\x2F\x00\x00\x00\x81\x00\x05\x00\x06\x00\x00\x00\x31\x00\x00\x00\x2D\x00\x00\x00" "\x30\x00\x00\x00\x88\x00\x05\x00\x06\x00\x00\x00\x33\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x41\x00\x05\x00\x26\x00\x00\x00" "\x34\x00\x00\x00\x0C\x00\x00\x00\x2B\x00\x00\x00\x3E\x00\x03\x00\x34\x00\x00\x00\x33\x00\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00" -"\x35\x00\x00\x00\x0C\x00\x00\x00\xFE\x00\x02\x00\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00" +"\x35\x00\x00\x00\x0C\x00\x00\x00\xFE\x00\x02\x00\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00" "\x56\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64" "\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x08\x00\x04\x00\x00\x00\x04\x00\x00\x00" "\x6D\x61\x69\x6E\x00\x00\x00\x00\x11\x00\x00\x00\x15\x00\x00\x00\x46\x00\x00\x00\x10\x00\x03\x00\x04\x00\x00\x00\x07\x00\x00\x00" @@ -561,7 +561,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x66\x72\x00\x3F\x33\x33\x33\x3F\x4C\xCC\xCD\x3F\x33\x33\x33\x01\x11\x46\x33\x74\x69\x6E\x74\x5F\x72\x65\x66\x6C\x00\x3F\x33\x33" "\x33\x3F\x4C\xCC\xCD\x3F\x33\x33\x33\x01\x14\x42\x31\x64\x65\x70\x74\x68\x00\x00\x00\x00\x00\x01\x15\x46\x31\x61\x6C\x70\x68\x61" "\x00\x00\x00\x00\x00\x01\x16\x46\x33\x66\x6F\x67\x74\x69\x6E\x74\x00\x3E\x4C\xCC\xCD\x3E\x99\x99\x9A\x3E\x4C\xCC\xCD\x00\x00\x00" -"\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x79\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00" +"\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x79\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00" "\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00" "\x0F\x00\x11\x00\x00\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x2C\x00\x00\x00\x49\x00\x00\x00\x4B\x00\x00\x00" "\x4E\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x54\x00\x00\x00\x5D\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00" @@ -742,7 +742,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x06\x00\x00\x00\x41\x00\x00\x00\x3D\x00\x00\x00\x40\x00\x00\x00\x88\x00\x05\x00\x06\x00\x00\x00\x43\x00\x00\x00\x41\x00\x00\x00" "\x42\x00\x00\x00\x41\x00\x05\x00\x36\x00\x00\x00\x44\x00\x00\x00\x1D\x00\x00\x00\x3B\x00\x00\x00\x3E\x00\x03\x00\x44\x00\x00\x00" "\x43\x00\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\x45\x00\x00\x00\x1D\x00\x00\x00\xFE\x00\x02\x00\x45\x00\x00\x00\x38\x00\x01\x00" -"\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x80\x01\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00" +"\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x80\x01\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00" "\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00" "\x0F\x00\x0B\x00\x04\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x37\x00\x00\x00\x68\x00\x00\x00\x75\x00\x00\x00" "\x82\x00\x00\x00\xD1\x00\x00\x00\x77\x01\x00\x00\x10\x00\x03\x00\x04\x00\x00\x00\x07\x00\x00\x00\x03\x00\x03\x00\x02\x00\x00\x00" @@ -1137,7 +1137,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND #ifdef VKQUAKE {QR_VULKAN, -1, "bloom_blur", "\xFF\x53\x50\x56\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x2C\x00\x00\x00\x00\x00\x00\x00\x2C\x00\x00\x00" -"\x90\x0E\x00\x00\xBC\x0E\x00\x00\x08\x0C\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x4C\x00\x00\x00\x00\x00\x00\x00" +"\x90\x0E\x00\x00\xBC\x0E\x00\x00\x08\x0C\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x4C\x00\x00\x00\x00\x00\x00\x00" "\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00" "\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x0E\x00\x00\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00" "\x1C\x00\x00\x00\x39\x00\x00\x00\x3B\x00\x00\x00\x3F\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4A\x00\x00\x00" @@ -1254,7 +1254,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x31\x00\x00\x00\x2D\x00\x00\x00\x30\x00\x00\x00\x88\x00\x05\x00\x06\x00\x00\x00\x33\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00" "\x41\x00\x05\x00\x26\x00\x00\x00\x34\x00\x00\x00\x0C\x00\x00\x00\x2B\x00\x00\x00\x3E\x00\x03\x00\x34\x00\x00\x00\x33\x00\x00\x00" "\x3D\x00\x04\x00\x07\x00\x00\x00\x35\x00\x00\x00\x0C\x00\x00\x00\xFE\x00\x02\x00\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07" -"\x00\x00\x01\x00\x07\x00\x08\x00\x37\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00" +"\x00\x00\x01\x00\x08\x00\x08\x00\x37\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00" "\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x07\x00" "\x04\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x09\x00\x00\x00\x12\x00\x00\x00\x10\x00\x03\x00\x04\x00\x00\x00" "\x07\x00\x00\x00\x03\x00\x03\x00\x02\x00\x00\x00\xC2\x01\x00\x00\x05\x00\x04\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00" @@ -1382,7 +1382,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND {QR_VULKAN, -1, "bloom_filter", "\xFF\x53\x50\x56\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x2C\x00\x00\x00\x1F\x00\x00\x00\x4C\x00\x00\x00" "\xB0\x0F\x00\x00\xFC\x0F\x00\x00\x3C\x0C\x00\x00\x01\x00\x66\x33\x72\x5F\x62\x6C\x6F\x6F\x6D\x5F\x66\x69\x6C\x74\x65\x72\x00\x3F" -"\x33\x33\x33\x3F\x33\x33\x33\x3F\x33\x33\x33\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x52\x00\x00\x00\x00\x00\x00\x00" +"\x33\x33\x33\x3F\x33\x33\x33\x3F\x33\x33\x33\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x52\x00\x00\x00\x00\x00\x00\x00" "\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00" "\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x0E\x00\x00\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00" "\x22\x00\x00\x00\x3F\x00\x00\x00\x41\x00\x00\x00\x45\x00\x00\x00\x4D\x00\x00\x00\x4E\x00\x00\x00\x4F\x00\x00\x00\x50\x00\x00\x00" @@ -1508,7 +1508,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x37\x00\x00\x00\x33\x00\x00\x00\x36\x00\x00\x00\x88\x00\x05\x00\x06\x00\x00\x00\x39\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00" "\x41\x00\x05\x00\x2C\x00\x00\x00\x3A\x00\x00\x00\x13\x00\x00\x00\x31\x00\x00\x00\x3E\x00\x03\x00\x3A\x00\x00\x00\x39\x00\x00\x00" "\x3D\x00\x04\x00\x07\x00\x00\x00\x3B\x00\x00\x00\x13\x00\x00\x00\xFE\x00\x02\x00\x3B\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07" -"\x00\x00\x01\x00\x07\x00\x08\x00\x2F\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00" +"\x00\x00\x01\x00\x08\x00\x08\x00\x2F\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00" "\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x07\x00" "\x04\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x10\x00\x00\x00\x18\x00\x00\x00\x10\x00\x03\x00\x04\x00\x00\x00" "\x07\x00\x00\x00\x03\x00\x03\x00\x02\x00\x00\x00\xC2\x01\x00\x00\x05\x00\x04\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00" @@ -1645,7 +1645,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND {QR_VULKAN, -1, "bloom_final", "\xFF\x53\x50\x56\x01\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x2C\x00\x00\x00\x27\x00\x00\x00\x54\x00\x00\x00" "\x04\x0F\x00\x00\x58\x0F\x00\x00\x78\x0C\x00\x00\x01\x00\x66\x31\x72\x5F\x62\x6C\x6F\x6F\x6D\x00\x00\x00\x00\x00\x01\x01\x66\x31" -"\x72\x5F\x62\x6C\x6F\x6F\x6D\x5F\x72\x65\x74\x61\x69\x6E\x00\x3F\x80\x00\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00" +"\x72\x5F\x62\x6C\x6F\x6F\x6D\x5F\x72\x65\x74\x61\x69\x6E\x00\x3F\x80\x00\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00" "\x4E\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64" "\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x0E\x00\x00\x00\x00\x00\x04\x00\x00\x00" "\x6D\x61\x69\x6E\x00\x00\x00\x00\x1C\x00\x00\x00\x39\x00\x00\x00\x3B\x00\x00\x00\x3F\x00\x00\x00\x49\x00\x00\x00\x4A\x00\x00\x00" @@ -1766,7 +1766,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x2D\x00\x00\x00\x30\x00\x00\x00\x88\x00\x05\x00\x06\x00\x00\x00\x33\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x41\x00\x05\x00" "\x26\x00\x00\x00\x34\x00\x00\x00\x0C\x00\x00\x00\x2B\x00\x00\x00\x3E\x00\x03\x00\x34\x00\x00\x00\x33\x00\x00\x00\x3D\x00\x04\x00" "\x07\x00\x00\x00\x35\x00\x00\x00\x0C\x00\x00\x00\xFE\x00\x02\x00\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00" -"\x07\x00\x08\x00\x32\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C" +"\x08\x00\x08\x00\x32\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C" "\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x07\x00\x04\x00\x00\x00" "\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x09\x00\x00\x00\x12\x00\x00\x00\x10\x00\x03\x00\x04\x00\x00\x00\x07\x00\x00\x00" "\x03\x00\x03\x00\x02\x00\x00\x00\xC2\x01\x00\x00\x05\x00\x04\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x05\x00\x05\x00" @@ -2095,7 +2095,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND #ifdef VKQUAKE {QR_VULKAN, -1, "depthonly", "\xFF\x53\x50\x56\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2C\x00\x00\x00\x00\x00\x00\x00\x2C\x00\x00\x00" -"\x34\x0E\x00\x00\x60\x0E\x00\x00\x44\x09\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x49\x00\x00\x00\x00\x00\x00\x00" +"\x34\x0E\x00\x00\x60\x0E\x00\x00\x44\x09\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x49\x00\x00\x00\x00\x00\x00\x00" "\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00" "\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x0D\x00\x00\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00" "\x1C\x00\x00\x00\x3A\x00\x00\x00\x42\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00" @@ -2209,7 +2209,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x06\x00\x00\x00\x31\x00\x00\x00\x2D\x00\x00\x00\x30\x00\x00\x00\x88\x00\x05\x00\x06\x00\x00\x00\x33\x00\x00\x00\x31\x00\x00\x00" "\x32\x00\x00\x00\x41\x00\x05\x00\x26\x00\x00\x00\x34\x00\x00\x00\x0C\x00\x00\x00\x2B\x00\x00\x00\x3E\x00\x03\x00\x34\x00\x00\x00" "\x33\x00\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\x35\x00\x00\x00\x0C\x00\x00\x00\xFE\x00\x02\x00\x35\x00\x00\x00\x38\x00\x01\x00" -"\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x16\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00" +"\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x16\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00" "\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00" "\x0F\x00\x06\x00\x04\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x15\x00\x00\x00\x10\x00\x03\x00\x04\x00\x00\x00" "\x07\x00\x00\x00\x03\x00\x03\x00\x02\x00\x00\x00\xC2\x01\x00\x00\x05\x00\x04\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00" @@ -2369,7 +2369,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND {QR_VULKAN, -1, "default2d", "\xFF\x53\x50\x56\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x2C\x00\x00\x00\x0F\x00\x00\x00\x3C\x00\x00\x00" "\x10\x0F\x00\x00\x4C\x0F\x00\x00\x7C\x0C\x00\x00\x01\x00\x42\x31\x50\x52\x45\x4D\x55\x4C\x00\x00\x00\x00\x00\x00\x03\x02\x23\x07" -"\x00\x00\x01\x00\x07\x00\x08\x00\x4F\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00" +"\x00\x00\x01\x00\x08\x00\x08\x00\x4F\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00" "\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x0F\x00" "\x00\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x1C\x00\x00\x00\x39\x00\x00\x00\x3B\x00\x00\x00\x3E\x00\x00\x00" "\x40\x00\x00\x00\x44\x00\x00\x00\x4B\x00\x00\x00\x4C\x00\x00\x00\x4D\x00\x00\x00\x4E\x00\x00\x00\x03\x00\x03\x00\x02\x00\x00\x00" @@ -2489,7 +2489,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x30\x00\x00\x00\x2F\x00\x00\x00\x81\x00\x05\x00\x06\x00\x00\x00\x31\x00\x00\x00\x2D\x00\x00\x00\x30\x00\x00\x00\x88\x00\x05\x00" "\x06\x00\x00\x00\x33\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x41\x00\x05\x00\x26\x00\x00\x00\x34\x00\x00\x00\x0C\x00\x00\x00" "\x2B\x00\x00\x00\x3E\x00\x03\x00\x34\x00\x00\x00\x33\x00\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\x35\x00\x00\x00\x0C\x00\x00\x00" -"\xFE\x00\x02\x00\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x37\x00\x00\x00\x00\x00\x00\x00" +"\xFE\x00\x02\x00\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x37\x00\x00\x00\x00\x00\x00\x00" "\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00" "\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x08\x00\x04\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00" "\x0B\x00\x00\x00\x26\x00\x00\x00\x2C\x00\x00\x00\x10\x00\x03\x00\x04\x00\x00\x00\x07\x00\x00\x00\x03\x00\x03\x00\x02\x00\x00\x00" @@ -2671,7 +2671,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND {QR_VULKAN, -1, "defaultadditivesprite", "\xFF\x53\x50\x56\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x20\x00\x00\x00\x2C\x00\x00\x00\x20\x00\x00\x00\x4C\x00\x00\x00" "\x7C\x0F\x00\x00\xC8\x0F\x00\x00\x54\x12\x00\x00\x01\x00\x46\x31\x4D\x41\x53\x4B\x00\x00\x00\x00\x00\x01\x01\x62\x31\x72\x5F\x66" -"\x6F\x67\x5F\x65\x78\x70\x32\x00\x00\x00\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x51\x00\x00\x00\x00\x00\x00\x00" +"\x6F\x67\x5F\x65\x78\x70\x32\x00\x00\x00\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x51\x00\x00\x00\x00\x00\x00\x00" "\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00" "\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x0F\x00\x00\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00" "\x1C\x00\x00\x00\x39\x00\x00\x00\x3B\x00\x00\x00\x3E\x00\x00\x00\x40\x00\x00\x00\x44\x00\x00\x00\x4D\x00\x00\x00\x4E\x00\x00\x00" @@ -2795,7 +2795,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x2F\x00\x00\x00\x81\x00\x05\x00\x06\x00\x00\x00\x31\x00\x00\x00\x2D\x00\x00\x00\x30\x00\x00\x00\x88\x00\x05\x00\x06\x00\x00\x00" "\x33\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x41\x00\x05\x00\x26\x00\x00\x00\x34\x00\x00\x00\x0C\x00\x00\x00\x2B\x00\x00\x00" "\x3E\x00\x03\x00\x34\x00\x00\x00\x33\x00\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\x35\x00\x00\x00\x0C\x00\x00\x00\xFE\x00\x02\x00" -"\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x7D\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00" +"\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x7D\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00" "\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00" "\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x09\x00\x04\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x27\x00\x00\x00" "\x5F\x00\x00\x00\x6E\x00\x00\x00\x70\x00\x00\x00\x10\x00\x03\x00\x04\x00\x00\x00\x07\x00\x00\x00\x03\x00\x03\x00\x02\x00\x00\x00" @@ -3368,7 +3368,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x74\x1A\x00\x00\x08\x1B\x00\x00\xA0\x32\x00\x00\x01\x00\x66\x31\x72\x5F\x67\x6C\x73\x6C\x5F\x6F\x66\x66\x73\x65\x74\x6D\x61\x70" "\x70\x69\x6E\x67\x00\x00\x00\x00\x00\x01\x01\x66\x31\x72\x5F\x67\x6C\x73\x6C\x5F\x6F\x66\x66\x73\x65\x74\x6D\x61\x70\x70\x69\x6E" "\x67\x5F\x73\x63\x61\x6C\x65\x00\x3D\x23\xD7\x0A\x01\x02\x66\x31\x67\x6C\x5F\x73\x70\x65\x63\x75\x6C\x61\x72\x00\x00\x00\x00\x00" -"\x01\x03\x62\x31\x72\x5F\x66\x6F\x67\x5F\x65\x78\x70\x32\x00\x00\x00\x00\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00" +"\x01\x03\x62\x31\x72\x5F\x66\x6F\x67\x5F\x65\x78\x70\x32\x00\x00\x00\x00\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00" "\xC0\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64" "\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x11\x00\x00\x00\x00\x00\x04\x00\x00\x00" "\x6D\x61\x69\x6E\x00\x00\x00\x00\x28\x00\x00\x00\x44\x00\x00\x00\x46\x00\x00\x00\x48\x00\x00\x00\x60\x00\x00\x00\x78\x00\x00\x00" @@ -3580,7 +3580,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x4B\x00\x00\x00\x38\x00\x01\x00\x36\x00\x05\x00\x07\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x37\x00\x03\x00" "\x0C\x00\x00\x00\x15\x00\x00\x00\xF8\x00\x02\x00\x17\x00\x00\x00\x3D\x00\x04\x00\x0B\x00\x00\x00\x4E\x00\x00\x00\x44\x00\x00\x00" "\x3E\x00\x03\x00\x15\x00\x00\x00\x4E\x00\x00\x00\x39\x00\x04\x00\x07\x00\x00\x00\x4F\x00\x00\x00\x09\x00\x00\x00\xFE\x00\x02\x00" -"\x4F\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\xD6\x01\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00" +"\x4F\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\xD6\x01\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00" "\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00" "\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x0B\x00\x04\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x36\x00\x00\x00" "\x07\x01\x00\x00\x09\x01\x00\x00\x80\x01\x00\x00\xB0\x01\x00\x00\xCB\x01\x00\x00\x10\x00\x03\x00\x04\x00\x00\x00\x07\x00\x00\x00" @@ -4202,7 +4202,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND {QR_VULKAN, -1, "defaultsky", "\xFF\x53\x50\x56\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x2C\x00\x00\x00\x13\x00\x00\x00\x40\x00\x00\x00" "\xFC\x0E\x00\x00\x3C\x0F\x00\x00\x74\x16\x00\x00\x01\x00\x62\x31\x72\x5F\x66\x6F\x67\x5F\x65\x78\x70\x32\x00\x00\x00\x00\x00\x00" -"\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x4E\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00" +"\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x4E\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00" "\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00" "\x0F\x00\x0E\x00\x00\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x1C\x00\x00\x00\x39\x00\x00\x00\x3D\x00\x00\x00" "\x47\x00\x00\x00\x49\x00\x00\x00\x4A\x00\x00\x00\x4B\x00\x00\x00\x4C\x00\x00\x00\x4D\x00\x00\x00\x03\x00\x03\x00\x02\x00\x00\x00" @@ -4322,7 +4322,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x31\x00\x00\x00\x2D\x00\x00\x00\x30\x00\x00\x00\x88\x00\x05\x00\x06\x00\x00\x00\x33\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00" "\x41\x00\x05\x00\x26\x00\x00\x00\x34\x00\x00\x00\x0C\x00\x00\x00\x2B\x00\x00\x00\x3E\x00\x03\x00\x34\x00\x00\x00\x33\x00\x00\x00" "\x3D\x00\x04\x00\x07\x00\x00\x00\x35\x00\x00\x00\x0C\x00\x00\x00\xFE\x00\x02\x00\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07" -"\x00\x00\x01\x00\x07\x00\x08\x00\xAD\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00" +"\x00\x00\x01\x00\x08\x00\x08\x00\xAD\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00" "\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x08\x00" "\x04\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x27\x00\x00\x00\x5C\x00\x00\x00\x98\x00\x00\x00\x10\x00\x03\x00" "\x04\x00\x00\x00\x07\x00\x00\x00\x03\x00\x03\x00\x02\x00\x00\x00\xC2\x01\x00\x00\x05\x00\x04\x00\x04\x00\x00\x00\x6D\x61\x69\x6E" @@ -4667,7 +4667,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND {QR_VULKAN, -1, "defaultskybox", "\xFF\x53\x50\x56\x01\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x2C\x00\x00\x00\x13\x00\x00\x00\x40\x00\x00\x00" "\x54\x0F\x00\x00\x94\x0F\x00\x00\x70\x11\x00\x00\x01\x00\x62\x31\x72\x5F\x66\x6F\x67\x5F\x65\x78\x70\x32\x00\x00\x00\x00\x00\x00" -"\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x53\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00" +"\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x53\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00" "\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00" "\x0F\x00\x0E\x00\x00\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x1C\x00\x00\x00\x39\x00\x00\x00\x42\x00\x00\x00" "\x4C\x00\x00\x00\x4E\x00\x00\x00\x4F\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x03\x00\x03\x00\x02\x00\x00\x00" @@ -4789,7 +4789,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x3D\x00\x04\x00\x06\x00\x00\x00\x30\x00\x00\x00\x2F\x00\x00\x00\x81\x00\x05\x00\x06\x00\x00\x00\x31\x00\x00\x00\x2D\x00\x00\x00" "\x30\x00\x00\x00\x88\x00\x05\x00\x06\x00\x00\x00\x33\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x41\x00\x05\x00\x26\x00\x00\x00" "\x34\x00\x00\x00\x0C\x00\x00\x00\x2B\x00\x00\x00\x3E\x00\x03\x00\x34\x00\x00\x00\x33\x00\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00" -"\x35\x00\x00\x00\x0C\x00\x00\x00\xFE\x00\x02\x00\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00" +"\x35\x00\x00\x00\x0C\x00\x00\x00\xFE\x00\x02\x00\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00" "\x72\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64" "\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x08\x00\x04\x00\x00\x00\x04\x00\x00\x00" "\x6D\x61\x69\x6E\x00\x00\x00\x00\x27\x00\x00\x00\x62\x00\x00\x00\x66\x00\x00\x00\x10\x00\x03\x00\x04\x00\x00\x00\x07\x00\x00\x00" @@ -5038,7 +5038,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND #ifdef VKQUAKE {QR_VULKAN, -1, "defaultfill", "\xFF\x53\x50\x56\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2C\x00\x00\x00\x00\x00\x00\x00\x2C\x00\x00\x00" -"\x80\x0E\x00\x00\xAC\x0E\x00\x00\xA0\x09\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x4B\x00\x00\x00\x00\x00\x00\x00" +"\x80\x0E\x00\x00\xAC\x0E\x00\x00\xA0\x09\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x4B\x00\x00\x00\x00\x00\x00\x00" "\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00" "\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x0E\x00\x00\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00" "\x1C\x00\x00\x00\x39\x00\x00\x00\x3B\x00\x00\x00\x3F\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00" @@ -5154,7 +5154,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x30\x00\x00\x00\x2F\x00\x00\x00\x81\x00\x05\x00\x06\x00\x00\x00\x31\x00\x00\x00\x2D\x00\x00\x00\x30\x00\x00\x00\x88\x00\x05\x00" "\x06\x00\x00\x00\x33\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x41\x00\x05\x00\x26\x00\x00\x00\x34\x00\x00\x00\x0C\x00\x00\x00" "\x2B\x00\x00\x00\x3E\x00\x03\x00\x34\x00\x00\x00\x33\x00\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\x35\x00\x00\x00\x0C\x00\x00\x00" -"\xFE\x00\x02\x00\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x19\x00\x00\x00\x00\x00\x00\x00" +"\xFE\x00\x02\x00\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x19\x00\x00\x00\x00\x00\x00\x00" "\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00" "\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x07\x00\x04\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00" "\x09\x00\x00\x00\x0B\x00\x00\x00\x10\x00\x03\x00\x04\x00\x00\x00\x07\x00\x00\x00\x03\x00\x03\x00\x02\x00\x00\x00\xC2\x01\x00\x00" @@ -5308,7 +5308,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND {QR_VULKAN, -1, "defaultsprite", "\xFF\x53\x50\x56\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x20\x00\x00\x00\x2C\x00\x00\x00\x20\x00\x00\x00\x4C\x00\x00\x00" "\x7C\x0F\x00\x00\xC8\x0F\x00\x00\x30\x12\x00\x00\x01\x00\x46\x31\x4D\x41\x53\x4B\x00\x00\x00\x00\x00\x01\x01\x62\x31\x72\x5F\x66" -"\x6F\x67\x5F\x65\x78\x70\x32\x00\x00\x00\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x51\x00\x00\x00\x00\x00\x00\x00" +"\x6F\x67\x5F\x65\x78\x70\x32\x00\x00\x00\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x51\x00\x00\x00\x00\x00\x00\x00" "\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00" "\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x0F\x00\x00\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00" "\x1C\x00\x00\x00\x39\x00\x00\x00\x3B\x00\x00\x00\x3E\x00\x00\x00\x40\x00\x00\x00\x44\x00\x00\x00\x4D\x00\x00\x00\x4E\x00\x00\x00" @@ -5432,7 +5432,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x2F\x00\x00\x00\x81\x00\x05\x00\x06\x00\x00\x00\x31\x00\x00\x00\x2D\x00\x00\x00\x30\x00\x00\x00\x88\x00\x05\x00\x06\x00\x00\x00" "\x33\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x41\x00\x05\x00\x26\x00\x00\x00\x34\x00\x00\x00\x0C\x00\x00\x00\x2B\x00\x00\x00" "\x3E\x00\x03\x00\x34\x00\x00\x00\x33\x00\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\x35\x00\x00\x00\x0C\x00\x00\x00\xFE\x00\x02\x00" -"\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x7B\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00" +"\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x7B\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00" "\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00" "\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x09\x00\x04\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x27\x00\x00\x00" "\x5D\x00\x00\x00\x6C\x00\x00\x00\x6E\x00\x00\x00\x10\x00\x03\x00\x04\x00\x00\x00\x07\x00\x00\x00\x03\x00\x03\x00\x02\x00\x00\x00" @@ -6076,13 +6076,13 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND #endif #ifdef VKQUAKE {QR_VULKAN, -1, "defaultwall", -"\xFF\x53\x50\x56\x01\x00\x00\x00\x9C\x36\x00\x00\x00\x00\x00\x00\x2B\x00\x00\x00\x2C\x00\x00\x00\x95\x00\x00\x00\xC4\x00\x00\x00" +"\xFF\x53\x50\x56\x01\x00\x00\x00\x9C\x66\x00\x00\x00\x00\x00\x00\x2B\x00\x00\x00\x2C\x00\x00\x00\x95\x00\x00\x00\xC4\x00\x00\x00" "\x10\x16\x00\x00\xD4\x16\x00\x00\x24\x37\x00\x00\x01\x00\x66\x31\x72\x5F\x67\x6C\x73\x6C\x5F\x6F\x66\x66\x73\x65\x74\x6D\x61\x70" "\x70\x69\x6E\x67\x00\x00\x00\x00\x00\x01\x01\x66\x31\x72\x5F\x67\x6C\x73\x6C\x5F\x6F\x66\x66\x73\x65\x74\x6D\x61\x70\x70\x69\x6E" "\x67\x5F\x73\x63\x61\x6C\x65\x00\x3D\x23\xD7\x0A\x01\x02\x66\x31\x67\x6C\x5F\x73\x70\x65\x63\x75\x6C\x61\x72\x00\x3E\x99\x99\x9A" "\x01\x03\x62\x31\x72\x5F\x66\x6F\x67\x5F\x65\x78\x70\x32\x00\x00\x00\x00\x00\x01\x04\x42\x31\x76\x65\x72\x74\x65\x78\x6C\x69\x74" "\x00\x00\x00\x00\x00\x01\x05\x46\x31\x6D\x61\x73\x6B\x00\x3F\x80\x00\x00\x01\x06\x42\x31\x6D\x61\x73\x6B\x6C\x74\x00\x00\x00\x00" -"\x00\x00\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x8E\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00" +"\x00\x00\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x8E\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00" "\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00" "\x01\x00\x00\x00\x0F\x00\x12\x00\x00\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x1C\x00\x00\x00\x4D\x00\x00\x00" "\x4F\x00\x00\x00\x56\x00\x00\x00\x5B\x00\x00\x00\x64\x00\x00\x00\x6E\x00\x00\x00\x70\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00" @@ -6258,7 +6258,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x3D\x00\x04\x00\x06\x00\x00\x00\x30\x00\x00\x00\x2F\x00\x00\x00\x81\x00\x05\x00\x06\x00\x00\x00\x31\x00\x00\x00\x2D\x00\x00\x00" "\x30\x00\x00\x00\x88\x00\x05\x00\x06\x00\x00\x00\x33\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x41\x00\x05\x00\x26\x00\x00\x00" "\x34\x00\x00\x00\x0C\x00\x00\x00\x2B\x00\x00\x00\x3E\x00\x03\x00\x34\x00\x00\x00\x33\x00\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00" -"\x35\x00\x00\x00\x0C\x00\x00\x00\xFE\x00\x02\x00\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00" +"\x35\x00\x00\x00\x0C\x00\x00\x00\xFE\x00\x02\x00\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00" "\x05\x02\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64" "\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x0C\x00\x04\x00\x00\x00\x04\x00\x00\x00" "\x6D\x61\x69\x6E\x00\x00\x00\x00\x36\x00\x00\x00\x03\x01\x00\x00\x0A\x01\x00\x00\x11\x01\x00\x00\x38\x01\x00\x00\x43\x01\x00\x00" @@ -7108,7 +7108,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\xFF\x53\x50\x56\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x2C\x00\x00\x00\x36\x00\x00\x00\x64\x00\x00\x00" "\x6C\x0F\x00\x00\xD0\x0F\x00\x00\x24\x17\x00\x00\x01\x00\x66\x31\x72\x5F\x77\x61\x74\x65\x72\x61\x6C\x70\x68\x61\x00\x00\x00\x00" "\x00\x01\x01\x62\x31\x72\x5F\x66\x6F\x67\x5F\x65\x78\x70\x32\x00\x00\x00\x00\x00\x01\x02\x46\x31\x61\x6C\x70\x68\x61\x00\x00\x00" -"\x00\x00\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x50\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00" +"\x00\x00\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x50\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00" "\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00" "\x01\x00\x00\x00\x0F\x00\x0E\x00\x00\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x1C\x00\x00\x00\x39\x00\x00\x00" "\x3B\x00\x00\x00\x3F\x00\x00\x00\x4B\x00\x00\x00\x4C\x00\x00\x00\x4D\x00\x00\x00\x4E\x00\x00\x00\x4F\x00\x00\x00\x03\x00\x03\x00" @@ -7231,7 +7231,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x06\x00\x00\x00\x30\x00\x00\x00\x2F\x00\x00\x00\x81\x00\x05\x00\x06\x00\x00\x00\x31\x00\x00\x00\x2D\x00\x00\x00\x30\x00\x00\x00" "\x88\x00\x05\x00\x06\x00\x00\x00\x33\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x41\x00\x05\x00\x26\x00\x00\x00\x34\x00\x00\x00" "\x0C\x00\x00\x00\x2B\x00\x00\x00\x3E\x00\x03\x00\x34\x00\x00\x00\x33\x00\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\x35\x00\x00\x00" -"\x0C\x00\x00\x00\xFE\x00\x02\x00\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\xB5\x00\x00\x00" +"\x0C\x00\x00\x00\xFE\x00\x02\x00\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\xB5\x00\x00\x00" "\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30" "\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x08\x00\x04\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E" "\x00\x00\x00\x00\x2C\x00\x00\x00\x75\x00\x00\x00\xA1\x00\x00\x00\x10\x00\x03\x00\x04\x00\x00\x00\x07\x00\x00\x00\x03\x00\x03\x00" @@ -7548,7 +7548,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND #ifdef VKQUAKE {QR_VULKAN, -1, "defaultgammacb", "\xFF\x53\x50\x56\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x2C\x00\x00\x00\x00\x00\x00\x00\x2C\x00\x00\x00" -"\xDC\x0E\x00\x00\x08\x0F\x00\x00\xAC\x0B\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x4E\x00\x00\x00\x00\x00\x00\x00" +"\xDC\x0E\x00\x00\x08\x0F\x00\x00\xAC\x0B\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x4E\x00\x00\x00\x00\x00\x00\x00" "\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00" "\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x0F\x00\x00\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00" "\x1C\x00\x00\x00\x39\x00\x00\x00\x3B\x00\x00\x00\x3E\x00\x00\x00\x40\x00\x00\x00\x44\x00\x00\x00\x4A\x00\x00\x00\x4B\x00\x00\x00" @@ -7667,7 +7667,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x2F\x00\x00\x00\x81\x00\x05\x00\x06\x00\x00\x00\x31\x00\x00\x00\x2D\x00\x00\x00\x30\x00\x00\x00\x88\x00\x05\x00\x06\x00\x00\x00" "\x33\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x41\x00\x05\x00\x26\x00\x00\x00\x34\x00\x00\x00\x0C\x00\x00\x00\x2B\x00\x00\x00" "\x3E\x00\x03\x00\x34\x00\x00\x00\x33\x00\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\x35\x00\x00\x00\x0C\x00\x00\x00\xFE\x00\x02\x00" -"\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x30\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00" +"\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x30\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00" "\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00" "\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x08\x00\x04\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x09\x00\x00\x00" "\x11\x00\x00\x00\x15\x00\x00\x00\x10\x00\x03\x00\x04\x00\x00\x00\x07\x00\x00\x00\x03\x00\x03\x00\x02\x00\x00\x00\xC2\x01\x00\x00" @@ -7804,7 +7804,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x5C\x13\x00\x00\xD4\x13\x00\x00\x00\x15\x00\x00\x01\x00\x66\x33\x72\x5F\x66\x6C\x6F\x6F\x72\x63\x6F\x6C\x6F\x72\x00\x3F\x00\x00" "\x00\x3F\x00\x00\x00\x3F\x00\x00\x00\x01\x03\x66\x33\x72\x5F\x77\x61\x6C\x6C\x63\x6F\x6C\x6F\x72\x00\x3E\x80\x00\x00\x3E\x80\x00" "\x00\x3F\x00\x00\x00\x01\x06\x62\x31\x72\x5F\x66\x6F\x67\x5F\x65\x78\x70\x32\x00\x00\x00\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00" -"\x07\x00\x08\x00\x75\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C" +"\x08\x00\x08\x00\x75\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C" "\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x0F\x00\x00\x00\x00\x00" "\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x27\x00\x00\x00\x44\x00\x00\x00\x4D\x00\x00\x00\x62\x00\x00\x00\x64\x00\x00\x00" "\x68\x00\x00\x00\x70\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x03\x00\x03\x00\x02\x00\x00\x00\xC2\x01\x00\x00" @@ -7958,7 +7958,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x3D\x00\x04\x00\x06\x00\x00\x00\x3B\x00\x00\x00\x3A\x00\x00\x00\x81\x00\x05\x00\x06\x00\x00\x00\x3C\x00\x00\x00\x38\x00\x00\x00" "\x3B\x00\x00\x00\x88\x00\x05\x00\x06\x00\x00\x00\x3E\x00\x00\x00\x3C\x00\x00\x00\x3D\x00\x00\x00\x41\x00\x05\x00\x31\x00\x00\x00" "\x3F\x00\x00\x00\x18\x00\x00\x00\x36\x00\x00\x00\x3E\x00\x03\x00\x3F\x00\x00\x00\x3E\x00\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00" -"\x40\x00\x00\x00\x18\x00\x00\x00\xFE\x00\x02\x00\x40\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00" +"\x40\x00\x00\x00\x18\x00\x00\x00\xFE\x00\x02\x00\x40\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00" "\x90\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64" "\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x09\x00\x04\x00\x00\x00\x04\x00\x00\x00" "\x6D\x61\x69\x6E\x00\x00\x00\x00\x37\x00\x00\x00\x7E\x00\x00\x00\x7F\x00\x00\x00\x87\x00\x00\x00\x10\x00\x03\x00\x04\x00\x00\x00" @@ -8650,7 +8650,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND {QR_VULKAN, -1, "postproc_fisheye", "\xFF\x53\x50\x56\x01\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2C\x00\x00\x00\x0D\x00\x00\x00\x3C\x00\x00\x00" "\xCC\x0E\x00\x00\x08\x0F\x00\x00\xD0\x0E\x00\x00\x01\x00\x66\x31\x66\x66\x6F\x76\x00\x00\x00\x00\x00\x00\x00\x00\x03\x02\x23\x07" -"\x00\x00\x01\x00\x07\x00\x08\x00\x4D\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00" +"\x00\x00\x01\x00\x08\x00\x08\x00\x4D\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00" "\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x0E\x00" "\x00\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x1C\x00\x00\x00\x39\x00\x00\x00\x3B\x00\x00\x00\x3F\x00\x00\x00" "\x48\x00\x00\x00\x49\x00\x00\x00\x4A\x00\x00\x00\x4B\x00\x00\x00\x4C\x00\x00\x00\x03\x00\x03\x00\x02\x00\x00\x00\xC2\x01\x00\x00" @@ -8768,7 +8768,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x2F\x00\x00\x00\x81\x00\x05\x00\x06\x00\x00\x00\x31\x00\x00\x00\x2D\x00\x00\x00\x30\x00\x00\x00\x88\x00\x05\x00\x06\x00\x00\x00" "\x33\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x41\x00\x05\x00\x26\x00\x00\x00\x34\x00\x00\x00\x0C\x00\x00\x00\x2B\x00\x00\x00" "\x3E\x00\x03\x00\x34\x00\x00\x00\x33\x00\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\x35\x00\x00\x00\x0C\x00\x00\x00\xFE\x00\x02\x00" -"\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x54\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00" +"\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x54\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00" "\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00" "\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x07\x00\x04\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x0B\x00\x00\x00" "\x43\x00\x00\x00\x10\x00\x03\x00\x04\x00\x00\x00\x07\x00\x00\x00\x03\x00\x03\x00\x02\x00\x00\x00\xC2\x01\x00\x00\x05\x00\x04\x00" @@ -8924,7 +8924,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND {QR_VULKAN, -1, "postproc_panorama", "\xFF\x53\x50\x56\x01\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2C\x00\x00\x00\x0D\x00\x00\x00\x3C\x00\x00\x00" "\xCC\x0E\x00\x00\x08\x0F\x00\x00\x60\x0C\x00\x00\x01\x00\x66\x31\x66\x66\x6F\x76\x00\x00\x00\x00\x00\x00\x00\x00\x03\x02\x23\x07" -"\x00\x00\x01\x00\x07\x00\x08\x00\x4D\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00" +"\x00\x00\x01\x00\x08\x00\x08\x00\x4D\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00" "\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x0E\x00" "\x00\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x1C\x00\x00\x00\x39\x00\x00\x00\x3B\x00\x00\x00\x3F\x00\x00\x00" "\x48\x00\x00\x00\x49\x00\x00\x00\x4A\x00\x00\x00\x4B\x00\x00\x00\x4C\x00\x00\x00\x03\x00\x03\x00\x02\x00\x00\x00\xC2\x01\x00\x00" @@ -9042,7 +9042,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x2F\x00\x00\x00\x81\x00\x05\x00\x06\x00\x00\x00\x31\x00\x00\x00\x2D\x00\x00\x00\x30\x00\x00\x00\x88\x00\x05\x00\x06\x00\x00\x00" "\x33\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x41\x00\x05\x00\x26\x00\x00\x00\x34\x00\x00\x00\x0C\x00\x00\x00\x2B\x00\x00\x00" "\x3E\x00\x03\x00\x34\x00\x00\x00\x33\x00\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\x35\x00\x00\x00\x0C\x00\x00\x00\xFE\x00\x02\x00" -"\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x36\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00" +"\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x36\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00" "\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00" "\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x07\x00\x04\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x0B\x00\x00\x00" "\x25\x00\x00\x00\x10\x00\x03\x00\x04\x00\x00\x00\x07\x00\x00\x00\x03\x00\x03\x00\x02\x00\x00\x00\xC2\x01\x00\x00\x05\x00\x04\x00" @@ -9237,7 +9237,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND {QR_VULKAN, -1, "postproc_stereographic", "\xFF\x53\x50\x56\x01\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2C\x00\x00\x00\x0D\x00\x00\x00\x3C\x00\x00\x00" "\x20\x0F\x00\x00\x5C\x0F\x00\x00\xB0\x0E\x00\x00\x01\x00\x66\x31\x66\x66\x6F\x76\x00\x00\x00\x00\x00\x00\x00\x00\x03\x02\x23\x07" -"\x00\x00\x01\x00\x07\x00\x08\x00\x51\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00" +"\x00\x00\x01\x00\x08\x00\x08\x00\x51\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00" "\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x0E\x00" "\x00\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x1C\x00\x00\x00\x39\x00\x00\x00\x3B\x00\x00\x00\x44\x00\x00\x00" "\x4C\x00\x00\x00\x4D\x00\x00\x00\x4E\x00\x00\x00\x4F\x00\x00\x00\x50\x00\x00\x00\x03\x00\x03\x00\x02\x00\x00\x00\xC2\x01\x00\x00" @@ -9358,7 +9358,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x31\x00\x00\x00\x2D\x00\x00\x00\x30\x00\x00\x00\x88\x00\x05\x00\x06\x00\x00\x00\x33\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00" "\x41\x00\x05\x00\x26\x00\x00\x00\x34\x00\x00\x00\x0C\x00\x00\x00\x2B\x00\x00\x00\x3E\x00\x03\x00\x34\x00\x00\x00\x33\x00\x00\x00" "\x3D\x00\x04\x00\x07\x00\x00\x00\x35\x00\x00\x00\x0C\x00\x00\x00\xFE\x00\x02\x00\x35\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07" -"\x00\x00\x01\x00\x07\x00\x08\x00\x56\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00" +"\x00\x00\x01\x00\x08\x00\x08\x00\x56\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00" "\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x07\x00" "\x04\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x0B\x00\x00\x00\x44\x00\x00\x00\x10\x00\x03\x00\x04\x00\x00\x00" "\x07\x00\x00\x00\x03\x00\x03\x00\x02\x00\x00\x00\xC2\x01\x00\x00\x05\x00\x04\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00" @@ -9646,7 +9646,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND #ifdef VKQUAKE {QR_VULKAN, -1, "fxaa", "\xFF\x53\x50\x56\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x2C\x00\x00\x00\x00\x00\x00\x00\x2C\x00\x00\x00" -"\x74\x0F\x00\x00\xA0\x0F\x00\x00\x5C\x1D\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x54\x00\x00\x00\x00\x00\x00\x00" +"\x74\x0F\x00\x00\xA0\x0F\x00\x00\x5C\x1D\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x54\x00\x00\x00\x00\x00\x00\x00" "\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00" "\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x0F\x00\x00\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00" "\x1C\x00\x00\x00\x39\x00\x00\x00\x3B\x00\x00\x00\x42\x00\x00\x00\x44\x00\x00\x00\x49\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00" @@ -9770,7 +9770,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x06\x00\x00\x00\x31\x00\x00\x00\x2D\x00\x00\x00\x30\x00\x00\x00\x88\x00\x05\x00\x06\x00\x00\x00\x33\x00\x00\x00\x31\x00\x00\x00" "\x32\x00\x00\x00\x41\x00\x05\x00\x26\x00\x00\x00\x34\x00\x00\x00\x0C\x00\x00\x00\x2B\x00\x00\x00\x3E\x00\x03\x00\x34\x00\x00\x00" "\x33\x00\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\x35\x00\x00\x00\x0C\x00\x00\x00\xFE\x00\x02\x00\x35\x00\x00\x00\x38\x00\x01\x00" -"\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\xFB\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00" +"\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\xFB\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00" "\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00" "\x0F\x00\x08\x00\x04\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x18\x00\x00\x00\x1C\x00\x00\x00\xE7\x00\x00\x00" "\x10\x00\x03\x00\x04\x00\x00\x00\x07\x00\x00\x00\x03\x00\x03\x00\x02\x00\x00\x00\xC2\x01\x00\x00\x05\x00\x04\x00\x04\x00\x00\x00" @@ -10046,7 +10046,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND {QR_VULKAN, -1, "underwaterwarp", "\xFF\x53\x50\x56\x01\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x2C\x00\x00\x00\x14\x00\x00\x00\x40\x00\x00\x00" "\x20\x11\x00\x00\x60\x11\x00\x00\xF4\x0D\x00\x00\x01\x00\x66\x31\x72\x5F\x77\x61\x74\x65\x72\x77\x61\x72\x70\x00\x00\x00\x00\x00" -"\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x68\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00" +"\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x68\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00" "\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00" "\x0F\x00\x10\x00\x00\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x1C\x00\x00\x00\x3A\x00\x00\x00\x3F\x00\x00\x00" "\x41\x00\x00\x00\x49\x00\x00\x00\x5C\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00" @@ -10183,7 +10183,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x06\x00\x00\x00\x31\x00\x00\x00\x2D\x00\x00\x00\x30\x00\x00\x00\x88\x00\x05\x00\x06\x00\x00\x00\x33\x00\x00\x00\x31\x00\x00\x00" "\x32\x00\x00\x00\x41\x00\x05\x00\x26\x00\x00\x00\x34\x00\x00\x00\x0C\x00\x00\x00\x2B\x00\x00\x00\x3E\x00\x03\x00\x34\x00\x00\x00" "\x33\x00\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\x35\x00\x00\x00\x0C\x00\x00\x00\xFE\x00\x02\x00\x35\x00\x00\x00\x38\x00\x01\x00" -"\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x42\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00" +"\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x42\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00" "\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00" "\x0F\x00\x09\x00\x04\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x13\x00\x00\x00\x1E\x00\x00\x00\x28\x00\x00\x00" "\x30\x00\x00\x00\x10\x00\x03\x00\x04\x00\x00\x00\x07\x00\x00\x00\x03\x00\x03\x00\x02\x00\x00\x00\xC2\x01\x00\x00\x05\x00\x04\x00" @@ -10336,7 +10336,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\xFF\x53\x50\x56\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x2C\x00\x00\x00\x36\x00\x00\x00\x64\x00\x00\x00" "\x2C\x10\x00\x00\x90\x10\x00\x00\xE4\x0E\x00\x00\x01\x00\x69\x31\x72\x5F\x6D\x65\x6E\x75\x74\x69\x6E\x74\x5F\x69\x6E\x76\x65\x72" "\x73\x65\x00\x00\x00\x00\x00\x01\x01\x66\x33\x72\x5F\x6D\x65\x6E\x75\x74\x69\x6E\x74\x00\x3F\x2E\x14\x7B\x3E\xCC\xCC\xCD\x3E\x05" -"\x1E\xB8\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x56\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00" +"\x1E\xB8\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x56\x00\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00" "\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00" "\x01\x00\x00\x00\x0F\x00\x0E\x00\x00\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x22\x00\x00\x00\x3F\x00\x00\x00" "\x41\x00\x00\x00\x47\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x03\x00\x03\x00" @@ -10465,7 +10465,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x06\x00\x00\x00\x36\x00\x00\x00\x35\x00\x00\x00\x81\x00\x05\x00\x06\x00\x00\x00\x37\x00\x00\x00\x33\x00\x00\x00\x36\x00\x00\x00" "\x88\x00\x05\x00\x06\x00\x00\x00\x39\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x41\x00\x05\x00\x2C\x00\x00\x00\x3A\x00\x00\x00" "\x13\x00\x00\x00\x31\x00\x00\x00\x3E\x00\x03\x00\x3A\x00\x00\x00\x39\x00\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\x3B\x00\x00\x00" -"\x13\x00\x00\x00\xFE\x00\x02\x00\x3B\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\x4C\x00\x00\x00" +"\x13\x00\x00\x00\xFE\x00\x02\x00\x3B\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\x4C\x00\x00\x00" "\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30" "\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x07\x00\x04\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E" "\x00\x00\x00\x00\x17\x00\x00\x00\x3B\x00\x00\x00\x10\x00\x03\x00\x04\x00\x00\x00\x07\x00\x00\x00\x03\x00\x03\x00\x02\x00\x00\x00" @@ -11458,12 +11458,12 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND #ifdef VKQUAKE {QR_VULKAN, -1, "rtlight", "\xFF\x53\x50\x56\x01\x00\x00\x00\x7F\x06\x00\x00\x00\x00\x00\x00\x2D\x00\x00\x00\x2C\x00\x00\x00\xA0\x00\x00\x00\xCC\x00\x00\x00" -"\xB0\x1C\x00\x00\x7C\x1D\x00\x00\xB8\x4E\x00\x00\x01\x00\x66\x31\x72\x5F\x67\x6C\x73\x6C\x5F\x6F\x66\x66\x73\x65\x74\x6D\x61\x70" +"\xB0\x1C\x00\x00\x7C\x1D\x00\x00\xA4\x4E\x00\x00\x01\x00\x66\x31\x72\x5F\x67\x6C\x73\x6C\x5F\x6F\x66\x66\x73\x65\x74\x6D\x61\x70" "\x70\x69\x6E\x67\x00\x00\x00\x00\x00\x01\x01\x66\x31\x67\x6C\x5F\x73\x70\x65\x63\x75\x6C\x61\x72\x00\x00\x00\x00\x00\x01\x02\x66" "\x31\x72\x5F\x67\x6C\x73\x6C\x5F\x6F\x66\x66\x73\x65\x74\x6D\x61\x70\x70\x69\x6E\x67\x5F\x73\x63\x61\x6C\x65\x00\x3D\x23\xD7\x0A" "\x01\x03\x69\x31\x72\x5F\x67\x6C\x73\x6C\x5F\x70\x63\x66\x00\x00\x00\x00\x05\x01\x04\x42\x31\x70\x63\x66\x00\x00\x00\x00\x00\x01" "\x05\x42\x31\x73\x70\x6F\x74\x00\x00\x00\x00\x00\x01\x06\x42\x31\x63\x75\x62\x65\x00\x00\x00\x00\x00\x01\x07\x62\x31\x72\x5F\x66" -"\x6F\x67\x5F\x65\x78\x70\x32\x00\x00\x00\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x07\x00\x08\x00\xD3\x00\x00\x00\x00\x00\x00\x00" +"\x6F\x67\x5F\x65\x78\x70\x32\x00\x00\x00\x00\x00\x03\x02\x23\x07\x00\x00\x01\x00\x08\x00\x08\x00\xD3\x00\x00\x00\x00\x00\x00\x00" "\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00" "\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x12\x00\x00\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00" "\x24\x00\x00\x00\x40\x00\x00\x00\x42\x00\x00\x00\x44\x00\x00\x00\x4C\x00\x00\x00\x5D\x00\x00\x00\x5F\x00\x00\x00\x79\x00\x00\x00" @@ -11693,7 +11693,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x10\x00\x00\x00\x43\x00\x00\x00\x3D\x00\x04\x00\x0B\x00\x00\x00\x45\x00\x00\x00\x44\x00\x00\x00\x3E\x00\x03\x00\x11\x00\x00\x00" "\x45\x00\x00\x00\x3D\x00\x04\x00\x0B\x00\x00\x00\x46\x00\x00\x00\x24\x00\x00\x00\x3E\x00\x03\x00\x0E\x00\x00\x00\x46\x00\x00\x00" "\x39\x00\x04\x00\x07\x00\x00\x00\x47\x00\x00\x00\x09\x00\x00\x00\xFE\x00\x02\x00\x47\x00\x00\x00\x38\x00\x01\x00\x03\x02\x23\x07" -"\x00\x00\x01\x00\x07\x00\x08\x00\x22\x03\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00" +"\x00\x00\x01\x00\x08\x00\x08\x00\x22\x03\x00\x00\x00\x00\x00\x00\x11\x00\x02\x00\x01\x00\x00\x00\x0B\x00\x06\x00\x01\x00\x00\x00" "\x47\x4C\x53\x4C\x2E\x73\x74\x64\x2E\x34\x35\x30\x00\x00\x00\x00\x0E\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x0C\x00" "\x04\x00\x00\x00\x04\x00\x00\x00\x6D\x61\x69\x6E\x00\x00\x00\x00\x37\x00\x00\x00\x69\x00\x00\x00\x18\x02\x00\x00\x1A\x02\x00\x00" "\x63\x02\x00\x00\xBE\x02\x00\x00\x14\x03\x00\x00\x10\x00\x03\x00\x04\x00\x00\x00\x07\x00\x00\x00\x03\x00\x03\x00\x02\x00\x00\x00" @@ -12239,90 +12239,90 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "\x06\x00\x00\x00\x88\x01\x00\x00\x7F\x01\x00\x00\x86\x01\x00\x00\x87\x01\x00\x00\x3D\x00\x04\x00\x06\x00\x00\x00\x89\x01\x00\x00" "\xC4\x00\x00\x00\x81\x00\x05\x00\x06\x00\x00\x00\x8A\x01\x00\x00\x89\x01\x00\x00\x88\x01\x00\x00\x3E\x00\x03\x00\xC4\x00\x00\x00" "\x8A\x01\x00\x00\x3D\x00\x04\x00\x06\x00\x00\x00\x8B\x01\x00\x00\xC4\x00\x00\x00\x88\x00\x05\x00\x06\x00\x00\x00\x8D\x01\x00\x00" -"\x8B\x01\x00\x00\x8C\x01\x00\x00\xFE\x00\x02\x00\x8D\x01\x00\x00\xF8\x00\x02\x00\xE2\x00\x00\x00\xF9\x00\x02\x00\xC9\x00\x00\x00" -"\xF8\x00\x02\x00\xC9\x00\x00\x00\x01\x00\x03\x00\x06\x00\x00\x00\x8F\x01\x00\x00\xFE\x00\x02\x00\x8F\x01\x00\x00\x38\x00\x01\x00" -"\x36\x00\x05\x00\x16\x00\x00\x00\x1C\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x37\x00\x03\x00\x15\x00\x00\x00\x19\x00\x00\x00" -"\x37\x00\x03\x00\x17\x00\x00\x00\x1A\x00\x00\x00\x37\x00\x03\x00\x08\x00\x00\x00\x1B\x00\x00\x00\xF8\x00\x02\x00\x1D\x00\x00\x00" -"\x3B\x00\x04\x00\x08\x00\x00\x00\x93\x01\x00\x00\x07\x00\x00\x00\x3B\x00\x04\x00\x08\x00\x00\x00\x9F\x01\x00\x00\x07\x00\x00\x00" -"\x3B\x00\x04\x00\x28\x00\x00\x00\xAB\x01\x00\x00\x07\x00\x00\x00\x3B\x00\x04\x00\x28\x00\x00\x00\xC1\x01\x00\x00\x07\x00\x00\x00" -"\x3B\x00\x04\x00\x17\x00\x00\x00\xE6\x01\x00\x00\x07\x00\x00\x00\x3B\x00\x04\x00\x17\x00\x00\x00\xED\x01\x00\x00\x07\x00\x00\x00" -"\xF7\x00\x03\x00\x92\x01\x00\x00\x00\x00\x00\x00\xFA\x00\x04\x00\x90\x01\x00\x00\x91\x01\x00\x00\xE1\x01\x00\x00\xF8\x00\x02\x00" -"\x91\x01\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\x94\x01\x00\x00\x1B\x00\x00\x00\x0C\x00\x06\x00\x07\x00\x00\x00\x95\x01\x00\x00" -"\x01\x00\x00\x00\x45\x00\x00\x00\x94\x01\x00\x00\x4F\x00\x07\x00\x16\x00\x00\x00\x96\x01\x00\x00\x95\x01\x00\x00\x95\x01\x00\x00" -"\x00\x00\x00\x00\x01\x00\x00\x00\x8E\x00\x05\x00\x16\x00\x00\x00\x98\x01\x00\x00\x96\x01\x00\x00\x97\x01\x00\x00\x8E\x00\x05\x00" -"\x16\x00\x00\x00\x99\x01\x00\x00\x98\x01\x00\x00\x55\x00\x00\x00\x85\x00\x05\x00\x16\x00\x00\x00\x9B\x01\x00\x00\x99\x01\x00\x00" -"\x9A\x01\x00\x00\x51\x00\x05\x00\x06\x00\x00\x00\x9C\x01\x00\x00\x9B\x01\x00\x00\x00\x00\x00\x00\x51\x00\x05\x00\x06\x00\x00\x00" -"\x9D\x01\x00\x00\x9B\x01\x00\x00\x01\x00\x00\x00\x50\x00\x06\x00\x07\x00\x00\x00\x9E\x01\x00\x00\x9C\x01\x00\x00\x9D\x01\x00\x00" -"\xE5\x00\x00\x00\x3E\x00\x03\x00\x93\x01\x00\x00\x9E\x01\x00\x00\x3D\x00\x04\x00\x16\x00\x00\x00\xA0\x01\x00\x00\x1A\x00\x00\x00" -"\x51\x00\x05\x00\x06\x00\x00\x00\xA1\x01\x00\x00\xA0\x01\x00\x00\x00\x00\x00\x00\x51\x00\x05\x00\x06\x00\x00\x00\xA2\x01\x00\x00" -"\xA0\x01\x00\x00\x01\x00\x00\x00\x50\x00\x05\x00\x16\x00\x00\x00\xA3\x01\x00\x00\xA1\x01\x00\x00\xA2\x01\x00\x00\x51\x00\x05\x00" -"\x06\x00\x00\x00\xA4\x01\x00\x00\xA3\x01\x00\x00\x00\x00\x00\x00\x51\x00\x05\x00\x06\x00\x00\x00\xA5\x01\x00\x00\xA3\x01\x00\x00" -"\x01\x00\x00\x00\x50\x00\x06\x00\x07\x00\x00\x00\xA6\x01\x00\x00\xA4\x01\x00\x00\xA5\x01\x00\x00\x55\x00\x00\x00\x3E\x00\x03\x00" -"\x9F\x01\x00\x00\xA6\x01\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\xA8\x01\x00\x00\x93\x01\x00\x00\x50\x00\x06\x00\x07\x00\x00\x00" -"\xA9\x01\x00\x00\xA7\x01\x00\x00\xA7\x01\x00\x00\xA7\x01\x00\x00\x88\x00\x05\x00\x07\x00\x00\x00\xAA\x01\x00\x00\xA8\x01\x00\x00" -"\xA9\x01\x00\x00\x3E\x00\x03\x00\x93\x01\x00\x00\xAA\x01\x00\x00\x3E\x00\x03\x00\xAB\x01\x00\x00\x55\x00\x00\x00\xF9\x00\x02\x00" -"\xAC\x01\x00\x00\xF8\x00\x02\x00\xAC\x01\x00\x00\xF6\x00\x04\x00\xAE\x01\x00\x00\xAF\x01\x00\x00\x00\x00\x00\x00\xF9\x00\x02\x00" -"\xB0\x01\x00\x00\xF8\x00\x02\x00\xB0\x01\x00\x00\x3D\x00\x04\x00\x06\x00\x00\x00\xB1\x01\x00\x00\xAB\x01\x00\x00\xB8\x00\x05\x00" -"\x21\x00\x00\x00\xB2\x01\x00\x00\xB1\x01\x00\x00\xA7\x01\x00\x00\xFA\x00\x04\x00\xB2\x01\x00\x00\xAD\x01\x00\x00\xAE\x01\x00\x00" -"\xF8\x00\x02\x00\xAD\x01\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\xB3\x01\x00\x00\x93\x01\x00\x00\x3D\x00\x04\x00\x14\x00\x00\x00" -"\xB4\x01\x00\x00\x19\x00\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\xB5\x01\x00\x00\x9F\x01\x00\x00\x4F\x00\x07\x00\x16\x00\x00\x00" -"\xB6\x01\x00\x00\xB5\x01\x00\x00\xB5\x01\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x57\x00\x05\x00\x2A\x00\x00\x00\xB7\x01\x00\x00" -"\xB4\x01\x00\x00\xB6\x01\x00\x00\x51\x00\x05\x00\x06\x00\x00\x00\xB8\x01\x00\x00\xB7\x01\x00\x00\x03\x00\x00\x00\x41\x00\x05\x00" -"\x28\x00\x00\x00\xB9\x01\x00\x00\x9F\x01\x00\x00\x38\x00\x00\x00\x3D\x00\x04\x00\x06\x00\x00\x00\xBA\x01\x00\x00\xB9\x01\x00\x00" -"\x0C\x00\x07\x00\x06\x00\x00\x00\xBB\x01\x00\x00\x01\x00\x00\x00\x30\x00\x00\x00\xB8\x01\x00\x00\xBA\x01\x00\x00\x8E\x00\x05\x00" -"\x07\x00\x00\x00\xBC\x01\x00\x00\xB3\x01\x00\x00\xBB\x01\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\xBD\x01\x00\x00\x9F\x01\x00\x00" -"\x81\x00\x05\x00\x07\x00\x00\x00\xBE\x01\x00\x00\xBD\x01\x00\x00\xBC\x01\x00\x00\x3E\x00\x03\x00\x9F\x01\x00\x00\xBE\x01\x00\x00" -"\xF9\x00\x02\x00\xAF\x01\x00\x00\xF8\x00\x02\x00\xAF\x01\x00\x00\x3D\x00\x04\x00\x06\x00\x00\x00\xBF\x01\x00\x00\xAB\x01\x00\x00" -"\x81\x00\x05\x00\x06\x00\x00\x00\xC0\x01\x00\x00\xBF\x01\x00\x00\x55\x00\x00\x00\x3E\x00\x03\x00\xAB\x01\x00\x00\xC0\x01\x00\x00" -"\xF9\x00\x02\x00\xAC\x01\x00\x00\xF8\x00\x02\x00\xAE\x01\x00\x00\x3E\x00\x03\x00\xAB\x01\x00\x00\x41\x00\x00\x00\x3E\x00\x03\x00" -"\xC1\x01\x00\x00\x55\x00\x00\x00\xF9\x00\x02\x00\xC2\x01\x00\x00\xF8\x00\x02\x00\xC2\x01\x00\x00\xF6\x00\x04\x00\xC4\x01\x00\x00" -"\xC5\x01\x00\x00\x00\x00\x00\x00\xF9\x00\x02\x00\xC6\x01\x00\x00\xF8\x00\x02\x00\xC6\x01\x00\x00\x3D\x00\x04\x00\x06\x00\x00\x00" -"\xC7\x01\x00\x00\xAB\x01\x00\x00\xB8\x00\x05\x00\x21\x00\x00\x00\xC8\x01\x00\x00\xC7\x01\x00\x00\x20\x01\x00\x00\xFA\x00\x04\x00" -"\xC8\x01\x00\x00\xC3\x01\x00\x00\xC4\x01\x00\x00\xF8\x00\x02\x00\xC3\x01\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\xC9\x01\x00\x00" -"\x93\x01\x00\x00\x3D\x00\x04\x00\x14\x00\x00\x00\xCA\x01\x00\x00\x19\x00\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\xCB\x01\x00\x00" -"\x9F\x01\x00\x00\x4F\x00\x07\x00\x16\x00\x00\x00\xCC\x01\x00\x00\xCB\x01\x00\x00\xCB\x01\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00" -"\x57\x00\x05\x00\x2A\x00\x00\x00\xCD\x01\x00\x00\xCA\x01\x00\x00\xCC\x01\x00\x00\x51\x00\x05\x00\x06\x00\x00\x00\xCE\x01\x00\x00" -"\xCD\x01\x00\x00\x03\x00\x00\x00\x41\x00\x05\x00\x28\x00\x00\x00\xCF\x01\x00\x00\x9F\x01\x00\x00\x38\x00\x00\x00\x3D\x00\x04\x00" -"\x06\x00\x00\x00\xD0\x01\x00\x00\xCF\x01\x00\x00\x0C\x00\x07\x00\x06\x00\x00\x00\xD1\x01\x00\x00\x01\x00\x00\x00\x30\x00\x00\x00" -"\xCE\x01\x00\x00\xD0\x01\x00\x00\x3D\x00\x04\x00\x06\x00\x00\x00\xD2\x01\x00\x00\xC1\x01\x00\x00\x85\x00\x05\x00\x06\x00\x00\x00" -"\xD3\x01\x00\x00\xD1\x01\x00\x00\xD2\x01\x00\x00\x3D\x00\x04\x00\x06\x00\x00\x00\xD4\x01\x00\x00\xC1\x01\x00\x00\x85\x00\x05\x00" -"\x06\x00\x00\x00\xD5\x01\x00\x00\x75\x00\x00\x00\xD4\x01\x00\x00\x83\x00\x05\x00\x06\x00\x00\x00\xD6\x01\x00\x00\xD3\x01\x00\x00" -"\xD5\x01\x00\x00\x8E\x00\x05\x00\x07\x00\x00\x00\xD7\x01\x00\x00\xC9\x01\x00\x00\xD6\x01\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00" -"\xD8\x01\x00\x00\x9F\x01\x00\x00\x81\x00\x05\x00\x07\x00\x00\x00\xD9\x01\x00\x00\xD8\x01\x00\x00\xD7\x01\x00\x00\x3E\x00\x03\x00" -"\x9F\x01\x00\x00\xD9\x01\x00\x00\xF9\x00\x02\x00\xC5\x01\x00\x00\xF8\x00\x02\x00\xC5\x01\x00\x00\x3D\x00\x04\x00\x06\x00\x00\x00" -"\xDA\x01\x00\x00\xAB\x01\x00\x00\x81\x00\x05\x00\x06\x00\x00\x00\xDB\x01\x00\x00\xDA\x01\x00\x00\x55\x00\x00\x00\x3E\x00\x03\x00" -"\xAB\x01\x00\x00\xDB\x01\x00\x00\x3D\x00\x04\x00\x06\x00\x00\x00\xDC\x01\x00\x00\xC1\x01\x00\x00\x85\x00\x05\x00\x06\x00\x00\x00" -"\xDD\x01\x00\x00\xDC\x01\x00\x00\x75\x00\x00\x00\x3E\x00\x03\x00\xC1\x01\x00\x00\xDD\x01\x00\x00\xF9\x00\x02\x00\xC2\x01\x00\x00" -"\xF8\x00\x02\x00\xC4\x01\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\xDE\x01\x00\x00\x9F\x01\x00\x00\x4F\x00\x07\x00\x16\x00\x00\x00" -"\xDF\x01\x00\x00\xDE\x01\x00\x00\xDE\x01\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\xFE\x00\x02\x00\xDF\x01\x00\x00\xF8\x00\x02\x00" -"\xE1\x01\x00\x00\xBA\x00\x05\x00\x21\x00\x00\x00\xE3\x01\x00\x00\xE2\x01\x00\x00\x41\x00\x00\x00\xF7\x00\x03\x00\xE5\x01\x00\x00" -"\x00\x00\x00\x00\xFA\x00\x04\x00\xE3\x01\x00\x00\xE4\x01\x00\x00\xE5\x01\x00\x00\xF8\x00\x02\x00\xE4\x01\x00\x00\x3D\x00\x04\x00" -"\x07\x00\x00\x00\xE7\x01\x00\x00\x1B\x00\x00\x00\x0C\x00\x06\x00\x07\x00\x00\x00\xE8\x01\x00\x00\x01\x00\x00\x00\x45\x00\x00\x00" -"\xE7\x01\x00\x00\x4F\x00\x07\x00\x16\x00\x00\x00\xE9\x01\x00\x00\xE8\x01\x00\x00\xE8\x01\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00" -"\x8E\x00\x05\x00\x16\x00\x00\x00\xEA\x01\x00\x00\xE9\x01\x00\x00\x97\x01\x00\x00\x8E\x00\x05\x00\x16\x00\x00\x00\xEB\x01\x00\x00" -"\xEA\x01\x00\x00\x55\x00\x00\x00\x85\x00\x05\x00\x16\x00\x00\x00\xEC\x01\x00\x00\xEB\x01\x00\x00\x9A\x01\x00\x00\x3E\x00\x03\x00" -"\xE6\x01\x00\x00\xEC\x01\x00\x00\x3D\x00\x04\x00\x16\x00\x00\x00\xEE\x01\x00\x00\x1A\x00\x00\x00\x3E\x00\x03\x00\xED\x01\x00\x00" -"\xEE\x01\x00\x00\x3D\x00\x04\x00\x16\x00\x00\x00\xEF\x01\x00\x00\xE6\x01\x00\x00\x3D\x00\x04\x00\x16\x00\x00\x00\xF0\x01\x00\x00" -"\xED\x01\x00\x00\x81\x00\x05\x00\x16\x00\x00\x00\xF1\x01\x00\x00\xF0\x01\x00\x00\xEF\x01\x00\x00\x3E\x00\x03\x00\xED\x01\x00\x00" -"\xF1\x01\x00\x00\x3D\x00\x04\x00\x16\x00\x00\x00\xF3\x01\x00\x00\xE6\x01\x00\x00\x8E\x00\x05\x00\x16\x00\x00\x00\xF4\x01\x00\x00" -"\xF3\x01\x00\x00\xF2\x01\x00\x00\x3E\x00\x03\x00\xE6\x01\x00\x00\xF4\x01\x00\x00\x3D\x00\x04\x00\x16\x00\x00\x00\xF5\x01\x00\x00" -"\xE6\x01\x00\x00\x3D\x00\x04\x00\x14\x00\x00\x00\xF6\x01\x00\x00\x19\x00\x00\x00\x3D\x00\x04\x00\x16\x00\x00\x00\xF7\x01\x00\x00" -"\xED\x01\x00\x00\x57\x00\x05\x00\x2A\x00\x00\x00\xF8\x01\x00\x00\xF6\x01\x00\x00\xF7\x01\x00\x00\x51\x00\x05\x00\x06\x00\x00\x00" -"\xF9\x01\x00\x00\xF8\x01\x00\x00\x03\x00\x00\x00\x8E\x00\x05\x00\x16\x00\x00\x00\xFA\x01\x00\x00\xF5\x01\x00\x00\xF9\x01\x00\x00" -"\x3D\x00\x04\x00\x16\x00\x00\x00\xFB\x01\x00\x00\xED\x01\x00\x00\x83\x00\x05\x00\x16\x00\x00\x00\xFC\x01\x00\x00\xFB\x01\x00\x00" -"\xFA\x01\x00\x00\x3E\x00\x03\x00\xED\x01\x00\x00\xFC\x01\x00\x00\x3D\x00\x04\x00\x16\x00\x00\x00\xFD\x01\x00\x00\xE6\x01\x00\x00" -"\x3D\x00\x04\x00\x14\x00\x00\x00\xFE\x01\x00\x00\x19\x00\x00\x00\x3D\x00\x04\x00\x16\x00\x00\x00\xFF\x01\x00\x00\xED\x01\x00\x00" -"\x57\x00\x05\x00\x2A\x00\x00\x00\x00\x02\x00\x00\xFE\x01\x00\x00\xFF\x01\x00\x00\x51\x00\x05\x00\x06\x00\x00\x00\x01\x02\x00\x00" -"\x00\x02\x00\x00\x03\x00\x00\x00\x8E\x00\x05\x00\x16\x00\x00\x00\x02\x02\x00\x00\xFD\x01\x00\x00\x01\x02\x00\x00\x3D\x00\x04\x00" -"\x16\x00\x00\x00\x03\x02\x00\x00\xED\x01\x00\x00\x83\x00\x05\x00\x16\x00\x00\x00\x04\x02\x00\x00\x03\x02\x00\x00\x02\x02\x00\x00" -"\x3E\x00\x03\x00\xED\x01\x00\x00\x04\x02\x00\x00\x3D\x00\x04\x00\x16\x00\x00\x00\x05\x02\x00\x00\xE6\x01\x00\x00\x3D\x00\x04\x00" -"\x14\x00\x00\x00\x06\x02\x00\x00\x19\x00\x00\x00\x3D\x00\x04\x00\x16\x00\x00\x00\x07\x02\x00\x00\xED\x01\x00\x00\x57\x00\x05\x00" -"\x2A\x00\x00\x00\x08\x02\x00\x00\x06\x02\x00\x00\x07\x02\x00\x00\x51\x00\x05\x00\x06\x00\x00\x00\x09\x02\x00\x00\x08\x02\x00\x00" -"\x03\x00\x00\x00\x8E\x00\x05\x00\x16\x00\x00\x00\x0A\x02\x00\x00\x05\x02\x00\x00\x09\x02\x00\x00\x3D\x00\x04\x00\x16\x00\x00\x00" -"\x0B\x02\x00\x00\xED\x01\x00\x00\x83\x00\x05\x00\x16\x00\x00\x00\x0C\x02\x00\x00\x0B\x02\x00\x00\x0A\x02\x00\x00\x3E\x00\x03\x00" -"\xED\x01\x00\x00\x0C\x02\x00\x00\x3D\x00\x04\x00\x16\x00\x00\x00\x0D\x02\x00\x00\xED\x01\x00\x00\xFE\x00\x02\x00\x0D\x02\x00\x00" -"\xF8\x00\x02\x00\xE5\x01\x00\x00\xF9\x00\x02\x00\x92\x01\x00\x00\xF8\x00\x02\x00\x92\x01\x00\x00\x3D\x00\x04\x00\x16\x00\x00\x00" -"\x0F\x02\x00\x00\x1A\x00\x00\x00\xFE\x00\x02\x00\x0F\x02\x00\x00\x38\x00\x01\x00"}, +"\x8B\x01\x00\x00\x8C\x01\x00\x00\xFE\x00\x02\x00\x8D\x01\x00\x00\xF8\x00\x02\x00\xE2\x00\x00\x00\xFF\x00\x01\x00\xF8\x00\x02\x00" +"\xC9\x00\x00\x00\xFF\x00\x01\x00\x38\x00\x01\x00\x36\x00\x05\x00\x16\x00\x00\x00\x1C\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00" +"\x37\x00\x03\x00\x15\x00\x00\x00\x19\x00\x00\x00\x37\x00\x03\x00\x17\x00\x00\x00\x1A\x00\x00\x00\x37\x00\x03\x00\x08\x00\x00\x00" +"\x1B\x00\x00\x00\xF8\x00\x02\x00\x1D\x00\x00\x00\x3B\x00\x04\x00\x08\x00\x00\x00\x93\x01\x00\x00\x07\x00\x00\x00\x3B\x00\x04\x00" +"\x08\x00\x00\x00\x9F\x01\x00\x00\x07\x00\x00\x00\x3B\x00\x04\x00\x28\x00\x00\x00\xAB\x01\x00\x00\x07\x00\x00\x00\x3B\x00\x04\x00" +"\x28\x00\x00\x00\xC1\x01\x00\x00\x07\x00\x00\x00\x3B\x00\x04\x00\x17\x00\x00\x00\xE6\x01\x00\x00\x07\x00\x00\x00\x3B\x00\x04\x00" +"\x17\x00\x00\x00\xED\x01\x00\x00\x07\x00\x00\x00\xF7\x00\x03\x00\x92\x01\x00\x00\x00\x00\x00\x00\xFA\x00\x04\x00\x90\x01\x00\x00" +"\x91\x01\x00\x00\xE1\x01\x00\x00\xF8\x00\x02\x00\x91\x01\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\x94\x01\x00\x00\x1B\x00\x00\x00" +"\x0C\x00\x06\x00\x07\x00\x00\x00\x95\x01\x00\x00\x01\x00\x00\x00\x45\x00\x00\x00\x94\x01\x00\x00\x4F\x00\x07\x00\x16\x00\x00\x00" +"\x96\x01\x00\x00\x95\x01\x00\x00\x95\x01\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x8E\x00\x05\x00\x16\x00\x00\x00\x98\x01\x00\x00" +"\x96\x01\x00\x00\x97\x01\x00\x00\x8E\x00\x05\x00\x16\x00\x00\x00\x99\x01\x00\x00\x98\x01\x00\x00\x55\x00\x00\x00\x85\x00\x05\x00" +"\x16\x00\x00\x00\x9B\x01\x00\x00\x99\x01\x00\x00\x9A\x01\x00\x00\x51\x00\x05\x00\x06\x00\x00\x00\x9C\x01\x00\x00\x9B\x01\x00\x00" +"\x00\x00\x00\x00\x51\x00\x05\x00\x06\x00\x00\x00\x9D\x01\x00\x00\x9B\x01\x00\x00\x01\x00\x00\x00\x50\x00\x06\x00\x07\x00\x00\x00" +"\x9E\x01\x00\x00\x9C\x01\x00\x00\x9D\x01\x00\x00\xE5\x00\x00\x00\x3E\x00\x03\x00\x93\x01\x00\x00\x9E\x01\x00\x00\x3D\x00\x04\x00" +"\x16\x00\x00\x00\xA0\x01\x00\x00\x1A\x00\x00\x00\x51\x00\x05\x00\x06\x00\x00\x00\xA1\x01\x00\x00\xA0\x01\x00\x00\x00\x00\x00\x00" +"\x51\x00\x05\x00\x06\x00\x00\x00\xA2\x01\x00\x00\xA0\x01\x00\x00\x01\x00\x00\x00\x50\x00\x05\x00\x16\x00\x00\x00\xA3\x01\x00\x00" +"\xA1\x01\x00\x00\xA2\x01\x00\x00\x51\x00\x05\x00\x06\x00\x00\x00\xA4\x01\x00\x00\xA3\x01\x00\x00\x00\x00\x00\x00\x51\x00\x05\x00" +"\x06\x00\x00\x00\xA5\x01\x00\x00\xA3\x01\x00\x00\x01\x00\x00\x00\x50\x00\x06\x00\x07\x00\x00\x00\xA6\x01\x00\x00\xA4\x01\x00\x00" +"\xA5\x01\x00\x00\x55\x00\x00\x00\x3E\x00\x03\x00\x9F\x01\x00\x00\xA6\x01\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\xA8\x01\x00\x00" +"\x93\x01\x00\x00\x50\x00\x06\x00\x07\x00\x00\x00\xA9\x01\x00\x00\xA7\x01\x00\x00\xA7\x01\x00\x00\xA7\x01\x00\x00\x88\x00\x05\x00" +"\x07\x00\x00\x00\xAA\x01\x00\x00\xA8\x01\x00\x00\xA9\x01\x00\x00\x3E\x00\x03\x00\x93\x01\x00\x00\xAA\x01\x00\x00\x3E\x00\x03\x00" +"\xAB\x01\x00\x00\x55\x00\x00\x00\xF9\x00\x02\x00\xAC\x01\x00\x00\xF8\x00\x02\x00\xAC\x01\x00\x00\xF6\x00\x04\x00\xAE\x01\x00\x00" +"\xAF\x01\x00\x00\x00\x00\x00\x00\xF9\x00\x02\x00\xB0\x01\x00\x00\xF8\x00\x02\x00\xB0\x01\x00\x00\x3D\x00\x04\x00\x06\x00\x00\x00" +"\xB1\x01\x00\x00\xAB\x01\x00\x00\xB8\x00\x05\x00\x21\x00\x00\x00\xB2\x01\x00\x00\xB1\x01\x00\x00\xA7\x01\x00\x00\xFA\x00\x04\x00" +"\xB2\x01\x00\x00\xAD\x01\x00\x00\xAE\x01\x00\x00\xF8\x00\x02\x00\xAD\x01\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\xB3\x01\x00\x00" +"\x93\x01\x00\x00\x3D\x00\x04\x00\x14\x00\x00\x00\xB4\x01\x00\x00\x19\x00\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\xB5\x01\x00\x00" +"\x9F\x01\x00\x00\x4F\x00\x07\x00\x16\x00\x00\x00\xB6\x01\x00\x00\xB5\x01\x00\x00\xB5\x01\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00" +"\x57\x00\x05\x00\x2A\x00\x00\x00\xB7\x01\x00\x00\xB4\x01\x00\x00\xB6\x01\x00\x00\x51\x00\x05\x00\x06\x00\x00\x00\xB8\x01\x00\x00" +"\xB7\x01\x00\x00\x03\x00\x00\x00\x41\x00\x05\x00\x28\x00\x00\x00\xB9\x01\x00\x00\x9F\x01\x00\x00\x38\x00\x00\x00\x3D\x00\x04\x00" +"\x06\x00\x00\x00\xBA\x01\x00\x00\xB9\x01\x00\x00\x0C\x00\x07\x00\x06\x00\x00\x00\xBB\x01\x00\x00\x01\x00\x00\x00\x30\x00\x00\x00" +"\xB8\x01\x00\x00\xBA\x01\x00\x00\x8E\x00\x05\x00\x07\x00\x00\x00\xBC\x01\x00\x00\xB3\x01\x00\x00\xBB\x01\x00\x00\x3D\x00\x04\x00" +"\x07\x00\x00\x00\xBD\x01\x00\x00\x9F\x01\x00\x00\x81\x00\x05\x00\x07\x00\x00\x00\xBE\x01\x00\x00\xBD\x01\x00\x00\xBC\x01\x00\x00" +"\x3E\x00\x03\x00\x9F\x01\x00\x00\xBE\x01\x00\x00\xF9\x00\x02\x00\xAF\x01\x00\x00\xF8\x00\x02\x00\xAF\x01\x00\x00\x3D\x00\x04\x00" +"\x06\x00\x00\x00\xBF\x01\x00\x00\xAB\x01\x00\x00\x81\x00\x05\x00\x06\x00\x00\x00\xC0\x01\x00\x00\xBF\x01\x00\x00\x55\x00\x00\x00" +"\x3E\x00\x03\x00\xAB\x01\x00\x00\xC0\x01\x00\x00\xF9\x00\x02\x00\xAC\x01\x00\x00\xF8\x00\x02\x00\xAE\x01\x00\x00\x3E\x00\x03\x00" +"\xAB\x01\x00\x00\x41\x00\x00\x00\x3E\x00\x03\x00\xC1\x01\x00\x00\x55\x00\x00\x00\xF9\x00\x02\x00\xC2\x01\x00\x00\xF8\x00\x02\x00" +"\xC2\x01\x00\x00\xF6\x00\x04\x00\xC4\x01\x00\x00\xC5\x01\x00\x00\x00\x00\x00\x00\xF9\x00\x02\x00\xC6\x01\x00\x00\xF8\x00\x02\x00" +"\xC6\x01\x00\x00\x3D\x00\x04\x00\x06\x00\x00\x00\xC7\x01\x00\x00\xAB\x01\x00\x00\xB8\x00\x05\x00\x21\x00\x00\x00\xC8\x01\x00\x00" +"\xC7\x01\x00\x00\x20\x01\x00\x00\xFA\x00\x04\x00\xC8\x01\x00\x00\xC3\x01\x00\x00\xC4\x01\x00\x00\xF8\x00\x02\x00\xC3\x01\x00\x00" +"\x3D\x00\x04\x00\x07\x00\x00\x00\xC9\x01\x00\x00\x93\x01\x00\x00\x3D\x00\x04\x00\x14\x00\x00\x00\xCA\x01\x00\x00\x19\x00\x00\x00" +"\x3D\x00\x04\x00\x07\x00\x00\x00\xCB\x01\x00\x00\x9F\x01\x00\x00\x4F\x00\x07\x00\x16\x00\x00\x00\xCC\x01\x00\x00\xCB\x01\x00\x00" +"\xCB\x01\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x57\x00\x05\x00\x2A\x00\x00\x00\xCD\x01\x00\x00\xCA\x01\x00\x00\xCC\x01\x00\x00" +"\x51\x00\x05\x00\x06\x00\x00\x00\xCE\x01\x00\x00\xCD\x01\x00\x00\x03\x00\x00\x00\x41\x00\x05\x00\x28\x00\x00\x00\xCF\x01\x00\x00" +"\x9F\x01\x00\x00\x38\x00\x00\x00\x3D\x00\x04\x00\x06\x00\x00\x00\xD0\x01\x00\x00\xCF\x01\x00\x00\x0C\x00\x07\x00\x06\x00\x00\x00" +"\xD1\x01\x00\x00\x01\x00\x00\x00\x30\x00\x00\x00\xCE\x01\x00\x00\xD0\x01\x00\x00\x3D\x00\x04\x00\x06\x00\x00\x00\xD2\x01\x00\x00" +"\xC1\x01\x00\x00\x85\x00\x05\x00\x06\x00\x00\x00\xD3\x01\x00\x00\xD1\x01\x00\x00\xD2\x01\x00\x00\x3D\x00\x04\x00\x06\x00\x00\x00" +"\xD4\x01\x00\x00\xC1\x01\x00\x00\x85\x00\x05\x00\x06\x00\x00\x00\xD5\x01\x00\x00\x75\x00\x00\x00\xD4\x01\x00\x00\x83\x00\x05\x00" +"\x06\x00\x00\x00\xD6\x01\x00\x00\xD3\x01\x00\x00\xD5\x01\x00\x00\x8E\x00\x05\x00\x07\x00\x00\x00\xD7\x01\x00\x00\xC9\x01\x00\x00" +"\xD6\x01\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\xD8\x01\x00\x00\x9F\x01\x00\x00\x81\x00\x05\x00\x07\x00\x00\x00\xD9\x01\x00\x00" +"\xD8\x01\x00\x00\xD7\x01\x00\x00\x3E\x00\x03\x00\x9F\x01\x00\x00\xD9\x01\x00\x00\xF9\x00\x02\x00\xC5\x01\x00\x00\xF8\x00\x02\x00" +"\xC5\x01\x00\x00\x3D\x00\x04\x00\x06\x00\x00\x00\xDA\x01\x00\x00\xAB\x01\x00\x00\x81\x00\x05\x00\x06\x00\x00\x00\xDB\x01\x00\x00" +"\xDA\x01\x00\x00\x55\x00\x00\x00\x3E\x00\x03\x00\xAB\x01\x00\x00\xDB\x01\x00\x00\x3D\x00\x04\x00\x06\x00\x00\x00\xDC\x01\x00\x00" +"\xC1\x01\x00\x00\x85\x00\x05\x00\x06\x00\x00\x00\xDD\x01\x00\x00\xDC\x01\x00\x00\x75\x00\x00\x00\x3E\x00\x03\x00\xC1\x01\x00\x00" +"\xDD\x01\x00\x00\xF9\x00\x02\x00\xC2\x01\x00\x00\xF8\x00\x02\x00\xC4\x01\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\xDE\x01\x00\x00" +"\x9F\x01\x00\x00\x4F\x00\x07\x00\x16\x00\x00\x00\xDF\x01\x00\x00\xDE\x01\x00\x00\xDE\x01\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00" +"\xFE\x00\x02\x00\xDF\x01\x00\x00\xF8\x00\x02\x00\xE1\x01\x00\x00\xBA\x00\x05\x00\x21\x00\x00\x00\xE3\x01\x00\x00\xE2\x01\x00\x00" +"\x41\x00\x00\x00\xF7\x00\x03\x00\xE5\x01\x00\x00\x00\x00\x00\x00\xFA\x00\x04\x00\xE3\x01\x00\x00\xE4\x01\x00\x00\xE5\x01\x00\x00" +"\xF8\x00\x02\x00\xE4\x01\x00\x00\x3D\x00\x04\x00\x07\x00\x00\x00\xE7\x01\x00\x00\x1B\x00\x00\x00\x0C\x00\x06\x00\x07\x00\x00\x00" +"\xE8\x01\x00\x00\x01\x00\x00\x00\x45\x00\x00\x00\xE7\x01\x00\x00\x4F\x00\x07\x00\x16\x00\x00\x00\xE9\x01\x00\x00\xE8\x01\x00\x00" +"\xE8\x01\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x8E\x00\x05\x00\x16\x00\x00\x00\xEA\x01\x00\x00\xE9\x01\x00\x00\x97\x01\x00\x00" +"\x8E\x00\x05\x00\x16\x00\x00\x00\xEB\x01\x00\x00\xEA\x01\x00\x00\x55\x00\x00\x00\x85\x00\x05\x00\x16\x00\x00\x00\xEC\x01\x00\x00" +"\xEB\x01\x00\x00\x9A\x01\x00\x00\x3E\x00\x03\x00\xE6\x01\x00\x00\xEC\x01\x00\x00\x3D\x00\x04\x00\x16\x00\x00\x00\xEE\x01\x00\x00" +"\x1A\x00\x00\x00\x3E\x00\x03\x00\xED\x01\x00\x00\xEE\x01\x00\x00\x3D\x00\x04\x00\x16\x00\x00\x00\xEF\x01\x00\x00\xE6\x01\x00\x00" +"\x3D\x00\x04\x00\x16\x00\x00\x00\xF0\x01\x00\x00\xED\x01\x00\x00\x81\x00\x05\x00\x16\x00\x00\x00\xF1\x01\x00\x00\xF0\x01\x00\x00" +"\xEF\x01\x00\x00\x3E\x00\x03\x00\xED\x01\x00\x00\xF1\x01\x00\x00\x3D\x00\x04\x00\x16\x00\x00\x00\xF3\x01\x00\x00\xE6\x01\x00\x00" +"\x8E\x00\x05\x00\x16\x00\x00\x00\xF4\x01\x00\x00\xF3\x01\x00\x00\xF2\x01\x00\x00\x3E\x00\x03\x00\xE6\x01\x00\x00\xF4\x01\x00\x00" +"\x3D\x00\x04\x00\x16\x00\x00\x00\xF5\x01\x00\x00\xE6\x01\x00\x00\x3D\x00\x04\x00\x14\x00\x00\x00\xF6\x01\x00\x00\x19\x00\x00\x00" +"\x3D\x00\x04\x00\x16\x00\x00\x00\xF7\x01\x00\x00\xED\x01\x00\x00\x57\x00\x05\x00\x2A\x00\x00\x00\xF8\x01\x00\x00\xF6\x01\x00\x00" +"\xF7\x01\x00\x00\x51\x00\x05\x00\x06\x00\x00\x00\xF9\x01\x00\x00\xF8\x01\x00\x00\x03\x00\x00\x00\x8E\x00\x05\x00\x16\x00\x00\x00" +"\xFA\x01\x00\x00\xF5\x01\x00\x00\xF9\x01\x00\x00\x3D\x00\x04\x00\x16\x00\x00\x00\xFB\x01\x00\x00\xED\x01\x00\x00\x83\x00\x05\x00" +"\x16\x00\x00\x00\xFC\x01\x00\x00\xFB\x01\x00\x00\xFA\x01\x00\x00\x3E\x00\x03\x00\xED\x01\x00\x00\xFC\x01\x00\x00\x3D\x00\x04\x00" +"\x16\x00\x00\x00\xFD\x01\x00\x00\xE6\x01\x00\x00\x3D\x00\x04\x00\x14\x00\x00\x00\xFE\x01\x00\x00\x19\x00\x00\x00\x3D\x00\x04\x00" +"\x16\x00\x00\x00\xFF\x01\x00\x00\xED\x01\x00\x00\x57\x00\x05\x00\x2A\x00\x00\x00\x00\x02\x00\x00\xFE\x01\x00\x00\xFF\x01\x00\x00" +"\x51\x00\x05\x00\x06\x00\x00\x00\x01\x02\x00\x00\x00\x02\x00\x00\x03\x00\x00\x00\x8E\x00\x05\x00\x16\x00\x00\x00\x02\x02\x00\x00" +"\xFD\x01\x00\x00\x01\x02\x00\x00\x3D\x00\x04\x00\x16\x00\x00\x00\x03\x02\x00\x00\xED\x01\x00\x00\x83\x00\x05\x00\x16\x00\x00\x00" +"\x04\x02\x00\x00\x03\x02\x00\x00\x02\x02\x00\x00\x3E\x00\x03\x00\xED\x01\x00\x00\x04\x02\x00\x00\x3D\x00\x04\x00\x16\x00\x00\x00" +"\x05\x02\x00\x00\xE6\x01\x00\x00\x3D\x00\x04\x00\x14\x00\x00\x00\x06\x02\x00\x00\x19\x00\x00\x00\x3D\x00\x04\x00\x16\x00\x00\x00" +"\x07\x02\x00\x00\xED\x01\x00\x00\x57\x00\x05\x00\x2A\x00\x00\x00\x08\x02\x00\x00\x06\x02\x00\x00\x07\x02\x00\x00\x51\x00\x05\x00" +"\x06\x00\x00\x00\x09\x02\x00\x00\x08\x02\x00\x00\x03\x00\x00\x00\x8E\x00\x05\x00\x16\x00\x00\x00\x0A\x02\x00\x00\x05\x02\x00\x00" +"\x09\x02\x00\x00\x3D\x00\x04\x00\x16\x00\x00\x00\x0B\x02\x00\x00\xED\x01\x00\x00\x83\x00\x05\x00\x16\x00\x00\x00\x0C\x02\x00\x00" +"\x0B\x02\x00\x00\x0A\x02\x00\x00\x3E\x00\x03\x00\xED\x01\x00\x00\x0C\x02\x00\x00\x3D\x00\x04\x00\x16\x00\x00\x00\x0D\x02\x00\x00" +"\xED\x01\x00\x00\xFE\x00\x02\x00\x0D\x02\x00\x00\xF8\x00\x02\x00\xE5\x01\x00\x00\xF9\x00\x02\x00\x92\x01\x00\x00\xF8\x00\x02\x00" +"\x92\x01\x00\x00\x3D\x00\x04\x00\x16\x00\x00\x00\x0F\x02\x00\x00\x1A\x00\x00\x00\xFE\x00\x02\x00\x0F\x02\x00\x00\x38\x00\x01\x00" +""}, #endif #ifdef D3D9QUAKE {QR_DIRECT3D9, 9, "rtlight", diff --git a/engine/gl/shader.h b/engine/gl/shader.h index 3b5739c0b..e36317ce4 100644 --- a/engine/gl/shader.h +++ b/engine/gl/shader.h @@ -835,6 +835,33 @@ typedef struct } sh_config_t; extern sh_config_t sh_config; #endif + +enum +{ + S_SHADOWMAP = 0, + S_PROJECTIONMAP = 1, + S_DIFFUSE = 2, + S_NORMALMAP = 3, + S_SPECULAR = 4, + S_UPPERMAP = 5, + S_LOWERMAP = 6, + S_FULLBRIGHT = 7, + S_PALETTED = 8, + S_REFLECTCUBE = 9, + S_REFLECTMASK = 10, + S_DISPLACEMENT = 11, + S_OCCLUSION = 12, + S_LIGHTMAP0 = 13, + S_DELUXEMAP0 = 14, +#if MAXRLIGHTMAPS > 1 + S_LIGHTMAP1 = 15, + S_LIGHTMAP2 = 16, + S_LIGHTMAP3 = 17, + S_DELUXEMAP1 = 18, + S_DELUXEMAP2 = 19, + S_DELUXEMAP3 = 20, +#endif +}; extern const struct sh_defaultsamplers_s { const char *name; diff --git a/engine/qclib/qcc_pr_comp.c b/engine/qclib/qcc_pr_comp.c index 13189d7d4..b40afcad4 100644 --- a/engine/qclib/qcc_pr_comp.c +++ b/engine/qclib/qcc_pr_comp.c @@ -14819,6 +14819,8 @@ static pbool QCC_CheckUninitialised(int firststatement, int laststatement) continue; //ignore slave symbols, cos they're not interesting and should have been checked as part of the parent. if (local->isparameter) continue; + if (local->arraysize) + continue; //probably indexed. we won't detect things properly. its the user's resposibility to check. :( err = QCC_CheckOneUninitialised(firststatement, laststatement, local, local->ofs, local->ofs + local->type->size * (local->arraysize?local->arraysize:1)); if (err > 0) { @@ -14890,7 +14892,7 @@ void QCC_Marshal_Locals(int firststatement, int laststatement) { st = &statements[i]; - if (st->op == OP_GLOBALADDRESS && st->a.sym->scope) + if (st->op == OP_GLOBALADDRESS && st->a.sym->scope && !st->a.sym->isstatic) { error = true; break; diff --git a/engine/qclib/qcc_pr_lex.c b/engine/qclib/qcc_pr_lex.c index 8bff74b27..911a9e91b 100644 --- a/engine/qclib/qcc_pr_lex.c +++ b/engine/qclib/qcc_pr_lex.c @@ -3913,9 +3913,9 @@ void QCC_PR_ParsePrintDef (int type, QCC_def_t *def) else if (def->isstatic) modifiers = "static "; if (flag_msvcstyle) - externs->Printf ("%s%s(%i) : %s%s%s %s%s%s is defined here\n", col_location, def->filen, def->s_line, col_none, modifiers, TypeName(def->type, tybuffer, sizeof(tybuffer)), col_symbol, def->name, col_none); + externs->Printf ("%s%s(%i) : %s%s%s %s%s%s is defined here\n", col_location, def->filen, def->s_line, col_type, modifiers, TypeName(def->type, tybuffer, sizeof(tybuffer)), col_symbol, def->name, col_none); else - externs->Printf ("%s%s:%i: %s%s%s %s%s%s is defined here\n", col_location, def->filen, def->s_line, col_none, modifiers, TypeName(def->type, tybuffer, sizeof(tybuffer)), col_symbol, def->name, col_none); + externs->Printf ("%s%s:%i: %s%s%s %s%s%s is defined here\n", col_location, def->filen, def->s_line, col_type, modifiers, TypeName(def->type, tybuffer, sizeof(tybuffer)), col_symbol, def->name, col_none); } } } diff --git a/engine/qclib/qccguiqt.cpp b/engine/qclib/qccguiqt.cpp index 2d30e7370..319668cae 100644 --- a/engine/qclib/qccguiqt.cpp +++ b/engine/qclib/qccguiqt.cpp @@ -1582,8 +1582,12 @@ class optionswindow : public QDialog w->setEnabled(fl_nondfltopts); //FIXME: should use tristate on a per-setting basis } } - public: + ~optionswindow() + { + GUI_SaveConfig(); + } + optionswindow() { setModal(true); @@ -1726,7 +1730,7 @@ private: fileMenu->addAction(prefs); prefs->setShortcuts(QKeySequence::Preferences); prefs->setStatusTip(tr("Reconfigure stuff")); - connect(prefs, &QAction::triggered, [](){(new optionswindow())->show();}); + connect(prefs, &QAction::triggered, [](){auto w = new optionswindow();w->setAttribute(Qt::WidgetAttribute::WA_DeleteOnClose, true); w->show();}); auto goline = new QAction(tr("Go to line"), this); fileMenu->addAction(goline); diff --git a/engine/server/progs.h b/engine/server/progs.h index 7f88da395..781deb5e8 100644 --- a/engine/server/progs.h +++ b/engine/server/progs.h @@ -59,7 +59,7 @@ extern int compileactive; typedef enum {PROG_NONE, PROG_QW, PROG_NQ, PROG_H2, PROG_PREREL, PROG_TENEBRAE, PROG_UNKNOWN} progstype_t; //unknown obtains NQ behaviour extern progstype_t progstype; -#include "progslib.h" +#include "../qclib/progslib.h" typedef struct edict_s { diff --git a/engine/server/server.h b/engine/server/server.h index d5db73409..5e7c47bda 100644 --- a/engine/server/server.h +++ b/engine/server/server.h @@ -389,7 +389,7 @@ typedef struct //merge? } q2client_frame_t; #endif #ifdef Q3SERVER -#include "clq3defs.h" +#include "../client/clq3defs.h" typedef struct //merge? { int flags; diff --git a/engine/server/sv_phys.c b/engine/server/sv_phys.c index 3246b5db4..bff0a55d3 100644 --- a/engine/server/sv_phys.c +++ b/engine/server/sv_phys.c @@ -2646,7 +2646,7 @@ qboolean SV_Physics (void) } if (host_frametime <= 0 || host_frametime < mintic) break; - if (host_frametime > maxtic) + if (host_frametime > maxtic && maxtic>0) { if (maxtics-- <= 0) { diff --git a/engine/shaders/makevulkanblob.c b/engine/shaders/makevulkanblob.c index 7e1352a48..d425afa54 100644 --- a/engine/shaders/makevulkanblob.c +++ b/engine/shaders/makevulkanblob.c @@ -1,6 +1,9 @@ #include #include #include + +#include "../client/quakedef.h" +#include "../gl/shader.h" void dumpprogblob(FILE *out, unsigned char *buf, unsigned int size) { if (out) @@ -173,7 +176,7 @@ int generatevulkanblobs(struct blobheader *blob, size_t maxblobsize, const char arg = strtok(NULL, " ,=\r\n"); if (!arg) { - printf("%s has no default value. Assuming 0\n", cb+4); + printf(" cvar %s has no default value. Assuming 0\n", (char*)blob + blob->cvarsoffset + blob->cvarslength+4); u[i].u = 0; //0 either way. } else if (type == 'f' || type == 'F') @@ -217,41 +220,43 @@ int generatevulkanblobs(struct blobheader *blob, size_t maxblobsize, const char { //light if (!strcasecmp(arg, "shadowmap")) - blob->defaulttextures |= 1u<<0; + blob->defaulttextures |= 1u<defaulttextures |= 1u<<1; + blob->defaulttextures |= 1u<defaulttextures |= 1u<<2; + blob->defaulttextures |= 1u<defaulttextures |= 1u<<3; + blob->defaulttextures |= 1u<defaulttextures |= 1u<<4; + blob->defaulttextures |= 1u<defaulttextures |= 1u<<5; + blob->defaulttextures |= 1u<defaulttextures |= 1u<<6; + blob->defaulttextures |= 1u<defaulttextures |= 1u<<7; + blob->defaulttextures |= 1u<defaulttextures |= 1u<<8; + blob->defaulttextures |= 1u<defaulttextures |= 1u<<9; + blob->defaulttextures |= 1u<defaulttextures |= 1u<<10; + blob->defaulttextures |= 1u<defaulttextures |= 1u<<11; + blob->defaulttextures |= 1u<defaulttextures |= 1u<defaulttextures |= 1u<<12; + blob->defaulttextures |= 1u<defaulttextures |= 1u<<13; + blob->defaulttextures |= 1u<defaulttextures |= 1u<<12 | 1u<<14 | 1u<<15 | 1u<<16; + blob->defaulttextures |= 1u<defaulttextures |= 1u<<13 | 1u<<17 | 1u<<18 | 1u<<19; + blob->defaulttextures |= 1u<envmap) return shaderstate.curbatch->envmap; else - return r_nulltex; //FIXME + return r_blackcubeimage; //FIXME case T_GEN_REFLECTMASK: return shaderstate.curtexnums->reflectmask; case T_GEN_OCCLUSION: @@ -1750,7 +1752,7 @@ static texid_t SelectPassTexture(const shaderpass_t *pass) if (shaderstate.curdlight) return shaderstate.curdlight->cubetexture; else - return r_nulltex; + return r_blackcubeimage; case T_GEN_SHADOWMAP: //light's depth values. return shaderstate.currentshadowmap; @@ -1770,7 +1772,7 @@ static texid_t SelectPassTexture(const shaderpass_t *pass) return vk.sourcedepth; case T_GEN_SOURCECUBE: //used for render-to-texture targets - return r_nulltex; + return r_blackcubeimage; case T_GEN_GBUFFER0: case T_GEN_GBUFFER1: @@ -1798,7 +1800,7 @@ static void T_Gen_CurrentRender(void) if (img->width != vid.fbpwidth || img->height != vid.fbpheight) { //FIXME: free the old image when its safe to do so. - *img = VK_CreateTexture2DArray(vid.fbpwidth, vid.fbpheight, 1, 1, -vk.backbufformat, PTI_2D, true, shaderstate.tex_currentrender->ident); + *img = VK_CreateTexture2DArray(vid.fbpwidth, vid.fbpheight, 1, 1, -vk.backbufformat, PTI_2D, false, shaderstate.tex_currentrender->ident); if (!img->sampler) VK_CreateSampler(shaderstate.tex_currentrender->flags, img); @@ -1843,6 +1845,8 @@ static void T_Gen_CurrentRender(void) set_image_layout(vk.rendertarg->cbuf, vk.frame->backbuf->colour.image, VK_IMAGE_ASPECT_COLOR_BIT, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, VK_ACCESS_TRANSFER_READ_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT); + + img->layout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; } @@ -2706,7 +2710,7 @@ static void deformgen(const deformv_t *deformv, int cnt, vecV_t *src, vecV_t *ds static void BE_CreatePipeline(program_t *p, unsigned int shaderflags, unsigned int blendflags, unsigned int permu) { struct pipeline_s *pipe; - VkDynamicState dynamicStateEnables[VK_DYNAMIC_STATE_RANGE_SIZE]={0}; + VkDynamicState dynamicStateEnables[2]={0}; VkPipelineDynamicStateCreateInfo dyn = {VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO}; VkVertexInputBindingDescription vbinds[VK_BUFF_MAX] = {{0}}; VkVertexInputAttributeDescription vattrs[VK_BUFF_MAX] = {{0}}; @@ -3199,48 +3203,50 @@ static qboolean BE_SetupMeshProgram(program_t *p, shaderpass_t *pass, unsigned i //light / scene BE_SetupUBODescriptor(set, descs, desc++, &shaderstate.ubo_entity); BE_SetupUBODescriptor(set, descs, desc++, &shaderstate.ubo_light); - if (p->defaulttextures & (1u<<0)) + if (p->defaulttextures & (1u<defaulttextures & (1u<<1)) - BE_SetupTextureDescriptor(shaderstate.curdlight?shaderstate.curdlight->cubetexture:r_nulltex, r_whiteimage, set, descs, desc++, img++); + if (p->defaulttextures & (1u<cubetexture:r_nulltex, r_whitecubeimage, set, descs, desc++, img++); //material - if (p->defaulttextures & (1u<<2)) + if (p->defaulttextures & (1u<base, r_blackimage, set, descs, desc++, img++); - if (p->defaulttextures & (1u<<3)) + if (p->defaulttextures & (1u<bump, missing_texture_normal, set, descs, desc++, img++); - if (p->defaulttextures & (1u<<4)) + if (p->defaulttextures & (1u<specular, missing_texture_gloss, set, descs, desc++, img++); - if (p->defaulttextures & (1u<<5)) + if (p->defaulttextures & (1u<upperoverlay, r_blackimage, set, descs, desc++, img++); - if (p->defaulttextures & (1u<<6)) + if (p->defaulttextures & (1u<loweroverlay, r_blackimage, set, descs, desc++, img++); - if (p->defaulttextures & (1u<<7)) + if (p->defaulttextures & (1u<fullbright, r_blackimage, set, descs, desc++, img++); - if (p->defaulttextures & (1u<<8)) + if (p->defaulttextures & (1u<paletted, r_blackimage, set, descs, desc++, img++); - if (p->defaulttextures & (1u<<9)) + if (p->defaulttextures & (1u<reflectcube)) t = shaderstate.curtexnums->reflectcube; else if (shaderstate.curbatch->envmap) t = shaderstate.curbatch->envmap; else - t = r_nulltex; //FIXME - BE_SetupTextureDescriptor(t, r_blackimage, set, descs, desc++, img++); + t = r_blackcubeimage; //FIXME + BE_SetupTextureDescriptor(t, r_blackcubeimage, set, descs, desc++, img++); } - if (p->defaulttextures & (1u<<10)) + if (p->defaulttextures & (1u<reflectmask, r_whiteimage, set, descs, desc++, img++); - if (p->defaulttextures & (1u<<11)) + if (p->defaulttextures & (1u<displacement, r_whiteimage, set, descs, desc++, img++); + if (p->defaulttextures & (1u<occlusion, r_whiteimage, set, descs, desc++, img++); //batch - if (p->defaulttextures & (1u<<12)) + if (p->defaulttextures & (1u<lightmap[0]; BE_SetupTextureDescriptor((lmilightmap_texture:NULL, r_whiteimage, set, descs, desc++, img++); } - if (p->defaulttextures & (1u<<13)) + if (p->defaulttextures & (1u<lightmap[0]; @@ -3249,7 +3255,7 @@ static qboolean BE_SetupMeshProgram(program_t *p, shaderpass_t *pass, unsigned i BE_SetupTextureDescriptor(delux, r_whiteimage, set, descs, desc++, img++); } #if MAXRLIGHTMAPS > 1 - if (p->defaulttextures & ((1u<<14)|(1u<<15)|(1u<<16))) + if (p->defaulttextures & ((1u<lightmap[1]; BE_SetupTextureDescriptor((lmilightmap_texture:NULL, r_whiteimage, set, descs, desc++, img++); @@ -3258,7 +3264,7 @@ static qboolean BE_SetupMeshProgram(program_t *p, shaderpass_t *pass, unsigned i lmi = shaderstate.curbatch->lightmap[3]; BE_SetupTextureDescriptor((lmilightmap_texture:NULL, r_whiteimage, set, descs, desc++, img++); } - if (p->defaulttextures & ((1u<<17)|(1u<<18)|(1u<<19))) + if (p->defaulttextures & ((1u<lightmap[1]; if (lmihasdeluxe) @@ -6140,13 +6146,13 @@ qboolean VKBE_BeginShadowmap(qboolean isspot, uint32_t width, uint32_t height) sbuf = shad->seq++%countof(shad->buf); shaderstate.currentshadowmap = &shad->buf[sbuf].qimage; - +/* { VkImageMemoryBarrier imgbarrier = {VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER}; imgbarrier.srcAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT; imgbarrier.dstAccessMask = VK_ACCESS_SHADER_READ_BIT; imgbarrier.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED; //we don't actually care because we'll be clearing it anyway, making this more of a no-op than anything else. - imgbarrier.newLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL; + imgbarrier.newLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; imgbarrier.image = shad->buf[sbuf].vimage.image; imgbarrier.subresourceRange.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT; imgbarrier.subresourceRange.baseMipLevel = 0; @@ -6157,7 +6163,7 @@ qboolean VKBE_BeginShadowmap(qboolean isspot, uint32_t width, uint32_t height) imgbarrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; vkCmdPipelineBarrier(vk.rendertarg->cbuf, VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT|VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, 0, 0, NULL, 0, NULL, 1, &imgbarrier); } - +*/ { VkClearValue clearval; VkRenderPassBeginInfo rpass = {VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO}; @@ -6173,6 +6179,7 @@ qboolean VKBE_BeginShadowmap(qboolean isspot, uint32_t width, uint32_t height) rpass.pClearValues = &clearval; vkCmdBeginRenderPass(vk.rendertarg->cbuf, &rpass, VK_SUBPASS_CONTENTS_INLINE); } + shaderstate.currentshadowmap->vkimage->layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; //viewport+scissor will be done elsewhere //that wasn't too painful, was it?... @@ -6231,7 +6238,7 @@ void VKBE_DoneShadows(void) viewport.maxDepth = 1; vkCmdSetViewport(vk.rendertarg->cbuf, 0, 1, &viewport); } - + shaderstate.currentshadowmap->vkimage->layout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; VKBE_SelectEntity(&r_worldentity); } diff --git a/engine/vk/vk_init.c b/engine/vk/vk_init.c index 4dfe9d2e6..3708acaae 100644 --- a/engine/vk/vk_init.c +++ b/engine/vk/vk_init.c @@ -26,6 +26,8 @@ static cvar_t vk_ext_astc_decode_mode = CVARFD("vk_ext_astc_decode_mode", "", #endif extern cvar_t vid_srgb, vid_vsync, vid_triplebuffer, r_stereo_method, vid_multisample, vid_bpp; +texid_t r_blackcubeimage, r_whitecubeimage; + void VK_RegisterVulkanCvars(void) { @@ -185,7 +187,7 @@ char *VK_VKErrorToString(VkResult err) #endif //irrelevant parts of the enum - case VK_RESULT_RANGE_SIZE: +// case VK_RESULT_RANGE_SIZE: case VK_RESULT_MAX_ENUM: default: break; @@ -255,7 +257,7 @@ char *DebugAnnotObjectToString(VkObjectType t) #ifdef VK_NV_ray_tracing case VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV: return "VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV"; #endif - case VK_OBJECT_TYPE_RANGE_SIZE: +// case VK_OBJECT_TYPE_RANGE_SIZE: case VK_OBJECT_TYPE_MAX_ENUM: break; default: @@ -469,6 +471,30 @@ static void VK_DestroySwapChain(void) vk.frame = NULL; } + if (vk.dopresent) + vk.dopresent(NULL); + + //wait for it to all finish first... + if (vk.device) + vkDeviceWaitIdle(vk.device); +#if 0 //don't bother waiting as they're going to be destroyed anyway, and we're having a lot of fun with drivers that don't bother signalling them on teardown + vk.acquirenext = vk.acquirelast; +#else + //clean up our acquires so we know the driver isn't going to update anything. + while (vk.acquirenext < vk.acquirelast) + { + if (vk.acquirefences[vk.acquirenext%ACQUIRELIMIT]) + VkWarnAssert(vkWaitForFences(vk.device, 1, &vk.acquirefences[vk.acquirenext%ACQUIRELIMIT], VK_FALSE, 1000000000u)); //drivers suck, especially in times of error, and especially if its nvidia's vulkan driver. + vk.acquirenext++; + } +#endif + for (i = 0; i < ACQUIRELIMIT; i++) + { + if (vk.acquirefences[i]) + vkDestroyFence(vk.device, vk.acquirefences[i], vkallocationcb); + vk.acquirefences[i] = VK_NULL_HANDLE; + } + for (i = 0; i < vk.backbuf_count; i++) { //swapchain stuff @@ -483,25 +509,6 @@ static void VK_DestroySwapChain(void) vkDestroySemaphore(vk.device, vk.backbufs[i].presentsemaphore, vkallocationcb); } - if (vk.dopresent) - vk.dopresent(NULL); - //clean up our acquires so we know the driver isn't going to update anything. - while (vk.acquirenext < vk.acquirelast) - { - if (vk.acquirefences[vk.acquirenext%ACQUIRELIMIT]) - VkWarnAssert(vkWaitForFences(vk.device, 1, &vk.acquirefences[vk.acquirenext%ACQUIRELIMIT], VK_FALSE, UINT64_MAX)); - vk.acquirenext++; - } - //wait for it to all finish. - if (vk.device) - vkDeviceWaitIdle(vk.device); - for (i = 0; i < ACQUIRELIMIT; i++) - { - if (vk.acquirefences[i]) - vkDestroyFence(vk.device, vk.acquirefences[i], vkallocationcb); - vk.acquirefences[i] = VK_NULL_HANDLE; - } - while(vk.unusedframes) { struct vkframe *frame = vk.unusedframes; @@ -1937,7 +1944,7 @@ qboolean VK_LoadTextureMips (texid_t tex, const struct pendingtextureinfo *mips) } else { - target = VK_CreateTexture2DArray(mips->mip[0].width, mips->mip[0].height, layers, mipcount/layers, mips->encoding, mips->type, !!(tex->flags&IF_RENDERTARGET), tex->ident); + target = VK_CreateTexture2DArray(mips->mip[0].width, mips->mip[0].height, layers, mipcount, mips->encoding, mips->type, !!(tex->flags&IF_RENDERTARGET), tex->ident); if (target.mem.memory == VK_NULL_HANDLE) { @@ -2008,31 +2015,34 @@ qboolean VK_LoadTextureMips (texid_t tex, const struct pendingtextureinfo *mips) //for compressed formats (ie: s3tc/dxt) we need to round up to deal with npot. uint32_t blockswidth = (mips->mip[i].width+blockwidth-1) / blockwidth; uint32_t blocksheight = (mips->mip[i].height+blockheight-1) / blockheight; - uint32_t blocksdepth = (mips->mip[i].depth+blockdepth-1) / blockdepth; + uint32_t blocksdepth = (mips->mip[i].depth+blockdepth-1) / blockdepth, z; - if (mips->mip[i].data) - memcpy((char*)mapdata + bci.size, (char*)mips->mip[i].data, blockswidth*blockbytes*blocksheight*blocksdepth); - else - memset((char*)mapdata + bci.size, 0, blockswidth*blockbytes*blocksheight*blocksdepth); + //build it in layers... + for (z = 0; z < blocksdepth; z++) + { + if (mips->mip[i].data) + memcpy((char*)mapdata + bci.size, (char*)mips->mip[i].data, blockswidth*blockbytes*blocksheight*blockdepth); + else + memset((char*)mapdata + bci.size, 0, blockswidth*blockbytes*blocksheight*blockdepth); - //queue up a buffer->image copy for this mip - region.bufferOffset = bci.size; - region.bufferRowLength = blockswidth*blockwidth; - region.bufferImageHeight = blocksheight*blockheight; - region.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - region.imageSubresource.mipLevel = i; - region.imageSubresource.baseArrayLayer = 0; - region.imageSubresource.layerCount = mips->mip[i].depth; - region.imageOffset.x = 0; - region.imageOffset.y = 0; - region.imageOffset.z = 0; - region.imageExtent.width = mips->mip[i].width; - region.imageExtent.height = mips->mip[i].height; - region.imageExtent.depth = mips->mip[i].depth; + //queue up a buffer->image copy for this mip + region.bufferOffset = bci.size; + region.bufferRowLength = blockswidth*blockwidth; + region.bufferImageHeight = blocksheight*blockheight; + region.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + region.imageSubresource.mipLevel = i; + region.imageSubresource.baseArrayLayer = z*blockdepth; + region.imageSubresource.layerCount = blockdepth; + region.imageOffset.x = 0; + region.imageOffset.y = 0; + region.imageOffset.z = 0; + region.imageExtent.width = mips->mip[i].width; + region.imageExtent.height = mips->mip[i].height; + region.imageExtent.depth = blockdepth; - vkCmdCopyBufferToImage(vkloadcmd, fence->stagingbuffer, target.image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, ®ion); - - bci.size += blockswidth*blocksheight*blockbytes; + vkCmdCopyBufferToImage(vkloadcmd, fence->stagingbuffer, target.image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, ®ion); + bci.size += blockdepth*blockswidth*blocksheight*blockbytes; + } } vkUnmapMemory(vk.device, fence->stagingmemory); @@ -2086,6 +2096,12 @@ void VK_DestroyTexture (texid_t tex) void VK_R_Init (void) { + uint32_t white[6] = {~0u,~0u,~0u,~0u,~0u,~0u}; + r_blackcubeimage = Image_CreateTexture("***blackcube***", NULL, IF_NEAREST|IF_TEXTYPE_CUBE); + Image_Upload(r_blackcubeimage, TF_RGBX32, NULL, NULL, 1, 1, 6, IF_NEAREST|IF_NOMIPMAP|IF_NOGAMMA|IF_TEXTYPE_CUBE); + + r_whitecubeimage = Image_CreateTexture("***whitecube***", NULL, IF_NEAREST|IF_TEXTYPE_CUBE); + Image_Upload(r_whitecubeimage, TF_RGBX32, white, NULL, 1, 1, 6, IF_NEAREST|IF_NOMIPMAP|IF_NOGAMMA|IF_TEXTYPE_CUBE); } void VK_R_DeInit (void) { @@ -2278,7 +2294,7 @@ static void VK_Init_PostProc(void) } } - Image_Upload(scenepp_texture_warp, TF_RGBX32, pp_warp_tex, NULL, PP_WARP_TEX_SIZE, PP_WARP_TEX_SIZE, IF_LINEAR|IF_NOMIPMAP|IF_NOGAMMA); + Image_Upload(scenepp_texture_warp, TF_RGBX32, pp_warp_tex, NULL, PP_WARP_TEX_SIZE, PP_WARP_TEX_SIZE, 1, IF_LINEAR|IF_NOMIPMAP|IF_NOGAMMA); // TODO: init edge texture - this is ampscale * 2, with ampscale calculated // init warp texture - this specifies offset in @@ -2322,7 +2338,7 @@ static void VK_Init_PostProc(void) } } - Image_Upload(scenepp_texture_edge, TF_RGBX32, pp_edge_tex, NULL, PP_AMP_TEX_SIZE, PP_AMP_TEX_SIZE, IF_LINEAR|IF_NOMIPMAP|IF_NOGAMMA); + Image_Upload(scenepp_texture_edge, TF_RGBX32, pp_edge_tex, NULL, PP_AMP_TEX_SIZE, PP_AMP_TEX_SIZE, 1, IF_LINEAR|IF_NOMIPMAP|IF_NOGAMMA); } @@ -4358,6 +4374,7 @@ void VK_CheckTextureFormats(void) sh_config.texture2d_maxsize = props.limits.maxImageDimension2D; sh_config.texturecube_maxsize = props.limits.maxImageDimensionCube; + sh_config.texture2darray_maxlayers = props.limits.maxImageArrayLayers; for (i = 0; i < countof(texfmt); i++) { @@ -5155,6 +5172,7 @@ qboolean VK_Init(rendererstate_t *info, const char **sysextnames, qboolean (*cre } if (info->srgb > 0 && (vid.flags & VID_SRGB_FB)) vid.flags |= VID_SRGBAWARE; + return true; } void VK_Shutdown(void)