Commit graph

4146 commits

Author SHA1 Message Date
Christoph Oelckers
5364116354 - fixed: APROP_Friendly did not manage monster counting correctly. 2014-08-23 13:24:15 +02:00
Christoph Oelckers
bf6079af46 - fixed incorrect check for overrideshader. 2014-08-23 00:47:05 +02:00
Christoph Oelckers
1050013017 major cleanup of the texture manager:
- use sampler objects to avoid creating up to 4 different system textures for one game texture just because of different clamping settings.
- avoids flushing all textures for change of texture filter mode.
- separate sprite and regular dimensions on the material level to have better control over which one gets used. It's now an explicit parameter of ValidateTexture. The main reason for this change is better handling of wall sprites which may not be subjected to such handling.
- create mipmaps based on use case, not texture type.
- allows removal of FCloneTexture hack for proper sharing of the same sprite for decals and other purposes.
- better precaching of skyboxes.
2014-08-22 23:50:38 +02:00
Christoph Oelckers
7a727b6807 Merge branch 'master' into v2.x 2014-08-21 13:44:41 +02:00
Christoph Oelckers
816999109e Merge branch 'master' of https://github.com/rheit/zdoom 2014-08-21 13:42:43 +02:00
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
274a4216ea - disabling inlining in the GL loader produces an executable that's 8kb smaller. 2014-08-21 11:47:53 +02:00
Christoph Oelckers
78815a9601 -we need this, too. 2014-08-21 11:29:43 +02:00
Christoph Oelckers
e132fc5eed - replaced GLEW with GLLoadGen for GL access. This allows to have a header that only contains what's actually required, namely OpenGL 3.3 plus glBegin and glEnd which are the only compatibility functions needed for the fallback render path.
GLEW has two major problems:

- it always includes everything, there is no way to restrict the header to a specific GL version
- it is mostly broken with a core profile and only works if all sanity checks get switched off.
2014-08-21 11:02:46 +02:00
Edward Richardson
07d7f690e8 Non-wall sprites need their original depth checks 2014-08-21 20:03:17 +12:00
Christoph Oelckers
6f65bccf1c - reinstated the far superior assembly HQnX version for Visual C++. 2014-08-20 12:45:33 +02:00
Christoph Oelckers
86d37e06f9 - lowered requirements of GL 2.x to OpenGL 3.3.
There was one issue preventing the previous 2.0 betas from running under GL 3.x: The lack of persistently mapped buffers.
For the dynamic light buffer today's changes take care of that problem.
For the vertex buffer there is no good workaround but we can use immediate mode render calls instead which have been reinstated.

To handle the current setup, the engine first tries to get a core profile context and checks for presence of GL 4.4 or the GL_ARB_buffer_storage extension.
If this fails the context is deleted again and a compatibility context retrieved which is then used for 'old style' rendering which does work on older GL versions.

This new version does not support GL 3.2 or lower, meaning that Intel GMA 3000 or lower is not supported. The reason for this is that the engine uses a few GL 3.3 features which are not present in the latest Intel driver.
In general the Intel GMA 3000 is far too weak, though, to run the demanding shader of GZDoom 2.x, so this is no real loss. Performance would be far from satisfying.

A command line option '-gl3' exists to force the fallback render path. On my Geforce 550Ti there's approx. 10% performance loss on this path.
2014-08-19 15:56:33 +02:00
Christoph Oelckers
a2dc4afe3f - screwed by the editor's autocompletion... (wrong GL flag was used...) 2014-08-19 14:25:47 +02:00
Christoph Oelckers
00d7707aef - allow reallocation of light buffer if more lights are needed.
- added a light preprocessing pass to the renderer so that a non-persistent buffer can be used with minimal mapping/unmapping. This only gets used if necessary because it adds some overhead to the renderer.
2014-08-19 14:18:21 +02:00
Christoph Oelckers
38796e7714 - removed some obsolete and useless GL calls. 2014-08-17 11:41:03 +02:00
Christoph Oelckers
5d6ef5cb16 Merge branch 'master' into v2.x 2014-08-11 13:19:42 +02:00
Christoph Oelckers
c30cfb3190 Merge branch 'master' of https://github.com/rheit/zdoom 2014-08-11 13:18:21 +02:00
Christoph Oelckers
f482dc094d fixed: R_PointOnSideSlow had precision issues with very short lines.
When this function was originally written there was no possibility of fractional vertex coordinates so it threw away the fractional parts of the node's directional vector (which in the original nodes was always 0.)
Now, with UDMF and high precision vertices this no longer works and the loss of significant parts of their value caused this code to produce erroneous results if the linedefs were only a few map units long and using fractional positions.
2014-08-11 12:27:04 +02:00
Christoph Oelckers
48163de8e2 must include doomdef.h in cmdlib.h to get TICRATE. 2014-08-11 11:47:14 +02:00
Christoph Oelckers
f0eccb9d15 - BlueShadow's submission for keeping the max save amount of BasicArmorPickups around when picking up armor bonuses. 2014-08-11 10:08:49 +02:00
Christoph Oelckers
259466c3d4 fixed time printing.
- In ZDoom the timer runs a bit too fast because roundoff errors make 35 tics only last 0.98 seconds. None of the internal timing has been changed, only the places where a time value is printed it will get adjusted for this discrepancy.
2014-08-11 09:39:38 +02:00
Christoph Oelckers
1fcde91298 - BlueShadow's GetArmorInfo submission. 2014-08-08 09:25:35 +02:00
Randy Heit
fefe6aa2c1 Specie -> Species
- specie: money in the form of coins rather than notes
- species: a group of living organisms consisting of similar individuals
  capable of exchanging genes or interbreeding
2014-08-07 22:40:12 -05:00
Randy Heit
75dc7de632 Merge branch 'master' of github.com:rheit/zdoom 2014-08-07 22:28:35 -05:00
Randy Heit
46592f5f6d Don't clamp SHADE2LIGHT
- Light levels aren't stored in bytes anymore, so there's no reason to
  clamp it anymore when loading Build maps.
2014-08-07 22:27:48 -05:00
Randy Heit
fbb5689f29 Eliminate extra vars from FWallCoords
- cx1, cx2, cy1, and cy2 are not used anywhere, so get rid of them.
- Also annotated the comments to indicate the corresponding arrays in the Build engine.
2014-08-07 22:26:24 -05:00
Randy Heit
e6a1d6b516 Parse more info from Blood's map header 2014-08-07 22:00:02 -05:00
Randy Heit
9659b894a3 Skip neardepth/fardepth checking in R_DrawSprite
- Wall sprites now clip much, much better than before.
2014-08-07 20:43:09 -05:00
Randy Heit
7b02027ba7 Fixed: Wall sprites cut off one pixel short of the window's right border 2014-08-07 20:00:49 -05:00
Randy Heit
6303935ad6 Use wall sprite Y scale 2014-08-07 19:57:55 -05:00
Randy Heit
0aa67c68ab Redo lighting for each wall sprite
- Because previously it just reused whatever the most recently drawn wall
  used.
2014-08-07 17:23:06 -05:00
Randy Heit
e1ee80661e Make FWallCoords' members lowercase
because they're kind of a pain to type when all uppercase.
- Also, make its sx1 and sx2 members shorts, so it takes less space, since
  it's getting crammed into a vissprite now.
2014-08-07 17:12:04 -05:00
Leonard2
8c4c011ca2 MTHRUSPECIES on puffs
You were right it's cleaner that way
2014-08-07 18:05:39 +02:00
Leonard2
5400ce1a21 +MTHRUSPECIES on puffs 2014-08-07 15:50:21 +02:00
Christoph Oelckers
b9ffb51d0c - small but important optimization: Two-sided lines with both sides in the same sector don't really require vertex splitting for precise rendering. 2014-08-04 23:00:40 +02:00
Christoph Oelckers
09a68e8c93 - fixed incorrect function call in shader compiler. 2014-08-03 18:14:19 +02:00
Christoph Oelckers
370582d2fa - corrected versioning info for development branch. 2014-08-03 12:25:59 +02:00
Christoph Oelckers
19cfffebb3 - fixed: the WallTypes enum contained a value that no longer was valid. This was fixed orignally last week but it seems to have gotten lost. 2014-08-03 12:21:05 +02:00
Christoph Oelckers
c98e3ca99d Merge branch 'master' into v2.x 2014-08-03 10:58:41 +02:00
Christoph Oelckers
b3e0d93385 - implemented rendering of wall sprites. 2014-08-03 10:57:58 +02:00
Christoph Oelckers
398d902e7e - split off sprite clipping adjustment code into its own function. 2014-08-03 10:22:12 +02:00
Christoph Oelckers
1b55c17379 Merge branch 'master' of https://github.com/rheit/zdoom 2014-08-03 10:08:05 +02:00
Randy Heit
1d02ad3aa2 Merge branch 'master' of github.com:rheit/zdoom 2014-08-02 22:40:02 -05:00
Randy Heit
d0043bed78 Q&D port of decal code to draw generic wall sprites
- This still doesn't use all the sprite properties correctly. It also
  looks like they're going to need different code to build the clipping
  arrays. But at least wall sprites are drawn at the proper angle now!
2014-08-02 22:35:57 -05:00
Christoph Oelckers
eef4d1fac1 Merge branch 'fix_build_nonmsvc' of https://github.com/alexey-lysiuk/gzdoom 2014-08-03 01:17:15 +02:00
Christoph Oelckers
cd5e429d3b - adjust version number. 2014-08-02 23:12:08 +02:00
Christoph Oelckers
a63871d170 - at least for Intel GMA we need shaders without 'discard' to render non-transparent stuff. The performance penalty is rather hefty here. 2014-08-02 21:06:34 +02:00
Christoph Oelckers
a97b58fa27 - added check for light uniform buffer overflows, because uniform buffers on Intel are rather small. 2014-08-02 20:41:13 +02:00
alexey.lysiuk
6ef67e1d3e Fixed build on compilers other than MSVC
No more "Call to 'LittleShort' is ambiguous" error
2014-08-02 13:14:25 +03:00
Christoph Oelckers
e35fefdc06 - better rebind the active shader after updating the matrices. 2014-08-02 11:59:04 +02:00
Christoph Oelckers
b2860a1d63 - it looks like glProgramUniform is not working correctly with Intel drivers, so better forget about it for setting the view and projection matrices. Even on NVidia the time difference can only be measured in microseconds per frame so it's not a big loss. 2014-08-02 11:57:42 +02:00
Edward Richardson
9716a61219 Add CVar for drawing weapons in the althud 2014-08-02 19:34:16 +12: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
Randy Heit
15251e7a21 Set face/wall/floor flags from Build sprites 2014-07-31 22:18:08 -05:00
Randy Heit
a600a816c3 Consolidate some common code for texture mapping setup
- R_AddLine() and R_RenderDecal() had nearly identical code for setting up
  texture mapping. These have now been spun off into methods of
  FWallCoords and FWallTmapVals.
2014-07-31 21:02:22 -05:00
Randy Heit
b0b9c57e85 Pass x1 and x2 to Prep(L)Wall as params 2014-07-31 20:32:21 -05:00
Randy Heit
fc63e9db3c Pass WallC as a parameter to (O)WallMost instead of referencing it globally 2014-07-31 20:23:04 -05:00
Randy Heit
bc450808b2 Consolidate wall texturing vars into two structs
- All transformation and clipping values go into FWallCoords.
- All texture mapping values go into FWallTMapVals.
2014-07-31 20:17:23 -05:00
Randy Heit
bbc3b69a7c Remove polymost stuff
- Maybe it will be back someday, but it's been essentially dead for nearly
  10 years, so don't hold your breath.
2014-07-31 19:44:41 -05:00
Randy Heit
4cf468452c Remove slopetype from line_t.
- Recomputing it in the only two places where it's used is trivial, so
  it's basically a waste of space to precompute it.
2014-07-31 19:15:08 -05:00
Randy Heit
e55e7b9a38 Don't weed out wall and floor sprites when spawning Build sprites 2014-07-31 18:22:33 -05: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
1ec58011d2 - start of light buffer implementation so that we don't have to use uniform arrays which appear to be broken on AMD. 2014-07-31 00:44:22 +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
a922ae04cc Use Blood player starts
- Blood's maps use thing types, much like Doom's, so getting its player
  starts is easy. There's no need to synthesize a start from the editor
  position like with other Build maps.
2014-07-29 21:39:05 -05:00
Randy Heit
449a17c2f4 Correctly assign the sample rate for all Blood SFX formats
- Blood can do 44100 Hz sounds!
2014-07-29 21:09:29 -05:00
Randy Heit
e0e00c4f8c Fixed: None of the Blood ambient sounds were registered correctly 2014-07-29 20:56:20 -05:00
Randy Heit
4296e9caa2 Fix typo in comment 2014-07-29 20:51:23 -05:00
Randy Heit
d602b272b5 Never cache nodes for Build maps 2014-07-29 20:46:20 -05:00
Randy Heit
00854dd09e Don't reopen the reader for encrypted maps
- Fixed: Memory leak when loading Blood maps.
2014-07-29 20:42:17 -05:00
Randy Heit
02e7c56c82 Move SpriteFrames.Clear() from R_InitSprites to FTextureManager::Init
- Fixed: Blood sprite rotations were overwritten by the Doom sprite
  rotations.
2014-07-29 20:31:53 -05:00
Randy Heit
f3d8edb4d8 Fixed: No sprites were loaded for Build maps 2014-07-29 20:30:50 -05:00
Christoph Oelckers
a1dfdf0fc7 Merge branch 'master' of https://github.com/rheit/zdoom 2014-07-29 15:51:14 +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
Randy Heit
0f8a0020ed Merge remote-tracking branch 'origin/master' 2014-07-28 21:08:21 -05:00
Randy Heit
7280d278d9 Fix VC2005 warning in F7ZFile::Open 2014-07-28 21:03:41 -05:00
Randy Heit
4c6edd5e58 Add script array support to ZDoom 2014-07-28 21:02:20 -05:00
Edward Richardson
6af441c4d7 Dup frames shouldn't adapt.
Adapting during a dup frame caused jittery network performance
(especially when using high dup values).
The demoplayback check also didn't need to be there anyway.
2014-07-29 11:09:46 +12:00
Christoph Oelckers
beabfad293 Merge branch 'master' into Glew_Version_For_Real 2014-07-28 22:23:56 +02:00
Christoph Oelckers
318aebc4ad - fixed: the vertex collection code used incorrect indices for checking the checkmap array. 2014-07-28 22:23:17 +02:00
Christoph Oelckers
183d0ba82a Merge branch 'master' into Glew_Version_For_Real 2014-07-28 19:56:17 +02:00
Christoph Oelckers
355dd1c2f5 - fixed some issues with setting the vertex dirty state. It was also called from several sector init functions and copy code for Boom deep water. The only case where SetPlaneTexZ should call it is from the interpolation code so this is a special case now. 2014-07-28 18:01:01 +02:00
Christoph Oelckers
993b6c3066 - fixed typo in FraggleScript item class list 2014-07-28 17:13:42 +02:00
Christoph Oelckers
192daf1d5a Merge branch 'master' into Glew_Version_For_Real 2014-07-27 21:57:38 +02:00
Christoph Oelckers
ece10bb57f - fixed several incorrect uses of abs instead of fabs. 2014-07-27 21:57:05 +02:00
Christoph Oelckers
c9c93a58a2 - fixed bad constant and potential use of uninitialized variable. 2014-07-27 21:55:25 +02:00
Christoph Oelckers
3d24f58bf0 - fixed conditions for disabling the flat vertex buffer. 2014-07-27 20:18:32 +02:00
Christoph Oelckers
29a56fe01c Merge branch 'master' into Glew_Version_For_Real 2014-07-27 17:59:50 +02:00
Christoph Oelckers
925305aa05 - fixed: The code for updating vertex dirty state had been completely missing. I have no idea when it disappeared... 2014-07-27 17:58:51 +02:00
Christoph Oelckers
4904abfc1c - forgot test stuff. 2014-07-27 13:47:37 +02:00
Christoph Oelckers
97341fcb31 - reenabled the flat vertex buffer for GL 3.x NVidia hardware. On AMD and Intel it'll stay off because past tests have shown that it won't improve performance at all. 2014-07-27 13:46:35 +02:00
Christoph Oelckers
c1d8f235c2 - renamed some stuff that clashed with gl function names. 2014-07-27 12:33:54 +02:00
Christoph Oelckers
77d9d9b2a5 - fixed: For updating the model VAO's attribute pointers it is necessary to first bind the vertex buffer we need to refer to, because this is not part of the VAO's state. 2014-07-27 11:53:18 +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
e07d06fa2a Merge branch 'master' into Glew_Version_For_Real 2014-07-26 22:26:58 +02:00
Christoph Oelckers
7ae25906fd - fixed: fog must be disabled before drawing the HUD model, not after it. 2014-07-26 22:26:17 +02:00
Christoph Oelckers
bdf5bbd34e - make the shader timer part of the render state. 2014-07-26 20:56:10 +02:00
Christoph Oelckers
637aa9d77e - some adjustments to allow testing the different rendering methods. 2014-07-26 18:43:54 +02:00