You can subscribe to this list here.
1999 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(535) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2000 |
Jan
(1127) |
Feb
(362) |
Mar
(529) |
Apr
(752) |
May
(487) |
Jun
(329) |
Jul
(190) |
Aug
(115) |
Sep
(53) |
Oct
(52) |
Nov
(345) |
Dec
(203) |
2001 |
Jan
(240) |
Feb
(317) |
Mar
(212) |
Apr
(57) |
May
(151) |
Jun
(70) |
Jul
(82) |
Aug
(23) |
Sep
(56) |
Oct
(35) |
Nov
(22) |
Dec
(60) |
2002 |
Jan
(33) |
Feb
(21) |
Mar
(16) |
Apr
(14) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2003 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Bob <ma...@mb...> - 2002-01-26 05:28:39
|
>> Yes I know software rendering is what folks might call "legacy" support and a good argument could be made for improving it as little as necessary, but I am curious to find out if anyone thinks it would be worthwhile to implement some of the basic software rendering enhancements found in Quake2 in the Quake1 based QuakeForge engine. >> Specifically I am thinking of transparent water and skyboxes, since these being OpenGL-only features complicates the art path of future games using the Quake engine (which is what I'm working on.) >> I can't dismiss the need for software rendering because I just happen to have one of those graphics cards which does not have freeware or open source 3d acceleration drivers (I think commercial drivers are more expensive than the card itself now and I don't know how well they work). >> Would the Quake2 source have any useful code for implementing these features, or are the engines just too different? It's not just drivers but that so many Open Source GL projects (nobody here though, surely... ahem) use methods that aren't supported by (and can even cause serious problems with) many consumer level graphics cards. So if you are sticking with the Q1 codebase (instead of hybridizing the two engines or migrating your enhancements to the Q2 source foundation), I think it would be a pretty good idea to look at the Q2 software renderer. Merging features of Q2 is apparrently possible, since I see hybids like MHQuake <http://mhquake.quakesrc.org> popping up already. I wouldn't expect it to be a simple task, though, as both engines' software rendering are primarily hand-optimized Assembly. -- |
From: Jamie W. <ja...@sp...> - 2002-01-25 05:49:10
|
This patch against the current quake2 head removes architecture specific code, allowing one to build on things like mipsel and arm. commit log entry: =3D=3D=3D=3D=3D=3D - removes architecture specific code from Makefile, linux/sys_linux.c - fixes build errors on alpha machines with -Werror, cleaned up some typecasting - typo correction in ctf/g_save.c - Used README.sdl from relnev's 0.0.8 code (to match the rest of the sync) - SVGALib code doesn't use <asm/io.h> =3D=3D=3D=3D=3D=3D diff -u -r1.6 .cvsignore --- .cvsignore 2002/01/07 05:02:03 1.6 +++ .cvsignore 2002/01/25 05:31:48 @@ -3,6 +3,6 @@ *.opt *.plg .vimrc -debugi386 +debug* quake2 -releasei386 +release* diff -u -r1.6 Makefile --- Makefile 2002/01/12 02:14:07 1.6 +++ Makefile 2002/01/25 05:31:50 @@ -11,7 +11,7 @@ # Here are your build options, no more will be added! # (Note: not all options are available for all platforms). # quake2 (uses OSS for sound, cdrom ioctls for cd audio) is automatically = built. -# game{i386,axp,ppc}.so is automatically built. +# game$(ARCH).so is automatically built. BUILD_SDLQUAKE2=3DYES # sdlquake2 executable (uses SDL for cdrom and sound) BUILD_SVGA=3DYES # SVGAlib driver. Seems to work fine. BUILD_X11=3DYES # X11 software driver. Works somewhat ok. @@ -22,48 +22,46 @@ BUILD_CTFDLL=3DYES # gamei386.so for ctf # i can add support for building xatrix and rogue libs if needed =20 +# unportable # Check OS type. -OSTYPE :=3D $(shell uname -s) +#OSTYPE :=3D $(shell uname -s) +# +#ifneq ($(OSTYPE),Linux) +#$(error OS $(OSTYPE) is currently not supported) +#endif =20 -ifneq ($(OSTYPE),Linux) -$(error OS $(OSTYPE) is currently not supported) -endif - # this nice line comes from the linux kernel makefile -ARCH :=3D $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/= arm.*/arm/ -e s/sa110/arm/ -e s/alpha/axp/) +ARCH :=3D $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc/ -e s/sp= arc64/sparc/ -e s/arm.*/arm/ -e s/sa110/arm/ -e s/alpha/axp/) +#ARCH :=3D $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s= /arm.*/arm/ -e s/sa110/arm/ -e s/alpha/axp/) =20 -ifneq ($(ARCH),i386) -ifneq ($(ARCH),axp) -ifneq ($(ARCH),ppc) -ifneq ($(ARCH),sparc) -$(error arch $(ARCH) is currently not supported) -endif -endif -endif -endif +# This is preventing builds on sparc and ia64, etc +#ifneq ($(ARCH),i386) +#ifneq ($(ARCH),axp) +#ifneq ($(ARCH),ppc) +#$(error arch $(ARCH) is currently not supported) +#endif +#endif +#endif =20 CC=3Dgcc =20 -ifeq ($(ARCH),axp) -RELEASE_CFLAGS=3D$(BASE_CFLAGS) -O2 -ffast-math -funroll-loops \ +# make this more port friendly +#ifeq ($(ARCH),axp) +RELEASE_CFLAGS=3D$(BASE_CFLAGS) -ffast-math -funroll-loops \ -fomit-frame-pointer -fexpensive-optimizations -endif +#endif +# +#ifeq ($(ARCH),ppc) +#RELEASE_CFLAGS=3D$(BASE_CFLAGS) -ffast-math -funroll-loops \ +# -fomit-frame-pointer -fexpensive-optimizations +#endif =20 -ifeq ($(ARCH),ppc) -RELEASE_CFLAGS=3D$(BASE_CFLAGS) -O2 -ffast-math -funroll-loops \ - -fomit-frame-pointer -fexpensive-optimizations -endif - -ifeq ($(ARCH),sparc) -RELEASE_CFLAGS=3D$(BASE_CFLAGS) -O2 -ffast-math -funroll-loops \ - -fomit-frame-pointer -fexpensive-optimizations -endif - ifeq ($(ARCH),i386) -RELEASE_CFLAGS=3D$(BASE_CFLAGS) -O2 -ffast-math -funroll-loops -malign-loo= ps=3D2 \ - -malign-jumps=3D2 -malign-functions=3D2 +#RELEASE_CFLAGS=3D$(BASE_CFLAGS) -O2 -ffast-math -funroll-loops -malign-lo= ops=3D2 \ +# -malign-jumps=3D2 -malign-functions=3D2 -g +RELEASE_CFLAGS+=3D-O2 -malign-loops=3D2 -malign-jumps=3D2 -malign-function= s=3D2 -g # compiler bugs with gcc 2.96 and 3.0.1 can cause bad builds with heavy op= ts. -#RELEASE_CFLAGS=3D$(BASE_CFLAGS) -O6 -march=3Di686 -ffast-math -funroll-lo= ops \ +#RELEASE_CFLAGS=3D$(BASE_CFLAGS) -O6 -m486 -ffast-math -funroll-loops \ # -fomit-frame-pointer -fexpensive-optimizations -malign-loops=3D2 \ # -malign-jumps=3D2 -malign-functions=3D2 endif @@ -85,8 +83,12 @@ CTF_DIR=3D$(MOUNT_DIR)/ctf XATRIX_DIR=3D$(MOUNT_DIR)/xatrix =20 -BASE_CFLAGS=3D-Dstricmp=3Dstrcasecmp -Wall -Werror +BASE_CFLAGS=3D-Dstricmp=3Dstrcasecmp -Wall -Werror -pipe =20 +ifneq ($(ARCH),i386) + BASE_CFLAGS+=3D-DC_ONLY +endif + DEBUG_CFLAGS=3D$(BASE_CFLAGS) -g =20 LDFLAGS=3D-lm -ldl @@ -114,11 +116,12 @@ SHLIBCFLAGS=3D-fPIC SHLIBLDFLAGS=3D-shared =20 -DO_CC=3D$(CC) $(CFLAGS) -o $@ -c $< -DO_SHLIB_CC=3D$(CC) $(CFLAGS) $(SHLIBCFLAGS) -o $@ -c $< -DO_GL_SHLIB_CC=3D$(CC) $(CFLAGS) $(SHLIBCFLAGS) $(GLCFLAGS) -o $@ -c $< -DO_AS=3D$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $< -DO_SHLIB_AS=3D$(CC) $(CFLAGS) $(SHLIBCFLAGS) -DELF -x assembler-with-cpp -= o $@ -c $< +# added $(ARCH) here as make would munge the quoting in BASE_CFLAGS above +DO_CC=3D$(CC) -DARCH=3D\""$(ARCH)"\" $(CFLAGS) -o $@ -c $< +DO_SHLIB_CC=3D$(CC) -DARCH=3D\""$(ARCH)"\" $(CFLAGS) $(SHLIBCFLAGS) -o $@ = -c $< +DO_GL_SHLIB_CC=3D$(CC) -DARCH=3D\""$(ARCH)"\" $(CFLAGS) $(SHLIBCFLAGS) $(G= LCFLAGS) -o $@ -c $< +DO_AS=3D$(CC) -DARCH=3D\""$(ARCH)"\" $(CFLAGS) -DELF -x assembler-with-cpp= -o $@ -c $< +DO_SHLIB_AS=3D$(CC) -DARCH=3D\""$(ARCH)"\" $(CFLAGS) $(SHLIBCFLAGS) -DELF = -x assembler-with-cpp -o $@ -c $< =20 ##########################################################################= ### # SETUP AND BUILD @@ -132,74 +135,16 @@ TARGETS +=3D $(BUILDDIR)/ctf/game$(ARCH).$(SHLIBEXT) endif =20 -ifeq ($(ARCH),axp) ifeq ($(strip $(BUILD_SDLQUAKE2)),YES) TARGETS +=3D $(BUILDDIR)/sdlquake2 endif - - ifeq ($(strip $(BUILD_SVGA)),YES) - $(warning Warning: SVGAlib support not supported for $(ARCH)) - endif - - ifeq ($(strip $(BUILD_X11)),YES) - $(warning Warning: X11 support not supported for $(ARCH)) - endif - - ifeq ($(strip $(BUILD_GLX)),YES) - $(warning Warning: support not supported for $(ARCH)) - endif - - ifeq ($(strip $(BUILD_FXGL)),YES) - $(warning Warning: FXGL support not supported for $(ARCH)) - endif =20 - ifeq ($(strip $(BUILD_SDL)),YES) - $(warning Warning: SDL support not supported for $(ARCH)) - endif - - ifeq ($(strip $(BUILD_SDLGL)),YES) - $(warning Warning: SDLGL support not supported for $(ARCH)) - endif -endif # ARCH axp - -ifeq ($(ARCH),ppc) - ifeq ($(strip $(BUILD_SDLQUAKE2)),YES) - $(warning Warning: SDLQuake2 not supported for $(ARCH)) - endif -=20 - ifeq ($(strip $(BUILD_SVGA)),YES) - $(warning Warning: SVGAlib support not supported for $(ARCH)) - endif - - ifeq ($(strip $(BUILD_X11)),YES) - $(warning Warning: X11 support not supported for $(ARCH)) - endif - - ifeq ($(strip $(BUILD_GLX)),YES) - $(warning Warning: GLX support not supported for $(ARCH)) - endif - - ifeq ($(strip $(BUILD_FXGL)),YES) - $(warning Warning: FXGL support not supported for $(ARCH)) - endif - - ifeq ($(strip $(BUILD_SDL)),YES) - $(warning Warning: SDL support not supported for $(ARCH)) - endif - - ifeq ($(strip $(BUILD_SDLGL)),YES) - TARGETS +=3D $(BUILDDIR)/ref_sdlgl.$(SHLIBEXT) - endif -endif # ARCH ppc - +# svgalib just doesn't work with non-i386 at the moment, so don't bother ifeq ($(ARCH),i386) - ifeq ($(strip $(BUILD_SDLQUAKE2)),YES) - TARGETS +=3D $(BUILDDIR)/sdlquake2 - endif - ifeq ($(strip $(BUILD_SVGA)),YES) TARGETS +=3D $(BUILDDIR)/ref_soft.$(SHLIBEXT) endif +endif =20 ifeq ($(strip $(BUILD_X11)),YES) TARGETS +=3D $(BUILDDIR)/ref_softx.$(SHLIBEXT) @@ -220,7 +165,6 @@ ifeq ($(strip $(BUILD_SDLGL)),YES) TARGETS +=3D $(BUILDDIR)/ref_sdlgl.$(SHLIBEXT) endif -endif # ARCH i386 =20 all: build_debug build_release =20 @@ -307,11 +251,11 @@ $(BUILDDIR)/client/cd_sdl.o \ $(BUILDDIR)/client/snd_sdl.o =20 -ifeq ($(ARCH),axp) -QUAKE2_AS_OBJS =3D #blank +# more i386 asm +ifeq ($(ARCH),i386) +QUAKE2_AS_OBJS =3D $(BUILDDIR)/client/snd_mixa.o else -QUAKE2_AS_OBJS =3D \ - $(BUILDDIR)/client/snd_mixa.o +QUAKE2_AS_OBJS =3D #blank endif =20 $(BUILDDIR)/quake2 : $(QUAKE2_OBJS) $(QUAKE2_LNX_OBJS) $(QUAKE2_AS_OBJS) @@ -401,7 +345,7 @@ $(BUILDDIR)/client/files.o : $(COMMON_DIR)/files.c $(DO_CC) =20 -$(BUILDDIR)/client/mdfour.o : $(COMMON_DIR)/mdfour.c +$(BUILDDIR)/client/mdfour.o : $(COMMON_DIR)/mdfour.c $(DO_CC) =20 $(BUILDDIR)/client/net_chan.o : $(COMMON_DIR)/net_chan.c @@ -1020,7 +964,12 @@ $(BUILDDIR)/ref_soft/r_scan.o \ $(BUILDDIR)/ref_soft/r_sprite.o \ $(BUILDDIR)/ref_soft/r_surf.o \ - \ + $(BUILDDIR)/ref_soft/q_shared.o \ + $(BUILDDIR)/ref_soft/q_shlinux.o \ + $(BUILDDIR)/ref_soft/glob.o + +ifeq ($(ARCH),i386) +REF_SOFT_OBJS +=3D \ $(BUILDDIR)/ref_soft/r_aclipa.o \ $(BUILDDIR)/ref_soft/r_draw16.o \ $(BUILDDIR)/ref_soft/r_drawa.o \ @@ -1031,11 +980,8 @@ $(BUILDDIR)/ref_soft/math.o \ $(BUILDDIR)/ref_soft/d_polysa.o \ $(BUILDDIR)/ref_soft/r_varsa.o \ - $(BUILDDIR)/ref_soft/sys_dosa.o \ - \ - $(BUILDDIR)/ref_soft/q_shared.o \ - $(BUILDDIR)/ref_soft/q_shlinux.o \ - $(BUILDDIR)/ref_soft/glob.o + $(BUILDDIR)/ref_soft/sys_dosa.o +endif =20 REF_SOFT_SVGA_OBJS =3D \ $(BUILDDIR)/ref_soft/rw_svgalib.o \ @@ -1283,6 +1229,6 @@ $(REF_GL_OBJS) =20 distclean: - @-rm -rf $(BUILD_DEBUG_DIR) $(BUILD_RELEASE_DIR) - @-rm -f `find . \( -not -type d \) -and \ + -rm -rf $(BUILD_DEBUG_DIR) $(BUILD_RELEASE_DIR) + -rm -f `find . \( -not -type d \) -and \ \( -name '*~' \) -type f -print` diff -u -r1.4 cl_cin.c --- client/cl_cin.c 2002/01/07 04:54:10 1.4 +++ client/cl_cin.c 2002/01/25 05:31:52 @@ -412,7 +412,7 @@ =20 if (input - in.data !=3D in.count && input - in.data !=3D in.count+1) { - Com_Printf ("Decompression overread by %i", (input - in.data) - in.count= ); + Com_Printf ("Decompression overread by %i", (int) (input - in.data) - in= .count); } out.count =3D out_p - out.data; =20 diff -u -r1.4 cl_scrn.c --- client/cl_scrn.c 2002/01/12 02:14:08 1.4 +++ client/cl_scrn.c 2002/01/25 05:31:54 @@ -614,11 +614,11 @@ */ if ( a->model =3D=3D b->model ) { - return ( ( int ) a->skin - ( int ) b->skin ); + return (long int) a->skin - (long int) b->skin; } else { - return ( ( int ) a->model - ( int ) b->model ); + return (long int) a->model - (long int) b->model; } } =20 diff -u -r1.3 snd_mem.c --- client/snd_mem.c 2002/01/12 02:14:08 1.3 +++ client/snd_mem.c 2002/01/25 05:31:55 @@ -253,7 +253,7 @@ memcpy (str, data_p, 4); data_p +=3D 4; iff_chunk_len =3D GetLittleLong(); - Com_Printf ("0x%x : %s (%d)\n", (int)(data_p - 4), str, iff_chunk_len); + Com_Printf ("0x%p : %s (%d)\n", data_p - 4, str, iff_chunk_len); data_p +=3D (iff_chunk_len + 1) & ~1; } while (data_p < iff_end); } diff -u -r1.8 g_save.c --- ctf/g_save.c 2002/01/12 03:23:32 1.8 +++ ctf/g_save.c 2002/01/25 05:31:57 @@ -175,7 +175,7 @@ //ZOID //This game.dll only supports deathmatch if (!deathmatch->value) { - gi.dprintf("Forcing deathmatch."); + gi.dprintf("Forcing deathmatch.\n"); gi.cvar_set("deathmatch", "1"); } //force coop off diff -u -r1.1 README.sdl --- docs/README.sdl 2002/01/12 02:14:08 1.1 +++ docs/README.sdl 2002/01/25 05:31:58 @@ -11,14 +11,34 @@ Be sure to install SDL 1.2 (http://www.libsdl.org) if you want to use the softsdl or sdlgl drivers, or the sdlquake2 binary. =20 -You can change what drivers you wish to build by editing the Makefile and -changing the BUILD_ lines at the very top. - 'make' will, by default, build both the debug and release files. To build fully optimized binaries: make build_release The resulting binaries are then put in releasei386. =20 =20 +Makefile options: +----------------- +(quake2 and gamei386.so are always built, but the following options can be + changed by editing the Makefile) +BUILD_SDLQUAKE2 Build sdlquake2, a quake2 binary that uses SDL for + CD audio and sound access (default =3D YES). +BUILD_SVGA Build ref_soft.so, a quake2 video driver that uses + SVGAlib (default =3D NO). +BUILD_X11 Build ref_softx.so, a quake2 video driver that uses + X11 (default =3D YES). +BUILD_GLX Build ref_glx.so, a quake2 video driver that uses + X11's GLX (default =3D YES). +BUILD_FXGL Build ref_gl.so [might be renamed to fxgl later],= =20 + a quake2 video driver that uses fxMesa (default =3D + NO). This option is currently untested because I = do=20 + not have a Voodoo 1 or 2. +BUILD_SDL Build ref_softsdl.so, a quake2 video driver that + uses SDL (default =3D YES). +BUILD_SDLGL Build ref_sdlgl.so, a quake2 video driver that uses + OpenGL with SDL (default =3D YES). +BUILD_CTFDLL Build the Threewave CTF gamei386.so (default =3D N= O). + + To install the Quake2 gamedata: ------------------------------- (installdir is wherever you want to install quake2, and cdromdir is wherev= er @@ -59,11 +79,20 @@ Configuration files and such are saved in ~/.quake2/, so <installdir> can = be made read-only or whatever. =20 -WARNING: Please do not make quake2 or any of the libraries suid root! +WARNING: Please do not make quake2 or any of the libraries suid root! Doi= ng +so is at your own risk. =20 -NOTE: Save games will most likely not work across different versions or -builds (this is due to how savegames were stored). +NOTE: Save games will not work across different versions or builds, because +of the way they are stored. =20 +Dedicated Server: +----------------- +If there is a demand for it, I can add support for an explicit q2ded binar= y. +Else, using +set dedicated 1 should be fine. + +Joystick Support: +----------------- +None yet. =20 Commonly used commands: ----------------------- @@ -80,28 +109,63 @@ snd_restart // restart sound driver basedir <dir> // point quake2 to where the data is gl_driver <libGL.so> // point quake2 to your libGL +dedicated 1 // run quake2 as a dedicated server + +When using these commands on the quake2 command line, use +set to cause the +variables be set before the config files are loaded (important for +gl_driver). e.g. +./quake2 +set vid_ref glx +set gl_driver /usr/lib/libGL.so.1 + +If quake2 crashes when trying to load an OpenGL based driver (glx, sdlgl), +make sure its not loading the wrong libGL. =20 +Have a NVIDIA card and it _still_ crashes? Try=20 +export LD_PRELOAD=3D/usr/lib/libGL.so, and run quake2 again. =20 +Is lighting slow in OpenGL (while firing, explosions, etc.)? Disable +multitexturing (gl_ext_multitexture 0; vid_restart). + + Website: -------- -I'll post any updates I make at http://www.icculus.org/quake/=20 +I'll post any updates I make at http://www.icculus.org/quake2/=20 (which currently redirects to http://www.icculus.org/~relnev/) =20 +Mailing List: +------------- +to subscribe: send a blank email to qua...@ic... +to post: send email to qu...@ic... + Anonymous CVS access: --------------------- cvs -d:pserver:ano...@ic...:/cvs/cvsroot login (password is "anonymous" without the quotes.) cvs -z3 -d:pserver:ano...@ic...:/cvs/cvsroot co quake2 =20 -Questions: ----------- -What's the best way of handling international keyboards with SDL? +Bugzilla: +--------- +https://bugzilla.icculus.org =20 TODO: ----- +Try out RCG's key idea. Fix save games. +Verify FXGL works. +Joystick support. +Fullscreen/DGA support in X11 driver. +Fully switch to glext.h. Suggestions, anyone? =20 +v0.0.8: [01/04/02] +------- ++ Fixed C-only ref_soft building. ++ SDL CD audio looping fix (Robert B=E4uml) ++ ~/.quake2/<game> added to the search path for mods. (Ludwig Nussel) ++ Minor change to fix compilation with OpenGL 1.3 headers. ++ Fixed changing video drivers using the menu. ++ Fixed autoexec.cfg on startup. ++ Sparc Linux support (Vincent Cojot) + v0.0.7: [12/28/01] ------- + Merged in Quake2 3.21 source. @@ -150,7 +214,10 @@ Stephen Anthony William Aoki Robert B=E4uml +Vincent Cojot +Michel D=E4nzer Ryan C. Gordon Ludwig Nussel +Peter van Paassen Zachary 'zakk' Slater Matti Valtonen diff -u -r1.4 rw_in_svgalib.c --- linux/rw_in_svgalib.c 2002/01/03 04:22:46 1.4 +++ linux/rw_in_svgalib.c 2002/01/25 05:32:00 @@ -26,8 +26,6 @@ #include <signal.h> #include <sys/mman.h> =20 -#include <asm/io.h> - #include "vga.h" #include "vgakeyboard.h" #include "vgamouse.h" diff -u -r1.4 rw_svgalib.c --- linux/rw_svgalib.c 2002/01/12 02:14:08 1.4 +++ linux/rw_svgalib.c 2002/01/25 05:32:00 @@ -42,8 +42,6 @@ #include <unistd.h> #include <sys/mman.h> =20 -#include <asm/io.h> - #include "vga.h" #include "vgakeyboard.h" #include "vgamouse.h" diff -u -r1.7 sys_linux.c --- linux/sys_linux.c 2002/01/12 02:14:08 1.7 +++ linux/sys_linux.c 2002/01/25 05:32:01 @@ -40,7 +40,7 @@ #include <dlfcn.h> =20 #include "../qcommon/qcommon.h" - +#include "../game/game.h" #include "../linux/rw_linux.h" =20 cvar_t *nostdout; @@ -214,22 +214,13 @@ */ void *Sys_GetGameAPI (void *parms) { - void *(*GetGameAPI) (void *); + game_export_t *(*GetGameAPI) (game_import_t *); =20 char name[MAX_OSPATH]; char *path; char *str_p; -#if defined __i386__ - const char *gamename =3D "gamei386.so"; -#elif defined __alpha__ - const char *gamename =3D "gameaxp.so"; -#elif defined __powerpc__ - const char *gamename =3D "gameppc.so"; -#elif defined __sparc__ - const char *gamename =3D "gamesparc.so"; -#else -#error Unknown arch -#endif + + const char *gamename =3D "game"ARCH".so"; =20 setreuid(getuid(), getuid()); setegid(getgid()); @@ -265,7 +256,7 @@ } } =20 - GetGameAPI =3D (void *)dlsym (game_library, "GetGameAPI"); + GetGameAPI =3D (game_export_t * (*)(game_import_t *)) dlsym(game_library,= "GetGameAPI"); =20 if (!GetGameAPI) { diff -u -r1.9 common.c --- qcommon/common.c 2002/01/12 02:14:09 1.9 +++ qcommon/common.c 2002/01/25 05:32:05 @@ -69,7 +69,7 @@ static int rd_buffersize; static void (*rd_flush)(int target, char *buffer); =20 -void Com_BeginRedirect (int target, char *buffer, int buffersize, void (*f= lush)) +void Com_BeginRedirect (int target, char *buffer, int buffersize, void (*f= lush)(int, char*)) { if (!target || !buffer || !buffersize || !flush) return; diff -u -r1.8 qcommon.h --- qcommon/qcommon.h 2002/01/12 03:23:32 1.8 +++ qcommon/qcommon.h 2002/01/25 05:32:08 @@ -735,7 +735,7 @@ #define PRINT_ALL 0 #define PRINT_DEVELOPER 1 // only print when "developer 1" =20 -void Com_BeginRedirect (int target, char *buffer, int buffersize, void (*= flush)); +void Com_BeginRedirect (int target, char *buffer, int buffersize, void (*= flush)(int, char*)); void Com_EndRedirect (void); void Com_Printf (char *fmt, ...) __attribute__((format(printf,1,2))); void Com_DPrintf (char *fmt, ...) __attribute__((format(printf,1,2))); diff -u -r1.2 r_edge.c --- ref_soft/r_edge.c 2001/12/22 21:49:58 1.2 +++ ref_soft/r_edge.c 2002/01/25 05:32:11 @@ -1074,7 +1074,7 @@ =20 // make a stable color for each surface by taking the low // bits of the msurface pointer - D_FlatFillSurface (s, (int)s->msurf & 0xFF); + D_FlatFillSurface (s, (long int) s->msurf & 0xFF); D_DrawZSpans (s->spans); } } diff -u -r1.2 r_surf.c --- ref_soft/r_surf.c 2001/12/22 21:49:58 1.2 +++ ref_soft/r_surf.c 2002/01/25 05:32:12 @@ -450,7 +450,7 @@ if ((size <=3D 0) || (size > 0x10000)) ri.Sys_Error (ERR_FATAL,"D_SCAlloc: bad cache size %d\n", size); =09 - size =3D (int)&((surfcache_t *)0)->data[size]; + size =3D (long int)&((surfcache_t *)0)->data[size]; size =3D (size + 3) & ~3; if (size > sc_size) ri.Sys_Error (ERR_FATAL,"D_SCAlloc: %i > cache size of %i",size, sc_size= ); --=20 ja...@sp... http://spacepants.org/jaq.gpg =20 When C++ is your hammer, everything looks like a thumb -- Latest seen from Steven M. Haflich, in c.l.l |
From: <42...@in...> - 2002-01-25 01:26:16
|
NEWS FROM THE OPENSOURCE HIDDEN FACE OF MOON Hello Friends, Girlfriends and Coders. I am Tei, "Oscar Vives" at berlios.de and in Real Life[tm]. My engine modder plattform project as moved to CVS here: http://cvs.berlios.de/cgi-bin/cvsweb.cgi/src/tj19/?cvsroot=telejano#dirlist You can download all the code, and specific "WFX Tech Test" here: ftp://ftp.berlios.de/pub/telejano/ The main services (mail list, bugs, report, expect features) will be here: https://developer.berlios.de/projects/telejano/ - - - My target its: - WfX - Wheater FX - .jpg loading - .png loading - engine text editor (builtin ) - more gui features ( client side gui, scripted gui events ) - conversational engine ( .cml files ) - rpg games support features ( groupware for quake players, persistent profiles) - rts games support features ( more sst mods, chess engine builtin ) - fps games support features ( more qrally mods ) - racer games support features ( patches, terrain levels ) - others modders features... This prj target is to be a good mod platform, with exciting features from the latest engines, like Unreal2, Quake3, Operation Flashpoint, etc.. Theoricaly, you can join our efforts: CVS, coding. Mail list, ideas. FTP/Forums, playing betas, and sending feedback. Bugs Sending feedback. If you need more about "the big picture", get you browser point and fire to qbism.telefragged.com/tei qbism.telefragged.com/tei/airshots1.shtml qbism.telefragged.com/tei/airshots2.shtml qbism.telefragged.com/tei/airshots3.shtml qbism.telefragged.com/tei/fxshots1.shtml Download, play, compile, code :D as you wish ;) 1 saludo Tei --------------------------------------------- This message was sent using Endymion MailMan. http://www.endymion.com/products/mailman/ |
From: Bill C. <bi...@ta...> - 2002-01-23 04:32:28
|
On Tue, Jan 22, 2002 at 07:55:38PM -0500, BL...@ao... wrote: > Has anyone noticed the news has dissapeared, and the most recent news is from > Nov 2000? Hmm, if I had a buck for every time that was asked, beer would be on me (ok, not a lot of beer, probably a sip, but still:) The news is back now. We had some sql issues (the news was actually deliberately broken). A security problem was pointed out to us and the website was promptly denied access to the database till things could be worked around. Bill -- Leave others their otherness. -- Aratak |
From: <BL...@ao...> - 2002-01-23 00:55:56
|
Has anyone noticed the news has dissapeared, and the most recent news is from Nov 2000? |
From: Bill C. <bi...@ta...> - 2002-01-22 17:13:13
|
On Sun, Jan 20, 2002 at 07:51:50PM -0600, Ryan Underwood wrote: > Hi, > > Using QF 0.5, bootstrapped last night, if a player does the action "reload" > in a Teamfortress game (2.8 or 2.9), the server dies saying "Program error" or something > to that effect. Everything else seems to work okay. > > A fix? sv_old_entity_free 1 put that in your server.cfg and things will be fine Bill -- Leave others their otherness. -- Aratak |
From: Ryan U. <ne...@ic...> - 2002-01-20 19:51:52
|
Hi, Using QF 0.5, bootstrapped last night, if a player does the action "reload" in a Teamfortress game (2.8 or 2.9), the server dies saying "Program error" or something to that effect. Everything else seems to work okay. A fix? Thanks -- Ryan Underwood, <nemesisATicequakeDOTnet>, jabber=same, icq=10317253 http://www.icequake.net/~nemesis |= icequake networks, ltd. =|= university of missouri rolla =| |= system administration =|= computer science =| |
From: Bill C. <bi...@ta...> - 2002-01-19 08:15:32
|
On Fri, Jan 18, 2002 at 07:33:38AM -0000, Colin Thompson wrote: > Hi all, > > I noticed a problem with binding a key to toggle the console. the > 'traditional' key is usually tilde but it only brings the console down - > after that the keypress is is captured by the console code and won't send it > back up again.... This is actually by design. > I'm not sure if this is classed as a bug or not, but I noticed that Taniwha > is working with the console code so I thought this list would be more > appropriate... Yeah, I've been busy of late (finally got back into the swing of things:). > Should the console only be capturing certain keys? or everything? Well, the console /is/ capturing the keys. They're just not bound to any action. qf 0.5 has a rather powerful key binding system (thanks to Mercury) that can drasticly simplify config scripts. Rather than the one key binding table you're used to, qf has eighteen: one for the console (IMT_CONSOLE) and 17 for in-game (IMT_0 to IMT_16). There is also IMT_DEFAULT, but that just maps to IMT_0. The way to bind keys in this system is (eg): in_bind imt_console k_backquote toggleconsole (there, even answered your main question:). IMT -> input mapping table. Here's another, longer example: -----8<----- exec configs/common/alias/zoom.cfg bind mwheeldown z_out bind mwheelup z_in init__zoom.cfg in_bind imt_1 m_wheel_down "impulse 12" in_bind imt_1 m_wheel_up "impulse 10" in_bind imt_0 k_capslock +goto_imt_1 // unbound keys in imt_[1-16] fall through to imt_0 alias +goto_imt_1 "imt imt_1" alias -goto_imt_1 "imt imt_0" -----8<----- Now, bind acts as a compatability layer taking the old bind syntax (and key names), converting them to the new using the imt specified in the in_bind_imt cvar (which defaults to imt_default (which points to imt_0: the main game imt)). The imt command selects the current imt that the input engine is to check for a binding. What this setup does is give me variable zoom using my mouse wheel by default. When I hold down the capslock key, the wheel cycles though my weapons. As stated in the comment in the config, if the input engine doesn't find a binding for a key in tables 1-16, it will look in table 0. If it still doesn't find a binding, it drops the key. imt_console is /totally/ independent of imt 0-16. /any/ time you leave the game, imt_console is made the `default' and imt_0 to imt_16 are ignored. In game, imt_0 is default with imt_1 to imt_16 being available. Ways to leave the game: bring down the console (or have it forced down via disconnect); go to the menu (they're not functional yet, but I'm making progress); messagemode1 and messagemode2. HTH Bill PS: incase nobodie's noticed: chat now has input history. just use the up/down arrow keys. -- Leave others their otherness. -- Aratak |
From: Colin T. <col...@su...> - 2002-01-18 07:32:54
|
Hi all, I noticed a problem with binding a key to toggle the console. the 'traditional' key is usually tilde but it only brings the console down - after that the keypress is is captured by the console code and won't send it back up again.... I'm not sure if this is classed as a bug or not, but I noticed that Taniwha is working with the console code so I thought this list would be more appropriate... Should the console only be capturing certain keys? or everything? Colin |
From: Seth G. <sga...@li...> - 2002-01-17 15:43:05
|
On Thu, 17 Jan 2002, adam petronaitis wrote: > Hi; I would like to use a GL quake engine (win32) for a DOOM game; but > there are many source ports to chose from. Could Quakefourge be a > single-player engine as well?(maybe with some code cut n paste from > GLQuake?) I don't know about all the past releases of QuakeForge but the QuakeForge code in CVS includes both single player "nq" (i.e. "Normal Quake") and multiplayer-only ("QuakeWorld" or "qw") engines. What kind of DOOM game do you have in mind? You could run into some copyright snags there. __ __ _ _ __ __ _/ \__/ \__/ Seth Galbraith "The Serpent Lord" \__/ \__/ \_ \__/ \__/ \_ sga...@kr... #2244199 on ICQ _/ \__/ \__/ _/ \__/ \__/ http://www.planetquake.com/gg \__/ \__/ \_ |
From: adam p. <apc...@op...> - 2002-01-17 10:20:20
|
Hi; I would like to use a GL quake engine (win32) for a DOOM game; but = there are many source ports to chose from. Could Quakefourge be a single-player engine as well?(maybe with some = code cut n paste from GLQuake?) |
From: Ulrich G. <uga...@li...> - 2002-01-16 19:11:20
|
On Tue, 15 Jan 2002, Seth Galbraith wrote: > > (Did I mention that it would also be nice to be able to draw 3D objects in > menus and HUDs?) Did you!??!!? What I wanna know is why didn't I!?!?! Its been nagging me for years! Why can't i load a model as a menu graphic? Like using models for a pointing device, or just nice graphics. Imagine choosing your character in a menu and being able to see the actual model... Not hard to imagine? That's because quake is the only engine (exaggeration) that doesn't have this. *<><><><><><><><><><><><><><><><><><><>* // ZANCRUS: Ulrich Galbraith \\ \\ E-Mail: uga...@kr... // // \\ \\ ICQ: 3093981 // *<><><><><><><><><><><><><><><><><><><>* > __ __ _ _ __ __ > _/ \__/ \__/ Seth Galbraith "The Serpent Lord" \__/ \__/ \_ > \__/ \__/ \_ sga...@kr... #2244199 on ICQ _/ \__/ \__/ > _/ \__/ \__/ http://www.planetquake.com/gg \__/ \__/ \_ > > > > > -- > QuakeForge Development [ qua...@li... ] > https://lists.sourceforge.net/lists/listinfo/quake-devel > |
From: Seth G. <sga...@li...> - 2002-01-16 03:04:04
|
I have implemented loading tga textures for sprites, gfx.wad images, .lmp files, and textures from bsp files. The last type were trickiest because you have to load the tga files after the whole bsp file is loaded, since both LoatTGA and the bsp file loader use Hunk_TempAlloc. Actually the implementation of tga texture loading for bsp files is quite simple. Just look at the Mod_LoadExternalTextures function. Alias model (.mdl) skins will probably need something similar (Mod_LoadExternalSkins?) and I think sprites need it too - it's probably just dumb luck that it didn't crash my single frame sprite test case. I'm a little confused about how to get the sprite and alias model (.spr and .mdl) file names, skin/frame names and gl_texnums (i.e. the info I need to load the tga textures) from the model_t *mod in Mod_RealLoadModel. If I knew how to do that, I could fix up sprites and implement tga skins pretty easily. Of course some folks will see tga textures as an obvious cheat (though your textures are in a pak file it is less obvious.) It has been suggested that checksums might discourage the casual cheater. I'm not able to implement something like that, but I don't think I've done anything that would make it particularly difficult to add. It's also been suggested that generating external texture names by slapping ".tga" on the end is a bit sloppy. I suppose the way to avoid that is a bit different for each case. I think textures should be in standard image formats where possible (i.e: .tga, .pcx or .png) with a 256 color fallback option if needed for 8 bit software rendering. I know standard image formats help casual cheaters, but they also lubricate the art path and to me that's a lot more important (there are lots of cheaters but not many artists.) I also understand that external textures don't fit everybody's idea of a nice map, sprite or model format. But I think it is actually better than putting the textures in the model/map/sprite file because the textures can be re-used in different models/map/sprites. So, what I would suggest is making the image loading part of the client side QC code, so for example the csQC would say something like "try to use gfx/conback.tga for the console background, then fall back to gfx/conback.pcx if that doesn't work" - not in plain english of course. This way you wouldn't get any weird results if somebody does something silly like trying to use a 32 bit tga for the non-image .lmp files. (Did I mention that it would also be nice to be able to draw 3D objects in menus and HUDs?) __ __ _ _ __ __ _/ \__/ \__/ Seth Galbraith "The Serpent Lord" \__/ \__/ \_ \__/ \__/ \_ sga...@kr... #2244199 on ICQ _/ \__/ \__/ _/ \__/ \__/ http://www.planetquake.com/gg \__/ \__/ \_ |
From: <42...@in...> - 2002-01-16 01:21:26
|
Seth you hare a wizard! :) Checkout our new engine particle (tomazquake based) engine here: http://qbism.telefragged.com/tei/fxshots1.shtml This work generating particles on sky and water surfaces. I think can be applied to light. Any iddea? 1 saludo Tei - - - I am working on an enhanced light.exe for Quake 1 map compiling, and I want it to properly light faces even when the two texture axes are not perpendicular. (Which won't happen in most editors, but can be done in QuArK.) Unfortunately light.exe seems to only pay attention to one texture axis when casting light onto a skewed texture. Perhaps a screenshot will demonstrate this better than my description: http://www.planetquake.com/gg/quarktx.gif * the back wall texture is skewed like this: /_/ * the light on the back wall should look nice and round * the light on the near cube is okay because it isn't so skewed * the light on the yellow thing is slightly messed up in parts I suspect that the problem is located in the ltface.c file of the light.exe source code, most likely in the LightFace or CalcFaceVectors function. Any idea how I can fix this? The modified light program I'm working on and the test map can be found at http://sourceforge.net/projects/openquartz __ __ _ _ __ __ _/ \__/ \__/ Seth Galbraith "The Serpent Lord" \__/ \__/ \_ \__/ \__/ \_ sga...@kr... #2244199 on ICQ _/ \__/ \__/ _/ \__/ \__/ http://www.planetquake.com/gg \__/ \__/ \_ --------------------------------------------- This message was sent using Endymion MailMan. http://www.endymion.com/products/mailman/ |
From: Ulrich G. <uga...@li...> - 2002-01-11 00:42:51
|
I'm working on some quake engine projects that require texture transparency on map brushes. When is QuakeForge going to support this? *<><><><><><><><><><><><><><><><><><><>* // ZANCRUS: Ulrich Galbraith \\ \\ E-Mail: uga...@kr... // // \\ \\ ICQ: 3093981 // *<><><><><><><><><><><><><><><><><><><>* |
From: Seth G. <sga...@li...> - 2002-01-09 19:59:49
|
I am working on an enhanced light.exe for Quake 1 map compiling, and I want it to properly light faces even when the two texture axes are not perpendicular. (Which won't happen in most editors, but can be done in QuArK.) Unfortunately light.exe seems to only pay attention to one texture axis when casting light onto a skewed texture. Perhaps a screenshot will demonstrate this better than my description: http://www.planetquake.com/gg/quarktx.gif * the back wall texture is skewed like this: /_/ * the light on the back wall should look nice and round * the light on the near cube is okay because it isn't so skewed * the light on the yellow thing is slightly messed up in parts I suspect that the problem is located in the ltface.c file of the light.exe source code, most likely in the LightFace or CalcFaceVectors function. Any idea how I can fix this? The modified light program I'm working on and the test map can be found at http://sourceforge.net/projects/openquartz __ __ _ _ __ __ _/ \__/ \__/ Seth Galbraith "The Serpent Lord" \__/ \__/ \_ \__/ \__/ \_ sga...@kr... #2244199 on ICQ _/ \__/ \__/ _/ \__/ \__/ http://www.planetquake.com/gg \__/ \__/ \_ |
From: John F. <jo...@fr...> - 2002-01-08 01:54:38
|
I have a Micro$oft Intellimouse Optical which has a total of 7 buttons if you count up down on the wheel as two. QuakeForge X11 did not support buttons 6 and 7. Here is a patch against quakeforge-current (downloaded on 6 January) to let Quakeforge support up to mouse 32 buttons. Only the X11 backend was updated. The patch compiled and worked first time so there is probably something wrong with it ;-) I also more or less got rid of M_WHEEL_{UP,DOWN}, you might want to do things differently. |
From: Bill C. <bi...@ta...> - 2002-01-07 06:15:53
|
On Sun, Jan 06, 2002 at 12:24:01AM -0800, Todd Kirby wrote: > I got a couple uninitalized variable warnings when I > compile the quake2 source on my Linux 7.1 athlon box > (gcc 2.96). Thanks, I've committed the fixes. I hope quake2 works better with 2.96 than quake1 does. Bill -- Leave others their otherness. -- Aratak |
From: Todd K. <ki...@ya...> - 2002-01-06 08:24:02
|
I got a couple uninitalized variable warnings when I compile the quake2 source on my Linux 7.1 athlon box (gcc 2.96). Warnings are: game/g_combat.c: In function `CheckPowerArmor': game/g_combat.c:179: warning: `power' might be used uninitialized in this function make[1]: *** [releasei386/game/g_combat.o] Error 1 make[1]: Leaving directory `/home/tkirby/quake2' make: *** [build_release] Error 2 ctf/g_combat.c: In function `CheckPowerArmor': ctf/g_combat.c:179: warning: `power' might be used uninitialized in this function make[1]: *** [releasei386/ctf/g_combat.o] Error 1 make[1]: Leaving directory `/home/tkirby/quake2' make: *** [build_release] Error 2 The following patch applied to quake2/game/g_combat.c and quake2/ctf/g_combat.c fixed the problems: 179c179 < int power; --- > int power = 0; -Todd Kirby ===== __________________________________________________ Do You Yahoo!? Send FREE video emails in Yahoo! Mail! http://promo.yahoo.com/videomail/ |
From: Seth G. <sga...@li...> - 2002-01-05 20:28:50
|
I fixed a little performance problem my high precision code caused in the software renderer by moving the if out of the for loop (just like GL) Here are some suggestions to improve model rendering, but I have to get to work on my Hack and Slash mod, so I don't have time to do them. If anybody wants to implement any of these, I can try to help out: * lerp (tween/smooth) mdl animation in software as in gl Just implement this as another special case in sw_ralias.c like the high precision case, with (gl_lerp_anim->int_val) instead of (pmdl->ident == POLYHEADER16) and of course you will want to rename gl_lerp_anim or create a seperate cvar when the cvar is off, lerping won't affect performance * make software and gl alias model rendering share more code (also reducing redundancy between sw and sw32) this is a good idea because they actually both do the same stuff, just organized differently (e.g. in sw high precision data is treated like extra verts, in gl it's like extra poses.) * reorganize high precision data at load time so that it is formatted as 16 bit ints instead of 2 non-sequential bytes. this will affect the layout of light normals too. * avoid calling realloc a lot for finalverts and auxverts by only calling it after all the models are loaded and you know how many vertices the most complex model has. In the worst case scenario you'll allocate a several extra poses worth of extra data for a model that never appears. __ __ _ _ __ __ _/ \__/ \__/ Seth Galbraith "The Serpent Lord" \__/ \__/ \_ \__/ \__/ \_ sga...@kr... #2244199 on ICQ _/ \__/ \__/ _/ \__/ \__/ http://www.planetquake.com/gg \__/ \__/ \_ |
From: Seth G. <sga...@li...> - 2002-01-05 18:22:52
|
I fixed a bit of slowdown my high precison gl rendering code was adding by moving the if statements out of the per-vertex loops. I removed the hardcoded vertex limit by changing R_AliasDrawModel in the software renderers to "realloc" the finalverts and auxverts array instead of creating these arrays each time the function is called. Seems like that should result in a speedup except in exceptional cases (like drawing a bunch of different models for the first time in order from fewest to most vertices.) __ __ _ _ __ __ _/ \__/ \__/ Seth Galbraith "The Serpent Lord" \__/ \__/ \_ \__/ \__/ \_ sga...@kr... #2244199 on ICQ _/ \__/ \__/ _/ \__/ \__/ http://www.planetquake.com/gg \__/ \__/ \_ |
From: Seth G. <sga...@li...> - 2002-01-05 16:36:16
|
High precision model rendering is implemented in OpenGL now. http://www.planetquake.com/gg/v_rock2a.zip (no hassle direct download) is a replacement for the rocket launcher model. To try it out: extract the model to <your quakeforge directory>/hp/progs rename it "v_rock2.mdl" run "<any single player qf executable> -game hp" enter the "map start" and "impulse 9" console commands now you should have the high precision rocket launcher equipped Now I want to remove the last vestiges of hard coded vertex limits from sw_ralias.c and sw32_ralias.c. In both cases it's these two temporary arrays in R_AliasDrawModel. In fact here's the whole function: #define MAXALIASVERTS 1024 void R_AliasDrawModel (alight_t *plighting) { finalvert_t finalverts[MAXALIASVERTS + ((CACHE_SIZE - 1) / sizeof (finalvert_t)) + 1]; auxvert_t auxverts[MAXALIASVERTS]; r_amodels_drawn++; // cache align pfinalverts = (finalvert_t *) (((long) &finalverts[0] + CACHE_SIZE - 1) & ~(CACHE_SIZE - 1)); pauxverts = &auxverts[0]; paliashdr = Cache_Get (¤tentity->model->cache); pmdl = (mdl_t *) ((byte *) paliashdr + paliashdr->model); R_AliasSetupSkin (); R_AliasSetUpTransform (currententity->trivial_accept); R_AliasSetupLighting (plighting); R_AliasSetupFrame (); if (!currententity->colormap) Sys_Error ("R_AliasDrawModel: !currententity->colormap"); acolormap = currententity->colormap; if (acolormap == &vid.colormap8 && r_pixbytes != 1) { if (r_pixbytes == 2) acolormap = vid.colormap16; else if (r_pixbytes == 4) acolormap = vid.colormap32; else Sys_Error("R_AliasDrawmodel: unsupported r_pixbytes %i\n", r_pixbytes); } if (currententity != r_view_model) ziscale = (float) 0x8000 *(float) 0x10000; else ziscale = (float) 0x8000 *(float) 0x10000 *3.0; if (currententity->trivial_accept && pmdl->ident != POLYHEADER16) R_AliasPrepareUnclippedPoints (); else R_AliasPreparePoints (); Cache_Release (¤tentity->model->cache); } I'd like these arrays to be either dynamically sized or resized, with no hardcoded limit. What is the best way to do that? __ __ _ _ __ __ _/ \__/ \__/ Seth Galbraith "The Serpent Lord" \__/ \__/ \_ \__/ \__/ \_ sga...@kr... #2244199 on ICQ _/ \__/ \__/ _/ \__/ \__/ http://www.planetquake.com/gg \__/ \__/ \_ |
From: Seth G. <sga...@li...> - 2002-01-05 03:37:18
|
I have commited the code that renders high precison models in software. GL rendering should be easy, and fortunately my sister's car broke down and I can't drive so I don't have to fix her computer tommorow and can work on QF instead :-) Also I want to remove the last vestiges of hard coded vertex limits from sw_ralias.c and sw32_ralias.c. In both cases it's these two temporary arrays in R_AliasDrawModel. In fact here's the whole function: #define MAXALIASVERTS 1024 void R_AliasDrawModel (alight_t *plighting) { finalvert_t finalverts[MAXALIASVERTS + ((CACHE_SIZE - 1) / sizeof (finalvert_t)) + 1]; auxvert_t auxverts[MAXALIASVERTS]; r_amodels_drawn++; // cache align pfinalverts = (finalvert_t *) (((long) &finalverts[0] + CACHE_SIZE - 1) & ~(CACHE_SIZE - 1)); pauxverts = &auxverts[0]; paliashdr = Cache_Get (¤tentity->model->cache); pmdl = (mdl_t *) ((byte *) paliashdr + paliashdr->model); R_AliasSetupSkin (); R_AliasSetUpTransform (currententity->trivial_accept); R_AliasSetupLighting (plighting); R_AliasSetupFrame (); if (!currententity->colormap) Sys_Error ("R_AliasDrawModel: !currententity->colormap"); acolormap = currententity->colormap; if (acolormap == &vid.colormap8 && r_pixbytes != 1) { if (r_pixbytes == 2) acolormap = vid.colormap16; else if (r_pixbytes == 4) acolormap = vid.colormap32; else Sys_Error("R_AliasDrawmodel: unsupported r_pixbytes %i\n", r_pixbytes); } if (currententity != r_view_model) ziscale = (float) 0x8000 *(float) 0x10000; else ziscale = (float) 0x8000 *(float) 0x10000 *3.0; if (currententity->trivial_accept && pmdl->ident != POLYHEADER16) R_AliasPrepareUnclippedPoints (); else R_AliasPreparePoints (); Cache_Release (¤tentity->model->cache); } I'd like these arrays to be either dynamically sized or resized, with no hardcoded limit. What is the best way to do that? __ __ _ _ __ __ _/ \__/ \__/ Seth Galbraith "The Serpent Lord" \__/ \__/ \_ \__/ \__/ \_ sga...@kr... #2244199 on ICQ _/ \__/ \__/ _/ \__/ \__/ http://www.planetquake.com/gg \__/ \__/ \_ |
From: Seth G. <sga...@li...> - 2002-01-04 19:48:16
|
On Fri, 4 Jan 2002, Bill Currie wrote: > I was having a look at that last night. By using a memory format that combines > the highprec verts into 16 bit words rather tyan bytes, that asm function > would only need a trivial change for highprec. It would, however, need > duplicating. > > Lerping, on the other hand, would be a bit trickier. I haven't come up with > anything for that yet. (I hadn't realised sw alias model rendering was /that/ > hairy). I think it's just a case of the right conditional statements in the right places, i.e. if interpolation is off, and high precision is not needed, then use the old function, otherwise use a new function. high precision models would not HAVE to have their own asm optimizations - at least not right away (and getting this implemented quickly is important to me as I have other things to work on) but someone could optimize that side of things later (perhaps once the have more high precision models to test it with!) __ __ _ _ __ __ _/ \__/ \__/ Seth Galbraith "The Serpent Lord" \__/ \__/ \_ \__/ \__/ \_ sga...@kr... #2244199 on ICQ _/ \__/ \__/ _/ \__/ \__/ http://www.planetquake.com/gg \__/ \__/ \_ |
From: Bill C. <bi...@ta...> - 2002-01-04 19:40:47
|
On Fri, Jan 04, 2002 at 08:38:44AM -0800, Seth Galbraith wrote: > I think we'll have to drop that assembler function (or at least make it > conditional) to get either interpolation or high precision models. How > big of a difference does this assembler function make? I was having a look at that last night. By using a memory format that combines the highprec verts into 16 bit words rather tyan bytes, that asm function would only need a trivial change for highprec. It would, however, need duplicating. Lerping, on the other hand, would be a bit trickier. I haven't come up with anything for that yet. (I hadn't realised sw alias model rendering was /that/ hairy). Bill -- Leave others their otherness. -- Aratak |