try to fix vulkan validation warnings (and maybe some crashes on amd gpus)

fix sdl1 not compiling.
fix temporalscenecache with q3bsp
add the net_wm_ping protocol to fte's native x11 stuff, allowing our process to be killed if we lock up (usually due to vulkan drivers...).
qccguiqt: actually save the config.
try to fix hl fonts


git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5785 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2020-11-04 10:19:30 +00:00
parent 5d5067ed82
commit 29cb22af8e
33 changed files with 592 additions and 387 deletions

View File

@ -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);
}

View File

@ -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
{

View File

@ -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++)

View File

@ -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)
{

View File

@ -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;

View File

@ -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

View File

@ -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;
}

View File

@ -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;

View File

@ -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);

View File

@ -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

View File

@ -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);

View File

@ -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
{

View File

@ -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
{

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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;

View File

@ -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)

View File

@ -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<<S_SHADOWMAP},
{"s_projectionmap", 1u<<S_PROJECTIONMAP},
{"s_diffuse", 1u<<S_DIFFUSE},
{"s_normalmap", 1u<<S_NORMALMAP},
{"s_specular", 1u<<S_SPECULAR},
{"s_upper", 1u<<S_UPPERMAP},
{"s_lower", 1u<<S_LOWERMAP},
{"s_fullbright", 1u<<S_FULLBRIGHT},
{"s_paletted", 1u<<S_PALETTED},
{"s_reflectcube", 1u<<S_REFLECTCUBE},
{"s_reflectmask", 1u<<S_REFLECTMASK},
{"s_displacement", 1u<<S_DISPLACEMENT},
{"s_occlusion", 1u<<S_OCCLUSION},
{"s_lightmap", 1u<<S_LIGHTMAP0},
{"s_deluxemap", 1u<<S_DELUXEMAP0},
#if MAXRLIGHTMAPS > 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<<S_LIGHTMAP1},
{"s_lightmap2", 1u<<S_LIGHTMAP2},
{"s_lightmap3", 1u<<S_LIGHTMAP3},
{"s_deluxemap1", 1u<<S_DELUXEMAP1},
{"s_deluxemap2", 1u<<S_DELUXEMAP2},
{"s_deluxemap3", 1u<<S_DELUXEMAP3},
#else
{"s_lightmap1", 0},
{"s_lightmap2", 0},

View File

@ -3669,7 +3669,7 @@ void Sh_DrawCrepuscularLight(dlight_t *dl, float *colours)
);
crepuscular_texture_id = Image_CreateTexture("***crepusculartexture***", NULL, IF_LINEAR|IF_NOMIPMAP|IF_CLAMP|IF_NOGAMMA);
Image_Upload(crepuscular_texture_id, TF_RGBA32, NULL, NULL, vid.pixelwidth, vid.pixelheight, IF_LINEAR|IF_NOMIPMAP|IF_CLAMP|IF_NOGAMMA);
Image_Upload(crepuscular_texture_id, TF_RGBA32, NULL, NULL, vid.pixelwidth, vid.pixelheight, 1, IF_LINEAR|IF_NOMIPMAP|IF_CLAMP|IF_NOGAMMA);
}
BE_Scissor(NULL);

View File

@ -3136,6 +3136,11 @@ static void GetEvent(void)
Cmd_ExecuteString("quit", RESTRICT_LOCAL);
x11.pXSetInputFocus(vid_dpy, vid_window, RevertToParent, CurrentTime);
}
else if (!strcmp(protname, "_NET_WM_PING"))
{
event.xclient.window = vid_root;
x11.pXSendEvent(vid_dpy, vid_root, false, SubstructureNotifyMask|SubstructureRedirectMask, &event);
}
else
Con_DPrintf("Got unknown x11wm message %s\n", protname);
x11.pXFree(protname);
@ -3845,6 +3850,26 @@ static void X_StoreIcon(Window wnd)
}
}
static void X_StorePID(Window wnd)
{
Atom net_wm_pid = x11.pXInternAtom(vid_dpy, "_NET_WM_PID", false);
Atom wm_client_machine = x11.pXInternAtom(vid_dpy, "WM_CLIENT_MACHINE", false);
Atom cardinal = x11.pXInternAtom(vid_dpy, "CARDINAL", false);
Atom string = x11.pXInternAtom(vid_dpy, "STRING", false);
long pid = getpid();
#ifndef HOST_NAME_MAX
#define HOST_NAME_MAX 255
#endif
char hostname[HOST_NAME_MAX+1];
*hostname = 0;
if (gethostname(hostname, sizeof(hostname)) < 0)
return; //just give up. if the hostname isn't valid then the pid won't be useful anyway.
hostname[countof(hostname)-1] = 0; //make sure its null terminated... *sigh*
x11.pXChangeProperty(vid_dpy, wnd, wm_client_machine, string, 8, PropModeReplace, hostname, strlen(hostname));
x11.pXChangeProperty(vid_dpy, wnd, net_wm_pid, cardinal, 32, PropModeReplace, (void*)&pid, 1);
}
void X_GoFullscreen(void)
{
XEvent xev;
@ -3971,7 +3996,7 @@ static Window X_CreateWindow(rendererstate_t *info, qboolean override, XVisualIn
XSetWindowAttributes attr;
XSizeHints szhints;
unsigned int mask;
Atom prots[1];
Atom prots[2];
/* window attributes */
attr.background_pixel = 0;
@ -4027,12 +4052,14 @@ static Window X_CreateWindow(rendererstate_t *info, qboolean override, XVisualIn
visinfo->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);

View File

@ -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)

View File

@ -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",

View File

@ -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;

View File

@ -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;

View File

@ -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);
}
}
}

View File

@ -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);

View File

@ -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
{

View File

@ -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;

View File

@ -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)
{

View File

@ -1,6 +1,9 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#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<<S_SHADOWMAP;
else if (!strcasecmp(arg, "projectionmap"))
blob->defaulttextures |= 1u<<1;
blob->defaulttextures |= 1u<<S_PROJECTIONMAP;
//material
else if (!strcasecmp(arg, "diffuse"))
blob->defaulttextures |= 1u<<2;
blob->defaulttextures |= 1u<<S_DIFFUSE;
else if (!strcasecmp(arg, "normalmap"))
blob->defaulttextures |= 1u<<3;
blob->defaulttextures |= 1u<<S_NORMALMAP;
else if (!strcasecmp(arg, "specular"))
blob->defaulttextures |= 1u<<4;
blob->defaulttextures |= 1u<<S_SPECULAR;
else if (!strcasecmp(arg, "upper"))
blob->defaulttextures |= 1u<<5;
blob->defaulttextures |= 1u<<S_UPPERMAP;
else if (!strcasecmp(arg, "lower"))
blob->defaulttextures |= 1u<<6;
blob->defaulttextures |= 1u<<S_LOWERMAP;
else if (!strcasecmp(arg, "fullbright"))
blob->defaulttextures |= 1u<<7;
blob->defaulttextures |= 1u<<S_FULLBRIGHT;
else if (!strcasecmp(arg, "paletted"))
blob->defaulttextures |= 1u<<8;
blob->defaulttextures |= 1u<<S_PALETTED;
else if (!strcasecmp(arg, "reflectcube"))
blob->defaulttextures |= 1u<<9;
blob->defaulttextures |= 1u<<S_REFLECTCUBE;
else if (!strcasecmp(arg, "reflectmask"))
blob->defaulttextures |= 1u<<10;
blob->defaulttextures |= 1u<<S_REFLECTMASK;
else if (!strcasecmp(arg, "displacement"))
blob->defaulttextures |= 1u<<11;
blob->defaulttextures |= 1u<<S_DISPLACEMENT;
else if (!strcasecmp(arg, "occlusion"))
blob->defaulttextures |= 1u<<S_OCCLUSION;
//batch
else if (!strcasecmp(arg, "lightmap"))
blob->defaulttextures |= 1u<<12;
blob->defaulttextures |= 1u<<S_LIGHTMAP0;
else if (!strcasecmp(arg, "deluxemap") || !strcasecmp(arg, "deluxmap"))
blob->defaulttextures |= 1u<<13;
blob->defaulttextures |= 1u<<S_DELUXEMAP0;
else if (!strcasecmp(arg, "lightmaps"))
blob->defaulttextures |= 1u<<12 | 1u<<14 | 1u<<15 | 1u<<16;
blob->defaulttextures |= 1u<<S_LIGHTMAP0 | 1u<<S_LIGHTMAP1 | 1u<<S_LIGHTMAP2 | 1u<<S_LIGHTMAP3;
else if (!strcasecmp(arg, "deluxemaps") || !strcasecmp(arg, "deluxmaps"))
blob->defaulttextures |= 1u<<13 | 1u<<17 | 1u<<18 | 1u<<19;
blob->defaulttextures |= 1u<<S_DELUXEMAP0 | 1u<<S_DELUXEMAP1 | 1u<<S_DELUXEMAP2 | 1u<<S_DELUXEMAP3;
//shader pass
else if ((i=atoi(arg)))
@ -307,6 +312,7 @@ int generatevulkanblobs(struct blobheader *blob, size_t maxblobsize, const char
"uniform samplerCube s_reflectcube;\n",
"uniform sampler2D s_reflectmask;\n",
"uniform sampler2D s_displacement;\n",
"uniform sampler2D s_occlusion;\n",
//batch
"uniform sampler2D s_lightmap;\n#define s_lightmap0 s_lightmap\n",

View File

@ -55,7 +55,7 @@ static void R_DrawPortal(batch_t *batch, batch_t **blist, batch_t *depthmasklist
#define MAX_TMUS 32
extern texid_t r_whiteimage, missing_texture_gloss, missing_texture_normal;
extern texid_t r_blackimage;
extern texid_t r_blackimage, r_blackcubeimage, r_whitecubeimage;
static void BE_RotateForEntity (const entity_t *e, const model_t *mod);
void VKBE_SetupLightCBuffer(dlight_t *l, vec3_t colour);
@ -962,6 +962,8 @@ VkShaderModule VK_CreateGLSLModule(program_t *prog, const char *name, int ver, c
"uniform sampler2D s_paletted;\n",
"uniform samplerCube s_reflectcube;\n",
"uniform sampler2D s_reflectmask;\n",
"uniform sampler2D s_displacement;\n",
"uniform sampler2D s_occlusion;\n",
"uniform sampler2D s_lightmap;\n#define s_lightmap0 s_lightmap\n",
"uniform sampler2D s_deluxmap;\n#define s_deluxmap0 s_deluxmap\n",
@ -1703,7 +1705,7 @@ static texid_t SelectPassTexture(const shaderpass_t *pass)
else if (shaderstate.curbatch->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<<S_SHADOWMAP))
BE_SetupTextureDescriptor(shaderstate.currentshadowmap, r_whiteimage, set, descs, desc++, img++);
if (p->defaulttextures & (1u<<1))
BE_SetupTextureDescriptor(shaderstate.curdlight?shaderstate.curdlight->cubetexture:r_nulltex, r_whiteimage, set, descs, desc++, img++);
if (p->defaulttextures & (1u<<S_PROJECTIONMAP))
BE_SetupTextureDescriptor(shaderstate.curdlight?shaderstate.curdlight->cubetexture:r_nulltex, r_whitecubeimage, set, descs, desc++, img++);
//material
if (p->defaulttextures & (1u<<2))
if (p->defaulttextures & (1u<<S_DIFFUSE))
BE_SetupTextureDescriptor(shaderstate.curtexnums->base, r_blackimage, set, descs, desc++, img++);
if (p->defaulttextures & (1u<<3))
if (p->defaulttextures & (1u<<S_NORMALMAP))
BE_SetupTextureDescriptor(shaderstate.curtexnums->bump, missing_texture_normal, set, descs, desc++, img++);
if (p->defaulttextures & (1u<<4))
if (p->defaulttextures & (1u<<S_SPECULAR))
BE_SetupTextureDescriptor(shaderstate.curtexnums->specular, missing_texture_gloss, set, descs, desc++, img++);
if (p->defaulttextures & (1u<<5))
if (p->defaulttextures & (1u<<S_UPPERMAP))
BE_SetupTextureDescriptor(shaderstate.curtexnums->upperoverlay, r_blackimage, set, descs, desc++, img++);
if (p->defaulttextures & (1u<<6))
if (p->defaulttextures & (1u<<S_LOWERMAP))
BE_SetupTextureDescriptor(shaderstate.curtexnums->loweroverlay, r_blackimage, set, descs, desc++, img++);
if (p->defaulttextures & (1u<<7))
if (p->defaulttextures & (1u<<S_FULLBRIGHT))
BE_SetupTextureDescriptor(shaderstate.curtexnums->fullbright, r_blackimage, set, descs, desc++, img++);
if (p->defaulttextures & (1u<<8))
if (p->defaulttextures & (1u<<S_PALETTED))
BE_SetupTextureDescriptor(shaderstate.curtexnums->paletted, r_blackimage, set, descs, desc++, img++);
if (p->defaulttextures & (1u<<9))
if (p->defaulttextures & (1u<<S_REFLECTCUBE))
{
if (shaderstate.curtexnums && TEXLOADED(shaderstate.curtexnums->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<<S_REFLECTMASK))
BE_SetupTextureDescriptor(shaderstate.curtexnums->reflectmask, r_whiteimage, set, descs, desc++, img++);
if (p->defaulttextures & (1u<<11))
if (p->defaulttextures & (1u<<S_DISPLACEMENT))
BE_SetupTextureDescriptor(shaderstate.curtexnums->displacement, r_whiteimage, set, descs, desc++, img++);
if (p->defaulttextures & (1u<<S_OCCLUSION))
BE_SetupTextureDescriptor(shaderstate.curtexnums->occlusion, r_whiteimage, set, descs, desc++, img++);
//batch
if (p->defaulttextures & (1u<<12))
if (p->defaulttextures & (1u<<S_LIGHTMAP0))
{
unsigned int lmi = shaderstate.curbatch->lightmap[0];
BE_SetupTextureDescriptor((lmi<numlightmaps)?lightmap[lmi]->lightmap_texture:NULL, r_whiteimage, set, descs, desc++, img++);
}
if (p->defaulttextures & (1u<<13))
if (p->defaulttextures & (1u<<S_DELUXEMAP0))
{
texid_t delux = NULL;
unsigned int lmi = shaderstate.curbatch->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<<S_LIGHTMAP1)|(1u<<S_LIGHTMAP2)|(1u<<S_LIGHTMAP3)))
{
int lmi = shaderstate.curbatch->lightmap[1];
BE_SetupTextureDescriptor((lmi<numlightmaps)?lightmap[lmi]->lightmap_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((lmi<numlightmaps)?lightmap[lmi]->lightmap_texture:NULL, r_whiteimage, set, descs, desc++, img++);
}
if (p->defaulttextures & ((1u<<17)|(1u<<18)|(1u<<19)))
if (p->defaulttextures & ((1u<<S_DELUXEMAP1)|(1u<<S_DELUXEMAP2)|(1u<<S_DELUXEMAP3)))
{
int lmi = shaderstate.curbatch->lightmap[1];
if (lmi<numlightmaps && lightmap[lmi]->hasdeluxe)
@ -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);
}

View File

@ -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, &region);
bci.size += blockswidth*blocksheight*blockbytes;
vkCmdCopyBufferToImage(vkloadcmd, fence->stagingbuffer, target.image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &region);
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)