ZDoomGL v0.7 alpha 7 (based on ZDoom 2.0 pre13)
==============================
Requirements:
-OpenGL capable 3D video card
-Windows 95/98/ME/NT/2k/XP
New Console Variables
==============================
gl_clear [0/1][0] - controls whether or not to clear the framebuffer after each frame. Off by default.
gl_vid_bitdepth [16/32][16] - controls the colordepth for OpenGL. No more changing the config file anytime you want to switch between ZDoom and ZDoomGL!
gl_wireframe [0/1][0] - toggle between wireframe rendering and solid rendering. Handy for debugging maps.
gl_depthfog [0/1][1] - toggles depth-queued fog on and off. Some older cards have problems with OpenGL fog, so if it looks bad, turn it off.
gl_depthfog_multiplier [0..1.0+][0.6] - controls the depthfog falloff. 0.0 would be no fog, 1.0 is the full calculated density (and 2.0 would be twice the density). Tweak this until you find the range you like best.
gl_texture_mode [-string-][GL_LINEAR_MIPMAP_LINEAR] - controls filtering/mipmapping for the textures. Valid values are "GL_NEAREST", "GL_LINEAR", "GL_NEAREST_MIPMAP_NEAREST", "GL_LINEAR_MIPMAP_NEAREST", "GL_NEAREST_MIPMAP_LINEAR", and "GL_LINEAR_MIPMAP_LINEAR".
gl_texture_anisotropic [0/1][0] - toggles anisotropic texturing on/off if your video card supports it
gl_texture_anisotropy_degree [1.0..2.0][1.0] - controls the degree of the anisotropic filter (2.0 for best results, 1.0 for GL_LINEAR_MIPMAP_LINEAR results).
gl_texture_color_multiplier [0..2.0+][1.0] - controls the contrast of the textures (seperate from the gamma control).
gl_texture_format [-string-][GL_RGB5_A1] - controls internal texture format. Valid values are "GL_RGBA2", "GL_RGBA4", "GL_RGBA8" (best quality), "GL_RGB5_A1" (default), "GL_LUMINANCE", "GL_ALPHA", "GL_INTENSITY", and "GL_S3TC".
gl_texture_usehires [0/1][1] - toggles use of hires textures
gl_texture [0/1][1] - toggles texturing on/off
gl_billboard_mode [1/2][2] - controls the billboarding of sprites. 2 is aligned in x/y axis and 1 is aligned only in the y axis.
gl_line_smooth [0/1][1] - controls line antialiasing. 1 is on, 0 is off.
gl_sky_detail [1..10+][5] - sky detail. Higher numbers increase detail in sky. Between 5 and 10 gives nice results.
gl_show_frameinfo [0/1][0] - toggles polycount for each frame. Sprites are not counted right now.
gl_show_walltype [0/1][0] - toggles whether or not to show the seperate components of walls (top/mid/bottom).
gl_particles_additive [0/1][1] - toggles whether or not particles are rendered with additive blending.
vid_renderer [0/1][0] - 0 is software (zdoom) rendering, 1 is opengl (zdoomgl) rendering.
November 11, 2002
==============================
- again, neglecting this horribly...
- full mouselook is in with per subsector frustum culling and a JDoom style clipper (actually runs slightly faster than it used to without mouselook).
- new invulnerability effect taken from JDoom because it looked cooler than the green lighting thing ZDoomGL used to do.
- bug where floor/ceiling for some polyobjects would be drawn is fixed.
- sprite scaling is fixed.
- fixed bug where some particles would get overwritten by walls (in some cases).
- rendering no longer goes through the software engine at all anymore, but this means that sprites aren't sorted again. That's next on my to-do list.
- has a nice surprise when booting the old computer. Apparently it deleted the file "d:/winnt/system32/config/system" on it's own and it doesn't like starting without it. Ah well, it was due for a reinstall anyway ;)
October 9, 2002
==============================
- intermission screens are almost there. Still a few problems with textures getting corrupted.
- small optimization in the renderer (making sure blending and alpha testing is turned off when I'm not using it).
October 7, 2002
==============================
- fixed status bar on 3dfx cards (and other overlays that might be bigger than 256*256).
- weapons are mostly fixed now.
September 28, 2002
==============================
- PNG screenshots are working (again, OpenIL is cool).
- working on getting texture alignments working properly (damn pegged/unpegged textures).
- require zdoomgl.wad now (like zdoom.wad). Right now it only contains the particle image, but there may be other stuff added.
- hires textures are now loaded from the appropriate directory for the game (ie: textures/doom, textures/heretic and textures/hexen).
September 25, 2002
==============================
- JDoom-style hires textures are now supported (TGA and PNG).
- improved framerate in wireframe mode (eaeuro03 runs fine in wireframe mode now), and I have an idea on how to improve framerate overall.
- fixed some issues with zdoom layered skies.
- small tweak to the particle/sprite code resulting in a slight speedup, possibly a major speedup when there are lots of particles.
- fixed a problem with TGA hires textures loading upside down.
- added a new cvar: gl_texture_usehires. Controls whether or not to use the hires textures.
September 23, 2002
==============================
- particles now take on the color of the sector they're in.
- found a hideous inefficiency with the floor/ceiling drawing code that was greatly increasing the number of triangles being drawn.
- worked on getting height transfers functioning properly.
- got the JDoom style sky working.
- got multilayered sky almost working properly (just have to find out why the sky textures are being loaded with the proper alpha values).
- only particles in visible subsectors are drawn now.
September 15, 2002
==============================
- got warped flats working today.
- working on finally getting wall rendering perfect. Getting better, but still not there yet =/
- changed particles to use additive blending, although there is a cvar to control that (gl_particles_additive [1/0]).
- fixed another crash problem (leftover code from debugging decal loading. It would crash unless you have an "images" directory in the zdoom root).
- did some preliminary research for rendering skyboxes and mirrors. I may have to require a stencil buffer for zdoomgl (no more pre-Voodoo4 3dfx cards) =/
September 9, 2002
==============================
- changed particles so they're real sprites now (actually using the plasma decal). They look much nicer...
- working on getting decals working right now. Loading and displaying, now I just have to get them aligned with the wall and clipped to the current seg.
- ZDoomGL now automatically chooses the highest available refresh rate for the current resolution when in fullscreen mode. No more 60Hz!
- fixed some issues with translucent actors. You no longer stay translucent forever after picking up a invisibility sphere.
September 8, 2002
==============================
- worked out a bunch more bugs with SlayeR, mostly in Heretic/Hexen.
- polycount for each frame (gl_show_frameinfo 1 in the console).
- working on getting decals working: they load and display, I just have to get them aligned with and clipped to the wall segments now.
- created a new menu option in the Display Options menu: OpenGL Options (the old ZDoomGL had this, too). It allows for control over anisotropic texturing, line antialiasing, sprite billboarding mode, texture contrast, wireframe mode, screen clearing, and enabling/disabling depthfog.
- changed walls back to triangle strips because some cards don't like GL_QUADS that much (much slower)
September 1, 2002
==============================
- added new cvar: gl_line_smooth. 1 is antialiased, 0 is not. This is so you can turn antialiasing on and off if it's hurting performance.
- ported to ZDoom 2.0 pre13 codebase.
- fixed some more 3D floor stuff (fans in kzdoom6 look proper now).
- broke some texture alignment. Working on getting all that sorted out again.
August 24, 2002
==============================
- automap lines are now antialiased.
- fixed alpha func so certain walls with transparent textures don't block things behind it anymore.
- console fonts are masked again (no more black border).
- sprites are offset in the y axis properly (and soon to be x axis).
- sector textures were improperly rotated by an extra 90 degrees.
- particles are antialiased (although they'll be changing to billboarded sprites soon).
- background image on 3dfx cards fixed.
August 19, 2002
==============================
- hud mostly working (just have to find the cause of the occasional crash on program exit)
- hud not clipped by walls now
- fonts are filtered now and scaled fonts should display much faster
- fixed hud stretching
- fixed some wall/sprite sorting issues so transparent/translucent walls no longer look wierd when there is a sprite in front of them
August 17, 2002
==============================
- haha, been neglecting this for awhile!
- automap works correctly now.
- scaled textures work properly (thanks Nigel).
- redid sprite billboarding so it doesn't have to do a reverse rotation and matrix push/pop for each sprite.
- added new cvar: vid_renderer. 0 is software, 1 is opengl. There's also a menu option for this in the video settings menu.
- added new cvar: gl_texture_format. This allows you to select the quality of the textures. See above for usage.
- added support for texture compression: use GL_S3TC for the texture format. Only works if your card supports it (uses GL_RGB5_A1 if it doesn't).
- ported to ZDoom 2.0 pre8 codebase.
- sector texture rotation works (still a few alignment bugs I have to work out).
- experimenting with environment mapping. Look for that in the future...
- fog boundaries are broken again...
- menus should be properly aligned now.
- font rendering has been sped up, but it's still slow on slower machines.
- added a bunch of console logging stuff so you can see what exactly is being enabled when you run ZDoomGL (like hardware mipmaps, texture compression, etc).
- started working on the HUD. Scaled HUD causes ZDoomGL to crash right now.
- flat texture scrolling works now.
<--- Released Alpha 6 --->
April 26, 2002
==============================
- re-added the check for the maximum supported texture size (and scale to fit it). ZDoomGL should work on 3dfx cards again, but some of the textures may look odd (combination of scaling down to 256*256 and the odd bug in the code).
- deep water sectors are pretty much there. I had to disable some code from ZDoom to get it to work right with ZDoomGL...
- hardware-generated mipmaps are back in. They definitely look nicer than the standard glu* generated mipmaps!
- changed floor/ceiling rendering to plain GL_POLYGON's, rather than the GL_TRIANGLE_FAN's they were.
- I have to go through all the CVAR's again and make sure I've documented them all...
April 22, 2002
==============================
- sprites are sorted properly now. Overlapping sprites now looks nice :)
- fog boundaries are working (although they look different than ZDoom).
April 17, 2002
==============================
- got lazy with the updates...
- deep water support is almost there. Still just a few problems with it, though.
- fixed drawing styles for Actors (additive translucency, etc). Lost souls and the like are translucent again.
- fixed an aspect ratio issue. Not a big deal, but it looks more like Doom now (fixed at a 1.6 aspect ratio, instead of the actual screen aspect ratio).
- not keeping full RGBA texture image around after texture is created, since it's not needed. This cuts memory usage in half (approximately).
April 9, 2002
==============================
- fixed deep water support/transfer light specials. Still have to do transfer height, though!
April 7, 2002
==============================
- removed hardware mipmaps (causing a few problems). They'll be coming back once I figure out what was going wrong.
- fixed menu offsets for new menu graphics.
- color shifting now works (shifting the palette for sprites).
- added a new CVAR: gl_texture_color_multiplier. This controls how bright the colors look and is seperate from the gamma controls. Use this if you think the textures look too dull, but the gamma looks about right.
- changed the gamma calculations to do a real gamma table lookup (like the original ZDoom).
- added support for hardware generated mipmaps (GL_SGIS_generate_mipmap extension). The mipmap levels look nicer now, but it's not really noticable...
April 6, 2002
==============================
- fixed crappy looking sprites/menus :)
April 5, 2002
==============================
- fixed chasecam
- fixed a small bug where the whole mid texture wasn't being drawn in some cases (ie: Doom2 MAP31 - go right when you open the first door, the metal bars wouldn't go all the way to the floor).
- fixed a bug where it would sometimes try to render subsector -1.
<--- Released Alpha 5 --->
April 4, 2002
==============================
- fixed the X offset for textures, although the Y offset is still wrong sometimes. This is probably because I haven't fully implemented checking for unpegged textures :)
- sprites work
- fixed a bug where the line index for subsectors was signed, when it should have been unsigned (and would wrap into negatives in large maps). This is probably something I changed long ago, not understanding the consequences of my actions... Large maps (ie: TNTD2KH1 Map05, EAEURO03.WAD, DEMNSNCRY.WAD, etc) work again.
- fixed a bug where sprites with 0 frames would be drawn, causing a crash (ie: picking up a megasphere would cause this for some reason).
April 3, 2002
==============================
- floor/ceiling textures are working now. They don't scroll or anything yet, but they show up!
- fixed a problem with transparent mid textures. These aren't supposed to tile, and I was getting the wrong height for them.
- fixed the title screen for Hexen to work with the new texture management
April 1, 2002
==============================
- finale is sort of working for Doom2 :)
- menus now work in the most basic fasion...
- fixed texture scaling, so it *should* work properly on Voodoo3 and under cards (with the 256*256 texture size limit). Some things won't look as nice on those cards (most notably the title screen), but for the most part it looks the same.
Mar 25, 2002
==============================
- added support for anisotropic texture filtering. This greatly reduces some of the distortion that can occur when viewing a texture from a very sharp angle. Related to this are 2 new cvars: gl_texture_anisotropic and gl_texture_anisotropy_degree.
- added a new cvar: gl_texture_mode. This controls the mipmapping/filtering for textures.
- particles are the correct color now. I was using the wrong color table :(
- the Gamma cvar works with OpenGL now (and doesn't require a restart).
- animated textures are fixed.
- textures seem to be loading perfectly now. The texture coordinates are still completely wrong, but I just haven't gotten to calculating the correct texture coordinates. Some animated textures also aren't working.
- texture mipmapping is also working. Mipmapping really makes a big difference in the look of the image...
- right now, OpenGL textures are the same size as their Doom texture counterparts. This may cause issues with video cards that don't support larger textures (ie: 3Dfx cards (voodoo3 and below) only support up to 256*256 textures). I will be fixing this in the future, but I want to get texturing working properly, first.
Mar 22, 2002
==============================
- I made a slight adjustment to the screenshots while messing around with texturing. It no longer reads the alpha values from the screen which actually seems to speed that process up a little. The file size is the same as ever, though :)
Mar 20, 2002
==============================
- skyboxes sort of work. Walls aren't being drawn for them yet (all the walls are being tossed out during the culling stage for some reason), and only the sector the camera is in is being drawn.
Mar 18, 2002
==============================
- the flickering title screen is now fixed. It's actually a gross hack until I can get the intermission stuff working...
- particles aren't showing up funny anymore (fading to nothingness much nicer now). Still have to get them showing up as the right colour, though!
- I fixed a dumb oversight resulting in a major speedup in areas with lots of visible subsectors.
Mar 17, 2002
==============================
- polyobjects are showing up at the right spot and are the right height now. They're also no longer doing those "interesting things" I mentioned in the last update.
Mar 16, 2002
==============================
- floors and ceilings work! As I stated before, GL-friendly nodes are now a requirement. There's still a few problems with it, mostly due to polyobjects. For some reason, it does some pretty interesting things when rendering polyobjects (check it out in wireframe mode, and you'll see what I mean). I darkened the floors/ceilings to give it a bit of contrast, since there's still no texturing...
Mar 14, 2002
==============================
- well, I made the decision to require GL-friendly nodes. I made this simple by checking when adding WAD's that the accompaning .GWA file is there, and if it isn't, creating it. This means that you, the user, don't actually have to worry about this process at all. This also means that floor/ceiling drawing got about 500x easier (it's actually almost identical to the way jDoom does it, now) :)
Mar 13, 2002
==============================
- fixed a small bug with translucent walls. They were being sorted backwards (front to back, rather than back to front), so only the frontmost walls were being drawn. This was only really noticable when you'd have a circle of translucent walls (like in kzdoom7).
- changed the default depthfog multiplier to 0.6 instead of 0.7. It was just a little too dark by default.
Mar 12, 2002
==============================
- The walls are REALLY fixed, now. Translucency is working properly, that dumb wall in Doom1 E1M1 where you can see it from one side but not the other works properly... It all looks pretty good!
- Hexen works now. Tracking down bugs that only appear when you're not in the debugger really sucks.
- console background is working, along with the title screen. In Hexen the console background is messed up, though.
- console background and title screen are filtered.
Mar 11, 2002
==============================
- have things all prepped for finishing floors/ceilings finally (finding what sectors need to be tesselated, with no duplicates). Hopefully I'll be able to get that working in the next day or so and move on to texturing. Right now it's just outlining them with white lines...
- visibility is working good enough for me... You can check it out by using wireframe mode. No more problems on MAP15 (it's about as fast as the old ZDoomGL on my machine).
- TGA screenshots work, and they're right way up. They're uncompressed, but it's still better than the RAW file format.
- fixed a spelling mistake in one of the CVARs. "gl_depthfog_multipier" is now "gl_depthfog_multiplier" :)
Mar 10, 2002
==============================
- went back to per subsector drawing again, but this time it's with a proper BSP traversal, so subsectors are actually getting culled! That means that subsectors not in the viewable area aren't getting processed whatsoever. You may notice a difference in larger maps (Doom2, MAP15 is a good test map), but it still chugs at anything over 1024*768 on my machine. That'll speed up, though, since I still have to optimize the actual wall drawing (vertices are still being calculated every frame).
- removed "gl_checkVisibility" CVAR, since it wasn't being used anymore.
- cleaned up wall drawing quite a bit, code-wise.
- fixed a few other assorted bugs (the earthquake in the ZDoom demo wad works now).
- RAW screenshots work again. I'll be changing that soon, though, to take TGA screenshots (and have them right-way up).
- fronts/backs of lines should finally be getting drawn properly...
Mar 8, 2002
==============================
- changed the wall drawing back to per sector since it didn't look like that last change was gaining me anything :)
- getting the light level from the general sector being drawn rather then the frontsector of the line seems to fix some of the lighting problems, but introduces a few others.
Mar 6, 2002
==============================
- fixed some camera issues. The nice flythrough in the beginning of kzdoom7 works perfectly now. Now if only I could get the trees to show up.
Mar 5, 2002
==============================
- Slopes appear to be working after changing the wall drawing yet again (getting the plane height per vertex instead of per subsector)! Now if only I could get the damn floors working :)
- Changed the wall drawing yet again so it's rendering per subsector instead of per sector. This will (hopefully) make floor/ceiling tesselation easier.
Mar 4, 2002
==============================
- Wall drawing is much better now, with only a few walls drawn wrong.
- Simple visibility checking is being done now using the REJECT lump. I'll probably look into this more in the future to use a better method.
- Added depth-queued fog to simulate the Doom fade-to-black. ZDoom fog also works.
Mar 2, 2002
==============================
- cleaned up wall drawing a bit. There's definitely some weird stuff going on, but you can at least play the game now.
What Works
==============================
- slopes
- polyobjects
- particles
- colored lighting
- faked deep water surfaces
- scaled textures
- sector texture rotation
- full mouselook
- HUD/weapons
What Doesn't
==============================
- mirrors
- skyboxes
- ZDoom-style hires textures (they load, but they look very odd)
Planned New Features (once it's back to how the old ZDoomGL was)
==============================
- NVidia per-pixel lighting (rather than lightmapping). Demo at http://www.nutty.org/OpenGL/Nvidia/index.html (second from last)
- NVidia T&L support.
- Environment mapping on specified textures (like mirrors.ini, which won't be used anymore since ZDoom has mirrors in it now).
- Cel shading (on NVidia cards)??
- High-res/color Unreal-style (8-bit images each with a unique palette) textures stored in a new ZDoomGL specific lump (more for map editors).
- Duke Nukem 3D style automap (shows floor textures). I just think that looks cool :)
Tested on:
==============================
1.2GHz AMD Thunderbird
512MB DDR RAM
Geforce2 Pro 64MB
Windows2000 Pro
SoundBlaster Live! 5.1
Pentium II MMX 350mhz
128mb SDRAM
NVidia GeForce2 MX-400
Windows ME
Sound Blaster Live! Value
Thanks to...
==============================
Randy Heit - ZDoom originator and answerer of questions.
Kokak - previous work on ZDoomGL
Jaakko Keranen - jDoom creator and also answerer of questions
Simon "SlayeR" Judd - the main beta tester, answerer of mapping questions and maker of the particle image (since I suck at that sort of thing)
Nigel Rowand - answerer of mapping questions
Beta Testers - my guinea pigs >:) YOU KNOW WHO YOU ARE!
==============================
Questions/comments? Email me: zdoomgl@shaw.ca
↧