Commit Graph

699 Commits

Author SHA1 Message Date
Christoph Oelckers df0d3543a8 - fixed: *ALL* original ceiling crushers, not just type 49, require a distance of 8 to the floor for the destination height. For the silent types this required a new action special, Ceiling_CrushAndRaiseSilentDist. This change only affects the XLAT mapping, the Hexen format types behave as before.
- removed the redundant internal ceilCrushAndRaiseDist ceiling movement type. It was precisely the same as ceilCrushAndRaise in all details.
2014-08-21 13:01:12 +02:00
Christoph Oelckers c98e3ca99d Merge branch 'master' into v2.x 2014-08-03 10:58:41 +02:00
Christoph Oelckers 1b55c17379 Merge branch 'master' of https://github.com/rheit/zdoom 2014-08-03 10:08:05 +02:00
Christoph Oelckers a1b579e5fc - added menu entry for newly added hud_showweapons CVAR. 2014-08-03 01:20:12 +02:00
Christoph Oelckers a8e9c1832f - decided to restrict the 2.0 beta to OpenGL 4.x with GL_ARB_buffer_storage extension and removed all code for supporting older versions.
Sadly, anything else makes no sense.
All the recently made changes live or die, depending on this extension's presence.
Without it, there are major performance issues with the buffer uploads. All of the traditional buffer upload methods are without exception horrendously slow, especially in the context of a Doom engine where frequent small updates are required.
It could be solved with a complete restructuring of the engine, of course, but that's hardly worth the effort, considering it's only for legacy hardware whose market share will inevitably shrink considerably over the next years.
And even then, under the best circumstances I'd still get the same performance as the old immediate mode renderer in GZDoom 1.x and still couldn't implement the additions I'd like to make.

So, since I need to keep GZDoom 1.x around anyway for older GL 2.x hardware, it may as well serve for 3.x hardware, too. It's certainly less work than constantly trying to find workarounds for the older hardware's limitations that cost more time than working on future-proofing the engine.

This new, trimmed down 4.x renderer runs on a core profile configuration and uses persistently mapped buffers for nearly everything that is getting transferred to the GPU. (The global uniforms are still being used as such but they'll be phased out after the first beta release.
2014-08-01 22:42:39 +02:00
Christoph Oelckers 7967082e60 - use the light buffer to handle dynamic lighting. 2014-08-01 20:59:39 +02:00
Christoph Oelckers 01a1e10084 Merge branch 'master' into Glew_Version_For_Real 2014-07-31 00:59:56 +02:00
Christoph Oelckers 09ae52e26b Merge branch 'master' of https://github.com/rheit/zdoom 2014-07-31 00:44:59 +02:00
Christoph Oelckers ef8f66c9a1 - removed the code for hardware alpha testing again because it didn't work anymore with how things are set up now.
- we need to check all GL versions when trying to get a context because some drivers only give us the version we request, leaving out newer features that are not exposed via extension.
- added some status info about uniform blocks.
2014-07-30 23:13:16 +02:00
Randy Heit ea7ba9dba3 Add per-actor friction
- This is multiplied by the sector's friction.
- This is intentionally not serialized yet, while awaiting feedback.
2014-07-28 23:15:50 -05:00
Christoph Oelckers 754c96a540 - added default precision settings to shader include because some old ATI drivers complain if they aren't there - even though the spec doesn't require them... 2014-07-27 16:09:47 +02:00
Christoph Oelckers 6d4eb7f62d - changed handling of DF_NO_COOP_WEAPON_SPAWN dmflag so that weapons are not determined by class type but by a newly added flag WEAPONSPAWN, to allow CustomInventory replacements to act like weapons when being spawned. 2014-07-27 10:07:37 +02:00
Christoph Oelckers 637aa9d77e - some adjustments to allow testing the different rendering methods. 2014-07-26 18:43:54 +02:00
Christoph Oelckers 0e647e0f2b Merge branch 'master' into Glew_Version_For_Real 2014-07-26 10:37:00 +02:00
Christoph Oelckers 8465a5f5d7 Merge branch 'master' of https://github.com/rheit/zdoom 2014-07-26 10:23:41 +02:00
Christoph Oelckers a21f01bc5f - added jpalomo's submission to make freelook a 3-state setting, like crouch and jump. This required moving around the flags a bit so demo compatibility had to be bumped. It may also require adjustment for launchers that can set the dmflags. 2014-07-26 10:15:07 +02:00
Christoph Oelckers f64428dd2a Merge branch 'master' into Glew_Version_For_Real 2014-07-17 09:31:18 +02:00
Christoph Oelckers b78b566b0a Merge branch 'master' of https://github.com/rheit/zdoom 2014-07-17 09:30:50 +02:00
Christoph Oelckers eb9d2d9917 - reactivate compatibility profile so that immediate mode drawing can be used on older hardware not supporting persistently mapped buffers.
- reactivate alpha testing per fixed function pipeline
- use the 'modern' way to define clip planes (GL_CLIP_DISTANCE). This is far more portable than the old glClipPlane method and a lot more robust than checking this in the fragment shader.
2014-07-17 02:37:18 +02:00
Braden Obrzut bd5bf2a40a - Expand environment variables for autoload paths.
- Forgot to save the French translation file for the last commit, so a few more corrections there.
2014-07-15 21:26:26 -04:00
Braden Obrzut bfbea40415 - Fixed some typos with chex quest obituaries and French translation error. 2014-07-15 21:20:05 -04:00
Christoph Oelckers b8bcbe819b - removed texture based dynamic lighting. For GL 3.x the shader approach is always better.
- fixed: sky fog was not unset.
2014-07-15 20:49:21 +02:00
Christoph Oelckers fc0cf4f998 - GZDoom now runs on an OpenGL core profile. :)
It's probably still necessary to replace GLEW with another loader library. GLEW is pretty much broken on core OpenGL without some hacky workarounds...
2014-07-15 02:26:23 +02:00
Christoph Oelckers 6046b11b4f - all shaders now compile in core profile. 2014-07-15 01:05:53 +02:00
Christoph Oelckers eedc5a69be - replaced builtin position vertex attribute. 2014-07-15 01:02:48 +02:00
Christoph Oelckers 1b7f5a2e6a - replaced builtin texture coordinate vertex attribute. 2014-07-15 00:59:01 +02:00
Christoph Oelckers 5a322742c3 - remove use of builtin and deprecated color vertex attribute. 2014-07-15 00:37:13 +02:00
Christoph Oelckers 5193f6cfef - remove use of builtin deprecated varyings in shaders. 2014-07-15 00:19:41 +02:00
Christoph Oelckers ed8a21fd86 - replaced deprecated alpha testing with shader code. 2014-07-14 21:14:43 +02:00
Christoph Oelckers 84a49e37ee - handle normals for spheremapped mirror surfaces using non-deprecated features.
- move all WGL references out of global header files so that global wgl header include is no longer necessary
2014-07-14 19:54:07 +02:00
Christoph Oelckers ce3653f6e1 - remove all uses of builtin matrices. 2014-07-13 23:13:40 +02:00
Christoph Oelckers dbb05c5f33 - remove use of builtin texture matrices.
- make matrix class single precision.
2014-07-13 20:41:20 +02:00
Christoph Oelckers 00fcf4bc06 - for some reason using world coordinates for clipping in the shader is somewhat imprecise so the clip plane heights have to be adjusted a bit for it. 2014-07-13 13:25:42 +02:00
Christoph Oelckers 60dc2e1122 - some shader fixes. 2014-07-13 13:01:35 +02:00
Christoph Oelckers d868f60f6c - since the clip planes for plane mirrors did not work anymore I reimplemented them using shader based logic. It still needs to be seen if this affects performance on older hardware. 2014-07-13 12:14:12 +02:00
Christoph Oelckers a936629cec - use default fragment shader for burn and stencil shader, with the time consuming parts disabled by a #define, to avoid code duplication. 2014-07-10 10:33:07 +02:00
Christoph Oelckers f710518903 - use a uniform array to store vertex data to render dynamic stuff on GL 3.x hardware without the ARB_buffer_storage extension.
Due to the way the engine works it needs to render a lot of small primitives with frequent state changes.
But due to the performance of buffer uploads it is impossible to upload each primitive's vertices to a buffer separately because buffer uploads nearly always stall the GPU.
On the other hand, in order to reduce the amount of buffer uploads all the necessary state changes would have to be saved in an array until they can finally be used. This method also imposed an unacceptable overhead.
Fortunately, uploading uniform arrays is very fast and doesn't cause GPU stalls, so now the engine puts the vertex data per primitive into a uniform array and uses a static vertex buffer to index the array in the vertex shader.
This method offers the same performance as immediate mode but only uses core profile features.
2014-06-30 18:10:55 +02:00
Christoph Oelckers 1efc2938b7 - implement model vertex buffer and draw MD2 models using it instead of using the GLCommands from the model. 2014-06-29 23:24:16 +02:00
Christoph Oelckers 9d1dbf4eab - fixed: FBufferedUniform1f didn'T work because it used an int as its buffered value. 2014-06-29 14:08:44 +02:00
Christoph Oelckers ffcb6cb70a - added second vertex coordinate attribute for model interpolation. 2014-06-29 11:00:21 +02:00
Christoph Oelckers 08054ddc34 Merge branch 'master' into Glew_Version_For_Real 2014-06-29 08:53:43 +02:00
Christoph Oelckers e15f80f640 Merge branch 'master' of https://github.com/rheit/zdoom 2014-06-23 09:27:30 +02:00
Christoph Oelckers e56e525d0f - A_FireCustomMissile transfer tranlsation flag, code submission by jpalomo 2014-06-22 08:55:21 +02:00
Christoph Oelckers 6457ced53f Merge branch 'master' into Glew_Version_For_Real 2014-06-19 11:57:36 +02:00
Christoph Oelckers d30bf6768e Merge branch 'master' of https://github.com/rheit/zdoom 2014-06-19 11:20:38 +02:00
Edward Richardson a3a7ee569f Multi-intermission waits for all players + changes
- Added a segment of code that now makes the intermission wait for all
players before advancing, instead of continuing on any player. A "ready
icon" shows to reflect this.

- The Deathmatch intermisson couldn't show the ready icon (because it
just used the ingame scoreboard), so a proper intermission was added,
which reflects the same design as the coop scoreboard.

- The colour column wasted more space then it should have needed, so it
was replaced with player colour backgrounds.

- Slight y offset adjustments to make everything fit in 320x200
properly.
2014-06-17 19:46:10 +12:00
Christoph Oelckers 2ad47935ef Merge branch 'master' into Glew_Version_For_Real 2014-06-01 12:43:17 +02:00
Christoph Oelckers 7fedaf9221 Merge branch 'master' of https://github.com/rheit/zdoom 2014-06-01 12:39:13 +02:00
Edward Richardson e8513a64ed Rebuild nodes for hellfact map04 2014-06-01 15:32:43 +12:00
Christoph Oelckers 3c5d07e9c6 Merge branch 'master' of https://github.com/rheit/zdoom 2014-05-31 11:05:44 +02:00
Christoph Oelckers 8f5683e23d - moved secret found message to string table and removed the CVAR crutch that dates from a time when modifying string table content wasn't as easy as it is now.
- added 'showsecretsector' CVAR to show the sector number with the secret found message.
2014-05-29 17:50:14 +02:00
Christoph Oelckers 39775cc904 - mystery of desaturation shader solved: The old code passed '1-desaturation' to the shader, the new code 'desaturation', so for the 'mix' function to work its arguments must be swapped. 2014-05-21 15:25:25 +02:00
Christoph Oelckers 54425ee2ef - fixed: Desaturation factor was applied incorrectly.
- Also fixed some very strange thing in the shader's desaturate function. For unknown reasons using the 'mix' function there did not work.
- fixed: The fog boundary special shader could not be used.
2014-05-21 13:40:46 +02:00
Christoph Oelckers 6e6be8ed5b Merge branch 'master' into Glew_Version_For_Real 2014-05-18 12:47:48 +02:00
Christoph Oelckers 4e64ad847b Merge branch 'master' of https://github.com/rheit/zdoom 2014-05-15 09:46:47 +02:00
Christoph Oelckers 802a478766 - Heretic doesn't really need dontcrunchcorpses because there was already some alternative handling for that situation. 2014-05-14 14:03:15 +02:00
Christoph Oelckers 51ed68dc72 - forgot to save this... 2014-05-14 13:02:04 +02:00
Christoph Oelckers 388f09f786 - fixed: In Heretic corpses do not get crunched to gibs, they just get their size reduced to 0. Handled by a new gameinfo flag. This also gets set for Chex quest which has the gib sprite replaced by something different. Using a Crush state will override this global flag. 2014-05-14 12:54:03 +02:00
Christoph Oelckers cf45f2d718 - added missing shader files. 2014-05-12 22:24:26 +02:00
Christoph Oelckers 4d005bdfa0 shader rework
All those special shaders have been merged together.
Mostly working but the non-shader lighting seems a bit broken.
2014-05-12 14:45:41 +02:00
Christoph Oelckers b9a6fe80a4 Do not use the shader to handle STYLEF_RedIsAlpha.
Turns out that the name doesn't accurately describe what it does.
It is correct for images that come with their own palette or are true color.
But for images using the game palette it doesn't use the red channel to determine translucency but the palette index! Ugh...

This means it cannot be done with a simple operation in the shader because it won't get a proper source image. The only solution is to create a separate texture.
2014-05-11 23:56:53 +02:00
Christoph Oelckers 7793bbbcc9 Further cleanup of lighting code.
- remove thing color from lighting calculations.
- implement alpha textures and inverse sprites for infrared as texture modes. This still requires some handling for the alpha texture mode for non-shader rendering because there is no way in the fixed pipeline to do it. The inverted texture effect can be done with a texture combiner.
- fixed: ThingColor for sprites was set in the wrong place. It must be in the Process function, not in the lighting calculation.
- added functions for isolated calculation of sprites' dynlight color.
2014-05-11 17:56:38 +02:00
Christoph Oelckers 52056a05bd - changed handling of DynLight in shader to serve as a global dynamic light color for all lighting modes. 2014-05-11 16:49:17 +02:00
Christoph Oelckers 53f4cd0108 - added objectcolor uniform. This will be used to hold the thingcolor for shader based rendering. 2014-05-11 16:06:25 +02:00
Christoph Oelckers 09f4071436 Ok, it had to be done: Removed shader support for pre GLSL 1.3/GL 3.0 hardware. The compromises needed to accomodate these are just too bad and would block any attempt at streamlining the code. 2014-05-11 13:27:51 +02:00
Christoph Oelckers b09405a8bd - changed rendering of glowing walls so that it doesn't require an additional vertex attribute, just pass the floor and ceiling planes as uniforms. 2014-05-10 17:09:43 +02:00
Christoph Oelckers 6988156d0f Merge branch 'master' of https://github.com/rheit/zdoom 2014-05-08 09:49:00 +02:00
Christoph Oelckers 63a0e01c6a Merge branch 'interpview_optin' 2014-05-08 09:17:00 +02:00
Christoph Oelckers 67ebbe3ed4 made some changes to turn the CF_INTERPVIEW flag when changing angles into an op-in feature instead of making it automatic. 2014-05-08 09:15:56 +02:00
Christoph Oelckers cc4305e86c Merge branch 'master' of https://github.com/rheit/zdoom 2014-04-30 01:29:26 +02:00
Christoph Oelckers 94c4f38c58 - added constants for sound channels 5-7. 2014-04-28 01:26:30 +02:00
Christoph Oelckers 97c7f2c5ce Merge branch 'master' of https://github.com/rheit/zdoom 2014-04-18 12:13:29 +02:00
Christoph Oelckers 7cb828d763 Merge branch 'slowstate' of https://github.com/Gaerzi/zdoom 2014-04-18 09:46:23 +02:00
Gaerzi 60fe07df74 Added slow states to relevant Strife monsters
Namely, acolyte, shadow acolyte, reaver, stalker, and turret. Info on
which states needed the slow flag was obtained with Quasar's permission
by looking at G_InitNew() in g_game.c and the info.c state tables from
Chocolate Strife.
Also added fast flag to acolyte states that needed it, based on the same
source.
2014-04-17 17:42:16 +02:00
Christoph Oelckers 29231fa3b7 Merge branch 'master' of https://github.com/rheit/zdoom 2014-04-16 11:34:32 +02:00
Gaerzi 94d47efbb5 Added slow monsters to Strife's easiest skill 2014-04-15 21:02:20 +02:00
Christoph Oelckers 745b147d18 - fixed typo in xlat files (they don't use exactly C syntax.) 2014-04-15 16:40:53 +02:00
Christoph Oelckers dbefac81d8 Merge branch 'master' of https://github.com/rheit/zdoom 2014-04-15 09:26:05 +02:00
Gaerzi 580094a792 More editing flags
PSX-inspired flags to change the render styles of monsters (and other
things).
2014-04-10 12:32:23 +02:00
Christoph Oelckers e983649731 Merge branch 'master' of https://github.com/rheit/zdoom 2014-03-31 16:02:43 +02:00
alexey.lysiuk a97b068ed7 Enable fighting between different types of gargoyles and golems
In vanilla Heretic:
- Gargoyles are able to fight with Fire Gargoyles
- Golems are able to fight with Nitro Golems, both regular and ghosted versions
2014-03-30 13:27:27 +03:00
alexey.lysiuk 6a958b032c Add NOBLOOD flag to Heresiarch actor
Heresiarch entity in vanilla Hexen doesn't spawn blood when hit
2014-03-18 12:29:14 +02:00
alexey.lysiuk 3c8e9b6dc0 Fix incorrect Maulotaur melee attack sound
It was STFHIT instead of STFPOW
2014-03-16 12:29:04 +02:00
Christoph Oelckers 4a23b97963 Merge branch 'master' of https://github.com/rheit/zdoom 2014-03-01 14:41:00 +01:00
Randy Heit e7f427aa60 Merge branch 'maint' 2014-02-24 19:26:50 -06:00
Randy Heit a60918f601 Add NoPushWindowCheck compatibility flag
- For maps like xtheateriii that expect non-blocking push lines to
  activate when you are standing on them and run into a completely different
  line, there is now this compatiblity.txt-only flag.
2014-02-24 17:43:28 -06:00
Christoph Oelckers 2490324652 Merge branch 'master' of https://github.com/Gaerzi/zdoom 2014-02-18 09:59:07 +01:00
Gaerzi d7478bcd68 New Freedoom names
- Added freedoom2.wad as valid alias name (freedoom1.wad already
existed).
- Renamed titles to Freedoom: Phase 1 and Freedoom: Phase 2.
- Reordered to put Phase 1 above Phase 2 in the IWAD picker.
2014-02-18 00:40:14 +01:00
Christoph Oelckers 3e318e4555 Merge branch 'master' of https://github.com/rheit/zdoom
Conflicts:
	.gitignore
	src/CMakeLists.txt
2014-02-16 21:08:44 +01:00
Braden Obrzut efa9e0c3ee Merge branch 'maint' 2014-01-18 18:10:48 -05:00
Braden Obrzut e5d7077d74 - Fixed: Shareware games couldn't bother with the actor has no frames errors since we don't load mods.
- Fixed: Heretic shareware used a different border for the statusbar.
2014-01-18 15:09:12 -05:00
Christoph Oelckers fd767233aa - fixed typo: glColor must be gl_Color in shader. 2013-12-08 10:01:03 +01:00
Christoph Oelckers d46315c44b - some finetuning of subtractive effect. 2013-12-05 15:39:46 +01:00
Christoph Oelckers 95163e378e - added a fog layer when drawing sprites with render style reverse subtract. 2013-12-05 15:06:10 +01:00
Christoph Oelckers 3fbcfa7551 Merge branch 'master' of https://github.com/rheit/zdoom 2013-11-30 01:34:10 +01:00
Christoph Oelckers cbed4624fa - added a user-settable factor for earthquake intensity. Value can be between 0 (no shaking) and 1 (normal shaking.) 2013-11-29 13:24:38 +01:00
Christoph Oelckers 4122e4041a Merge branch 'master' of https://github.com/rheit/zdoom 2013-11-20 09:16:12 +01:00
Randy Heit fe67ae5e54 Merge branch 'maint' 2013-11-19 21:01:15 -06:00
Randy Heit 62ffe7e4e2 Add NOGRAVITY to every Raven actor with FLOATBOB
- Fixed: Heretic and Hexen completely skip all normal Z processing on
  mobjs with FLOATBOB set. To emulate that, we need to add NOGRAVITY to
  everything with that flag set.
2013-11-19 19:42:13 -06:00
Christoph Oelckers daf5b97ff9 Merge branch 'master' of https://github.com/rheit/zdoom
Conflicts:
	src/version.h
2013-09-28 23:37:41 +02:00