1
0
Fork 0
forked from fte/fteqw

fix eukara's icons (he typoed), so they're actually used properly. use them for d3d renderers too.

ignore mip levels that don't match what gl/vk require.

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5137 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2017-08-10 19:40:47 +00:00
parent 145666ac22
commit 2759632327
12 changed files with 84 additions and 32 deletions

View file

@ -942,6 +942,14 @@ void Con_PrintFlags(const char *txt, unsigned int setflags, unsigned int clearfl
{
setflags |= con_main.parseflags;
setflags &= ~clearflags;
// also echo to debugging console
Sys_Printf ("%s", txt); // also echo to debugging console
// log all messages to file
Con_Log (txt);
if (con_initialized)
Con_PrintCon(&con_main, txt, setflags);
}

View file

@ -2498,7 +2498,7 @@ static qboolean Image_ReadDDSFile(texid_t tex, unsigned int flags, char *fname,
}
else if (*(int*)&fmtheader.ddpfPixelFormat.dwFourCC == (('D'<<0)|('X'<<8)|('T'<<16)|('2'<<24))) //dx3 with premultiplied alpha
{
// if (!(tex->flags & IF_PREMULTIPLYALPHA))
if (!(tex->flags & IF_PREMULTIPLYALPHA))
return false;
encoding = PTI_S3RGBA3;
pad = 8;

View file

@ -833,6 +833,8 @@ console_t *Con_TextEditor(const char *fname, const char *line, qboolean newfile)
if (line)
Con_Editor_GoToLine(con, atoi(line));
else
Con_Editor_GoToLine(con, 1);
Con_Footerf(con, false, " ^2%i lines", con->linecount);

View file

@ -89,17 +89,17 @@ IDI_ICON1 ICON BRANDING_ICON
#elif defined(BRANDING_ICON)
IDI_ICON1 ICON BRANDING_ICON
#if defined( _MSC_VER ) && ( _MSC_VER >= 1500 )
ID1_ICON2 ICON "fte_eukara.ico"
IDI_ICON2 ICON "fte_eukara.ico"
#else
ID1_ICON2 ICON "fte_eukaranopng.ico"
IDI_ICON2 ICON "fte_eukaranopng.ico"
#endif
IDI_ICON3 ICON "bymorphed.ico"
IDI_ICON4 ICON "q2.ico"
#else
#if defined( _MSC_VER ) && ( _MSC_VER >= 1500 )
ID1_ICON1 ICON "fte_eukara.ico"
IDI_ICON1 ICON "fte_eukara.ico"
#else
ID1_ICON1 ICON "fte_eukaranopng.ico"
IDI_ICON1 ICON "fte_eukaranopng.ico"
#endif
IDI_ICON2 ICON "bymorphed.ico"
IDI_ICON3 ICON "q2.ico"

View file

@ -2480,8 +2480,6 @@ static void D3D9BE_GenBatchVBOs(vbo_t **vbochain, batch_t *firstbatch, batch_t *
index_t *vboedata;
vbovdata_t *vbovdata;
vbo = Z_Malloc(sizeof(*vbo));
maxvboverts = 0;
maxvboelements = 0;
for(batch = firstbatch; batch != stopbatch; batch = batch->next)
@ -2496,6 +2494,10 @@ static void D3D9BE_GenBatchVBOs(vbo_t **vbochain, batch_t *firstbatch, batch_t *
if (maxvboverts > MAX_INDICIES)
Sys_Error("Building a vbo with too many verticies\n");
if (!maxvboelements)
return;
vbo = Z_Malloc(sizeof(*vbo));
IDirect3DDevice9_CreateIndexBuffer(pD3DDev9, sizeof(index_t) * maxvboelements, 0, D3DFMT_QINDEX, D3DPOOL_MANAGED, &ebuff, NULL);
IDirect3DDevice9_CreateVertexBuffer(pD3DDev9, sizeof(*vbovdata) * maxvboverts, D3DUSAGE_WRITEONLY, 0, D3DPOOL_MANAGED, &vbuff, NULL);

View file

@ -4,6 +4,7 @@
#include "renderque.h"
#include "glquake.h"
#include "resource.h"
#ifdef D3D9QUAKE
#include "winquake.h"
@ -710,6 +711,7 @@ static qboolean D3D9_VID_Init(rendererstate_t *info, unsigned char *palette)
DWORD wstyle;
RECT rect;
MSG msg;
HICON hIcon = LoadIcon (global_hInstance, MAKEINTRESOURCE (IDI_ICON1));
//DDGAMMARAMP gammaramp;
//int i;
@ -721,7 +723,7 @@ static qboolean D3D9_VID_Init(rendererstate_t *info, unsigned char *palette)
0,
0,
NULL,
NULL,
hIcon,
NULL,
NULL,
NULL,
@ -1072,12 +1074,17 @@ static qboolean (D3D9_SCR_UpdateScreen) (void)
}
#endif
*/
D3D9_Set2D();
if (Media_ShowFilm())
{
M_Draw(0);
// V_UpdatePalette (false);
Media_RecordFrame();
// R2D_BrightenScreen();
if (R2D_Flush)
R2D_Flush();
IDirect3DDevice9_EndScene(pD3DDev9);
D3D9_VID_SwapBuffers();
return true;
@ -1091,8 +1098,6 @@ static qboolean (D3D9_SCR_UpdateScreen) (void)
noworld = false;
nohud = false;
D3D9_Set2D();
#ifdef VM_CG
if (CG_Refresh())
nohud = true;

View file

@ -5,6 +5,7 @@
#include "glquake.h"
#include "shader.h"
#include "renderque.h"
#include "resource.h"
#define COBJMACROS
#include <d3d11.h>
@ -937,6 +938,7 @@ static qboolean D3D11_VID_Init(rendererstate_t *info, unsigned char *palette)
DWORD wstyle;
RECT rect;
MSG msg;
HICON hIcon = LoadIcon (global_hInstance, MAKEINTRESOURCE (IDI_ICON1));
//DDGAMMARAMP gammaramp;
//int i;
@ -948,7 +950,7 @@ static qboolean D3D11_VID_Init(rendererstate_t *info, unsigned char *palette)
0,
0,
NULL,
NULL,
hIcon,
NULL,
NULL,
NULL,

View file

@ -2,6 +2,7 @@
#include "gl_draw.h"
#include "shader.h"
#include "renderque.h"
#include "resource.h"
#include "glquake.h"
@ -750,6 +751,7 @@ static qboolean D3D8_VID_Init(rendererstate_t *info, unsigned char *palette)
DWORD wstyle;
RECT rect;
MSG msg;
HICON hIcon = LoadIcon (global_hInstance, MAKEINTRESOURCE (IDI_ICON1));
//DDGAMMARAMP gammaramp;
//int i;
@ -761,7 +763,7 @@ static qboolean D3D8_VID_Init(rendererstate_t *info, unsigned char *palette)
0,
0,
NULL,
NULL,
hIcon,
NULL,
NULL,
NULL,

View file

@ -350,6 +350,20 @@ qboolean GL_LoadTextureMips(texid_t tex, struct pendingtextureinfo *mips)
qglTexParameteri(targ, GL_TEXTURE_WRAP_R, GL_REPEAT);
}
if (targ == GL_TEXTURE_2D && mips->mipcount > 1)
{ //npot mipmapped textures are awkward.
//opengl floors.
for (i = 1; i < mips->mipcount; i++)
{
if (mips->mip[i].width != (mips->mip[i-1].width>>1) ||
mips->mip[i].height != (mips->mip[i-1].height>>1))
{ //okay, this mip looks like it was sized wrongly. this can easily happen with dds files made for direct3d.
mips->mipcount = i;
break;
}
}
}
//make sure the texture is complete even if the mips are not.
//note that some drivers will just ignore levels that are not valid.
//this means that we can't make this setting dynamic, so we might as well let the drivers know BEFORE we do the uploads, to be kind to those that are buggy..

View file

@ -856,7 +856,7 @@ qboolean Font_LoadFreeTypeFont(struct font_s *f, int height, const char *fontfil
}
error = FT_Err_Cannot_Open_Resource;
if (FS_FLocateFile(fontfilename, FSLF_IFFOUND, &loc))
if (FS_FLocateFile(fontfilename, FSLF_IFFOUND, &loc) || FS_FLocateFile(va("%s.ttf", fontfilename), FSLF_IFFOUND, &loc))
{
if (*loc.rawname && !loc.offset)
{

View file

@ -4088,7 +4088,7 @@ static void BE_UploadLightmaps(qboolean force)
if (!lightmap[i])
continue;
if (force)
if (force && !lightmap[i]->external)
{
lightmap[i]->rectchange.l = 0;
lightmap[i]->rectchange.t = 0;

View file

@ -1145,6 +1145,20 @@ qboolean VK_LoadTextureMips (texid_t tex, struct pendingtextureinfo *mips)
layers = (mips->type == PTI_CUBEMAP)?6:1;
if (layers == 1 && mips->mipcount > 1)
{ //npot mipmapped textures are awkward.
//vulkan floors.
for (i = 1; i < mips->mipcount; i++)
{
if (mips->mip[i].width != (mips->mip[i-1].width>>1) ||
mips->mip[i].height != (mips->mip[i-1].height>>1))
{ //okay, this mip looks like it was sized wrongly. this can easily happen with dds files.
mips->mipcount = i;
break;
}
}
}
switch(mips->encoding)
{
case PTI_RGB565:
@ -1314,12 +1328,15 @@ qboolean VK_LoadTextureMips (texid_t tex, struct pendingtextureinfo *mips)
uint32_t blockwidth = (mips->mip[i].width+blocksize-1) / blocksize;
uint32_t blockheight = (mips->mip[i].height+blocksize-1) / blocksize;
if (mips->mip[i].data)
memcpy((char*)mapdata + bci.size, (char*)mips->mip[i].data, blockwidth*blockbytes*blockheight);
else
memset((char*)mapdata + bci.size, 0, blockwidth*blockbytes*blockheight);
//queue up a buffer->image copy for this mip
region.bufferOffset = bci.size;
region.bufferRowLength = 0;//blockwidth*blockbytes;
region.bufferImageHeight = 0;//blockheight;
region.bufferRowLength = blockwidth*blocksize;//*blockbytes;
region.bufferImageHeight = blockheight*blocksize;
region.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
region.imageSubresource.mipLevel = i%(mips->mipcount/layers);
region.imageSubresource.baseArrayLayer = i/(mips->mipcount/layers);
@ -1327,8 +1344,8 @@ qboolean VK_LoadTextureMips (texid_t tex, struct pendingtextureinfo *mips)
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.width = mips->mip[i].width;//blockwidth*blocksize;
region.imageExtent.height = mips->mip[i].height;//blockheight*blocksize;
region.imageExtent.depth = 1;
vkCmdCopyBufferToImage(vkloadcmd, fence->stagingbuffer, target.image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &region);