diff --git a/engine/Makefile b/engine/Makefile index fa98d258b..811806d9e 100644 --- a/engine/Makefile +++ b/engine/Makefile @@ -58,6 +58,13 @@ ifneq (,$(BRANDING)) -include game_$(BRANDING).mak endif +ifeq ($(BITS),64) + CC:=$(CC) -m64 +endif +ifeq ($(BITS),32) + CC:=$(CC) -m32 +endif + #correct the gcc build when cross compiling ifneq (,$(findstring win32,$(FTE_TARGET))) ifeq ($(shell $(CC) -v 2>&1 | grep mingw),) @@ -412,7 +419,7 @@ PROFILE_CFLAGS=-pg DX7SDK=-I./libs/dxsdk7/include/ GLCFLAGS?=-DGLQUAKE -D3DCFLAGS?=-DD3D9QUAKE +D3DCFLAGS?=-DD3D9QUAKE -DD3D11QUAKE NPFTECFLAGS=-DNPFTE SPEEXCFLAGS=-DSPEEX_STATIC -I$(BASE_DIR)/libs/speex/include -DFIXED_POINT -DUSE_KISS_FFT -DEXPORT="" @@ -722,8 +729,10 @@ GLCL_EXE_NAME=../fteqwcl_gl$(FTE_FULLTARGET) #SDLCONFIG:=libs/sdl2_mingw/$(CC_MACHINE)/bin/sdl2-config --prefix=libs/sdl2_mingw/$(CC_MACHINE) ifdef windir GL_LDFLAGS=$(GLLDFLAGS) -lmingw32 -lws2_32 `$(SDLCONFIG) --static-libs` + M_LDFLAGS=$(MLDFLAGS) -lmingw32 -lws2_32 `$(SDLCONFIG) --static-libs` else GL_LDFLAGS=$(GLLDFLAGS) $(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) `$(SDLCONFIG) --static-libs` + M_LDFLAGS=$(MLDFLAGS) `$(SDLCONFIG) --static-libs` $(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) endif GL_CFLAGS=-DFTE_SDL $(GLCFLAGS) `$(SDLCONFIG) --cflags` GLB_DIR=gl_$(FTE_FULLTARGET) @@ -743,13 +752,6 @@ MCL_OBJS=$(D3DGL_OBJS) $(GLQUAKE_OBJS) $(SOFTWARE_OBJS) gl_vidsdl.o snd_sdl.o cd M_CFLAGS=$(GLCFLAGS) `$(SDLCONFIG) --cflags` M_LDFLAGS=$(GLLDFLAGS) $(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) -ifdef windir - M_LDFLAGS=$(MLDFLAGS) -lmingw32 -lws2_32 `$(SDLCONFIG) --static-libs` -else - #pthread is needed because of SDL. - M_LDFLAGS=$(MLDFLAGS) `$(SDLCONFIG) --static-libs` $(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) -endif - ifeq (,$(findstring NO_ZLIB,$(CFLAGS))) SV_LDFLAGS+=-lz GL_LDFLAGS+=-lz @@ -845,8 +847,12 @@ ifeq (win_SDL,$(findstring win,$(FTE_TARGET))$(findstring _SDL,$(FTE_TARGET))) GLCL_EXE_NAME=../fteqwcl_sdl$(BITS)$(EXEPOSTFIX) ifdef windir GL_LDFLAGS=$(GLLDFLAGS) -lmingw32 -lws2_32 `$(SDLCONFIG) --static-libs` + M_LDFLAGS=$(MLDFLAGS) -lmingw32 -lws2_32 `$(SDLCONFIG) --static-libs` + SV_LDFLAGS=$(MINGW_LIBS_DIR)/libz.a -lm -lmingw32 -lws2_32 -lwinmm `$(SDLCONFIG) --static-libs` else - GL_LDFLAGS=$(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) -lws2_32 -lmingw32 $(SDL_LDFLAGS) -mwindows -ldxguid -lwinmm -lole32 $(GLLDFLAGS) `$(SDLCONFIG) --static-libs` + GL_LDFLAGS=$(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) -lws2_32 -lmingw32 $(SDL_LDFLAGS) -mwindows -ldxguid -lwinmm -lole32 $(GLLDFLAGS) `$(SDLCONFIG) --libs` + M_LDFLAGS=$(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) -lws2_32 -lmingw32 -mwindows -ldxguid -lwinmm -lole32 $(MLDFLAGS) `$(SDL_CONFIG) --libs` $(IMAGELDFLAGS) + SV_LDFLAGS=$(MINGW_LIBS_DIR)/libz.a -lm -lmingw32 -lws2_32 -lwinmm `$(SDLCONFIG) --libs` endif GL_CFLAGS=-DFTE_SDL -I$(MINGW_LIBS_DIR)/ -I$(MINGW_LIBS_DIR) -I$(LIBS_DIR) $(GLCFLAGS) -DLIBVORBISFILE_STATIC $(DX7SDK) $(SPEEXCFLAGS) @@ -860,7 +866,6 @@ ifeq (win_SDL,$(findstring win,$(FTE_TARGET))$(findstring _SDL,$(FTE_TARGET))) SV_OBJS=$(COMMON_OBJS) $(SERVER_OBJS) $(PROGS_OBJS) $(WINDOWSSERVERONLY_OBJS) $(BOTLIB_OBJS) $(LTO_END) resources.o $(LTO_START) SV_EXE_NAME=../fteqw_sdl_sv$(BITS)$(EXEPOSTFIX) SV_CFLAGS=$(SERVER_ONLY_CFLAGS) -DFTE_SDL - SV_LDFLAGS=$(MINGW_LIBS_DIR)/libz.a -lm -lmingw32 -lws2_32 -lwinmm `$(SDLCONFIG) --static-libs` MINGL_DIR=mingl_sdlwin$(BITS) MINGL_EXE_NAME=../fteqw_sdl_mingl$(BITS)$(EXEPOSTFIX) @@ -876,12 +881,6 @@ ifeq (win_SDL,$(findstring win,$(FTE_TARGET))$(findstring _SDL,$(FTE_TARGET))) M_LDFLAGS=$(GLLDFLAGS) $(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) - ifdef windir - M_LDFLAGS=$(MLDFLAGS) -lmingw32 -lws2_32 `$(SDLCONFIG) --static-libs` - else - #pthread is needed because of SDL. - M_LDFLAGS=$(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) -lws2_32 -lmingw32 -mwindows -ldxguid -lwinmm -lole32 $(MLDFLAGS) `$(SDL_CONFIG) --libs` $(IMAGELDFLAGS) - endif D3DCL_OBJS=$(D3DQUAKE_OBJS) $(SPEEX_OBJS) snd_sdl.o cd_sdl.o sys_sdl.o in_sdl.o snd_directx.o $(D3DGL_OBJS) $(LTO_END) resources.o $(LTO_START) D3D_EXE_NAME=../fted3d_sdl_qw$(BITS)$(EXEPOSTFIX) diff --git a/engine/client/cl_main.c b/engine/client/cl_main.c index 88178af75..8e743fdd2 100644 --- a/engine/client/cl_main.c +++ b/engine/client/cl_main.c @@ -5345,7 +5345,7 @@ void Host_FinishLoading(void) "\n" "See the GNU General Public License for more details.\n"); -#if defined(_WIN32) && defined(WEBCLIENT) +#if defined(_WIN32) && !defined(FTE_SDL) && defined(WEBCLIENT) if (Sys_RunInstaller()) Sys_Quit(); #endif diff --git a/engine/client/snd_dma.c b/engine/client/snd_dma.c index c75f85940..7693af964 100644 --- a/engine/client/snd_dma.c +++ b/engine/client/snd_dma.c @@ -1762,7 +1762,7 @@ void S_Startup (void) } if (!sndcardinfo && !nodefault) { -#ifdef _WIN32 +#if defined(_WIN32) && !defined(FTE_SDL) INS_SetupControllerAudioDevices(); #endif if (!sndcardinfo) diff --git a/engine/common/bothdefs.h b/engine/common/bothdefs.h index b2aeaa281..2c947aa64 100644 --- a/engine/common/bothdefs.h +++ b/engine/common/bothdefs.h @@ -177,7 +177,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #undef AVAIL_JPEGLIB #undef AVAIL_XZDEC -#if defined(_WIN32) && !defined(MULTITHREAD) //always thread on win32 non-minimal builds +#if defined(_WIN32) && !defined(FTE_SDL) !defined(MULTITHREAD) //always thread on win32 non-minimal builds #define MULTITHREAD #endif #elif defined(MINIMAL) @@ -280,7 +280,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define VOICECHAT -#if defined(_WIN32) && !defined(MULTITHREAD) //always thread on win32 non-minimal builds +#if defined(_WIN32) && !defined(FTE_SDL) && !defined(MULTITHREAD) //always thread on win32 non-minimal builds #define MULTITHREAD #endif #endif diff --git a/engine/common/fs.c b/engine/common/fs.c index b9e011bc4..aa83f6b72 100644 --- a/engine/common/fs.c +++ b/engine/common/fs.c @@ -3322,7 +3322,7 @@ void FS_ReloadPackFiles_f(void) FS_BeginManifestUpdates(); } -#if defined(_WIN32) && !defined(WINRT) +#if defined(_WIN32) && !defined(FTE_SDL) && !defined(WINRT) #include "winquake.h" #ifdef MINGW #define byte BYTE //some versions of mingw headers are broken slightly. this lets it compile. @@ -5071,7 +5071,7 @@ void COM_InitFilesystem (void) usehome = false; -#if defined(_WIN32) && !defined(WINRT) +#if defined(_WIN32) && !defined(FTE_SDL) && !defined(WINRT) { //win32 sucks. HRESULT (WINAPI *dSHGetFolderPathW) (HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwFlags, wchar_t *pszPath) = NULL; dllfunction_t funcs[] = diff --git a/engine/common/fs_win32.c b/engine/common/fs_win32.c index 4f0e825b2..c140d01a2 100644 --- a/engine/common/fs_win32.c +++ b/engine/common/fs_win32.c @@ -632,4 +632,4 @@ searchpathfuncs_t *QDECL VFSW32_OpenPath(vfsfile_t *mustbenull, const char *desc return &np->pub; } -#endif \ No newline at end of file +#endif diff --git a/engine/common/plugin.c b/engine/common/plugin.c index 3e8612dbb..7ffd64980 100644 --- a/engine/common/plugin.c +++ b/engine/common/plugin.c @@ -12,7 +12,7 @@ #ifdef PLUGINS -cvar_t plug_sbar = SCVAR("plug_sbar", "1"); +cvar_t plug_sbar = CVARD("plug_sbar", "3", "Controls whether plugins are allowed to draw the hud, rather than the engine (when allowed by csqc). This is typically used to permit the ezhud plugin without needing to bother unloading it.\n=0: never use hud plugins.\n&1: Use hud plugins in deathmatch.\n&2: Use hud plugins in singleplayer/coop.\n=3: Always use hud plugins (when loaded)."); cvar_t plug_loaddefault = SCVAR("plug_loaddefault", "1"); qintptr_t Plug_Bullet_Init(qintptr_t *args); @@ -1641,6 +1641,7 @@ void Plug_SBar(playerview_t *pv) plugin_t *oc=currentplug; int ret; int cleared = false; + int hudmode; if (!Sbar_ShouldDraw()) { @@ -1649,7 +1650,11 @@ void Plug_SBar(playerview_t *pv) } ret = 0; - if (!plug_sbar.ival) + if (cl.deathmatch) + hudmode = 1; + else + hudmode = 2; + if (!(plug_sbar.ival & hudmode)) currentplug = NULL; else { diff --git a/engine/d3d/vid_d3d11.c b/engine/d3d/vid_d3d11.c index 08908ebf1..6fbc3c4d7 100644 --- a/engine/d3d/vid_d3d11.c +++ b/engine/d3d/vid_d3d11.c @@ -71,6 +71,7 @@ ID3D11RenderTargetView *fb_backbuffer; ID3D11DepthStencilView *fb_backdepthstencil; void *d3d11mod; +static unsigned int d3d11multisample_count, d3d11multisample_quality; qboolean vid_initializing; @@ -635,8 +636,8 @@ static qboolean resetd3dbackbuffer(int width, int height) t2ddesc.MipLevels = 1; t2ddesc.ArraySize = 1; t2ddesc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT; - t2ddesc.SampleDesc.Count = 1; - t2ddesc.SampleDesc.Quality = 0; + t2ddesc.SampleDesc.Count = d3d11multisample_count; + t2ddesc.SampleDesc.Quality = d3d11multisample_quality; t2ddesc.Usage = D3D11_USAGE_DEFAULT; t2ddesc.BindFlags = D3D11_BIND_DEPTH_STENCIL; t2ddesc.CPUAccessFlags = 0; @@ -701,7 +702,8 @@ static qboolean D3D11_VID_Init(rendererstate_t *info, unsigned char *palette) scd.Height = info->height; scd.Format = info->srgb?DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:DXGI_FORMAT_B8G8R8A8_UNORM; scd.Stereo = info->stereo; - scd.SampleDesc.Count = 1+info->multisample; + scd.SampleDesc.Count = d3d11multisample_count = max(1,info->multisample); + scd.SampleDesc.Quality = d3d11multisample_quality = (d3d11multisample_count>1)?D3D11_STANDARD_MULTISAMPLE_PATTERN:0; scd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; scd.BufferCount = 2+info->triplebuffer; //rt only supports fullscreen, so the frontbuffer needs to be created by us. scd.SwapEffect = DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL; @@ -779,7 +781,8 @@ static qboolean initD3D11Device(HWND hWnd, rendererstate_t *info, PFN_D3D11_CREA scd.BufferDesc.Format = info->srgb?DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:DXGI_FORMAT_R8G8B8A8_UNORM; //32bit colour scd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; scd.OutputWindow = hWnd; - scd.SampleDesc.Count = 1+info->multisample; //as we're starting up windowed (and switching to fullscreen after), the frontbuffer is handled by windows. + scd.SampleDesc.Count = d3d11multisample_count = max(1, info->multisample); //as we're starting up windowed (and switching to fullscreen after), the frontbuffer is handled by windows. + scd.SampleDesc.Quality = d3d11multisample_quality = (d3d11multisample_count>1)?D3D11_STANDARD_MULTISAMPLE_PATTERN:0; scd.Windowed = TRUE; scd.Flags = DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH;// | DXGI_SWAP_CHAIN_FLAG_NONPREROTATED; diff --git a/engine/gl/r_bishaders.h b/engine/gl/r_bishaders.h index 973f6b2a4..807f121e3 100644 --- a/engine/gl/r_bishaders.h +++ b/engine/gl/r_bishaders.h @@ -724,7 +724,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "struct a2v\n" "{\n" "float4 pos: POSITION;\n" -"float4 tc: TEXCOORD0;\n" +"float2 tc: TEXCOORD0;\n" "float3 normal: NORMAL;\n" "};\n" "struct v2f\n" @@ -1039,7 +1039,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "struct a2v\n" "{\n" "float4 pos: POSITION;\n" -"float4 tc: TEXCOORD0;\n" +"float2 tc: TEXCOORD0;\n" "float4 vcol: COLOR0;\n" "};\n" "struct v2f\n" @@ -1261,7 +1261,8 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "struct a2v\n" "{\n" "float4 pos: POSITION;\n" -"float4 tc: TEXCOORD0;\n" +"float2 tc: TEXCOORD0;\n" +"float2 lmtc: TEXCOORD1;\n" "};\n" "struct v2f\n" "{\n" @@ -1279,8 +1280,8 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "outp.pos = mul(m_model, inp.pos);\n" "outp.pos = mul(m_view, outp.pos);\n" "outp.pos = mul(m_projection, outp.pos);\n" -"outp.tc = inp.tc.xy;\n" -"outp.lmtc = inp.tc.zw;\n" +"outp.tc = inp.tc;\n" +"outp.lmtc = inp.lmtc;\n" "return outp;\n" "}\n" "#endif\n" @@ -1289,17 +1290,17 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "Texture2D t_lightmap : register(t2);\n" "SamplerState s_lightmap : register(s2);\n" -"Texture2D t_diffuse : register(s0);\n" +"Texture2D t_diffuse : register(t0);\n" "SamplerState s_diffuse : register(s0);\n" -"Texture2D t_fullbright : register(s1);\n" +"Texture2D t_fullbright : register(t1);\n" "SamplerState s_fullbright : register(s1);\n" "float4 main (v2f inp) : SV_TARGET\n" "{\n" "float4 result;\n" "result = t_diffuse.Sample(s_diffuse, inp.tc);\n" -"result.rgb *= t_lightmap.Sample(s_lightmap, inp.lmtc).bgr * e_lmscale[0].rgb;\n" +"result.rgb *= t_lightmap.Sample(s_lightmap, inp.lmtc).rgb * e_lmscale[0].rgb;\n" "float4 fb = t_fullbright.Sample(s_fullbright, inp.tc);\n" "result.rgb += fb.rgb * fb.a;//lerp(result.rgb, fb.rgb, fb.a);\n" "return result;\n" @@ -1496,7 +1497,8 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "struct a2v\n" "{\n" "float4 pos: POSITION;\n" -"float4 tc: TEXCOORD0;\n" +"float2 tc: TEXCOORD0;\n" +"float2 lmtc: TEXCOORD1;\n" "float3 norm: NORMAL;\n" "};\n" "struct v2f\n" @@ -1516,8 +1518,8 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "outp.pos = mul(m_model, inp.pos);\n" "outp.pos = mul(m_view, outp.pos);\n" "outp.pos = mul(m_projection, outp.pos);\n" -"outp.tc = inp.tc.xy;\n" -"outp.lmtc = inp.tc.zw;\n" +"outp.tc = inp.tc;\n" +"outp.lmtc = inp.lmtc;\n" "outp.col = ((inp.norm.z<0.73)?float4(0.5, 0.5, 0.5, 1):float4(0.25, 0.25, 0.5, 1));\n" "return outp;\n" "}\n" @@ -2358,7 +2360,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "struct a2v\n" "{\n" "float4 pos: POSITION;\n" -"float4 tc: TEXCOORD0;\n" +"float2 tc: TEXCOORD0;\n" "float3 n: NORMAL;\n" "float3 s: TANGENT;\n" "float3 t: BINORMAL;\n" @@ -2840,7 +2842,8 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "struct a2v\n" "{\n" "float4 pos: POSITION;\n" -"float4 tc: TEXCOORD0;\n" +"float2 tc: TEXCOORD0;\n" +"float2 lmtc: TEXCOORD0;\n" "float4 vcol: COLOR0;\n" "};\n" "struct v2f\n" @@ -2862,8 +2865,8 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "outp.pos = mul(m_model, inp.pos);\n" "outp.pos = mul(m_view, outp.pos);\n" "outp.pos = mul(m_projection, outp.pos);\n" -"outp.tc = inp.tc.xy;\n" -"outp.lmtc = inp.tc.zw;\n" +"outp.tc = inp.tc;\n" +"outp.lmtc = inp.lmtc;\n" "outp.vcol = inp.vcol;\n" "return outp;\n" "}\n" @@ -2963,3 +2966,49 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND "#endif\n" }, #endif +#ifdef D3D11QUAKE +{QR_DIRECT3D11, 11, "fixedemu", +"struct a2v\n" +"{\n" +"float4 pos: POSITION;\n" +"float2 tc: TEXCOORD0;\n" +"float4 vcol: COLOR0;\n" +"};\n" +"struct v2f\n" +"{\n" +"float4 pos: SV_POSITION;\n" +"float2 tc: TEXCOORD0;\n" +"float4 vcol: COLOR0;\n" +"};\n" + +"#include \n" + +"#ifdef VERTEX_SHADER\n" +"v2f main (a2v inp)\n" +"{\n" +"v2f outp;\n" +"outp.pos = mul(m_model, inp.pos);\n" +"outp.pos = mul(m_view, outp.pos);\n" +"outp.pos = mul(m_projection, outp.pos);\n" +"outp.tc = inp.tc;\n" +"outp.vcol = inp.vcol;\n" +"return outp;\n" +"}\n" +"#endif\n" + +"#ifdef FRAGMENT_SHADER\n" +"Texture2D t_t0 : register(t0);\n" +"SamplerState s_t0 : register(s0);\n" +"float4 main (v2f inp) : SV_TARGET\n" +"{\n" +"float4 tc = t_t0.Sample(s_t0, inp.tc).rgba;\n" +"tc.rgba *= inp.vcol.bgra;\n" +"#ifdef ALPHATEST\n" +"if (!(tc.a ALPHATEST))\n" +"discard;\n" +"#endif\n" +"return tc;\n" +"}\n" +"#endif\n" +}, +#endif diff --git a/engine/qclib/execloop.h b/engine/qclib/execloop.h index 2e9422afe..9c434803e 100644 --- a/engine/qclib/execloop.h +++ b/engine/qclib/execloop.h @@ -435,7 +435,7 @@ reeval: //Whilst the next block would technically be correct, we don't use it as it breaks too many quake mods. #ifdef NOLEGACY - errorif (ed->isfree) + errorif (ed->ereftype == ER_FREE) { if (PR_ExecRunWarning (&progfuncs->funcs, st-pr_statements, "assignment to free entity in %s", PR_StringToNative(&progfuncs->funcs, pr_xfunction->s_name))) return pr_xstatement; @@ -465,7 +465,7 @@ reeval: NUM_FOR_EDICT(ed); // make sure it's in range #endif #ifdef NOLEGACY - if (ed->isfree) + if (ed->ereftype == ER_FREE) { if (PR_ExecRunWarning (&progfuncs->funcs, st-pr_statements, "OP_LOAD references free entity %i in %s\n", OPA->edict, PR_StringToNative(&progfuncs->funcs, pr_xfunction->s_name))) return pr_xstatement; @@ -494,7 +494,7 @@ reeval: NUM_FOR_EDICT(ed); // make sure it's in range #endif #ifdef NOLEGACY - if (ed->isfree) + if (ed->ereftype == ER_FREE) { if (PR_ExecRunWarning (&progfuncs->funcs, st-pr_statements, "OP_LOAD references free entity %i in %s\n", OPA->edict, PR_StringToNative(&progfuncs->funcs, pr_xfunction->s_name))) return pr_xstatement; diff --git a/engine/qclib/progsint.h b/engine/qclib/progsint.h index 047917660..0fc67e801 100644 --- a/engine/qclib/progsint.h +++ b/engine/qclib/progsint.h @@ -119,7 +119,7 @@ typedef struct prinst_s #define pr_depth prinst.pr_depth int spushed; -#define LOCALSTACK_SIZE 4096 +#define LOCALSTACK_SIZE 16384 int localstack[LOCALSTACK_SIZE]; int localstack_used; diff --git a/engine/server/pr_q1qvm.c b/engine/server/pr_q1qvm.c index ff303a7dd..eadbd408e 100755 --- a/engine/server/pr_q1qvm.c +++ b/engine/server/pr_q1qvm.c @@ -426,7 +426,7 @@ static void QDECL Q1QVMPF_EntRemove(pubprogfuncs_t *pf, edict_t *e) e->freetime = sv.time; } -static edict_t *QDECL Q1QVMPF_EntAlloc(pubprogfuncs_t *pf) +static edict_t *QDECL Q1QVMPF_EntAlloc(pubprogfuncs_t *pf, pbool object, size_t extrasize) { int i; edict_t *e; @@ -594,7 +594,7 @@ static qintptr_t QVM_GetEntityToken (void *offset, quintptr_t mask, const qintpt static qintptr_t QVM_Spawn_Ent (void *offset, quintptr_t mask, const qintptr_t *arg) { - return Q1QVMPF_EntAlloc(svprogfuncs)->entnum; + return Q1QVMPF_EntAlloc(svprogfuncs, false, 0)->entnum; } static qintptr_t QVM_Remove_Ent (void *offset, quintptr_t mask, const qintptr_t *arg) diff --git a/engine/shaders/hlsl11/defaultskin.hlsl b/engine/shaders/hlsl11/defaultskin.hlsl index b5091395b..255a69fd8 100644 --- a/engine/shaders/hlsl11/defaultskin.hlsl +++ b/engine/shaders/hlsl11/defaultskin.hlsl @@ -1,7 +1,7 @@ struct a2v { float4 pos: POSITION; - float4 tc: TEXCOORD0; + float2 tc: TEXCOORD0; float3 normal: NORMAL; }; struct v2f diff --git a/engine/shaders/hlsl11/defaultsprite.hlsl b/engine/shaders/hlsl11/defaultsprite.hlsl index 69f0591e7..0bedc180c 100644 --- a/engine/shaders/hlsl11/defaultsprite.hlsl +++ b/engine/shaders/hlsl11/defaultsprite.hlsl @@ -1,7 +1,7 @@ struct a2v { float4 pos: POSITION; - float4 tc: TEXCOORD0; + float2 tc: TEXCOORD0; float4 vcol: COLOR0; }; struct v2f diff --git a/engine/shaders/hlsl11/drawflat_wall.hlsl b/engine/shaders/hlsl11/drawflat_wall.hlsl index 4db01a8e1..aaaf99fba 100644 --- a/engine/shaders/hlsl11/drawflat_wall.hlsl +++ b/engine/shaders/hlsl11/drawflat_wall.hlsl @@ -1,7 +1,8 @@ struct a2v { float4 pos: POSITION; - float4 tc: TEXCOORD0; + float2 tc: TEXCOORD0; + float2 lmtc: TEXCOORD1; float3 norm: NORMAL; }; struct v2f @@ -21,8 +22,8 @@ struct v2f outp.pos = mul(m_model, inp.pos); outp.pos = mul(m_view, outp.pos); outp.pos = mul(m_projection, outp.pos); - outp.tc = inp.tc.xy; - outp.lmtc = inp.tc.zw; + outp.tc = inp.tc; + outp.lmtc = inp.lmtc; outp.col = ((inp.norm.z<0.73)?float4(0.5, 0.5, 0.5, 1):float4(0.25, 0.25, 0.5, 1)); return outp; } diff --git a/engine/shaders/hlsl11/rtlight.hlsl b/engine/shaders/hlsl11/rtlight.hlsl index 2ef86c4f2..2681d532d 100644 --- a/engine/shaders/hlsl11/rtlight.hlsl +++ b/engine/shaders/hlsl11/rtlight.hlsl @@ -36,7 +36,7 @@ struct a2v { float4 pos: POSITION; - float4 tc: TEXCOORD0; + float2 tc: TEXCOORD0; float3 n: NORMAL; float3 s: TANGENT; float3 t: BINORMAL; diff --git a/engine/shaders/hlsl11/terrain.hlsl b/engine/shaders/hlsl11/terrain.hlsl index dfe0b0f40..a4ff80ddd 100644 --- a/engine/shaders/hlsl11/terrain.hlsl +++ b/engine/shaders/hlsl11/terrain.hlsl @@ -1,7 +1,8 @@ struct a2v { float4 pos: POSITION; - float4 tc: TEXCOORD0; + float2 tc: TEXCOORD0; + float2 lmtc: TEXCOORD0; float4 vcol: COLOR0; }; struct v2f @@ -23,8 +24,8 @@ struct v2f outp.pos = mul(m_model, inp.pos); outp.pos = mul(m_view, outp.pos); outp.pos = mul(m_projection, outp.pos); - outp.tc = inp.tc.xy; - outp.lmtc = inp.tc.zw; + outp.tc = inp.tc; + outp.lmtc = inp.lmtc; outp.vcol = inp.vcol; return outp; } diff --git a/engine/shaders/hlsl11/terraindebug.hlsl b/engine/shaders/hlsl11/terraindebug.hlsl index c6f38ef9c..1f066aca4 100644 --- a/engine/shaders/hlsl11/terraindebug.hlsl +++ b/engine/shaders/hlsl11/terraindebug.hlsl @@ -1,7 +1,7 @@ struct a2v { float4 pos: POSITION; - float4 tc: TEXCOORD0; + float2 tc: TEXCOORD0; }; struct v2f { @@ -19,8 +19,8 @@ struct v2f outp.pos = mul(m_model, inp.pos); outp.pos = mul(m_view, outp.pos); outp.pos = mul(m_projection, outp.pos); - outp.tc = inp.tc.xy; - outp.lmtc = inp.tc.zw; + outp.tc = inp.tc; + outp.lmtc = inp.lmtc; return outp; } #endif