apply lmgamma to rbsp vertex lighting

opus should now be statically linked or something
made the denormalised floats warning look less scary.
fix the console-making-hud-pics invisible issue

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5172 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2017-11-24 18:40:17 +00:00
parent 4f73088dea
commit 4896954c8a
10 changed files with 202 additions and 104 deletions

View file

@ -26,11 +26,12 @@ WHOAMI:=$(shell whoami)
#update these to download+build a different version. this assumes that the url+subdirs etc contain a consistant version everywhere. #update these to download+build a different version. this assumes that the url+subdirs etc contain a consistant version everywhere.
JPEGVER=9b JPEGVER=9b
ZLIBVER=1.2.11 ZLIBVER=1.2.11
PNGVER=1.6.29 PNGVER=1.6.34
OGGVER=1.3.2 OGGVER=1.3.3
VORBISVER=1.3.5 VORBISVER=1.3.5
SDL2VER=2.0.5 SDL2VER=2.0.7
SCINTILLAVER=373 SCINTILLAVER=373
OPUSVER=1.2.1
#only limited forms of cross-making is supported #only limited forms of cross-making is supported
#only the following 3 are supported #only the following 3 are supported
@ -80,6 +81,9 @@ endif
ifeq (,$(findstring DNO_SPEEX,$(FTE_CONFIG_EXTRA))) ifeq (,$(findstring DNO_SPEEX,$(FTE_CONFIG_EXTRA)))
USE_SPEEX=1 USE_SPEEX=1
endif endif
ifeq (,$(findstring DNO_OPUS,$(FTE_CONFIG_EXTRA)))
USE_OPUS=1
endif
ifeq (,$(findstring DNO_BOTLIB,$(FTE_CONFIG_EXTRA))) ifeq (,$(findstring DNO_BOTLIB,$(FTE_CONFIG_EXTRA)))
USE_BOTLIB=1 USE_BOTLIB=1
endif endif
@ -862,13 +866,25 @@ ifeq (1,$(USE_BOTLIB))
l_struct.o l_struct.o
endif endif
ifeq (1,$(USE_OPUS))
LIBOPUS_STATIC=-DOPUS_STATIC
LIBOPUS_LDFLAGS=-lopus
endif
ifeq (1,$(USE_VORBISFILE)) ifeq (1,$(USE_VORBISFILE))
LIBVORBISFILE_STATIC=-DLIBVORBISFILE_STATIC OGGVORBISFILE_STATIC=-DLIBVORBISFILE_STATIC
else else
OGGVORBISLDFLAGS= OGGVORBISLDFLAGS=
LIBVORBISFILE_STATIC= OGGVORBISFILE_STATIC=
endif endif
COMMONLIBFLAGS=
CLIENTLIBFLAGS=$(COMMONLIBFLAGS) $(LIBOPUS_STATIC) $(OGGVORBISFILE_STATIC)
SERVERLIBFLAGS=$(COMMONLIBFLAGS)
COMMONLDDEPS=
CLIENTLDDEPS=$(COMMONLDDEPS) $(LIBOPUS_LDFLAGS) $(OGGVORBISLDFLAGS)
SERVERLDDEPS=$(COMMONLDDEPS)
#the defaults for sdl come first #the defaults for sdl come first
#CC_MACHINE:=$(shell $(CC) -dumpmachine) #CC_MACHINE:=$(shell $(CC) -dumpmachine)
ifeq ($(FTE_TARGET),SDL2) ifeq ($(FTE_TARGET),SDL2)
@ -896,9 +912,9 @@ ifdef windir
M_LDFLAGS=$(MLDFLAGS) -lmingw32 -lws2_32 `$(SDLCONFIG) --static-libs` M_LDFLAGS=$(MLDFLAGS) -lmingw32 -lws2_32 `$(SDLCONFIG) --static-libs`
SV_LDFLAGS=`$(SDLCONFIG) --static-libs` SV_LDFLAGS=`$(SDLCONFIG) --static-libs`
else else
GL_LDFLAGS=$(GLLDFLAGS) $(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) `$(SDLCONFIG) --static-libs` GL_LDFLAGS=$(GLLDFLAGS) $(IMAGELDFLAGS) $(CLIENTLDDEPS) `$(SDLCONFIG) --static-libs`
VK_LDFLAGS=$(VKLDFLAGS) $(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) `$(SDLCONFIG) --static-libs` VK_LDFLAGS=$(VKLDFLAGS) $(IMAGELDFLAGS) $(CLIENTLDDEPS) `$(SDLCONFIG) --static-libs`
M_LDFLAGS=$(MLDFLAGS) $(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) `$(SDLCONFIG) --static-libs` M_LDFLAGS=$(MLDFLAGS) $(IMAGELDFLAGS) $(CLIENTLDDEPS) `$(SDLCONFIG) --static-libs`
SV_LDFLAGS=`$(SDLCONFIG) --static-libs` SV_LDFLAGS=`$(SDLCONFIG) --static-libs`
endif endif
GL_CFLAGS=-DFTE_SDL $(GLCFLAGS) `$(SDLCONFIG) --cflags` GL_CFLAGS=-DFTE_SDL $(GLCFLAGS) `$(SDLCONFIG) --cflags`
@ -936,7 +952,7 @@ endif
#specific targets override those defaults as needed. #specific targets override those defaults as needed.
#google native client #google native client
ifeq ($(FTE_TARGET),nacl) ifeq ($(FTE_TARGET),nacl)
OGGVORBISLDFLAGS= CLIENTLDDEPS=
NARCH ?= x86_32 NARCH ?= x86_32
ifeq ($(shell uname -o 2>&1 | grep Cygwin),) ifeq ($(shell uname -o 2>&1 | grep Cygwin),)
@ -984,8 +1000,8 @@ ifeq ($(FTE_TARGET),nacl)
GLCL_OBJS=$(GL_OBJS) $(D3DGL_OBJS) $(GLQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) sys_ppapi.o cd_null.o gl_vidppapi.o fs_ppapi.o snd_ppapi.o GLCL_OBJS=$(GL_OBJS) $(D3DGL_OBJS) $(GLQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) sys_ppapi.o cd_null.o gl_vidppapi.o fs_ppapi.o snd_ppapi.o
GL_LDFLAGS=$(GLLDFLAGS) $(OGGVORBISLDFLAGS) GL_LDFLAGS=$(GLLDFLAGS) $(CLIENTLDDEPS)
M_LDFLAGS=$(GLLDFLAGS) $(OGGVORBISLDFLAGS) M_LDFLAGS=$(GLLDFLAGS) $(CLIENTLDDEPS)
GLB_DIR=gl_nacl_$(NARCH) GLB_DIR=gl_nacl_$(NARCH)
MINGL_DIR=mingl_nacl_$(NARCH) MINGL_DIR=mingl_nacl_$(NARCH)
@ -1026,14 +1042,14 @@ ifeq (win_SDL,$(findstring win,$(FTE_TARGET))$(findstring _SDL,$(FTE_TARGET)))
SV_LDFLAGS=$(MINGW_LIBS_DIR)/libz.a -lm -lmingw32 -lws2_32 -lwinmm `$(SDLCONFIG) --static-libs` SV_LDFLAGS=$(MINGW_LIBS_DIR)/libz.a -lm -lmingw32 -lws2_32 -lwinmm `$(SDLCONFIG) --static-libs`
QCC_LDFLAGS=$(MINGW_LIBS_DIR)/libz.a QCC_LDFLAGS=$(MINGW_LIBS_DIR)/libz.a
else else
GL_LDFLAGS=$(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) -lws2_32 -lmingw32 $(SDL_LDFLAGS) -mwindows -ldxguid -lwinmm -lole32 $(GLLDFLAGS) `$(SDLCONFIG) --libs` GL_LDFLAGS=$(IMAGELDFLAGS) $(CLIENTLDDEPS) -lws2_32 -lmingw32 $(SDL_LDFLAGS) -mwindows -ldxguid -lwinmm -lole32 $(GLLDFLAGS) `$(SDLCONFIG) --libs`
VK_LDFLAGS=$(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) -lws2_32 -lmingw32 $(SDL_LDFLAGS) -mwindows -ldxguid -lwinmm -lole32 $(GLLDFLAGS) `$(SDLCONFIG) --libs` VK_LDFLAGS=$(IMAGELDFLAGS) $(CLIENTLDDEPS) -lws2_32 -lmingw32 $(SDL_LDFLAGS) -mwindows -ldxguid -lwinmm -lole32 $(GLLDFLAGS) `$(SDLCONFIG) --libs`
M_LDFLAGS=$(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) -lws2_32 -lmingw32 $(SDL_LDFLAGS) -mwindows -ldxguid -lwinmm -lole32 $(MLDFLAGS) `$(SDLCONFIG) --libs` M_LDFLAGS=$(IMAGELDFLAGS) $(CLIENTLDDEPS) -lws2_32 -lmingw32 $(SDL_LDFLAGS) -mwindows -ldxguid -lwinmm -lole32 $(MLDFLAGS) `$(SDLCONFIG) --libs`
SV_LDFLAGS=$(MINGW_LIBS_DIR)/libz.a -lm -lmingw32 -lws2_32 -lwinmm `$(SDLCONFIG) --libs` SV_LDFLAGS=$(MINGW_LIBS_DIR)/libz.a -lm -lmingw32 -lws2_32 -lwinmm `$(SDLCONFIG) --libs`
QCC_LDFLAGS=$(MINGW_LIBS_DIR)/libz.a QCC_LDFLAGS=$(MINGW_LIBS_DIR)/libz.a
endif endif
GL_CFLAGS=-DFTE_SDL -I$(MINGW_LIBS_DIR)/ -I$(MINGW_LIBS_DIR) -I$(LIBS_DIR) $(GLCFLAGS) $(LIBVORBISFILE_STATIC) $(DX7SDK) $(SPEEXCFLAGS) GL_CFLAGS=-DFTE_SDL -I$(MINGW_LIBS_DIR)/ -I$(MINGW_LIBS_DIR) -I$(LIBS_DIR) $(GLCFLAGS) $(CLIENTLIBFLAGS) $(DX7SDK) $(SPEEXCFLAGS)
GLB_DIR=gl_mgw_sdl$(BITS) GLB_DIR=gl_mgw_sdl$(BITS)
GLCL_DIR=glcl_mgw_sdl$(BITS) GLCL_DIR=glcl_mgw_sdl$(BITS)
@ -1049,16 +1065,16 @@ ifeq (win_SDL,$(findstring win,$(FTE_TARGET))$(findstring _SDL,$(FTE_TARGET)))
M_EXE_NAME=../$(EXE_NAME)-sdl$(BITS)$(EXEPOSTFIX) M_EXE_NAME=../$(EXE_NAME)-sdl$(BITS)$(EXEPOSTFIX)
#with d3d... #with d3d...
#MCL_OBJS=$(D3DGL_OBJS) $(GLQUAKE_OBJS) $(SOFTWARE_OBJS) $(D3DQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_vidsdl.o snd_sdl.o cd_sdl.o sys_sdl.o in_sdl.o snd_directx.o $(LTO_END) resources.o $(LTO_START) #MCL_OBJS=$(D3DGL_OBJS) $(GLQUAKE_OBJS) $(SOFTWARE_OBJS) $(D3DQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_vidsdl.o snd_sdl.o cd_sdl.o sys_sdl.o in_sdl.o snd_directx.o $(LTO_END) resources.o $(LTO_START)
#M_CFLAGS=$(D3DCFLAGS) $(VKCFLAGS) $(GLCFLAGS) -DFTE_SDL -I$(LIBS_DIR) -I$(LIBS_DIR) -I$(MINGW_LIBS_DIR)/ -I$(MINGW_LIBS_DIR) $(LIBVORBISFILE_STATIC) $(DX7SDK) $(SPEEXCFLAGS) #M_CFLAGS=$(D3DCFLAGS) $(VKCFLAGS) $(GLCFLAGS) -DFTE_SDL -I$(LIBS_DIR) -I$(LIBS_DIR) -I$(MINGW_LIBS_DIR)/ -I$(MINGW_LIBS_DIR) $(CLIENTLIBFLAGS) $(DX7SDK) $(SPEEXCFLAGS)
#without d3d... #without d3d...
MCL_OBJS=$(D3DGL_OBJS) $(GLQUAKE_OBJS) $(SOFTWARE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_vidsdl.o snd_sdl.o cd_sdl.o sys_sdl.o in_sdl.o snd_directx.o $(LTO_END) resources.o $(LTO_START) MCL_OBJS=$(D3DGL_OBJS) $(GLQUAKE_OBJS) $(SOFTWARE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_vidsdl.o snd_sdl.o cd_sdl.o sys_sdl.o in_sdl.o snd_directx.o $(LTO_END) resources.o $(LTO_START)
M_CFLAGS=$(VKCFLAGS) $(GLCFLAGS) -DFTE_SDL -I$(LIBS_DIR) -I$(LIBS_DIR) -I$(MINGW_LIBS_DIR)/ -I$(MINGW_LIBS_DIR) $(LIBVORBISFILE_STATIC) $(DX7SDK) $(SPEEXCFLAGS) M_CFLAGS=$(VKCFLAGS) $(GLCFLAGS) -DFTE_SDL -I$(LIBS_DIR) -I$(LIBS_DIR) -I$(MINGW_LIBS_DIR)/ -I$(MINGW_LIBS_DIR) $(CLIENTLIBFLAGS) $(DX7SDK) $(SPEEXCFLAGS)
D3DCL_OBJS=$(D3DQUAKE_OBJS) $(BOTLIB_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) D3DCL_OBJS=$(D3DQUAKE_OBJS) $(BOTLIB_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=../$(EXE_NAME)-sdl-d3d$(BITS)$(EXEPOSTFIX) D3D_EXE_NAME=../$(EXE_NAME)-sdl-d3d$(BITS)$(EXEPOSTFIX)
D3DCL_EXE_NAME=../$(EXE_NAME)-sdl-d3dcl$(BITS)$(EXEPOSTFIX) D3DCL_EXE_NAME=../$(EXE_NAME)-sdl-d3dcl$(BITS)$(EXEPOSTFIX)
D3D_LDFLAGS=$(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) -lws2_32 -lmingw32 $(SDL_LDFLAGS) -mwindows -ldxguid -lwinmm -lole32 D3D_LDFLAGS=$(IMAGELDFLAGS) $(CLIENTLDDEPS) -lws2_32 -lmingw32 $(SDL_LDFLAGS) -mwindows -ldxguid -lwinmm -lole32
D3D_CFLAGS=$(D3DCFLAGS) -DFTE_SDL -DNO_XFLIP -I$(LIBS_DIR) -I$(MINGW_LIBS_DIR)/ -I$(MINGW_LIBS_DIR) $(LIBVORBISFILE_STATIC) $(DX7SDK) $(SPEEXCFLAGS) D3D_CFLAGS=$(D3DCFLAGS) -DFTE_SDL -DNO_XFLIP -I$(LIBS_DIR) -I$(MINGW_LIBS_DIR)/ -I$(MINGW_LIBS_DIR) $(CLIENTLIBFLAGS) $(DX7SDK) $(SPEEXCFLAGS)
D3DB_DIR=sdl_d3d_mgw$(BITS) D3DB_DIR=sdl_d3d_mgw$(BITS)
D3DCL_DIR=sdl_d3dcl_mgw$(BITS) D3DCL_DIR=sdl_d3dcl_mgw$(BITS)
@ -1066,7 +1082,7 @@ ifeq (win_SDL,$(findstring win,$(FTE_TARGET))$(findstring _SDL,$(FTE_TARGET)))
VKCL_OBJS=$(VKQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_bloom.o gl_vidsdl.o snd_sdl.o cd_sdl.o sys_sdl.o in_sdl.o snd_directx.o $(D3DGL_OBJS) $(LTO_END) resources.o $(LTO_START) VKCL_OBJS=$(VKQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_bloom.o gl_vidsdl.o snd_sdl.o cd_sdl.o sys_sdl.o in_sdl.o snd_directx.o $(D3DGL_OBJS) $(LTO_END) resources.o $(LTO_START)
VK_EXE_NAME=../$(EXE_NAME)-sdl-vk$(BITS)$(EXEPOSTFIX) VK_EXE_NAME=../$(EXE_NAME)-sdl-vk$(BITS)$(EXEPOSTFIX)
VKCL_EXE_NAME=../$(EXE_NAME)-sdl-vkcl$(BITS)$(EXEPOSTFIX) VKCL_EXE_NAME=../$(EXE_NAME)-sdl-vkcl$(BITS)$(EXEPOSTFIX)
VK_CFLAGS=$(VKCFLAGS) -DFTE_SDL -DNO_XFLIP -I$(LIBS_DIR) -I$(MINGW_LIBS_DIR)/ -I$(MINGW_LIBS_DIR) $(LIBVORBISFILE_STATIC) $(DX7SDK) $(SPEEXCFLAGS) VK_CFLAGS=$(VKCFLAGS) -DFTE_SDL -DNO_XFLIP -I$(LIBS_DIR) -I$(MINGW_LIBS_DIR)/ -I$(MINGW_LIBS_DIR) $(CLIENTLIBFLAGS) $(DX7SDK) $(SPEEXCFLAGS)
VKB_DIR=sdl_vk_mgw$(BITS) VKB_DIR=sdl_vk_mgw$(BITS)
VKCL_DIR=sdl_vkcl_mgw$(BITS) VKCL_DIR=sdl_vkcl_mgw$(BITS)
@ -1215,8 +1231,8 @@ ifeq (win,$(findstring win,$(FTE_TARGET))$(findstring _SDL,$(FTE_TARGET)))
GLCL_OBJS=$(GL_OBJS) $(D3DGL_OBJS) $(GLQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_vidnt.o $(WINDOWS_OBJS) GLCL_OBJS=$(GL_OBJS) $(D3DGL_OBJS) $(GLQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_vidnt.o $(WINDOWS_OBJS)
GL_EXE_NAME=../fteglqw$(BITS)$(EXEPOSTFIX) GL_EXE_NAME=../fteglqw$(BITS)$(EXEPOSTFIX)
GLCL_EXE_NAME=../fteglqwcl$(BITS)$(EXEPOSTFIX) GLCL_EXE_NAME=../fteglqwcl$(BITS)$(EXEPOSTFIX)
GL_LDFLAGS=$(GLLDFLAGS) $(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) -ldxguid -lws2_32 -lwinmm -lgdi32 -lole32 -Wl,--subsystem,windows GL_LDFLAGS=$(GLLDFLAGS) $(IMAGELDFLAGS) $(CLIENTLDDEPS) -ldxguid -lws2_32 -lwinmm -lgdi32 -lole32 -Wl,--subsystem,windows
GL_CFLAGS=$(GLCFLAGS) $(W32_CFLAGS) $(DX7SDK) -DMULTITHREAD $(LIBVORBISFILE_STATIC) $(SPEEXCFLAGS) GL_CFLAGS=$(GLCFLAGS) $(W32_CFLAGS) $(DX7SDK) -DMULTITHREAD $(CLIENTLIBFLAGS) $(SPEEXCFLAGS)
GLB_DIR=gl_mgw$(BITS) GLB_DIR=gl_mgw$(BITS)
GLCL_DIR=glcl_mgw$(BITS) GLCL_DIR=glcl_mgw$(BITS)
@ -1229,24 +1245,24 @@ ifeq (win,$(findstring win,$(FTE_TARGET))$(findstring _SDL,$(FTE_TARGET)))
MCL_OBJS=$(D3DGL_OBJS) $(GLQUAKE_OBJS) $(SOFTWARE_OBJS) $(D3DQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_vidnt.o gl_videgl.o $(WINDOWS_OBJS) MCL_OBJS=$(D3DGL_OBJS) $(GLQUAKE_OBJS) $(SOFTWARE_OBJS) $(D3DQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_vidnt.o gl_videgl.o $(WINDOWS_OBJS)
M_EXE_NAME=../$(EXE_NAME)$(BITS)$(EXEPOSTFIX) M_EXE_NAME=../$(EXE_NAME)$(BITS)$(EXEPOSTFIX)
MCL_EXE_NAME=../$(EXE_NAME)cl$(BITS)$(EXEPOSTFIX) MCL_EXE_NAME=../$(EXE_NAME)cl$(BITS)$(EXEPOSTFIX)
M_LDFLAGS=$(GLLDFLAGS) $(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) -ldxguid -lws2_32 -lwinmm -lgdi32 -lole32 -Wl,--subsystem,windows M_LDFLAGS=$(GLLDFLAGS) $(IMAGELDFLAGS) $(CLIENTLDDEPS) -ldxguid -lws2_32 -lwinmm -lgdi32 -lole32 -Wl,--subsystem,windows
M_CFLAGS=$(GLCFLAGS) $(W32_CFLAGS) $(D3DCFLAGS) $(DX7SDK) $(VKCFLAGS) -DMULTITHREAD $(LIBVORBISFILE_STATIC) $(SPEEXCFLAGS) M_CFLAGS=$(GLCFLAGS) $(W32_CFLAGS) $(D3DCFLAGS) $(DX7SDK) $(VKCFLAGS) -DMULTITHREAD $(CLIENTLIBFLAGS) $(SPEEXCFLAGS)
MB_DIR=m_mgw$(BITS) MB_DIR=m_mgw$(BITS)
MCL_DIR=mcl_mgw$(BITS) MCL_DIR=mcl_mgw$(BITS)
D3DCL_OBJS=$(D3DQUAKE_OBJS) $(D3DGL_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) $(WINDOWS_OBJS) D3DCL_OBJS=$(D3DQUAKE_OBJS) $(D3DGL_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) $(WINDOWS_OBJS)
D3D_EXE_NAME=../fted3dqw$(BITS)$(EXEPOSTFIX) D3D_EXE_NAME=../fted3dqw$(BITS)$(EXEPOSTFIX)
D3DCL_EXE_NAME=../fted3dclqw$(BITS)$(EXEPOSTFIX) D3DCL_EXE_NAME=../fted3dclqw$(BITS)$(EXEPOSTFIX)
D3D_LDFLAGS=$(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) -ldxguid -lws2_32 -lwinmm -lgdi32 -lole32 -Wl,--subsystem,windows D3D_LDFLAGS=$(IMAGELDFLAGS) $(CLIENTLDDEPS) -ldxguid -lws2_32 -lwinmm -lgdi32 -lole32 -Wl,--subsystem,windows
D3D_CFLAGS=$(D3DCFLAGS) $(W32_CFLAGS) $(DX7SDK) -DMULTITHREAD $(LIBVORBISFILE_STATIC) $(SPEEXCFLAGS) D3D_CFLAGS=$(D3DCFLAGS) $(W32_CFLAGS) $(DX7SDK) -DMULTITHREAD $(CLIENTLIBFLAGS) $(SPEEXCFLAGS)
D3DB_DIR=d3d_mgw$(BITS) D3DB_DIR=d3d_mgw$(BITS)
D3DCL_DIR=d3dcl_mgw$(BITS) D3DCL_DIR=d3dcl_mgw$(BITS)
VKCL_OBJS=$(GLQUAKE_OBJS) $(D3DGL_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) $(WINDOWS_OBJS) gl_vidnt.o VKCL_OBJS=$(GLQUAKE_OBJS) $(D3DGL_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) $(WINDOWS_OBJS) gl_vidnt.o
VK_EXE_NAME=../ftevkqw$(BITS)$(EXEPOSTFIX) VK_EXE_NAME=../ftevkqw$(BITS)$(EXEPOSTFIX)
VKCL_EXE_NAME=../ftevkclqw$(BITS)$(EXEPOSTFIX) VKCL_EXE_NAME=../ftevkclqw$(BITS)$(EXEPOSTFIX)
VK_LDFLAGS=$(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) -ldxguid -lws2_32 -lwinmm -lgdi32 -lole32 -Wl,--subsystem,windows VK_LDFLAGS=$(IMAGELDFLAGS) $(CLIENTLDDEPS) -ldxguid -lws2_32 -lwinmm -lgdi32 -lole32 -Wl,--subsystem,windows
VK_CFLAGS=$(VKCFLAGS) $(W32_CFLAGS) $(DX7SDK) -DMULTITHREAD $(LIBVORBISFILE_STATIC) $(SPEEXCFLAGS) VK_CFLAGS=$(VKCFLAGS) $(W32_CFLAGS) $(DX7SDK) -DMULTITHREAD $(CLIENTLIBFLAGS) $(SPEEXCFLAGS)
VKB_DIR=vk_mgw$(BITS) VKB_DIR=vk_mgw$(BITS)
VKCL_DIR=vkcl_mgw$(BITS) VKCL_DIR=vkcl_mgw$(BITS)
@ -1291,7 +1307,7 @@ ifeq ($(FTE_TARGET),bsd)
MINGL_DIR=mingl_bsd MINGL_DIR=mingl_bsd
endif endif
ifneq (,$(findstring linux,$(FTE_TARGET))) ifneq (,$(findstring linux,$(FTE_TARGET)))
OGGVORBISLDFLAGS= CLIENTLDDEPS=
SV_DIR=sv_linux$(BITS) SV_DIR=sv_linux$(BITS)
SV_EXE_NAME=../$(EXE_NAME)-sv$(BITS) SV_EXE_NAME=../$(EXE_NAME)-sv$(BITS)
@ -1315,7 +1331,7 @@ ifneq (,$(findstring linux,$(FTE_TARGET)))
GLCL_OBJS=$(GL_OBJS) $(D3DGL_OBJS) $(GLQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_vidlinuxglx.o gl_videgl.o snd_alsa.o snd_linux.o snd_sdl.o cd_linux.o sys_linux.o sys_linux_threads.o GLCL_OBJS=$(GL_OBJS) $(D3DGL_OBJS) $(GLQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_vidlinuxglx.o gl_videgl.o snd_alsa.o snd_linux.o snd_sdl.o cd_linux.o sys_linux.o sys_linux_threads.o
GL_EXE_NAME=../$(EXE_NAME)-gl$(BITS) GL_EXE_NAME=../$(EXE_NAME)-gl$(BITS)
GLCL_EXE_NAME=../$(EXE_NAME)-glcl$(BITS) GLCL_EXE_NAME=../$(EXE_NAME)-glcl$(BITS)
GL_LDFLAGS=$(GLLDFLAGS) $(XLDFLAGS) $(OGGVORBISLDFLAGS) GL_LDFLAGS=$(GLLDFLAGS) $(XLDFLAGS) $(CLIENTLDDEPS)
GL_CFLAGS=$(GLCFLAGS) -I/usr/X11R6/include $(CL_CFLAGS) GL_CFLAGS=$(GLCFLAGS) -I/usr/X11R6/include $(CL_CFLAGS)
GLB_DIR=gl_linux$(BITS) GLB_DIR=gl_linux$(BITS)
GLCL_DIR=glcl_linux$(BITS) GLCL_DIR=glcl_linux$(BITS)
@ -1323,7 +1339,7 @@ ifneq (,$(findstring linux,$(FTE_TARGET)))
VKCL_OBJS=$(GL_OBJS) $(D3DGL_OBJS) $(GLQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_vidlinuxglx.o gl_videgl.o snd_alsa.o snd_linux.o snd_sdl.o cd_linux.o sys_linux.o sys_linux_threads.o VKCL_OBJS=$(GL_OBJS) $(D3DGL_OBJS) $(GLQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_vidlinuxglx.o gl_videgl.o snd_alsa.o snd_linux.o snd_sdl.o cd_linux.o sys_linux.o sys_linux_threads.o
VK_EXE_NAME=../$(EXE_NAME)-vk$(BITS) VK_EXE_NAME=../$(EXE_NAME)-vk$(BITS)
VKCL_EXE_NAME=../$(EXE_NAME)-vkcl$(BITS) VKCL_EXE_NAME=../$(EXE_NAME)-vkcl$(BITS)
VK_LDFLAGS=$(GLLDFLAGS) $(XLDFLAGS) $(OGGVORBISLDFLAGS) VK_LDFLAGS=$(GLLDFLAGS) $(XLDFLAGS) $(CLIENTLDDEPS)
VK_CFLAGS=$(VKCFLAGS) -I/usr/X11R6/include $(CL_CFLAGS) VK_CFLAGS=$(VKCFLAGS) -I/usr/X11R6/include $(CL_CFLAGS)
VKB_DIR=vk_linux$(BITS) VKB_DIR=vk_linux$(BITS)
VKCL_DIR=vkcl_linux$(BITS) VKCL_DIR=vkcl_linux$(BITS)
@ -1380,7 +1396,7 @@ ifneq ($(shell echo $(FTE_TARGET)|grep macosx),)
GLCL_DIR=glcl_macosx$(EXTENSION)$(BITS) GLCL_DIR=glcl_macosx$(EXTENSION)$(BITS)
MINGL_DIR=mingl_macosx$(EXTENSION)$(BITS) MINGL_DIR=mingl_macosx$(EXTENSION)$(BITS)
OGGVORBISLDFLAGS= CLIENTLDDEPS=
GL_CFLAGS=$(GLCFLAGS) -D__MACOSX__ -L/sw/lib -I/sw/include -L/opt/local/lib -I/opt/local/include -I$(LIBS_DIR) GL_CFLAGS=$(GLCFLAGS) -D__MACOSX__ -L/sw/lib -I/sw/include -L/opt/local/lib -I/opt/local/include -I$(LIBS_DIR)
ifeq ($(FTE_TARGET),macosx_x86) ifeq ($(FTE_TARGET),macosx_x86)
@ -1413,7 +1429,7 @@ ifeq ($(FTE_TARGET),morphos)
SV_DIR=sv_morphos SV_DIR=sv_morphos
SV_LDFLAGS=-ldl -lz SV_LDFLAGS=-ldl -lz
OGGVORBISLDFLAGS= CLIENTLDDEPS=
GLCL_OBJS=$(GL_OBJS) $(D3DGL_OBJS) $(GLQUAKE_OBJS) $(BOTLIB_OBJS) gl_vidmorphos.o in_morphos.o snd_morphos.o cd_null.o sys_morphos.o GLCL_OBJS=$(GL_OBJS) $(D3DGL_OBJS) $(GLQUAKE_OBJS) $(BOTLIB_OBJS) gl_vidmorphos.o in_morphos.o snd_morphos.o cd_null.o sys_morphos.o
GL_EXE_NAME=../$(EXE_NAME)-morphos-gl GL_EXE_NAME=../$(EXE_NAME)-morphos-gl
@ -1450,7 +1466,7 @@ ifeq ($(FTE_TARGET),dos)
VKCL_DIR=vkcl_dos VKCL_DIR=vkcl_dos
IMAGELDFLAGS= IMAGELDFLAGS=
OGGVORBISLDFLAGS= CLIENTLDDEPS=
SOFTWARE_OBJS=sw_rast.o sw_backend.o sw_image.o SOFTWARE_OBJS=sw_rast.o sw_backend.o sw_image.o
@ -1473,16 +1489,16 @@ ifeq ($(FTE_TARGET),cyg)
GLCL_OBJS=$(GL_OBJS) $(D3DGL_OBJS) $(GLQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_vidlinuxglx.o snd_linux.o cd_null.o sys_linux.o sys_linux_threads.o GLCL_OBJS=$(GL_OBJS) $(D3DGL_OBJS) $(GLQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_vidlinuxglx.o snd_linux.o cd_null.o sys_linux.o sys_linux_threads.o
GL_EXE_NAME=../$(EXE_NAME)-cyg-gl$(EXEPOSTFIX) GL_EXE_NAME=../$(EXE_NAME)-cyg-gl$(EXEPOSTFIX)
GLCL_EXE_NAME=../$(EXE_NAME)-cyg-glcl$(EXEPOSTFIX) GLCL_EXE_NAME=../$(EXE_NAME)-cyg-glcl$(EXEPOSTFIX)
GL_LDFLAGS=$(GLLDFLAGS) $(XLDFLAGS) $(OGGVORBISLDFLAGS) -lz -lltdl GL_LDFLAGS=$(GLLDFLAGS) $(XLDFLAGS) $(CLIENTLDDEPS) -lz -lltdl
GL_CFLAGS=$(GLCFLAGS) -I/usr/X11R6/include $(SPEEXCFLAGS) $(LIBVORBISFILE_STATIC) -DUSE_LIBTOOL GL_CFLAGS=$(GLCFLAGS) -I/usr/X11R6/include $(SPEEXCFLAGS) $(CLIENTLIBFLAGS) -DUSE_LIBTOOL
GLB_DIR=gl_cygwin GLB_DIR=gl_cygwin
GLCL_DIR=glcl_cygwin GLCL_DIR=glcl_cygwin
MCL_OBJS=$(D3DGL_OBJS) $(GLQUAKE_OBJS) $(SOFTWARE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_vidlinuxglx.o snd_linux.o cd_null.o sys_linux.o sys_linux_threads.o MCL_OBJS=$(D3DGL_OBJS) $(GLQUAKE_OBJS) $(SOFTWARE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_vidlinuxglx.o snd_linux.o cd_null.o sys_linux.o sys_linux_threads.o
M_EXE_NAME=../$(EXE_NAME)-cyg$(EXEPOSTFIX) M_EXE_NAME=../$(EXE_NAME)-cyg$(EXEPOSTFIX)
MCL_EXE_NAME=../$(EXE_NAME)-cyg-cl$(EXEPOSTFIX) MCL_EXE_NAME=../$(EXE_NAME)-cyg-cl$(EXEPOSTFIX)
M_LDFLAGS=$(GLLDFLAGS) $(XLDFLAGS) $(OGGVORBISLDFLAGS) -lz -lltdl M_LDFLAGS=$(GLLDFLAGS) $(XLDFLAGS) $(CLIENTLDDEPS) -lz -lltdl
M_CFLAGS=$(GLCFLAGS) $(SPEEXCFLAGS) $(LIBVORBISFILE_STATIC) -DUSE_LIBTOOL M_CFLAGS=$(GLCFLAGS) $(SPEEXCFLAGS) $(CLIENTLIBFLAGS) -DUSE_LIBTOOL
MB_DIR=m_cygwin MB_DIR=m_cygwin
MCL_DIR=mcl_cygwin MCL_DIR=mcl_cygwin
@ -1559,11 +1575,11 @@ ifeq ($(FTE_TARGET),web)
GLB_DIR=gl_web GLB_DIR=gl_web
GL_EXE_NAME=../ftewebgl.js GL_EXE_NAME=../ftewebgl.js
GL_LDFLAGS=$(GLLDFLAGS) $(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) GL_LDFLAGS=$(GLLDFLAGS) $(IMAGELDFLAGS) $(CLIENTLDDEPS)
GL_CFLAGS=$(GLCFLAGS) GL_CFLAGS=$(GLCFLAGS)
IMAGELDFLAGS= IMAGELDFLAGS=
OGGVORBISLDFLAGS= CLIENTLDDEPS=
BOTLIB_CFLAGS= BOTLIB_CFLAGS=
#generate deps properly #generate deps properly
@ -2111,7 +2127,9 @@ AR?=$(ARCH)-ar
CONFIGARGS+= -host=$(ARCH) --enable-shared=no CC="$(CC)" CONFIGARGS+= -host=$(ARCH) --enable-shared=no CC="$(CC)"
CONFIGARGS:= $(CONFIGARGS) CONFIGARGS:= $(CONFIGARGS)
#--disable-silent-rules #--disable-silent-rules
TOOLOVERRIDES+=CFLAGS="$$CFLAGS -Os"
libs-$(ARCH)/libjpeg.a: libs-$(ARCH)/libjpeg.a:
@ -2130,11 +2148,16 @@ libs-$(ARCH)/libogg.a:
test -f libogg-$(OGGVER).tar.gz || wget http://downloads.xiph.org/releases/ogg/libogg-$(OGGVER).tar.gz test -f libogg-$(OGGVER).tar.gz || wget http://downloads.xiph.org/releases/ogg/libogg-$(OGGVER).tar.gz
-test -f libs-$(ARCH)/libogg.a || (mkdir -p libs-$(ARCH) && cd libs-$(ARCH) && tar -xvzf ../libogg-$(OGGVER).tar.gz && cd libogg-$(OGGVER) && $(TOOLOVERRIDES) ./configure $(CONFIGARGS) && $(TOOLOVERRIDES) $(MAKE) && cp src/.libs/libogg.a ../ && $(TOOLOVERRIDES) $(AR) -s ../libogg.a && mkdir ../ogg && cp include/ogg/*.h ../ogg) -test -f libs-$(ARCH)/libogg.a || (mkdir -p libs-$(ARCH) && cd libs-$(ARCH) && tar -xvzf ../libogg-$(OGGVER).tar.gz && cd libogg-$(OGGVER) && $(TOOLOVERRIDES) ./configure $(CONFIGARGS) && $(TOOLOVERRIDES) $(MAKE) && cp src/.libs/libogg.a ../ && $(TOOLOVERRIDES) $(AR) -s ../libogg.a && mkdir ../ogg && cp include/ogg/*.h ../ogg)
libs-$(ARCH)/libvorbis.a: libs-$(ARCH)/libvorbis.a: libs-$(ARCH)/libogg.a
test -f libvorbis-$(VORBISVER).tar.gz || wget http://downloads.xiph.org/releases/vorbis/libvorbis-$(VORBISVER).tar.gz test -f libvorbis-$(VORBISVER).tar.gz || wget http://downloads.xiph.org/releases/vorbis/libvorbis-$(VORBISVER).tar.gz
-test -f libs-$(ARCH)/libvorbisfile.a || (mkdir -p libs-$(ARCH) && cd libs-$(ARCH) && tar -xvzf ../libvorbis-$(VORBISVER).tar.gz && cd libvorbis-$(VORBISVER) && $(TOOLOVERRIDES) ./configure PKG_CONFIG= $(CONFIGARGS) --disable-oggtest --with-ogg-libraries=.. --with-ogg-includes=$(NATIVE_ABSBASE_DIR)/libs-$(ARCH)/libogg-$(OGGVER)/include && $(TOOLOVERRIDES) $(MAKE) && cp lib/.libs/libvorbis.a ../ && cp lib/.libs/libvorbisfile.a ../ && mkdir ../vorbis && cp include/vorbis/*.h ../vorbis) -test -f libs-$(ARCH)/libvorbisfile.a || (mkdir -p libs-$(ARCH) && cd libs-$(ARCH) && tar -xvzf ../libvorbis-$(VORBISVER).tar.gz && cd libvorbis-$(VORBISVER) && $(TOOLOVERRIDES) ./configure PKG_CONFIG= $(CONFIGARGS) --disable-oggtest --with-ogg-libraries=.. --with-ogg-includes=$(NATIVE_ABSBASE_DIR)/libs-$(ARCH)/libogg-$(OGGVER)/include && $(TOOLOVERRIDES) $(MAKE) && cp lib/.libs/libvorbis.a ../ && cp lib/.libs/libvorbisfile.a ../ && mkdir ../vorbis && cp include/vorbis/*.h ../vorbis)
makelibs: libs-$(ARCH)/libjpeg.a libs-$(ARCH)/libz.a libs-$(ARCH)/libpng.a libs-$(ARCH)/libogg.a libs-$(ARCH)/libvorbis.a libs-$(ARCH)/libopus.a:
test -f opus-$(OPUSVER).tar.gz || wget https://archive.mozilla.org/pub/opus/opus-$(OPUSVER).tar.gz
-test -f libs-$(ARCH)/libopus.a || (mkdir -p libs-$(ARCH) && cd libs-$(ARCH) && tar -xvzf ../opus-$(OPUSVER).tar.gz && cd opus-$(OPUSVER) && CFLAGS="$(CFLAGS) -Os" $(TOOLOVERRIDES) ./configure $(CONFIGARGS) && $(TOOLOVERRIDES) $(MAKE) && cp .libs/libopus.a ../ && cp include/opus*.h ../)
makelibs: libs-$(ARCH)/libjpeg.a libs-$(ARCH)/libz.a libs-$(ARCH)/libpng.a libs-$(ARCH)/libogg.a libs-$(ARCH)/libvorbis.a libs-$(ARCH)/libopus.a
HTTP_OBJECTS=http/httpserver.c http/iwebiface.c common/fs_stdio.c HTTP_OBJECTS=http/httpserver.c http/iwebiface.c common/fs_stdio.c
$(RELEASE_DIR)/httpserver$(BITS): $(HTTP_OBJECTS) $(RELEASE_DIR)/httpserver$(BITS): $(HTTP_OBJECTS)

View file

@ -5911,7 +5911,7 @@ void CL_ExecInitialConfigs(char *resetcommand)
} }
else else
{ //they didn't give us an rc file! { //they didn't give us an rc file!
int cfg = COM_FDepthFile ("config.cfg", true); // int cfg = COM_FDepthFile ("config.cfg", true);
int q3cfg = COM_FDepthFile ("q3config.cfg", true); int q3cfg = COM_FDepthFile ("q3config.cfg", true);
// Cbuf_AddText ("bind ` toggleconsole\n", RESTRICT_LOCAL); //in case default.cfg does not exist. :( // Cbuf_AddText ("bind ` toggleconsole\n", RESTRICT_LOCAL); //in case default.cfg does not exist. :(
if (def!=FDEPTH_MISSING) if (def!=FDEPTH_MISSING)

View file

@ -1015,17 +1015,28 @@ static void QCBUILTIN PF_R_AddEntity(pubprogfuncs_t *prinst, struct globalvars_s
static void QCBUILTIN PF_R_RemoveEntity(pubprogfuncs_t *prinst, struct globalvars_s *pr_globals) static void QCBUILTIN PF_R_RemoveEntity(pubprogfuncs_t *prinst, struct globalvars_s *pr_globals)
{ {
csqcedict_t *in = (void*)G_EDICT(prinst, OFS_PARM0); csqcedict_t *in = (void*)G_EDICT(prinst, OFS_PARM0);
entity_t ent; int keynum, i;
if (ED_ISFREE(in) || in->entnum == 0) if (ED_ISFREE(in) || in->entnum == 0)
{ {
csqc_deprecated("Tried drawing a free/removed/world entity\n"); csqc_deprecated("Tried drawing a free/removed/world entity\n");
return; return;
} }
if (CopyCSQCEdictToEntity(in, &ent)) //work out the internal key that relates to the given ent. we'll remove all ents with the same key.
if (in->xv->entnum && !in->xv->camera_transform) //yes, camera_transform is this hacky
keynum = in->xv->entnum;
else
keynum = -in->entnum;
for (i = 0; i < cl_numvisedicts; )
{ {
CLQ1_AddShadow(&ent); if (cl_visedicts[i].keynum == keynum)
V_AddAxisEntity(&ent); {
cl_numvisedicts--;
memmove(&cl_visedicts[i], &cl_visedicts[i+1], sizeof(*cl_visedicts)*(cl_numvisedicts-i));
}
else
i++;
} }
} }
void CL_AddDecal(shader_t *shader, vec3_t origin, vec3_t up, vec3_t side, vec3_t rgbvalue, float alphavalue); void CL_AddDecal(shader_t *shader, vec3_t origin, vec3_t up, vec3_t side, vec3_t rgbvalue, float alphavalue);
@ -6052,7 +6063,7 @@ static struct {
{"clearscene", PF_R_ClearScene, 300}, // #300 void() clearscene (EXT_CSQC) {"clearscene", PF_R_ClearScene, 300}, // #300 void() clearscene (EXT_CSQC)
{"addentities", PF_R_AddEntityMask, 301}, // #301 void(float mask) addentities (EXT_CSQC) {"addentities", PF_R_AddEntityMask, 301}, // #301 void(float mask) addentities (EXT_CSQC)
{"addentity", PF_R_AddEntity, 302}, // #302 void(entity ent) addentity (EXT_CSQC) {"addentity", PF_R_AddEntity, 302}, // #302 void(entity ent) addentity (EXT_CSQC)
// {"removeentity", PF_R_RemoveEntity, 0}, {"removeentity", PF_R_RemoveEntity, 0},
{"setproperty", PF_R_SetViewFlag, 303}, // #303 float(float property, ...) setproperty (EXT_CSQC) {"setproperty", PF_R_SetViewFlag, 303}, // #303 float(float property, ...) setproperty (EXT_CSQC)
{"renderscene", PF_R_RenderScene, 304}, // #304 void() renderscene (EXT_CSQC) {"renderscene", PF_R_RenderScene, 304}, // #304 void() renderscene (EXT_CSQC)

View file

@ -2297,6 +2297,7 @@ static qboolean CModRBSP_LoadVertexes (model_t *mod, qbyte *mod_base, lump_t *l)
vec2_t *lmout, *stout; vec2_t *lmout, *stout;
vec4_t *cout; vec4_t *cout;
int sty; int sty;
extern qbyte lmgamma[256];
in = (void *)(mod_base + l->fileofs); in = (void *)(mod_base + l->fileofs);
if (l->filelen % sizeof(*in)) if (l->filelen % sizeof(*in))
@ -2346,10 +2347,10 @@ static qboolean CModRBSP_LoadVertexes (model_t *mod, qbyte *mod_base, lump_t *l)
} }
for (sty = 0; sty < MAXRLIGHTMAPS; sty++) for (sty = 0; sty < MAXRLIGHTMAPS; sty++)
{ {
for ( j=0 ; j < 4 ; j++) prv->colors4f_array[sty][i][0] = lmgamma[in->color[sty][0]]/255.0f;
{ prv->colors4f_array[sty][i][1] = lmgamma[in->color[sty][1]]/255.0f;
prv->colors4f_array[sty][i][j] = in->color[sty][j]/255.0f; prv->colors4f_array[sty][i][2] = lmgamma[in->color[sty][2]]/255.0f;
} prv->colors4f_array[sty][i][3] = in->color[sty][3]/255.0f;
} }
} }

View file

@ -34,8 +34,28 @@ void PF_buf_shutdown(pubprogfuncs_t *prinst);
void skel_info_f(void); void skel_info_f(void);
void skel_generateragdoll_f(void); void skel_generateragdoll_f(void);
#ifdef __SSE2__
#include "xmmintrin.h"
#endif
void PF_Common_RegisterCvars(void) void PF_Common_RegisterCvars(void)
{ {
#ifndef QUAKETC
#ifdef __SSE2__
//disable FTZ and DAZ, in case some compiler left them on...
unsigned int mxcsr = _mm_getcsr();
if (mxcsr & 0x8040)
{
if (COM_CheckParm("-nodaz"))
{
Con_Printf("Disabling DAZ. This may have performance implications.\n");
_mm_setcsr(mxcsr & ~(0x8040));
}
else
Con_Printf(CON_WARNING "WARNING: denormalised floats are disabled. Use -nodaz to re-enable if mods malfunction\n");
}
#else
volatile union volatile union
{ {
int i; int i;
@ -45,6 +65,8 @@ void PF_Common_RegisterCvars(void)
b.i = 1; b.i = 1;
if (!(a.f && b.f)) if (!(a.f && b.f))
Con_Printf(CON_WARNING "WARNING: denormalised floats are disabled. Some mods might may malfunction\n"); Con_Printf(CON_WARNING "WARNING: denormalised floats are disabled. Some mods might may malfunction\n");
#endif
#endif
Cvar_Register (&sv_gameplayfix_blowupfallenzombies, cvargroup_progs); Cvar_Register (&sv_gameplayfix_blowupfallenzombies, cvargroup_progs);

View file

@ -214,6 +214,7 @@ typedef struct
int mipfilter[3]; int mipfilter[3];
int picfilter[3]; int picfilter[3];
D3DSAMPLERSTATETYPE anisfilter;
} d3dbackend_t; } d3dbackend_t;
typedef struct typedef struct
@ -290,17 +291,17 @@ static void BE_ApplyTMUState(unsigned int tu, unsigned int flags)
int *filter = (flags & SHADER_PASS_UIPIC)?shaderstate.picfilter:shaderstate.mipfilter; int *filter = (flags & SHADER_PASS_UIPIC)?shaderstate.picfilter:shaderstate.mipfilter;
if ((filter[2] && !(flags & SHADER_PASS_NEAREST)) || (flags & SHADER_PASS_LINEAR)) if ((filter[2] && !(flags & SHADER_PASS_NEAREST)) || (flags & SHADER_PASS_LINEAR))
mag = D3DTEXF_ANISOTROPIC;//D3DTEXF_LINEAR; mag = shaderstate.anisfilter;
else else
mag = D3DTEXF_POINT; mag = D3DTEXF_POINT;
if (filter[1] == -1 || (flags & IF_NOMIPMAP)) if (filter[1] == -1 || (flags & IF_NOMIPMAP))
mip = D3DTEXF_NONE; mip = D3DTEXF_NONE;
else if ((filter[1] && !(flags & SHADER_PASS_NEAREST)) || (flags & SHADER_PASS_LINEAR)) else if ((filter[1] && !(flags & SHADER_PASS_NEAREST)) || (flags & SHADER_PASS_LINEAR))
mip = D3DTEXF_ANISOTROPIC;//D3DTEXF_LINEAR; mip = D3DTEXF_LINEAR;
else else
mip = D3DTEXF_POINT; mip = D3DTEXF_POINT;
if ((filter[0] && !(flags & SHADER_PASS_NEAREST)) || (flags & SHADER_PASS_LINEAR)) if ((filter[0] && !(flags & SHADER_PASS_NEAREST)) || (flags & SHADER_PASS_LINEAR))
min = D3DTEXF_ANISOTROPIC;//D3DTEXF_LINEAR; min = shaderstate.anisfilter;
else else
min = D3DTEXF_POINT; min = D3DTEXF_POINT;
@ -317,13 +318,21 @@ void D3D9_UpdateFiltering(image_t *imagelist, int filtermip[3], int filterpic[3]
int i; int i;
memcpy(shaderstate.mipfilter, filtermip, sizeof(shaderstate.mipfilter)); memcpy(shaderstate.mipfilter, filtermip, sizeof(shaderstate.mipfilter));
memcpy(shaderstate.picfilter, filterpic, sizeof(shaderstate.picfilter)); memcpy(shaderstate.picfilter, filterpic, sizeof(shaderstate.picfilter));
if (anis <= 1)
{
anis = 1;
shaderstate.anisfilter = D3DTEXF_LINEAR;
}
else
shaderstate.anisfilter = D3DTEXF_ANISOTROPIC;
for (i = 0; i < MAX_TMUS; i++) for (i = 0; i < MAX_TMUS; i++)
{ {
shaderstate.tmuflags[i] = ~shaderstate.tmuflags[i];
BE_ApplyTMUState(i, ~shaderstate.tmuflags[i]);
IDirect3DDevice9_SetSamplerState(pD3DDev9, i, D3DSAMP_MAXANISOTROPY, anis); IDirect3DDevice9_SetSamplerState(pD3DDev9, i, D3DSAMP_MAXANISOTROPY, anis);
// IDirect3DDevice9_SetSamplerState(pD3DDev9, i, D3DSAMP_MIPMAPLODBIAS, 0); //negative lod bias? :s
// shaderstate.tmuflags[i] = ~shaderstate.tmuflags[i];
BE_ApplyTMUState(i, ~shaderstate.tmuflags[i]);
} }
} }
@ -1440,7 +1449,7 @@ static void GenerateTCMods3(const shaderpass_t *pass, float *dest)
mesh_t *mesh; mesh_t *mesh;
unsigned int mno; unsigned int mno;
// unsigned int fvertex = 0; //unused variable // unsigned int fvertex = 0; //unused variable
int i; // int i;
float *src; float *src;
float *out; float *out;
for (mno = 0; mno < shaderstate.nummeshes; mno++) for (mno = 0; mno < shaderstate.nummeshes; mno++)

View file

@ -1712,24 +1712,49 @@ struct font_s *Font_LoadFont(float vheight, const char *fontfilename)
COM_WorkerPartialSync(f->singletexture, &f->singletexture->status, TEX_LOADING); COM_WorkerPartialSync(f->singletexture, &f->singletexture->status, TEX_LOADING);
} }
for ( ; i < 32; i++) //halflife fonts are awkward. 256 chars are placed horizontally, and are 2 chars narrower than the height.
//FIXME: we ought to reprocess the image, for old gpus to avoid downscaling...
/*if (f->singletexture && f->singletexture->status == TEX_LOADED && f->singletexture->width == (f->singletexture->height-2) * 256)
{ {
// f->chars[i].texplane = INVALIDPLANE; f->txwidth = f->singletexture->width;
} f->txheight = f->singletexture->height;
/*force it to load, even if there's nothing there*/ for ( ; i < 256; i++)
for ( ; i < 128; i++) {
{ c = Font_GetCharStore(f, i);
c = Font_GetCharStore(f, i);
c->advance = f->charheight; c->advance = f->charheight;
c->bmh = PLANEWIDTH/16; c->bmh = f->singletexture->height;
c->bmw = PLANEWIDTH/16; c->bmw = f->singletexture->height-2;
c->bmx = (i&15)*(PLANEWIDTH/16); c->bmx = i*(f->singletexture->height-2);
c->bmy = (i/16)*(PLANEWIDTH/16); c->bmy = 0;
c->left = 0; c->left = 0;
c->top = 0; c->top = 0;
c->nextchar = 0; //these chars are not linked in c->nextchar = 0; //these chars are not linked in
c->texplane = BITMAPPLANE; c->texplane = BITMAPPLANE;
}
return f; //fixme: no 0xe0XX range
}
else*/
{
for ( ; i < 32; i++)
{
// f->chars[i].texplane = INVALIDPLANE;
}
/*force it to load, even if there's nothing there*/
for ( ; i < 128; i++)
{
c = Font_GetCharStore(f, i);
c->advance = f->charheight;
c->bmh = PLANEWIDTH/16;
c->bmw = PLANEWIDTH/16;
c->bmx = (i&15)*(PLANEWIDTH/16);
c->bmy = (i/16)*(PLANEWIDTH/16);
c->left = 0;
c->top = 0;
c->nextchar = 0; //these chars are not linked in
c->texplane = BITMAPPLANE;
}
} }
} }
@ -2108,7 +2133,8 @@ void Font_InvalidateColour(vec4_t newcolour)
if (font_colourmask & CON_NONCLEARBG) if (font_colourmask & CON_NONCLEARBG)
{ {
Font_Flush(); if (R2D_Flush)
R2D_Flush();
R2D_Flush = Font_Flush; R2D_Flush = Font_Flush;
} }
font_colourmask = CON_WHITEMASK; font_colourmask = CON_WHITEMASK;

View file

@ -3093,10 +3093,15 @@ QCC_sref_t QCC_PR_StatementFlags ( QCC_opcode_t *op, QCC_sref_t var_a, QCC_sref_
case OP_ADD_EF: case OP_ADD_EF:
case OP_SUB_EF: case OP_SUB_EF:
if (flag_qccx) //no implicit cast. qccx always uses denormalised floats everywhere. if (flag_qccx) //no implicit cast. qccx always uses denormalised floats everywhere.
QCC_PR_ParseWarning(WARN_DENORMAL, "OP_ADD_EF: qccx entity offsets are unsafe, and denormals have limited precision"); QCC_PR_ParseWarning(WARN_DENORMAL, "OP_ADD_EF: qccx entity offsets are unsafe, and denormals are unsafe");
else if (1)
{ //slightly better defined.
var_b = QCC_PR_StatementFlags(&pr_opcodes[OP_CONV_FTOI], var_b, nullsref, NULL, (flags&STFL_PRESERVEB)?STFL_PRESERVEA:0);
return QCC_PR_StatementFlags(&pr_opcodes[(op==&pr_opcodes[OP_ADD_EF])?OP_ADD_EI:OP_SUB_EI], var_a, var_b, NULL, flags&STFL_PRESERVEA);
}
else else
{ {
QCC_PR_ParseWarning(WARN_DENORMAL, "OP_ADD_EF: denormals have limited precision"); QCC_PR_ParseWarning(WARN_DENORMAL, "OP_ADD_EF: denormals are unsafe");
var_c = QCC_PR_GetSRef(NULL, "nextent", NULL, false, 0, false); var_c = QCC_PR_GetSRef(NULL, "nextent", NULL, false, 0, false);
if (!var_c.cast) if (!var_c.cast)
QCC_PR_ParseError(0, "the nextent builtin is not defined"); QCC_PR_ParseError(0, "the nextent builtin is not defined");
@ -3105,7 +3110,7 @@ QCC_sref_t QCC_PR_StatementFlags ( QCC_opcode_t *op, QCC_sref_t var_a, QCC_sref_
var_b = QCC_PR_StatementFlags(&pr_opcodes[OP_MUL_F], var_c, var_b, NULL, 0); var_b = QCC_PR_StatementFlags(&pr_opcodes[OP_MUL_F], var_c, var_b, NULL, 0);
flags&=~STFL_PRESERVEB; flags&=~STFL_PRESERVEB;
} }
var_c = QCC_PR_StatementFlags(&pr_opcodes[(op==&pr_opcodes[OP_ADD_EF])?OP_ADD_F:OP_SUB_F], var_a, var_b, NULL, flags); var_c = QCC_PR_StatementFlags(&pr_opcodes[(op==&pr_opcodes[OP_ADD_EF])?OP_ADD_IF:OP_SUB_F], var_a, var_b, NULL, flags);
var_c.cast = type_entity; var_c.cast = type_entity;
return var_c; return var_c;
@ -3346,8 +3351,8 @@ QCC_sref_t QCC_PR_StatementFlags ( QCC_opcode_t *op, QCC_sref_t var_a, QCC_sref_
var_c = QCC_PR_GetSRef(NULL, "itof", NULL, false, 0, 0); var_c = QCC_PR_GetSRef(NULL, "itof", NULL, false, 0, 0);
if (!var_c.cast) if (!var_c.cast)
{ {
//with denormals, 5 * 1i -> 5i //with denormals, 5.0 * 1i -> 5i, and 5i / 1i = 5.0
QCC_PR_ParseWarning(WARN_DENORMAL, "itof emulation: denormals have limited precision"); QCC_PR_ParseWarning(WARN_DENORMAL, "itof emulation: denormals are unsafe");
var_a = QCC_PR_StatementFlags(&pr_opcodes[OP_DIV_F], var_a, QCC_MakeIntConst(1), NULL, 0); var_a = QCC_PR_StatementFlags(&pr_opcodes[OP_DIV_F], var_a, QCC_MakeIntConst(1), NULL, 0);
} }
else else
@ -3373,7 +3378,7 @@ QCC_sref_t QCC_PR_StatementFlags ( QCC_opcode_t *op, QCC_sref_t var_a, QCC_sref_
if (!var_c.cast) if (!var_c.cast)
{ {
//with denormals, 5 * 1i -> 5i //with denormals, 5 * 1i -> 5i
QCC_PR_ParseWarning(WARN_DENORMAL, "ftoi emulation: denormals have limited precision"); QCC_PR_ParseWarning(WARN_DENORMAL, "ftoi emulation: denormals are unsafe");
var_a = QCC_PR_StatementFlags(&pr_opcodes[OP_MUL_F], var_a, QCC_MakeIntConst(1), NULL, 0); var_a = QCC_PR_StatementFlags(&pr_opcodes[OP_MUL_F], var_a, QCC_MakeIntConst(1), NULL, 0);
} }
else else
@ -5962,14 +5967,14 @@ QCC_sref_t QCC_PR_ParseFunctionCall (QCC_ref_t *funcref) //warning, the func cou
e = QCC_PR_Expression(TOP_PRIORITY, EXPR_DISALLOW_COMMA); e = QCC_PR_Expression(TOP_PRIORITY, EXPR_DISALLOW_COMMA);
QCC_PR_Expect(")"); QCC_PR_Expect(")");
e = QCC_PR_StatementFlags(&pr_opcodes[OP_DIV_F], e, QCC_MakeIntConst(1), NULL, 0); e = QCC_PR_StatementFlags(&pr_opcodes[OP_DIV_I], e, QCC_MakeIntConst(1), NULL, 0);
d = QCC_PR_GetSRef(NULL, "nextent", NULL, false, 0, false); d = QCC_PR_GetSRef(NULL, "nextent", NULL, false, 0, false);
if (!d.cast) if (!d.cast)
QCC_PR_ParseError(0, "the nextent builtin is not defined"); QCC_PR_ParseError(0, "the nextent builtin is not defined");
QCC_UnFreeTemp(e); QCC_UnFreeTemp(e);
d = QCC_PR_GenerateFunctionCall1 (nullsref, d, e, type_entity); d = QCC_PR_GenerateFunctionCall1 (nullsref, d, e, type_entity);
d = QCC_PR_StatementFlags(&pr_opcodes[OP_DIV_F], d, QCC_MakeIntConst(1), NULL, 0); d = QCC_PR_StatementFlags(&pr_opcodes[OP_DIV_I], d, QCC_MakeIntConst(1), NULL, 0);
e = QCC_PR_StatementFlags(&pr_opcodes[OP_DIV_F], e, d, NULL, 0); e = QCC_PR_StatementFlags(&pr_opcodes[OP_DIV_I], e, d, NULL, 0);
return e; return e;
} }
@ -6997,7 +7002,7 @@ QCC_ref_t *QCC_PR_ParseRefArrayPointer (QCC_ref_t *retbuf, QCC_ref_t *r, pbool a
QCC_sref_t base = QCC_RefToDef(r, true); QCC_sref_t base = QCC_RefToDef(r, true);
if (tmp.cast && tmp.cast->type == ev_float) if (tmp.cast && tmp.cast->type == ev_float)
{ {
QCC_PR_ParseWarning(WARN_DENORMAL, "string offsetting emulation: denormals have limited precision"); QCC_PR_ParseWarning(WARN_DENORMAL, "string offsetting emulation: denormals are unsafe");
idx = QCC_PR_Statement(&pr_opcodes[OP_ADD_F], base, QCC_SupplyConversion(tmp, ev_float, true), NULL); idx = QCC_PR_Statement(&pr_opcodes[OP_ADD_F], base, QCC_SupplyConversion(tmp, ev_float, true), NULL);
} }
else else
@ -8655,7 +8660,7 @@ QCC_sref_t QCC_LoadFromArray(QCC_sref_t base, QCC_sref_t index, QCC_type_t *t, p
return QCC_PR_StatementFlags(&pr_opcodes[OP_ADD_I], base, index, NULL, 0); return QCC_PR_StatementFlags(&pr_opcodes[OP_ADD_I], base, index, NULL, 0);
else else
{ {
QCC_PR_ParseWarning(WARN_DENORMAL, "using denormals to accelerate field-array access"); QCC_PR_ParseWarning(WARN_DENORMAL, "using denormals to accelerate field-array access, which is unsafe");
return QCC_PR_StatementFlags(&pr_opcodes[OP_ADD_F], base, QCC_PR_StatementFlags(&pr_opcodes[OP_MUL_F], index, QCC_MakeIntConst(1), NULL, 0), NULL, 0); return QCC_PR_StatementFlags(&pr_opcodes[OP_ADD_F], base, QCC_PR_StatementFlags(&pr_opcodes[OP_MUL_F], index, QCC_MakeIntConst(1), NULL, 0), NULL, 0);
} }
} }

View file

@ -4438,20 +4438,21 @@ void QCC_SetDefaultProperties (void)
qccwarningaction[i] = WA_ERROR; qccwarningaction[i] = WA_ERROR;
//play with default warnings. //play with default warnings.
qccwarningaction[WARN_NOTREFERENCEDCONST] = WA_IGNORE; qccwarningaction[WARN_NOTREFERENCEDCONST] = WA_IGNORE;
qccwarningaction[WARN_MACROINSTRING] = WA_IGNORE; qccwarningaction[WARN_MACROINSTRING] = WA_IGNORE;
// qccwarningaction[WARN_ASSIGNMENTTOCONSTANT] = WA_IGNORE; // qccwarningaction[WARN_ASSIGNMENTTOCONSTANT] = WA_IGNORE;
qccwarningaction[WARN_EXTRAPRECACHE] = WA_IGNORE; qccwarningaction[WARN_EXTRAPRECACHE] = WA_IGNORE;
qccwarningaction[WARN_DEADCODE] = WA_IGNORE; qccwarningaction[WARN_DEADCODE] = WA_IGNORE;
qccwarningaction[WARN_FTE_SPECIFIC] = WA_IGNORE; qccwarningaction[WARN_FTE_SPECIFIC] = WA_IGNORE;
qccwarningaction[WARN_EXTENSION_USED] = WA_IGNORE; qccwarningaction[WARN_EXTENSION_USED] = WA_IGNORE;
qccwarningaction[WARN_IFSTRING_USED] = WA_IGNORE; qccwarningaction[WARN_IFSTRING_USED] = WA_IGNORE;
qccwarningaction[WARN_CORRECTEDRETURNTYPE] = WA_IGNORE; qccwarningaction[WARN_CORRECTEDRETURNTYPE] = WA_IGNORE;
qccwarningaction[WARN_NOTUTF8] = WA_IGNORE; qccwarningaction[WARN_NOTUTF8] = WA_IGNORE;
qccwarningaction[WARN_UNINITIALIZED] = WA_IGNORE; //not sure about this being ignored by default. qccwarningaction[WARN_UNINITIALIZED] = WA_IGNORE; //not sure about this being ignored by default.
qccwarningaction[WARN_SELFNOTTHIS] = WA_IGNORE; qccwarningaction[WARN_SELFNOTTHIS] = WA_IGNORE;
qccwarningaction[WARN_EVILPREPROCESSOR] = WA_WARN;//FIXME: make into WA_ERROR; qccwarningaction[WARN_EVILPREPROCESSOR] = WA_ERROR; //evil people do evil things. evil must be thwarted!
qccwarningaction[WARN_IDENTICALPRECOMPILER] = WA_IGNORE; qccwarningaction[WARN_IDENTICALPRECOMPILER] = WA_IGNORE;
qccwarningaction[WARN_DENORMAL] = WA_ERROR; //DAZ provides a speedup on modern machines, so any engine compiled for sse2+ will have problems with denormals, so make their use look serious.
if (qcc_targetformat == QCF_HEXEN2 || qcc_targetformat == QCF_FTEH2) if (qcc_targetformat == QCF_HEXEN2 || qcc_targetformat == QCF_FTEH2)
qccwarningaction[WARN_CASEINSENSITIVEFRAMEMACRO] = WA_IGNORE; //hexenc consides these fair game. qccwarningaction[WARN_CASEINSENSITIVEFRAMEMACRO] = WA_IGNORE; //hexenc consides these fair game.

View file

@ -10276,7 +10276,7 @@ BuiltinList_t BuiltinList[] = { //nq qw h2 ebfs
{"pointerstat", PF_pointerstat, 0, 0, 0, 0, D("void(float num, float type, __variant *address)", "Specifies what data to use in order to send various stats, in a non-client-specific way. num and type are as in clientstat, address however, is the address of the variable you would like to use (pass &foo).")}, {"pointerstat", PF_pointerstat, 0, 0, 0, 0, D("void(float num, float type, __variant *address)", "Specifies what data to use in order to send various stats, in a non-client-specific way. num and type are as in clientstat, address however, is the address of the variable you would like to use (pass &foo).")},
//END EXT_CSQC //END EXT_CSQC
{"isbackbuffered", PF_isbackbuffered, 0, 0, 0, 234, D("float(entity player)", "Returns if the given player's network buffer will take multiple network frames in order to clear. If this builtin returns non-zero, you should delay or reduce the amount of reliable (and also unreliable) data that you are sending to that client.")}, {"isbackbuffered", PF_isbackbuffered, 0, 0, 0, 234, D("float(entity player)", "Returns if the given player's network buffer will take multiple network frames in order to clear. If this builtin returns non-zero, you should delay or reduce the amount of reliable (and also unreliable) data that you are sending to that client.")},
{"rotatevectorsbyangle",PF_rotatevectorsbyangles,0,0, 0, 235, "void(vector angle)"}, // #235 {"rotatevectorsbyangle",PF_rotatevectorsbyangles,0,0, 0, 235, D("void(vector angle)", "rotates the v_forward,v_right,v_up matrix by the specified angles.")}, // #235
{"rotatevectorsbyvectors",PF_rotatevectorsbymatrix,0,0, 0, 236, "void(vector fwd, vector right, vector up)"}, // #236 {"rotatevectorsbyvectors",PF_rotatevectorsbymatrix,0,0, 0, 236, "void(vector fwd, vector right, vector up)"}, // #236
{"skinforname", PF_skinforname, 0, 0, 0, 237, "float(float mdlindex, string skinname)"}, // #237 {"skinforname", PF_skinforname, 0, 0, 0, 237, "float(float mdlindex, string skinname)"}, // #237
{"shaderforname", PF_Fixme, 0, 0, 0, 238, D("float(string shadername, optional string defaultshader, ...)", "Caches the named shader and returns a handle to it.\nIf the shader could not be loaded from disk (missing file or ruleset_allow_shaders 0), it will be created from the 'defaultshader' string if specified, or a 'skin shader' default will be used.\ndefaultshader if not empty should include the outer {} that you would ordinarily find in a shader.")}, {"shaderforname", PF_Fixme, 0, 0, 0, 238, D("float(string shadername, optional string defaultshader, ...)", "Caches the named shader and returns a handle to it.\nIf the shader could not be loaded from disk (missing file or ruleset_allow_shaders 0), it will be created from the 'defaultshader' string if specified, or a 'skin shader' default will be used.\ndefaultshader if not empty should include the outer {} that you would ordinarily find in a shader.")},
@ -10387,7 +10387,7 @@ BuiltinList_t BuiltinList[] = { //nq qw h2 ebfs
{"clearscene", PF_Fixme, 0, 0, 0, 300, D("void()", "Forgets all rentities, polygons, and temporary dlights. Resets all view properties to their default values.")},// (EXT_CSQC) {"clearscene", PF_Fixme, 0, 0, 0, 300, D("void()", "Forgets all rentities, polygons, and temporary dlights. Resets all view properties to their default values.")},// (EXT_CSQC)
{"addentities", PF_Fixme, 0, 0, 0, 301, D("void(float mask)", "Walks through all entities effectively doing this:\n if (ent.drawmask&mask){ if (!ent.predaw()) addentity(ent); }\nIf mask&MASK_DELTA, non-csqc entities, particles, and related effects will also be added to the rentity list.\n If mask&MASK_STDVIEWMODEL then the default view model will also be added.")},// (EXT_CSQC) {"addentities", PF_Fixme, 0, 0, 0, 301, D("void(float mask)", "Walks through all entities effectively doing this:\n if (ent.drawmask&mask){ if (!ent.predaw()) addentity(ent); }\nIf mask&MASK_DELTA, non-csqc entities, particles, and related effects will also be added to the rentity list.\n If mask&MASK_STDVIEWMODEL then the default view model will also be added.")},// (EXT_CSQC)
{"addentity", PF_Fixme, 0, 0, 0, 302, D("void(entity ent)", "Copies the entity fields into a new rentity for later rendering via addscene.")},// (EXT_CSQC) {"addentity", PF_Fixme, 0, 0, 0, 302, D("void(entity ent)", "Copies the entity fields into a new rentity for later rendering via addscene.")},// (EXT_CSQC)
{"removeentity", PF_Fixme, 0, 0, 0, 0, D("void(entity ent)", "Undoes all addentities with that entity, without removing ALL entities (useful for splitscreen).")},// (EXT_CSQC) {"removeentity", PF_Fixme, 0, 0, 0, 0, D("void(entity ent)", "Undoes all addentities added to the scene from the given entity, without removing ALL entities (useful for splitscreen/etc, readd modified versions as desired).")},// (EXT_CSQC)
{"addtrisoup_simple",PF_Fixme, 0, 0, 0, 0, D("typedef float vec2[2];\ntypedef float vec3[3];\ntypedef float vec4[4];\ntypedef struct trisoup_simple_vert_s {vec3 xyz;vec2 st;vec4 rgba;} trisoup_simple_vert_t;\nvoid(string texturename, int flags, struct trisoup_simple_vert_s *verts, int *indexes, int numindexes)", "Adds the specified trisoup into the scene as additional geometry. This permits caching geometry to reduce builtin spam. Indexes are a triangle list (so eg quads will need 6 indicies to form two triangles). NOTE: this is not going to be a speedup over polygons if you're still generating lots of new data every frame.")}, {"addtrisoup_simple",PF_Fixme, 0, 0, 0, 0, D("typedef float vec2[2];\ntypedef float vec3[3];\ntypedef float vec4[4];\ntypedef struct trisoup_simple_vert_s {vec3 xyz;vec2 st;vec4 rgba;} trisoup_simple_vert_t;\nvoid(string texturename, int flags, struct trisoup_simple_vert_s *verts, int *indexes, int numindexes)", "Adds the specified trisoup into the scene as additional geometry. This permits caching geometry to reduce builtin spam. Indexes are a triangle list (so eg quads will need 6 indicies to form two triangles). NOTE: this is not going to be a speedup over polygons if you're still generating lots of new data every frame.")},
{"setproperty", PF_Fixme, 0, 0, 0, 303, D("#define setviewprop setproperty\nfloat(float property, ...)", "Allows you to override default view properties like viewport, fov, and whether the engine hud will be drawn. Different VF_ values have slightly different arguments, some are vectors, some floats.")},// (EXT_CSQC) {"setproperty", PF_Fixme, 0, 0, 0, 303, D("#define setviewprop setproperty\nfloat(float property, ...)", "Allows you to override default view properties like viewport, fov, and whether the engine hud will be drawn. Different VF_ values have slightly different arguments, some are vectors, some floats.")},// (EXT_CSQC)
{"renderscene", PF_Fixme, 0, 0, 0, 304, D("void()", "Draws all entities, polygons, and particles on the rentity list (which were added via addentities or addentity), using the various view properties set via setproperty. There is no ordering dependancy.\nThe scene must generally be cleared again before more entities are added, as entities will persist even over to the next frame.\nYou may call this builtin multiple times per frame, but should only be called from CSQC_UpdateView.")},// (EXT_CSQC) {"renderscene", PF_Fixme, 0, 0, 0, 304, D("void()", "Draws all entities, polygons, and particles on the rentity list (which were added via addentities or addentity), using the various view properties set via setproperty. There is no ordering dependancy.\nThe scene must generally be cleared again before more entities are added, as entities will persist even over to the next frame.\nYou may call this builtin multiple times per frame, but should only be called from CSQC_UpdateView.")},// (EXT_CSQC)