Commit graph

1365 commits

Author SHA1 Message Date
Christoph Oelckers
bbf0a73471 - input works again. 2019-11-04 20:29:07 +01:00
Christoph Oelckers
1ee4efebb0 - fixed compilation. 2019-11-04 17:58:18 +01:00
Christoph Oelckers
e7f4433df6 - consolidation of mouse code and obsolete code removal 2019-11-04 02:07:59 +01:00
Christoph Oelckers
0b6db7eede - cleanup of baselayer.cpp 2019-11-04 01:18:38 +01:00
Christoph Oelckers
4bf6c306ab - added handling for cleariung mouse wheel events 2019-11-04 01:07:34 +01:00
Christoph Oelckers
29b7e1cf79 - moved all mouse button handling to the input state
Yet again an unbelievable piece of code working around how input works on modern systems to keep the old 90's code alive.
2019-11-04 01:01:54 +01:00
Christoph Oelckers
b4f91de7d3 - major refactoring on the input code.
* moved the ASCII conversion hackery in SDLayer to a subfunction because this made things just messy.
* integrated the keyboard callback's functionality directly into inputState for consolidation purposes. This was yet another independent layer in the keyboard management.
* hook up D_PostEvent as the central place to dispatch keyboard input. This is now the only function that is getting called from the backend and a major prerequiside for swapping out the backend for GZDoom's.

Todo: Route mouse input through that, too.
2019-11-04 00:55:49 +01:00
Christoph Oelckers
b747df60ee - moved all keyboard related code into the InputState class, so that looking for this stuff is easier.
Sadly there's 1ß00 lines of code using this...
2019-11-04 00:53:55 +01:00
Christoph Oelckers
01d5d51f13 - pass key events to the event queue. 2019-11-03 22:46:01 +01:00
Christoph Oelckers
eb049abc3a - it compiles again (safety commit) 2019-11-03 20:24:50 +01:00
Christoph Oelckers
b179767d4a - do not use the command line but the module filename to create the progdir path.
argv[0] is not guaranteed to contain anything usable and in cmd.exe it doesn't.
2019-11-03 13:39:42 +01:00
Christoph Oelckers
250fa0b847 - consolidation of exit and quit CCMDs. 2019-11-03 13:31:03 +01:00
Christoph Oelckers
3c7151810f - made the game interfaces classes instead of function pointer lists because that is far better at error catching.
- fixed: Blood's monster flag is a 'have_monsters', not 'nomonsters' flag. As a result none were spawned.
2019-11-03 12:32:58 +01:00
Christoph Oelckers
e24b1e8903 - replaced all uses of xxhash with SuperFastHash.
That's one more third party dependency down.
Not only are two hashing algorithms redundant, there was also a large size discrepancy: SuperFastHash is 3 kb of source code while xxhash is 120kb and generally extremely awful code.
It was easy to make a choice here. None of the use cases require this kind of performance tweaking, the longest hashed block of data is a 768 byte palette.
2019-11-02 22:52:13 +01:00
Christoph Oelckers
7853a9db6c - do not use EDuke32's savegame identifiers.
The engine may be incopatible already and the format will certainly change in the future.
2019-11-02 22:22:57 +01:00
Christoph Oelckers
3530c52264 - no need to have 2 CRC32 implementations.
Just let Bcrc32 point to zlib instead of having its own implementation.
2019-11-02 22:10:53 +01:00
Christoph Oelckers
768a75b712 - fixed video startup.
Make sure that SDL is initialized as the first thing and that the validmodecnt variable does not get cleared
2019-11-02 17:26:40 +01:00
Christoph Oelckers
e4ecc5d8df - some reshuffling on OSD code.
* moved the binding commands to osd.cpp. They were in the global namespace already and this way everything to be tossed out is in the same place when the time comes.
* removed support for the OSDs native CVARs. The only ones left were some internal ones I won't need until this code can be replaced.
* same for the custpmization code the games added. Duke Nukem was the only one anyway to have a decent font for it.
2019-11-02 14:25:35 +01:00
Christoph Oelckers
8fb54b51c3 - rewrote the screenshot code to use m_png as its backend.
Mainly to finally get rid of kplib. There's really no use to keep such code around if alternatives are already present.
2019-11-02 12:59:59 +01:00
Christoph Oelckers
1d7bfe14dc - removed kplib's compression code.
Its only use in savegames has already been disabled in favor of a format restructuring.
2019-11-02 11:29:23 +01:00
Christoph Oelckers
ab28697c18 - undid the very pointless pow2char (de)optimization by substituting the real array with an empty struct containing an inlined [] operator.
I think this shows a fundamental misunderstanding of what constexpr means, even when declared as such it requires a constant argument to be treated as a constant.
But since nearly all uses of this were not using constants, the compiler was emitting actual memory accesses to the array each time this was used.
2019-11-02 10:45:41 +01:00
Christoph Oelckers
fca3c2f5b5 - removed the directory scan code from compat.cpp.
It is only used by the user map menus which I had to disable already and on top of that is blissfully incapable of dealing with Unicode.
2019-11-02 10:39:31 +01:00
Christoph Oelckers
c54ae1be83 - removed the remaining parts of cache1d. The only thing left is the dummy cacheAllocateBlock function that needs to stick around until a working cache is present.
- disabled the user maps menu because it is hopelessly dependent on functionality that cannot be fixed. Better wait until the menu refactor to do it right - it'd be a waste of time fixing the current menus.
2019-11-02 01:30:21 +01:00
Christoph Oelckers
1149b4f4aa - various fixes and improvements related to file location management:
* saving of demos and savegames no longer mindlessly writes to the mod directory. All such access is now being rerouted through the special paths interface so that the game data can reside in write protected locations.
* refactored all occurences of klistpath except fnlist_getnames.
* do not allow CON scripts to write to arbitrary files. This is a massive exploit and can be used to cause real damage if someone knows how to play this thing - it's far easier than people may think! It will now write any such data to a special section in the main config which is safe and cannot be manipulated to write to random locations on the hard drive.
2019-11-02 00:38:30 +01:00
Christoph Oelckers
cfca8060ba - gutted cache1d. The old file system is gone, excepr for klistpath, which still gets used in a few places.
- consolidated the 3 identical S_OpenAudio implementations. The replacement code is disabled for the time being because it needs a rewrite. The replacement logic is uses is a bit too volatile.
- removed the old GRP scan code.
2019-11-01 22:17:15 +01:00
Christoph Oelckers
2d7c0e26d2 - cleanup of the old file system initialization.
The real fun part is yet to come, i.e. removing the remaining dependencies on the old file system code.
2019-11-01 19:25:42 +01:00
Christoph Oelckers
39bfd64fe9 - a bit more cleanup in app_init. 2019-11-01 08:24:10 +01:00
Christoph Oelckers
6c5d9c3507 - moved the net init code out of the game frontends to avoid having to call atexit for their deinit function.
When doing this during startup it can be done by regular cleanup measures.
This also moves two larger chunks of networking code out of game.cpp.

Nevertheless, the fact that enet is a very dirty library which directly depends on Windows types is a big problem because it bleeds Windows definitions everywhere thanks to poor abstraction in all relevant layers.
2019-11-01 07:26:49 +01:00
Christoph Oelckers
67acad3984 - startup cleanup. 2019-11-01 00:32:56 +01:00
Christoph Oelckers
57f879fa8b - moved the startup dialog out of the game front ends, now that there is a global cross-game list of playable configurations. 2019-10-31 23:25:21 +01:00
Christoph Oelckers
c6753a3fec - tested and fixed game list loader. 2019-10-31 00:41:56 +01:00
Christoph Oelckers
2a7beeff69 - cleaned out some chunks of unused or useless code, most importantly the Build cache which was only used by the sound code for permanently loading the data into memory. 2019-10-30 21:51:04 +01:00
Christoph Oelckers
5b1036093c - fixed startup. 2019-10-30 19:55:03 +01:00
hendricks266
dcba445f4e SW: Fix file loading and init sequence
git-svn-id: https://svn.eduke32.com/eduke32@8269 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/duke3d/src/common.cpp
#	source/duke3d/src/game.cpp
#	source/sw/src/common.cpp
#	source/sw/src/common_game.h
#	source/sw/src/game.cpp
#	source/sw/src/jnstub.cpp
2019-10-30 18:38:43 +01:00
hendricks266
797c79d4a5 Move registry reading to engine
git-svn-id: https://svn.eduke32.com/eduke32@8268 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/duke3d/src/common.cpp
2019-10-30 18:27:40 +01:00
hendricks266
9b21fe0c28 Move VDF parsing to engine
git-svn-id: https://svn.eduke32.com/eduke32@8267 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/common.h
#	source/duke3d/src/common.cpp
2019-10-30 18:15:00 +01:00
Christoph Oelckers
ac87665972 - use std::filesystem for directory traversal.
So far implemented for scanning search paths
2019-10-29 19:53:46 +01:00
Christoph Oelckers
762f174743 - moved the command line parser out of the game frontends.
Some part are not done yet, and the file system data is currently ignored - there's no way to properly set this up with the file system code Build came with.
2019-10-28 22:19:50 +01:00
Christoph Oelckers
f8203ac766 - fixed the compile errors and consolidated the key binding CCMDs. 2019-10-28 06:47:49 +01:00
Christoph Oelckers
e7f75cbf4d WIP 2019-10-28 01:12:31 +01:00
Christoph Oelckers
c0d5ca8ab8 - Config work almost done.
The only thing still referencing the old config file is Shadow Warrior's config read function.
2019-10-27 13:40:24 +01:00
Christoph Oelckers
038c1ba4ba - more CVARs. 2019-10-27 09:53:09 +01:00
Christoph Oelckers
4b5ec2aabb - transitioned the combat macros to the new config and made them independent for all games, so that everything can use the original text. (But considering that they are a multiplayer feature I'm not sure how much that is worth.)
- sort the config output alphabetically.
- do not use [=] as key names for the bindings.
2019-10-27 08:14:58 +01:00
Christoph Oelckers
db1a9a9363 - the config finally get saved.
Still with a few errors, though.
2019-10-26 20:47:37 +02:00
ny00123
731671c401 Make the secondary backslash key of the standard 102-keys PC keyboard layout, also known as a "less than" key, usable. This is the key generally sitting in-between the left shift and Z keys, for the 102-keys QWERTY layout.
git-svn-id: https://svn.eduke32.com/eduke32@8265 1a8010ca-5511-0410-912e-c29ae57300e0
2019-10-26 19:29:13 +02:00
Christoph Oelckers
f53c9f6947 - save stuff to the new config. 2019-10-26 19:24:46 +02:00
Christoph Oelckers
cd47582632 - disabled the settings.cfg console script so that the newly added config code can take over its duties.
- write the console log to the folder returned by M_GetDocumentsPath and not to the root game directory.
- removed G_ExtPreInit because it has become redundant. The search path setup will have to be redone anyway.
2019-10-26 13:41:42 +02:00
Christoph Oelckers
1e0d49f947 - game starts again. 2019-10-26 13:16:32 +02:00
Christoph Oelckers
1c29169492 -perform a proper exit, i.e. make sure that the deinit code can run, by throwing a special exception and actually catching it in the main function. 2019-10-26 10:30:08 +02:00
Christoph Oelckers
0d878a8604 - some needed cleanup on the control code before testing can start. 2019-10-26 10:16:39 +02:00
Christoph Oelckers
5cf5c74695 - let kopenFileReader have a look into demolition.pk3 if nothing else is found.
This should help as long as the old resource management is still in place.
2019-10-25 02:01:52 +02:00
Christoph Oelckers
8730ce552b - make things compile again.
Let's hope it still works...
2019-10-24 20:28:46 +02:00
nukeykt
e6f53f7c30 Resolve merge issues
# Conflicts:
#	GNUmakefile
#	platform/Windows/eduke32.sln
#	platform/Windows/props/build_common.props
#	source/audiolib/include/music.h
#	source/blood/src/blood.cpp
#	source/blood/src/gui.cpp
#	source/blood/src/mapedit.cpp
#	source/blood/src/sound.cpp
#	source/build/include/vfs.h
#	source/build/src/vfs.cpp
2019-10-24 19:48:11 +02:00
Christoph Oelckers
966751b7e8 - added GZDoom's font code and some dependencies. 2019-10-24 01:20:58 +02:00
Christoph Oelckers
20df360778 - converted the Polymost CVARs. 2019-10-23 21:11:37 +02:00
Szilárd Biró
c419fae31b Fix compiling without OpenGL 2019-10-23 18:37:56 +02:00
Christoph Oelckers
21d90fd08b - fixed compilation. 2019-10-23 18:36:48 +02:00
Christoph Oelckers
63f020996e - a few more CVARs 2019-10-23 01:30:43 +02:00
Christoph Oelckers
e5aa6c5df0 - refactored the HUD scaling into something manageable.
Blood was fine, albeit with an inverted scale, but the EDuke implementation was something very special - and not in a good way, using 4 CVARs to store the scaling state instead of one.
2019-10-22 23:31:46 +02:00
Christoph Oelckers
30e9eed1b3 - the next CVAR, cl_autoaim 2019-10-22 00:05:21 +02:00
Christoph Oelckers
f7b9fb92c1 - added back ZDoom's CVAR code and hooked into the OSD.
This has the distinct advantage, aside from much cleaner coding, that it can interoperate with the gameconfigfile class.
2019-10-21 22:39:26 +02:00
terminx
91dac5c73a I swear, the amount of trivial differences between toolchain setups drives me up the wall sometimes
git-svn-id: https://svn.eduke32.com/eduke32@8247 1a8010ca-5511-0410-912e-c29ae57300e0
2019-10-21 19:37:14 +02:00
terminx
b2421887a1 Use stat() instead of fopen() to detect existing files when saving screenshots
git-svn-id: https://svn.eduke32.com/eduke32@8246 1a8010ca-5511-0410-912e-c29ae57300e0
2019-10-21 19:37:13 +02:00
Christoph Oelckers
72b87e5bd7 - fixed compilation. 2019-10-21 19:36:54 +02:00
Christoph Oelckers
8c7590e161 - refactored most of the remaining calls to kopen4load 2019-10-21 17:16:08 +02:00
Christoph Oelckers
0c4ffdea43 - do not use the cache for loading voxel data
This stuff is software rendering only so should be made optional anyway.

But aside from that it was the last non-sound data, being loaded into the cache.

With this gone the sound cache can be redone as a dedicated object and the atrocious cache1d implementation be tossed out.
2019-10-21 01:17:26 +02:00
Christoph Oelckers
5333f6adc1 - refactored a few more - simple stuff but lots of lines. 2019-10-21 00:13:17 +02:00
Christoph Oelckers
d3c2d8e96f - refactored file access in the movie player. 2019-10-20 22:48:21 +02:00
Christoph Oelckers
449a5a4717 - refactoring of palette loader. 2019-10-20 22:26:53 +02:00
Christoph Oelckers
6e7db1b63a - refactored file access in RR frontend's sound code. 2019-10-20 21:56:13 +02:00
terminx
69a3f9e884 Band-aid fix for Duke3d E4L4 map "corruption"
The map isn't necessarily "corrupt", but it has a large water sector with half a dozen different SE7 teleporter sprites in it, of which all but one have destination SE7 sprites that are constantly moving while the matching SE7 in the large sector stays in place. When you teleport, the game code picks one. It doesn't always pick the one that matches.

Yeah, OK, it never picks the one that matches.

The area is a total clusterfuck.

git-svn-id: https://svn.eduke32.com/eduke32@8241 1a8010ca-5511-0410-912e-c29ae57300e0
2019-10-20 21:08:48 +02:00
Christoph Oelckers
2be5727137 - refactored all file reading in the savegame code to the FileReader interface.
In this case a different open function is used because this is normally files on the hard drive and not assets, so being able to have a different setup for finding them is important.
2019-10-20 21:04:55 +02:00
Christoph Oelckers
7cacb7203f - refactored all file access in SW frontend to use the FileReader variant and added a few utilities to avoid opening handles.
Because use of the handle API needs to be eliminated before a functioning resource management can be plugged in here.
2019-10-20 20:08:17 +02:00
Christoph Oelckers
75205ca69c - do not throw exceptions to exit without proper handling. 2019-10-20 11:28:16 +02:00
Christoph Oelckers
489170b12c - fixed compilation again. 2019-10-20 10:52:38 +02:00
terminx
ba02bbaf67 Add #pragma once to debugbreak.h and remove it from separate inclusion in a couple of translation units as we're including it directly in compat.h now
git-svn-id: https://svn.eduke32.com/eduke32@8192 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/sdlayer.cpp
#	source/duke3d/src/gamedef.cpp
2019-10-20 10:45:48 +02:00
terminx
d7f779eaec Use EXIT_FAILURE and EXIT_SUCCESS from stdlib.h when calling exit()
git-svn-id: https://svn.eduke32.com/eduke32@8190 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/build.cpp
#	source/build/src/polymost.cpp
#	source/build/src/tiles.cpp
#	source/duke3d/src/astub.cpp
2019-10-20 10:45:48 +02:00
Christoph Oelckers
2316957026 - made things compile again after updating enet. Also removed the redundant dumb and game_music_emu libraries which just got imported by accident when using other things from GZDoom.
Note: enet uses 'malloc' and 'free' as field names in a struct - this does not work with any compiler using some sort of heap instrumentation that #defines these names!
This had to be changed to allow MSVC debug builds to compile again.
2019-10-20 09:16:01 +02:00
terminx
63713002b3 Swap out our old deprecated version of ENet for a single-file header-based fork, including features like IPv6 support
git-svn-id: https://svn.eduke32.com/eduke32@8175 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	GNUmakefile
#	libraries/enet/LICENSE
#	libraries/enet/callbacks.c
#	libraries/enet/compress.c
#	libraries/enet/enet/callbacks.h
#	libraries/enet/enet/enet.h
#	libraries/enet/enet/list.h
#	libraries/enet/enet/protocol.h
#	libraries/enet/enet/time.h
#	libraries/enet/enet/types.h
#	libraries/enet/enet/unix.h
#	libraries/enet/enet/utility.h
#	libraries/enet/enet/win32.h
#	libraries/enet/host.c
#	libraries/enet/list.c
#	libraries/enet/packet.c
#	libraries/enet/peer.c
#	libraries/enet/protocol.c
#	libraries/enet/unix.c
#	libraries/enet/win32.c
#	platform/Windows/build.vcxproj
#	platform/Windows/build.vcxproj.filters
#	platform/Windows/eduke32.sln
#	platform/Windows/eduke32.vcxproj
#	source/duke3d/src/player.cpp
2019-10-20 08:43:36 +02:00
terminx
1667d4dd87 This is useless
git-svn-id: https://svn.eduke32.com/eduke32@8170 1a8010ca-5511-0410-912e-c29ae57300e0
2019-10-20 08:31:49 +02:00
terminx
8b43ed5777 Rename timerUpdate() and timerGetRate() to timerUpdateClock() and timerGetClockRate(), because they both only apply to totalclock
git-svn-id: https://svn.eduke32.com/eduke32@8169 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/timer.cpp
#	source/build/src/winlayer.cpp
2019-10-20 08:31:26 +02:00
terminx
91fde580ce Use nanosleep instead of usleep
git-svn-id: https://svn.eduke32.com/eduke32@8168 1a8010ca-5511-0410-912e-c29ae57300e0
2019-10-20 08:29:25 +02:00
terminx
8e088f6659 Equivalent to jfbuild commit b6a666745cea21c6f8193b046bcdd0636fb7c166
git-svn-id: https://svn.eduke32.com/eduke32@8158 1a8010ca-5511-0410-912e-c29ae57300e0
2019-10-20 08:17:35 +02:00
terminx
0270cc2df5 SDL_free() is not for pointers to SDL_RWops structures...
git-svn-id: https://svn.eduke32.com/eduke32@8151 1a8010ca-5511-0410-912e-c29ae57300e0
2019-10-20 08:16:02 +02:00
terminx
c86af959b9 Add optional duration parameter to idle()
git-svn-id: https://svn.eduke32.com/eduke32@8149 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/winlayer.h
2019-10-20 08:13:22 +02:00
Christoph Oelckers
e5ddb28a2b - renamed texcache.cpp and moved it to its proper place.
The old content no longer exists, this is entirely backend code now.
2019-10-20 08:04:54 +02:00
Christoph Oelckers
f29dd6c495 - include cleanup 2019-10-20 08:02:45 +02:00
Christoph Oelckers
efcf447398 - moved newly added file to its proper place. 2019-10-20 07:51:35 +02:00
terminx
4dfae31900 Update xxHash to git commit cd0f5c22095c49c35104dca86620322801f14893
git-svn-id: https://svn.eduke32.com/eduke32@8142 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	platform/Windows/build.vcxproj
#	platform/Windows/build.vcxproj.filters
2019-10-20 07:50:30 +02:00
terminx
70171ea341 Use timerGetHiTicks() instead of timerGetTicks() for timing in osdfunc_fileinfo()
git-svn-id: https://svn.eduke32.com/eduke32@8141 1a8010ca-5511-0410-912e-c29ae57300e0
2019-10-20 07:48:16 +02:00
terminx
4c4ffa80b4 Use tabledivide64() in timerUpdate()
git-svn-id: https://svn.eduke32.com/eduke32@8136 1a8010ca-5511-0410-912e-c29ae57300e0
2019-10-20 07:48:02 +02:00
Christoph Oelckers
85d377647a - tweaked the fade ramp a bit.
For Duke Nukem and its direct offspring (Nam, WW2GI and Redneck Rampage) the ramp is not a linear fade from 0 to 1, it needs to be a little darker than that.
Unfortunately the proper factor needed here must be set manually, this cannot really be calculated from the lookup tables.
2019-10-20 01:14:48 +02:00
Christoph Oelckers
abaa1d19ee - fixed some bad setup in SetTextureInternal. 2019-10-20 00:31:27 +02:00
Christoph Oelckers
bb4a19cf3a - added a few more texture formats to FHardwareTexture.
For brightmaps we do not need full RGBA8 data with mipmaps - RGBA2 without mipmaps is fully sufficient here and will save a lot of video memory.
2019-10-19 23:14:36 +02:00
Christoph Oelckers
7d2f61db2e - converted all boolean parameters of the shader into a single flag word.
- discarded the idea of transient palettes because the maintenance here stood in no relation to the savingd.
2019-10-19 22:46:37 +02:00
Christoph Oelckers
6f4ca480b5 - sky clamping may only be done in Blood for now.
This needs a better solution.
2019-10-19 20:25:58 +02:00
Christoph Oelckers
5fa879d5d1 - use texture clamping for skies, because these textures do not always wrap. 2019-10-19 19:29:59 +02:00
Christoph Oelckers
d4fc13fba5 - cleaned up the sampler manager's content names and added the missing types to allow easier switching between indexed (no filtering) and non-indexed (filter as per user option). 2019-10-19 19:10:09 +02:00
Christoph Oelckers
2152780806 - added some hackery to render voxels properly again.
Something about their data preparation is not right, their depth looks totally off and causes fog to become to dense.
One more reason to reconstruct the renderer in a sane fashion.
2019-10-19 18:14:13 +02:00
Christoph Oelckers
cd7bbe35a8 - removed all legacy fog code. 2019-10-19 15:52:46 +02:00
Christoph Oelckers
2ef89abe08 - reworked palookupinfo output. 2019-10-19 13:27:09 +02:00
Christoph Oelckers
4a9f0248d7 - removed the texture ID cache.
Although this initially helped, it was only because it partially covered up the issues from the real problem which was using the sampler properties of the texture offsets.
With that one fixed this cache became pointless.
2019-10-19 10:40:47 +02:00
Christoph Oelckers
bc986b8054 - make the engine consistently use BGRA data - the internal palettes were still RGBA, which caused problems down the line.
- increased cache size to 200 MB (Note: The cache really needs to be replaced with something better that can adapt better to a system's RAM size.)
2019-10-19 10:22:02 +02:00
Christoph Oelckers
c6f973d05f - more palookup information dumping 2019-10-19 00:25:42 +02:00
Christoph Oelckers
00630f728f - fixed voxel rendering.
Still need to move the voxel textures into the texture manager but at least they render properly again.
2019-10-18 22:25:47 +02:00
Christoph Oelckers
00d59459a1 - fixed creation of true color textures and disabled fog in palette mode.
The fog should go away entirely but in palette mode it made everything too dark.
2019-10-18 22:09:19 +02:00
Christoph Oelckers
2ed722f329 - do not draw invalid textures. 2019-10-18 19:29:35 +02:00
Christoph Oelckers
dab7c43f7c - fixed all compiler errors.
It mostly works again, but still has a few glitches.
2019-10-18 19:06:57 +02:00
Christoph Oelckers
23265ad213 - rework of texture management for models
Voxels yet to do.
This also removes the redundant texture matrix for the glow texture.
2019-10-18 14:04:32 +02:00
Christoph Oelckers
542994cc20 - added lookup for brightmap palettes. 2019-10-18 12:11:53 +02:00
Christoph Oelckers
530a9944f7 - texture loader redone but not tested yet
Models are currently non-functional and need to reroute their texture handling to the global texture manager instead of handling everything themselves.

Voxels also need a bit of work to make their texture management more automated.
2019-10-18 11:37:07 +02:00
Christoph Oelckers
c6514949e3 - texture creation WIP. 2019-10-18 00:20:27 +02:00
Christoph Oelckers
3da49ad20a - safety commit: all relevant code for the texturing system has been moved to texcache.cpp. 2019-10-17 21:44:34 +02:00
Christoph Oelckers
bef8c9ae76 - hictinting cleanup.
This needs to be moved into the backend, and partially into the shader. So far this only removes the code from the main rendering logic, the final implementation is not done yet.
It had to go because it required the main rendering code to look deep into the texture data which would be a major blocker for refactoring.
2019-10-17 20:29:58 +02:00
Christoph Oelckers
304a906aa7 copy code 2019-10-17 14:21:51 +02:00
Christoph Oelckers
1426ebec20 Moved hightile replacement data into the textures
Not tested yet!
2019-10-17 12:45:25 +02:00
Christoph Oelckers
4f8e0dd936 - cleaned up a few copyright notices and unified licenses 2019-10-17 09:42:11 +02:00
Christoph Oelckers
452cfe385e - Blood's voxel loader override has somehow gotten lost. 2019-10-16 23:57:29 +02:00
Christoph Oelckers
0aa5db7969 - project rework to shorten compile times.
* subprojects fpr game frontends added and unsigned char option put into global flags.
2019-10-16 23:09:02 +02:00
Christoph Oelckers
4cd2c024fc - fixed crash in texture deinit code and ensure that everything gets deleted. 2019-10-16 21:16:40 +02:00
Christoph Oelckers
64e116a4b1 - use special classes with [] operators to redirect the frequently used global arrays to the newly implemented texture manager.
This allows to use the contained storage without changing all the code.
2019-10-16 20:39:59 +02:00
Christoph Oelckers
4dc69620b7 - cleanup 2019-10-15 23:56:29 +02:00
Christoph Oelckers
57c221644a - transitioned all texture options of the def file 2019-10-15 23:38:01 +02:00
Christoph Oelckers
bb78db71bc - tileDelete / tileSetDummy 2019-10-15 23:29:47 +02:00
Christoph Oelckers
9a52e8039c - rerouted tileCreate and tileSetExternal calls. 2019-10-15 23:18:52 +02:00
Christoph Oelckers
c3bc690e98 - more updating and bug in UpdatePicSize fixed. 2019-10-15 20:02:37 +02:00
Christoph Oelckers
0e165e40a3 - first batch of adjustments to the new tile management.
- consolidated Polymost precaching and removed precaching for static tiles because they now are always loaded.
- removed cache configurability. On modern systems this is relatively pointless - allocating 50 or 100 MB is a non-issue - and the cache is due for replacement anyway.
2019-10-15 00:54:14 +02:00
Christoph Oelckers
4b6f28e7c8 - hooked up the writable texture types. 2019-10-15 00:19:31 +02:00
Christoph Oelckers
039d948991 - update of new texture classes. 2019-10-14 23:11:01 +02:00
Christoph Oelckers
a6ba81939a - reworked texture management, not yet active. 2019-10-12 22:49:46 +02:00
Christoph Oelckers
fbc22e0125 - sanitized walock.
Sorry, but having a globally writable pointer to every texture is just insane and makes any functional management impossible.
This is merely a preparation for adding a real texture manager. That cannot be done if any code can write over the data at will. For that, it now has to make the texture writable first or create a writable empty texture.
2019-10-11 23:31:59 +02:00
Christoph Oelckers
3621aae3f0 - rerouted all write accesses to tilesiz and picsiz through a function interface.
These will have to do some texture management bookkeeping so directly changing the values is problematic.
This required changing the parameter interface in polymost.cpp because a few places hacked around with the global state to pass parameters to subfunctions.
2019-10-11 21:04:31 +02:00
Christoph Oelckers
14b21bab7a - merged playing_blood and bloodhack variables because they did the same thing.
The only difference was that bloodhack came from NBlood and playing_blood was added for unhandled differences between the backends of EDuke32 and NBlood.
2019-10-11 00:34:27 +02:00
Christoph Oelckers
d9d721bff6 - removed old sky code.
r_flatsky is now the only option.
2019-10-11 00:15:20 +02:00
Christoph Oelckers
79ef3413dc - removed a large block of fudging code for NPOT textures on non-supporting hardware.
We do not care about non-supporting hardware, so off this goes.
2019-10-10 23:38:06 +02:00
Christoph Oelckers
4d83a3c2a5 - moved all code related to texture creation to texache.cpp
Also go directly to the source when trying to determine translucency of a texture.
2019-10-10 23:29:13 +02:00
Christoph Oelckers
c588cd499a - let GLInstance::Draw set the palette indexing mode.
This can be trivially decided based on the texture type, so there's really no need to let the higher level code deal with this.
2019-10-10 23:14:57 +02:00
Christoph Oelckers
36ca38258e - hotfixed the transparency checkers to not create textures from regular tiles.
This caused some broken textures, apparently this gets called when not everything has been set up.
The hightile case will also have to be fixed.
2019-10-10 22:23:20 +02:00
Christoph Oelckers
fbc7e626e9 - removed the fullbright render pass, because this is better set up as a shader option.
- also removed the legacy fog modes because their implementation did not mix well with the texture system - they are also not really useful to begin with.

The last fog mode will most likely also be removed once true color shading is working but that one is less of an issue.
2019-10-10 21:05:10 +02:00
Christoph Oelckers
84b10bdb74 - cleaned up videoUpdatePalette function and removed the hardware texture invalidation from it.
This makes no sense because it'd toss out all the level textures that may still be needed for what probably is only a temporary palette change (like going underwater)
2019-10-10 20:28:41 +02:00
Christoph Oelckers
1407c18f8b - cleaned out some remains of the non-indexed render path.
All of this will be redone in the backend.
2019-10-10 19:40:33 +02:00
Christoph Oelckers
46ffea94a4 - cleanup of gloadtile_art. 2019-10-10 19:30:05 +02:00
Christoph Oelckers
34b7759b7e - removed the non-indexed parts of gloadtile_art.
This won't be needed anymore.
2019-10-10 19:25:03 +02:00
Christoph Oelckers
c428e367a0 - hotfix for texture filter settings.
This needs to be done differently later to choose the proper clamp setting.
2019-10-10 19:16:27 +02:00
Christoph Oelckers
1fee7a5f01 - cleanup of texture creation code.
There were several mostly pointless options complicating all of this.
2019-10-10 00:07:45 +02:00
Christoph Oelckers
eca099681a - hooked up the Shadow Warrior frontend.
It doesn't really work but this way it always gets compiled and linked so that it receives the changes to the backend code.
2019-10-09 20:14:04 +02:00
Christoph Oelckers
ef0fd57367 - small bits of cleanup. 2019-10-08 22:23:48 +02:00
Christoph Oelckers
93f9303c62 - minor reorganization of tiles. 2019-10-08 19:46:39 +02:00
Christoph Oelckers
b78b53d75b - deleted unused function. 2019-10-08 18:48:14 +02:00
Christoph Oelckers
50e6d364be - prevent crash on invalid textures. 2019-10-08 01:37:24 +02:00
Christoph Oelckers
7131fe6c6e - use separate textures for the palswap shade tables.
This creates a lot less mess than one big texture and also allows easier use of texelFetch in the server which is preferable for data textures.
2019-10-08 01:08:08 +02:00
Christoph Oelckers
82f6e2edb0 - fixed creation of paletted textures and added some palette debugging aids. 2019-10-07 23:32:38 +02:00
Christoph Oelckers
c050a0c4c8 - changed palswap management to handle the size of full lookup tables. 2019-10-07 00:34:15 +02:00
Christoph Oelckers
7713860b63 wip. 2019-10-07 00:14:16 +02:00
Christoph Oelckers
734d8b7d1e - moved the palette management into the backend. 2019-10-06 21:15:53 +02:00
Christoph Oelckers
b1aaafb973 - abstracted uploadpalswap out of the game code.
This needs special setup on the renderer side that needs to be done in a more controlled fashion.
2019-10-06 19:47:31 +02:00
Christoph Oelckers
ef2de97077 - the harmless changes of the failed refactoring of the shader. 2019-10-06 19:32:35 +02:00
Christoph Oelckers
71d132b470 - use explicitly declared matrix uniforms.
The builtin matrices are no longer available in modern GLSL, preventing an upgrade of the shader.
Also perform better reporting of shader compilation errors.
2019-10-06 10:19:51 +02:00
Christoph Oelckers
d1a7c4225d - added a texture class for ART-format hightiles.
This allows to treat them like all other image formats.
2019-10-05 23:44:28 +02:00
Christoph Oelckers
0dfe99356d - stripped most of the image processing code from kplib, because it's not needed anymore - and also not salvageable for any refactoring. 2019-10-05 22:32:32 +02:00
Christoph Oelckers
93ad83b380 - use GZDoom's texture backend to read hightile textures. (Hightile tinting code moved to the shader but isn't active yet.
- remove all code for faking gamma correction through palette manipulated images.
2019-10-05 21:59:03 +02:00
Christoph Oelckers
bedfc262c4 - added a FileReader wrapper for kopen4load.
Needed when transitioning the hightile loader to GZDoom's texture loader.
2019-10-05 17:30:23 +02:00
Christoph Oelckers
f99492d6d5 - removed OpenGL headers from non-backend files. 2019-10-05 13:57:26 +02:00
Christoph Oelckers
3c193bb243 - moved the animvpx shader to the backend code.
This removes the final access to OpenGL from the rest of the source, with the exception of the glFinish call in the swap code.
2019-10-05 13:38:02 +02:00
Christoph Oelckers
0ee80628a2 - moved documentation out of the Source folder and added surface shader sources. 2019-10-05 13:17:26 +02:00
Christoph Oelckers
b83349fe6b - moved the surface shader to the backend and the shader source to the resource file. 2019-10-05 13:09:15 +02:00
Christoph Oelckers
644b07b718 - minor fixes. 2019-10-05 12:39:50 +02:00
Christoph Oelckers
bd4e4834e3 - moved the main shader and its entire uniform maintenance into the backend. 2019-10-05 12:28:08 +02:00
Christoph Oelckers
d058084c10 - added an engine resource file.
Currently this only contains the main Polymost shaders and the resources from nblood.pk3.
The latter cannot be used yet because the Build resource management system is too stubborn to add the newly added file without some changes.
It's better to refactor the entire system instead.
2019-10-04 23:29:00 +02:00
Christoph Oelckers
ae1e090716 - all non-shader related GL calls are gone from the main code base. 2019-10-04 21:13:04 +02:00
Christoph Oelckers
f992aebf33 - two more 2019-10-04 19:17:55 +02:00
Christoph Oelckers
cb80e877ff - refactored fog and depth func setting into GLInterface. 2019-10-04 18:44:16 +02:00
Christoph Oelckers
204abab724 glColor calls refactored. 2019-10-04 18:25:18 +02:00
Christoph Oelckers
96c0c3197c - abstracted away more OpenGL calls, in particular all matrix access. 2019-10-04 18:12:03 +02:00
Christoph Oelckers
1ff8ea6a19 - added matrix class for moving the GL matrix manipulation out of the engine code. 2019-10-04 01:41:57 +02:00
Christoph Oelckers
471f720d95 - consolidated console clear functions. 2019-10-04 01:25:10 +02:00
Christoph Oelckers
ebbe1803bb - made the game selector configurable (It's still Windows only...) 2019-10-04 00:26:13 +02:00
nukeykt
528e7f8320 More meaningful names for build object struct members 2019-09-30 20:31:11 +02:00
nukeykt
61b4fae6e0 Simplify voxel rotation handling
# Conflicts:
#	source/build/include/mdsprite.h
2019-09-30 20:31:09 +02:00
Christoph Oelckers
7fd395b5d7 - removed some legacy demo stuff from RedNukem backend. 2019-09-26 00:19:49 +02:00
nukeykt
c815e1c246 Minor sorting fix 2019-09-25 23:15:45 +02:00
nukeykt
9deb486626 Second attempt to fix polymost sprite sorting issue 2019-09-25 23:15:44 +02:00
Christoph Oelckers
d12563f644 - got rid of klzw and the legacy demo code along with it. 2019-09-25 23:12:29 +02:00
Christoph Oelckers
0261fef4a8 - removed some unused files. 2019-09-25 23:00:10 +02:00
Christoph Oelckers
18b1ca287e - moved the platform specific files out of the Build folder, mainly to get them out of the way. 2019-09-25 22:43:06 +02:00
Christoph Oelckers
cd920299d0 - moved winbits.cpp to the platform folder and cleaned out unused parts. 2019-09-25 22:38:47 +02:00
Christoph Oelckers
ad4527c8be - initialize the GL backend in the proper place.
As long as there are still video mode switches this needs to be in the video mode switching function.
2019-09-23 23:33:59 +02:00
Christoph Oelckers
a5441061e9 - always save the entire config.
It is a major hassle if values cannot be looked up and then change when switching between branches etc.
2019-09-23 21:27:23 +02:00
Christoph Oelckers
330c80246e - added ZDoom's FArgs class for easier command line checking. 2019-09-23 19:29:25 +02:00
Christoph Oelckers
37907ddd06 - startup hacks.
Unfortunately nothing of this can be fixed before the resource management has been refactored from the ground up. Sp for now this ugliness needs to suffice.
2019-09-23 18:17:36 +02:00
nukeykt
895fb719d9 blooddemohack -> enginecompatibility_mode 2019-09-23 01:30:07 +02:00
Christoph Oelckers
527d99008b - fixed the setup.
Renamed all elements still referring to zdoom.
removed the frontend specific resource data.
fixed startup dialog to accept ANSI date despite building as Unicode. This needed a bit of hackery because the macros in windowsx.h are not character set sensitive.
2019-09-23 01:28:18 +02:00
Christoph Oelckers
2cbe211e7c - transitioned project to CMake and deleted most of the old build system.
The EDuke32 and RedNukem frontends are working, Blood isn't yet.

Notes:

many of the CMake variables and its output still refer to zdoom. Before changing that I wanted to make sure to be able to commit something that works.
support code for Windows XP has been entirely removed. On Windows this will only target Vista and up.
the crc32.h header had to be renamed to deconflict from zlib.
several Windows API calls were changed to call the A-versions directly. Weirdly enough there were places that defined their parameters as T types but in a non-working way.
removed some remaining editor files and support for the native software rendering only Windows backend.
in a few simple cases, replaced 'char' with 'uint8_t'. The code as-is depends on chars being unsigned which is non-portable. This needs to be carefully reviewed.
2019-09-22 23:15:46 +02:00
Christoph Oelckers
0d98e7f256 - put all Blood game code into a namespace. 2019-09-22 08:39:22 +02:00
Christoph Oelckers
2dc051f7cf - put RedNukem game frontend into a namespace. 2019-09-22 00:10:48 +02:00
Christoph Oelckers
401a645ea1 - added a temorary requester to allow choosing the game until the code has been sufficiently refactored to do this in the startup dialog. 2019-09-21 23:45:57 +02:00
Christoph Oelckers
55a879fcc0 - put EDuke frontend source into a namespace.
This commit does not work yet!
2019-09-21 22:53:00 +02:00
Christoph Oelckers
30c47a8511 - include namespace file in all sources as the very first include. 2019-09-21 20:59:54 +02:00
Christoph Oelckers
5050716bc0 - removed most extern "C" from the rest of the code base. 2019-09-21 20:14:34 +02:00
Christoph Oelckers
a2b429ffe0 - removed unused declaration. 2019-09-21 13:16:02 +02:00
Christoph Oelckers
998ac01157 - manual merge of all NBlood changes that couldn't get cherry picked. 2019-09-21 13:02:17 +02:00
nukeykt
81f78c24b7 Implement rotate parameter for voxel definitions
# Conflicts:
#	source/build/include/build.h
#	source/build/include/mdsprite.h
#	source/build/src/defs.cpp
2019-09-21 11:43:50 +02:00
nukeykt
90b005a44a Fix mouse centering in menu 2019-09-21 11:40:44 +02:00
nukeykt
78a3240c3e Fix flat sky y offset 2019-09-21 10:51:47 +02:00
nukeykt
68c7b8c402 Compile fix
# Conflicts:
#	source/build/include/build.h
2019-09-21 10:38:26 +02:00
nukeykt
d3994b0801 Revise polymost HOM issue workaround in Duke's E1L1. Add code to remove very thin spans.
This commit does not gain noticeable rendering performance, but at least should prevent weird polygon leakages
2019-09-21 10:31:34 +02:00
nukeykt
935084ae52 More hacks to emulate old clipping
# Conflicts:
#	source/build/src/clip.cpp
2019-09-21 10:28:10 +02:00
nukeykt
af2106c9d0 Finally Duke's DEMO1 is sync 2019-09-21 10:27:59 +02:00
nukeykt
05749679a8 I think this is enough 2019-09-21 10:27:59 +02:00
nukeykt
1aab7601df Add old lintersect implementation 2019-09-21 10:27:58 +02:00
nukeykt
5c099bea05 Start adding old collision code for demo compatibility.
DEMO2 and DEMO3 of Duke3D are sync again

# Conflicts:
#	source/build/src/clip.cpp
2019-09-21 10:27:58 +02:00
nukeykt
e6ffc816c9 Fix blood crash
# Conflicts:
#	source/build/src/engine.cpp
2019-09-21 10:24:13 +02:00
nukeykt
a90711f328 Add extra field to tilefromtexture
# Conflicts:
#	source/build/src/defs.cpp
2019-09-21 10:20:43 +02:00
nukeykt
14401ca694 Fix TROR NULL texture 2019-09-21 10:11:03 +02:00
nukeykt
107a630883 Add TROR rendering
# Conflicts:
#	source/blood/src/mapedit.cpp
#	source/build/include/editor.h
#	source/build/include/polymer.h
#	source/build/src/build.cpp
#	source/build/src/polymer.cpp
2019-09-21 10:11:02 +02:00
nukeykt
1fe344d273 Free cstat bit 14
# Conflicts:
#	source/blood/src/mapedit.cpp
#	source/build/src/build.cpp
#	source/build/src/engine.cpp
#	source/duke3d/src/astub.cpp
2019-09-21 10:10:15 +02:00
nukeykt
858da4351c Semi-working map save 2019-09-21 10:08:04 +02:00
nukeykt
140174d1ee Minor tweaks
# Conflicts:
#	source/blood/src/m32common.cpp
#	source/blood/src/mapedit.cpp
2019-09-21 10:08:04 +02:00
nukeykt
2867131c86 Add ability to load blood maps
# Conflicts:
#	platform/Windows/nmapedit.vcxproj
#	platform/Windows/nmapedit.vcxproj.filters
#	source/blood/src/mapedit.cpp
#	source/build/src/build.cpp
#	source/build/src/engine.cpp
2019-09-21 10:06:57 +02:00
nukeykt
8fd6e0e183 TROR related tweaks
# Conflicts:
#	source/blood/src/mirrors.cpp
2019-09-21 09:59:58 +02:00
nukeykt
388bf2665f Enable TROR code and rotated wall cstat bit for blood 2019-09-21 09:59:16 +02:00
terminx
ce1a479ace Fix bugged height check in cliptestsector()
git-svn-id: https://svn.eduke32.com/eduke32@8118 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 23:25:39 +02:00
terminx
3e4f2de79a Add yax_getzsofslope(), based on getzsofslope_player()
git-svn-id: https://svn.eduke32.com/eduke32@8109 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 23:23:17 +02:00
terminx
062207b2e9 Fix polymost_dorotatesprite() clipping
git-svn-id: https://svn.eduke32.com/eduke32@8108 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 23:23:17 +02:00
hendricks266
47fc547532 Avoid a truncation warning in compat.h
git-svn-id: https://svn.eduke32.com/eduke32@8095 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 23:20:23 +02:00
hendricks266
1bd690c8c2 Fix warning in clip.cpp
git-svn-id: https://svn.eduke32.com/eduke32@8092 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 23:20:09 +02:00
hendricks266
475743424f Make sjson its own object
git-svn-id: https://svn.eduke32.com/eduke32@8091 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 23:19:58 +02:00
terminx
5708b36d26 Fix qradarang calculation
git-svn-id: https://svn.eduke32.com/eduke32@8088 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 23:18:47 +02:00
terminx
d0a3b86c77 Fix relative aligned floor/ceiling texture wiggling
Patch from Nuke.YKT.

git-svn-id: https://svn.eduke32.com/eduke32@8087 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 23:18:00 +02:00
terminx
aa8ce8d42a Fix USE_OPENGL=0 builds
git-svn-id: https://svn.eduke32.com/eduke32@8082 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 23:17:57 +02:00
terminx
7849693aef Bump BMAXPAGESIZE to 16384
x86 stuff will only ever return 4096, but 64-bit ARM supports 16K.

git-svn-id: https://svn.eduke32.com/eduke32@8077 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 23:17:21 +02:00
terminx
c17db80734 Fix npot sky rendering in Polymost
Patch from Nuke.YKT.

git-svn-id: https://svn.eduke32.com/eduke32@8076 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/polymost.cpp
2019-09-20 23:16:01 +02:00
Christoph Oelckers
d0a49c3278 - moved 4 more. 2019-09-20 23:12:07 +02:00
Christoph Oelckers
b34c48962a - removed some unused files. 2019-09-20 22:55:44 +02:00
Christoph Oelckers
3b8b2b1fe0 - it compiles again. 2019-09-20 22:44:42 +02:00
Christoph Oelckers
be29d3a2df - removed the remains of the polymer renderer.
This cannot be reused in its current form, maybe it can help later.
2019-09-20 22:37:24 +02:00
Christoph Oelckers
1b20e5d4da - 3 more files moved out of 'build' folder.
# Conflicts:
#	platform/Windows/build.vcxproj
2019-09-20 22:34:34 +02:00
Christoph Oelckers
977614dea8 - two more headers to move to Thirdparty. 2019-09-20 22:33:47 +02:00
Christoph Oelckers
c9111a6c7a - one more.
# Conflicts:
#	platform/Windows/build.vcxproj.filters
2019-09-20 22:33:35 +02:00
Christoph Oelckers
0c6af775ad - got rid of editor.h.
# Conflicts:
#	source/build/include/editor.h
#	source/build/src/2d.cpp
#	source/build/src/softwarerenderer/engine_swr.cpp
2019-09-20 22:24:53 +02:00
Christoph Oelckers
46b4b6ffd4 - removed all editor related code from 2D.cpp.
# Conflicts:
#	source/build/include/build.h
#	source/build/src/2d.cpp
#	source/build/src/softwarerenderer/engine_swr.cpp
2019-09-20 22:24:03 +02:00
Christoph Oelckers
a3b6485b5e - removed some more inline assembly. 2019-09-20 22:21:43 +02:00
Christoph Oelckers
ce260526cb - moved fix16 to thirdparty as well and removed the now unused assembly files.
# Conflicts:
#	platform/Windows/build.vcxproj
2019-09-20 22:21:31 +02:00
Christoph Oelckers
f3d01e8244 - moved compression utilities to a 'thirdparty' folder to get them out of the way.
# Conflicts:
#	platform/Windows/build.vcxproj
#	platform/Windows/props/build_common.props
2019-09-20 22:20:53 +02:00
Christoph Oelckers
ba73268470 - removed GLES support and most related files.
My future plans do not include mobile support due tp poor support of modern APIs so this is essentially just baggage.

# Conflicts:
#	source/build/src/2d.cpp
#	source/build/src/dxtfilter.cpp
#	source/build/src/mdsprite.cpp
#	source/build/src/polymost.cpp
#	source/build/src/sdlayer.cpp
#	source/build/src/texcache.cpp
2019-09-20 22:16:21 +02:00
Christoph Oelckers
19bcfecc67 - get rid of the non-inlined assembly as well. 2019-09-20 22:11:01 +02:00
Christoph Oelckers
6299d2fe86 - removed all inline assembly crap.
Since no division function was handled here this is totally pointless on modern systems and will even on 32 bit cause performance degradation due to lack of optimizability.
The rest of that code in pragmas.h and pragmas.cpp should probably also be put under review. Much of it made sense 20 years ago but not anymore.
2019-09-20 22:10:35 +02:00
Christoph Oelckers
b389c99bf5 - removed some SDL 1 parts. 2019-09-20 22:09:56 +02:00
Christoph Oelckers
afe5128c70 - Blood fixes for changes in timer and mouse input interface- 2019-09-20 22:08:06 +02:00
Christoph Oelckers
5503ee98a0 - fixed bad merge 2019-09-20 22:06:15 +02:00
terminx
c8d42af954 Flat parallax skies in Polymost
Patch from Nuke.YKT.

git-svn-id: https://svn.eduke32.com/eduke32@8074 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/polymost.cpp
#	source/build/src/voxmodel.cpp
2019-09-20 21:15:14 +02:00
terminx
4b6123f303 Change a couple of memcpys to just clear the whole size of the array instead of computing the size at runtime
git-svn-id: https://svn.eduke32.com/eduke32@8073 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 21:10:43 +02:00
terminx
c835219de0 Align cache1d memory blocks to system page size
git-svn-id: https://svn.eduke32.com/eduke32@8072 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 21:10:43 +02:00
terminx
4d20afa9ed Use integer math for Polymost rotatesprite
Patch from Nuke.YKT.

git-svn-id: https://svn.eduke32.com/eduke32@8069 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 21:10:41 +02:00
terminx
de170848af Move r_borderless and r_displayindex definitions out of polymost.cpp and into baselayer
git-svn-id: https://svn.eduke32.com/eduke32@8065 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/polymost.cpp
2019-09-20 21:10:39 +02:00
pogokeen
b13c0f1b43 clockticks.hpp: Fix issue where higher precision comparisons would cause unexpected behaviour with game loop code due to ototalclock being incremented rather than set to totalclock (causing a lack of subtick precision and potential doubled up/dropped game updates).
Provide compareHighPrecision() for any code that needs higher precision comparisons.

git-svn-id: https://svn.eduke32.com/eduke32@8064 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 21:10:23 +02:00
terminx
d0223fd744 Support fullscreening to the correct display in multiple monitor configurations
git-svn-id: https://svn.eduke32.com/eduke32@8063 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/baselayer.h
#	source/build/src/polymost.cpp
2019-09-20 21:10:22 +02:00
terminx
f0ea646560 Fix SDL borderless windowed mode for real this time
Introduces r_borderless cvar. 0: never borderless, 1: always borderless, 2: borderless if resolution matches desktop resolution (default).

git-svn-id: https://svn.eduke32.com/eduke32@8060 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/baselayer.h
#	source/build/src/baselayer.cpp
#	source/build/src/polymost.cpp
2019-09-20 21:09:56 +02:00
terminx
cef3c33e5f clockticks header fix
git-svn-id: https://svn.eduke32.com/eduke32@8056 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 21:09:17 +02:00
pogokeen
222e593437 Change some clocks to support sub-tick precision using a new class, ClockTicks.
Using that higher precision, interpolate at a higher granularity.
Further, truncate the target interpolation time to vertical blank boundaries to avoid producing temporal artifacts.
Fix issues caused by interpolation calculations being handled differently in multiple places (and fix cases where smoothratios were being thrown away only to be redone without checking all proper conditions).
Ensure ClockTicks changes do not break other targets (EKenBuild, VoidSW), but note any interpolation there is not similarly updated.

git-svn-id: https://svn.eduke32.com/eduke32@8050 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/build.cpp
#	source/build/src/sdlayer.cpp
2019-09-20 21:09:14 +02:00
terminx
ec7fce9ff2 Ultra minor clipping stuff
git-svn-id: https://svn.eduke32.com/eduke32@8048 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 20:19:11 +02:00
terminx
8a01335c26 Don't consider CLIPCURBHEIGHT for ceiling clipping
git-svn-id: https://svn.eduke32.com/eduke32@8047 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 20:19:10 +02:00
terminx
1f5866295c This should be MAXSECTORS
git-svn-id: https://svn.eduke32.com/eduke32@8046 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 20:19:10 +02:00
terminx
6acf3a958e Remove EDUKE32_PREDICT_ macro usage in clip.cpp so the game doesn't stall if a weird clipping malfunction occurs
git-svn-id: https://svn.eduke32.com/eduke32@8045 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 20:19:09 +02:00
hendricks266
3b419e9d04 Fix mouse buttons 4 and 5 on Linux with SDL2, at least for 2.0.9 and up
git-svn-id: https://svn.eduke32.com/eduke32@8043 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 20:19:08 +02:00
terminx
cbec65be68 Reduce stencil buffer size
Revert if it causes issues in anything.

git-svn-id: https://svn.eduke32.com/eduke32@8035 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 20:15:54 +02:00
terminx
78004b17de Ignore cstat 32768 sprites in map view
git-svn-id: https://svn.eduke32.com/eduke32@8034 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 20:15:53 +02:00
terminx
12cb46d94e Fix borderless windowed fullscreen mode
git-svn-id: https://svn.eduke32.com/eduke32@8020 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 20:14:07 +02:00
pogokeen
fd41554ad7 timer.cpp: fix order of operations issue with timerUpdate()
git-svn-id: https://svn.eduke32.com/eduke32@8018 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 20:12:22 +02:00
pogokeen
0855428a0c timer.cpp: avoid using floating point arithmetic in timerUpdate()
git-svn-id: https://svn.eduke32.com/eduke32@8011 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 20:12:18 +02:00
Christoph Oelckers
20f5972b9b - fixed everything to compile again. 2019-09-20 19:37:29 +02:00
pogokeen
021e1358c7 timer.cpp: improve cross-platform & cross-compiler issues relating to precision & period.
Handle timerlastsample such that we don't throw away time & run slow in certain cases.
Ensure when calculating n, we do the double division first before multiplying for sake of floating point precision.

git-svn-id: https://svn.eduke32.com/eduke32@8009 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 16:12:31 +02:00
hendricks266
108a71cadb Update md3_vox_calcmat_common to solve a sporadic voxel flickering issue
Patch by Nuke.YKT.

git-svn-id: https://svn.eduke32.com/eduke32@8007 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 16:12:27 +02:00
terminx
7ea2e4de54 Revert "This should be enough for SDL controller hotplug support but I haven't tested it"
git-svn-id: https://svn.eduke32.com/eduke32@8005 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 16:12:23 +02:00
terminx
7ec6a6beca This should be enough for SDL controller hotplug support but I haven't tested it
git-svn-id: https://svn.eduke32.com/eduke32@8003 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 16:12:19 +02:00
terminx
c72a69ff6f This timing stuff actually works
It doesn't help when it turns out the compiler is broken and implementing std::chrono::high_resolution_clock as something that only counts in ms instead of properly aliasing it to std::chrono::steady_clock!

git-svn-id: https://svn.eduke32.com/eduke32@8002 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/sdlayer.cpp
2019-09-20 16:12:16 +02:00
hendricks266
25bdd9f6d5 Apply the BUILDART patch at long last.
git-svn-id: https://svn.eduke32.com/eduke32@8000 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 16:11:07 +02:00
hendricks266
1bbd251bff Rescan for controllers when toggling gamepads back on
git-svn-id: https://svn.eduke32.com/eduke32@7985 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 16:10:37 +02:00
terminx
04811f21f4 Replace separate timer implementations in SDL and Winlayer with a shared implementation based on std::chrono
git-svn-id: https://svn.eduke32.com/eduke32@7976 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	platform/Windows/build.vcxproj
#	platform/Windows/build.vcxproj.filters
#	source/build/src/mdsprite.cpp
2019-09-20 16:09:24 +02:00
terminx
55e3188afb There's no way this is correct.
git-svn-id: https://svn.eduke32.com/eduke32@7975 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/sdlayer.cpp
2019-09-20 16:08:12 +02:00
terminx
f76ca0a361 Fix remaining casts to vec2_t/vec3_t
git-svn-id: https://svn.eduke32.com/eduke32@7973 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/build.cpp
2019-09-20 16:07:36 +02:00
hendricks266
b4362aa6a9 Implement controller defaults
git-svn-id: https://svn.eduke32.com/eduke32@7968 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 16:07:14 +02:00
hendricks266
3bfed33608 Add voxels option to menu, if at least one has been defined
git-svn-id: https://svn.eduke32.com/eduke32@7961 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/engine.cpp
2019-09-20 16:04:57 +02:00
hendricks266
284af9f5d9 Fix RENDERTYPE=WIN build
git-svn-id: https://svn.eduke32.com/eduke32@7960 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 16:04:43 +02:00
hendricks266
01fa02e1c0 Make use of SDL2's Game Controller API.
Thanks to JonoF for his take on this.

git-svn-id: https://svn.eduke32.com/eduke32@7958 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 16:03:49 +02:00
hendricks266
56998c4840 Report 16-bit analog axis precision to the game instead of arbitrarily truncating it to ~14.3 bits.
git-svn-id: https://svn.eduke32.com/eduke32@7956 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 16:03:45 +02:00
terminx
2ef83e4a71 This can overflow
git-svn-id: https://svn.eduke32.com/eduke32@7949 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 16:03:31 +02:00
hendricks266
e7723efcf4 Fix skipping to the end of def blocks
git-svn-id: https://svn.eduke32.com/eduke32@7938 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 16:03:06 +02:00
terminx
41ff733fcd Happier try_facespr_intersect()
I'm prejudiced against 30-line functions with statements nested 5 levels deep.

git-svn-id: https://svn.eduke32.com/eduke32@7933 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 16:02:56 +02:00
hendricks266
67b7d2408b newgamechoices
git-svn-id: https://svn.eduke32.com/eduke32@7930 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/defs.cpp
2019-09-20 16:02:49 +02:00
pogokeen
284adb6ac6 Fix issue with indexed colour textures where in the case that tiles entered the texcache while !waloff[picnum] & were later (re)loaded, the earlier pth pointing to the tilesheet containing the blank tile would never be properly replaced with an updated gl texture.
git-svn-id: https://svn.eduke32.com/eduke32@7929 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/polymost.cpp
2019-09-20 16:01:54 +02:00
hendricks266
ea79d74953 Revert r7908 because it introduces a race on dabuf
git-svn-id: https://svn.eduke32.com/eduke32@7928 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 16:01:27 +02:00
terminx
0d431a390f Reverse the order video modes are sorted in
git-svn-id: https://svn.eduke32.com/eduke32@7922 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 16:01:14 +02:00
terminx
32cd1ae4dd Tweak the fatal engine initialization error and game already running dialog boxes a bit
git-svn-id: https://svn.eduke32.com/eduke32@7921 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/build.cpp
2019-09-20 16:01:11 +02:00
terminx
b8f668aa9b Polymost projection changes to correct the perspective in widescreen and ultrawide resolutions.
Patch from Nuke.YKT and Fox.

git-svn-id: https://svn.eduke32.com/eduke32@7916 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/polymost.h
#	source/build/src/polymost.cpp
2019-09-20 15:48:55 +02:00
terminx
40e54fdbbb Tweak how the semaphore used to detect multiple running copies of the game is utilized
git-svn-id: https://svn.eduke32.com/eduke32@7912 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:46:43 +02:00
terminx
c1aff49e4c Improve usage of initprintf mutex
git-svn-id: https://svn.eduke32.com/eduke32@7908 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:46:35 +02:00
terminx
064516c050 Re-implement our mutex_lock() family of functions using SDL's atomic spinlocks
git-svn-id: https://svn.eduke32.com/eduke32@7907 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:46:32 +02:00
terminx
9021b885d6 Eliminate pos_as_vec2 from anything that had it
git-svn-id: https://svn.eduke32.com/eduke32@7905 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/build.cpp
#	source/build/src/polymost.cpp
2019-09-20 15:46:28 +02:00
terminx
81882aa1a3 Fix issue clipping against sloped ceilings
git-svn-id: https://svn.eduke32.com/eduke32@7903 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:44:21 +02:00
pogokeen
4d22a44a5d tiles.cpp: backup & restore picsiz, walock, & waloff alongside other per tile arrays in artClearMapArt() and artSetupMapArt()
This fixes an issue with viewscreens as tiles that are setup game-side after a map is loaded could have their sizes reset to 0 while not being properly cleared from walock/waloff

git-svn-id: https://svn.eduke32.com/eduke32@7892 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:43:58 +02:00
pogokeen
5fad944ed1 engine.cpp: make renderSetTarget() more robust so that passing an xsiz or ysiz <= 0 is not accepted and can't cause a segmentation fault
git-svn-id: https://svn.eduke32.com/eduke32@7890 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:43:55 +02:00
pogokeen
a844fd4b13 polymost.cpp: Fix issue where tiles whose dimensions had grown would not have their sizes updated in GL and could fail to update their texture data
git-svn-id: https://svn.eduke32.com/eduke32@7888 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/polymost.cpp
2019-09-20 15:42:29 +02:00
terminx
6931d448ff Oops
git-svn-id: https://svn.eduke32.com/eduke32@7884 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:34:30 +02:00
terminx
7553bb043f Skip drawing invalid polygons in polymost_drawpoly()
git-svn-id: https://svn.eduke32.com/eduke32@7880 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:34:18 +02:00
terminx
95598e08f9 getwalldist() tweak
git-svn-id: https://svn.eduke32.com/eduke32@7878 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:34:14 +02:00
terminx
9f9a158946 Replace runtime pow2 calculations with pow2char LUT usage
I don't know that this is any faster, but there's something to be said for standardization and consistency. I will be making most of this stuff use bitmap_set/test/clear() soon.

git-svn-id: https://svn.eduke32.com/eduke32@7876 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/build.cpp
#	source/build/src/polymost.cpp
2019-09-20 15:34:08 +02:00
terminx
2a3c80f95d Fix issue with sounds being expired from cache
git-svn-id: https://svn.eduke32.com/eduke32@7874 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:33:05 +02:00
terminx
1a0c56f0f1 This adds back in the engine's old automapping feature
This was removed a long time ago because Duke3D and Shadow Warrior don't use it.

git-svn-id: https://svn.eduke32.com/eduke32@7873 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/polymer.cpp
#	source/build/src/polymost.cpp
2019-09-20 15:32:13 +02:00
terminx
1a83ec15e4 Fix silly branching logic in engineLoadBoard()
git-svn-id: https://svn.eduke32.com/eduke32@7871 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:29:38 +02:00
terminx
c7e403619b Don't blow away wall cstat bit 14 for use as a temp flag in the editor
Patch from Nuke.YKT.

git-svn-id: https://svn.eduke32.com/eduke32@7870 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/build.cpp
2019-09-20 15:29:35 +02:00
terminx
a949665f26 Work around an issue with far plane clipping with voxels without mipmaps in software mode
Patch from Nuke.YKT.

git-svn-id: https://svn.eduke32.com/eduke32@7869 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:29:20 +02:00
terminx
9335b339b0 Emulate slope overflow in Polymost in order to match the rest of the engine's slope algorithms
Patch from Nuke.YKT.

git-svn-id: https://svn.eduke32.com/eduke32@7868 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:29:19 +02:00
terminx
0f4ccaf970 Hopefully work around more Polymost polygon leakages
Patch from Nuke.YKT.

git-svn-id: https://svn.eduke32.com/eduke32@7867 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:29:17 +02:00
terminx
acc0b527a9 Cache the distrecip[] table
Patch from Nuke.YKT.

git-svn-id: https://svn.eduke32.com/eduke32@7866 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:29:15 +02:00
terminx
0091acc858 "Another dumb polymost optimization. Probably worth few fps in heavy scenes"
Patch from Nuke.YKT

git-svn-id: https://svn.eduke32.com/eduke32@7865 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:29:12 +02:00
terminx
0652b5b6d6 Make ksgn() return int instead of int32_t
git-svn-id: https://svn.eduke32.com/eduke32@7864 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:29:09 +02:00
terminx
26272f6755 if 0 out our klabs() function and just define it as abs()
The compiler generates much better code for this now.

git-svn-id: https://svn.eduke32.com/eduke32@7863 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:29:06 +02:00
terminx
752cf77887 Untabify a couple of headers
git-svn-id: https://svn.eduke32.com/eduke32@7862 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:29:05 +02:00
terminx
f84e161e52 Wahhh, I'm MSVC and I cry about applying unary negation to a boolean
git-svn-id: https://svn.eduke32.com/eduke32@7859 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:28:59 +02:00
terminx
751b734795 Fix issue rendering TROR when the camera's z coordinate is right on the portal
git-svn-id: https://svn.eduke32.com/eduke32@7858 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:28:57 +02:00
terminx
6e4951bdb6 Another clipping fix
git-svn-id: https://svn.eduke32.com/eduke32@7857 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:28:53 +02:00
pogokeen
a0231cf90c polymost_scansector(): avoid using a culling method not designed for voxels when handling 1-sided wall aligned sprites that have voxel replacements
git-svn-id: https://svn.eduke32.com/eduke32@7854 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:28:45 +02:00
pogokeen
83e863422a Fix mixing offscreenrendering (render targets) and mirrors. Don't allow recursing beyond 1 level of mirroring through multiple levels of render targets.
git-svn-id: https://svn.eduke32.com/eduke32@7853 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:28:42 +02:00
pogokeen
5377b128a9 Fix rendering skyboxes to a tile by altering renderSetTarget() & renderRestoreTarget() to set & reset xdim & ydim so that G_ShowView() can render while a render target is set,
and additionally modifying G_SetupCamTile() to call EVENT_DISPLAYROOMSCAMERATILE after calling renderSetTarget()

git-svn-id: https://svn.eduke32.com/eduke32@7852 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:28:41 +02:00
terminx
e0e517aaed Revise r7838 again
git-svn-id: https://svn.eduke32.com/eduke32@7847 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:26:22 +02:00
terminx
f3e4dd4463 Patch from Nuke.YKT to work around precision-based inaccuracy problems in Polymost TROR
git-svn-id: https://svn.eduke32.com/eduke32@7846 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:25:31 +02:00
terminx
1d14991acc Add MERGE_NODES macro for Polymost... this will be used in the following commit
git-svn-id: https://svn.eduke32.com/eduke32@7845 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:25:28 +02:00
terminx
ee92304087 Patch from Nuke.YKT to clip bunches to screen boundaries in Polymost
git-svn-id: https://svn.eduke32.com/eduke32@7844 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:25:24 +02:00
terminx
47fa1eccd4 Patch from Nuke.YKT to fix sloped floor and ceiling textures wiggling around in Polymost
git-svn-id: https://svn.eduke32.com/eduke32@7843 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/polymost.cpp
2019-09-20 15:24:54 +02:00
terminx
a3b6d0e70b Revise r7838: one less dumbass typo
git-svn-id: https://svn.eduke32.com/eduke32@7842 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:23:57 +02:00
terminx
28c778c8a3 Automatic source file dependency generation for GNUmakefile
This automatically saves the dependencies used for a given object file during the first compilation, then uses the generated data for each subsequent compile to determine if the object needs to be rebuilt. Why? Because if I see one more warning about the C++ One Definition Rule, I'm going to fucking snap.

git-svn-id: https://svn.eduke32.com/eduke32@7839 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:23:50 +02:00
terminx
565383e1d2 Revise r7835: instead of not testing wall sprites, we'll just ignore the side blockers
git-svn-id: https://svn.eduke32.com/eduke32@7838 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:23:47 +02:00
terminx
4beaeb5426 Don't check clip objects for sprites in the keepaway() loop in clipmove()
This prevents some hilarious issues with deadly wall decorations. The "side blocker" clip lines that already exist for these sprites should already prevent the kinds of clipping issues this loop is intended to address, anyway.

git-svn-id: https://svn.eduke32.com/eduke32@7835 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:23:40 +02:00
terminx
dad28df269 OK, this is just a bit too restrictive
git-svn-id: https://svn.eduke32.com/eduke32@7834 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:23:38 +02:00
terminx
dc7ec3b2fe Fix additional clipmove() issue
git-svn-id: https://svn.eduke32.com/eduke32@7832 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:23:33 +02:00
terminx
1da1331299 Clean up raytrace() and rename it to cliptrace()
git-svn-id: https://svn.eduke32.com/eduke32@7831 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:23:31 +02:00
terminx
490b7249a2 Allow reading vec3_whatever_t as vec2 directly
It's a union in a struct in a union in a struct. Oh god, what have I done.

git-svn-id: https://svn.eduke32.com/eduke32@7830 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:23:28 +02:00
terminx
52db0e37f7 Additional clipmove() reworks
This fixes a LOT of clipping errors but needs thorough testing.

git-svn-id: https://svn.eduke32.com/eduke32@7829 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:23:25 +02:00
terminx
17d3c302a3 Switch a few iterators in clipmove() from int to native_t
git-svn-id: https://svn.eduke32.com/eduke32@7828 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:23:23 +02:00
terminx
417318c271 clipmove() patch from Nuke.YKT:
"In some edge cases posx/y might be 'inside' of neighbor sector. I've added double check for this case"

git-svn-id: https://svn.eduke32.com/eduke32@7827 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:23:20 +02:00
terminx
df28860bad Add divscale64()
git-svn-id: https://svn.eduke32.com/eduke32@7826 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:23:18 +02:00
terminx
dc0130625a Minor pushmove() cleanup
git-svn-id: https://svn.eduke32.com/eduke32@7825 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:23:15 +02:00
terminx
ed457895f1 Replace check_floor_curb() with cliptestsector()
git-svn-id: https://svn.eduke32.com/eduke32@7824 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:23:12 +02:00
terminx
0fb77f8af3 Use corrected slope heights in getzrange() and pushmove()
git-svn-id: https://svn.eduke32.com/eduke32@7823 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:23:10 +02:00
terminx
2482cddbb5 Add getcorrectzsofslope()
git-svn-id: https://svn.eduke32.com/eduke32@7822 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:23:08 +02:00
terminx
e6b700cf9b Promote divisor argument to tabledivide64 to int64_t and replace a couple of 64-bit divides in rintersect() and inflineintersect()
git-svn-id: https://svn.eduke32.com/eduke32@7820 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/build.cpp
2019-09-20 15:23:03 +02:00
hendricks266
e49e8f4cd6 Fix warnings in sjson
git-svn-id: https://svn.eduke32.com/eduke32@7813 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:17:45 +02:00
hendricks266
0cd74a6782 Add sjson to project
git-svn-id: https://svn.eduke32.com/eduke32@7812 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:17:43 +02:00
terminx
165b320f64 Amend r7805
'Murica.

git-svn-id: https://svn.eduke32.com/eduke32@7811 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:17:40 +02:00
terminx
67dc0cb5f8 Fix mirrors in Polymer
git-svn-id: https://svn.eduke32.com/eduke32@7809 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:17:34 +02:00
terminx
43f263fc65 Try walldist + 8 instead of walldist << 1 in clipupdatesector()
git-svn-id: https://svn.eduke32.com/eduke32@7807 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:17:28 +02:00
terminx
97390c1ff4 Fix another bunch of improperly sized bitmap arrays
git-svn-id: https://svn.eduke32.com/eduke32@7806 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/build.cpp
2019-09-20 15:17:25 +02:00
pogokeen
3d63d1b720 Add updatesectorneighbour() and updatesectorneighbourz() and make them accessible to CON to allow searching for nearby neighbouring sectors from a known sector.
These updatesector counterparts are more performant for tasks that require determining whether nearby sectors exist at a point as they will not exhaustively search the map.
This also leads to more correct behaviour when sectors are disjoint, as queries will breadth-first search neighbouring sectors rather than risk accidentally stumbling first across accomodating disjoint sectors.

git-svn-id: https://svn.eduke32.com/eduke32@7805 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/build.h
2019-09-20 15:16:47 +02:00
hendricks266
d1b43acc06 Use std::numeric_limits instead of float.h
git-svn-id: https://svn.eduke32.com/eduke32@7799 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:14:23 +02:00
hendricks266
48b2cfef59 Fix compilation of linklist.h in C++11 mode with clang
git-svn-id: https://svn.eduke32.com/eduke32@7796 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:11:03 +02:00
pogokeen
12ce6a78fe Fix parallel build by switching to generating .obj files from .glsl files and treat the shader source as an externed global resolved at link time.
Additionally, remove the no longer necessary shader generated headers folder from .gitignore

git-svn-id: https://svn.eduke32.com/eduke32@7793 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	.gitignore
#	source/build/src/polymost.cpp
2019-09-20 15:10:56 +02:00
terminx
9fde5434f8 Fix translucent masked wall sorting issue in Polymost
git-svn-id: https://svn.eduke32.com/eduke32@7792 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:10:23 +02:00
terminx
fe4245dfc3 Voxel fix
git-svn-id: https://svn.eduke32.com/eduke32@7791 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:10:21 +02:00
terminx
f46db45970 Voxel fixes from Nuke
git-svn-id: https://svn.eduke32.com/eduke32@7788 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:10:14 +02:00
hendricks266
4e04e4a096 Fix issue with shader compilation
git-svn-id: https://svn.eduke32.com/eduke32@7787 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:10:12 +02:00
hendricks266
616b0c2347 Fix sequential GNUmakefile build
git-svn-id: https://svn.eduke32.com/eduke32@7786 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:10:09 +02:00
pogokeen
1664310159 Support clamping in polymost1Frag.glsl and use it for sprites
git-svn-id: https://svn.eduke32.com/eduke32@7783 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/polymost.h
#	source/build/src/polymost1Frag.glsl
#	source/build/src/voxmodel.cpp
2019-09-20 15:10:02 +02:00
Christoph Oelckers
a55e19ed83 - fixed the shader. 2019-09-20 15:02:49 +02:00
pogokeen
f6993940e5 Separate out polymost1Frag and polymost1Vert shaders from polymost.cpp and add rules for building in the GNUmakefile.
Additionally, git ignore the shader's generated headers folder.

git-svn-id: https://svn.eduke32.com/eduke32@7782 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	.gitignore
#	source/build/src/polymost.cpp
2019-09-20 14:57:42 +02:00
pogokeen
fe36034e43 polymost.cpp: Adjust shaders to use texture2DGradARB() if available
git-svn-id: https://svn.eduke32.com/eduke32@7781 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 14:53:22 +02:00
terminx
a075a89304 Voxel fixes from Nuke.YKT
git-svn-id: https://svn.eduke32.com/eduke32@7778 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 14:39:40 +02:00
terminx
2882609822 Don't attempt to animate sprites drawn as voxels by picnum
git-svn-id: https://svn.eduke32.com/eduke32@7777 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 14:39:10 +02:00
terminx
c96ec9d440 This is just syntax and formatting
No functional changes.

git-svn-id: https://svn.eduke32.com/eduke32@7776 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 14:39:09 +02:00
terminx
dc9c7bc7b0 Make shadows on voxels in Polymost look like they do in classic
git-svn-id: https://svn.eduke32.com/eduke32@7770 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 14:36:47 +02:00
terminx
7e7f19b5fd Add tilehasmodelorvoxel() function and fix instances where voxels for multi-sided sprites would get flipped based on the viewing angle
git-svn-id: https://svn.eduke32.com/eduke32@7767 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 14:36:40 +02:00
terminx
940df04eb6 Make cache1d try a little harder to find a suitable block before bailing with "CACHE SPACE ALL LOCKED UP!"
git-svn-id: https://svn.eduke32.com/eduke32@7764 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 14:36:34 +02:00
terminx
53000d1f31 Make cacheAgeEntries() do a more consistent amount of work per frame
git-svn-id: https://svn.eduke32.com/eduke32@7763 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 14:36:32 +02:00
terminx
6f54235b7a Fix edge case in clipupdatesector()
git-svn-id: https://svn.eduke32.com/eduke32@7760 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 14:36:26 +02:00
terminx
82c37b78cc Prevent uninitialized access to hitwalls[] in clipmove()
git-svn-id: https://svn.eduke32.com/eduke32@7759 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 14:36:24 +02:00
terminx
38fe40abf2 Bump MAXCACHEOBJECTS from 9216 to 16384
This is actually the first time we've increased this limit in the entire time the engine source has been available.

git-svn-id: https://svn.eduke32.com/eduke32@7757 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 14:36:19 +02:00
terminx
24b994d952 One of those stupid optimizations you notice the potential for when scrolling through code looking for something
git-svn-id: https://svn.eduke32.com/eduke32@7756 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 14:36:17 +02:00
terminx
7a6293ff42 Floating point grouscan() patch from Nuke.YKT, worth a couple of fps in classic mode in slope-heavy scenes
git-svn-id: https://svn.eduke32.com/eduke32@7755 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 14:36:08 +02:00
pogokeen
c9014870e3 Improve depth fighting by pushing out the near plane and improve near plane clipping by depth clamping.
Suggest reducing SCISDIST when there's time to debug SCISDIST issues.

git-svn-id: https://svn.eduke32.com/eduke32@7754 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 14:36:06 +02:00
Christoph Oelckers
8de0fd35a1 - fixed compilation 2019-09-20 14:32:28 +02:00
pogokeen
2e75437262 If GL_ARB_clip_control & GL_ARB_depth_clamp are available, reflect that in glinfo
git-svn-id: https://svn.eduke32.com/eduke32@7753 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 14:18:33 +02:00
terminx
f51b2a2cb3 Gump redux
git-svn-id: https://svn.eduke32.com/eduke32@7747 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 14:16:06 +02:00
terminx
3269875e7b Fix builds on platforms other than win32--oops
git-svn-id: https://svn.eduke32.com/eduke32@7746 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/compat.h
2019-09-20 14:16:03 +02:00
terminx
72821e7de1 Patch from Nuke.YKT to improve mouse selection in the editor in Polymost
git-svn-id: https://svn.eduke32.com/eduke32@7740 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/polymost.cpp
2019-09-20 14:12:27 +02:00
pogokeen
d621023807 polymost.cpp: Fix polymost_domost() issue with COMBINE_STRIPS where in certain cases, merging with the viewport nodes caused accidental reading of sentinel node values.
Additional debug code is included for visualizing the state of the vsp data structure.
Further, fix issue in drawpoly where it would access out of bounds of dpxy if fewer than 3 vertices were passed in and fix issue where multiple calls to polymost_setVisibility() were repeatedly setting the visibility factor to the same value.

git-svn-id: https://svn.eduke32.com/eduke32@7737 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 14:04:32 +02:00
pogokeen
8cbdf3a0c4 Use stencil buffer in Polymost to restrict mirrors to only render within the region of the screen occupied by the mirror wall.
Additionally, raise minimum number of stencil buffer bits to accomodate future use of the stencil buffer.

git-svn-id: https://svn.eduke32.com/eduke32@7736 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/build.h
#	source/build/src/polymer.cpp
#	source/build/src/polymost.cpp
#	source/kenbuild/src/game.cpp
2019-09-20 14:04:29 +02:00
pogokeen
1426b3fb4f winlayer.cpp: fix videoBeginDrawing() to return an intptr_t to mirrorBuffer when inpreparemirror
git-svn-id: https://svn.eduke32.com/eduke32@7735 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 13:59:22 +02:00
pogokeen
cdd83905ca Fix TROR & skyboxes to work with mirrors in Software & Polymost
git-svn-id: https://svn.eduke32.com/eduke32@7733 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 13:59:17 +02:00
pogokeen
281ee3358b Add benchmarkmode cvar which allows putting demo cameras in the map which can be used for automatic benchmarking of performance & correctness testing
git-svn-id: https://svn.eduke32.com/eduke32@7729 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 13:32:24 +02:00
Christoph Oelckers
86dcab958d - make it compile again. 2019-09-20 13:30:25 +02:00
terminx
b7f7c5fdc1 libdivide fixup
git-svn-id: https://svn.eduke32.com/eduke32@7725 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 13:17:34 +02:00
terminx
2ce96f67be Patch from Nuke.YKT to add support for the cstat flip bits to voxels in both software and Polymost
git-svn-id: https://svn.eduke32.com/eduke32@7723 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 13:17:29 +02:00
Christoph Oelckers
1c3487444c - some safety net. 2019-09-20 13:17:19 +02:00
terminx
c122aa2178 Replace DO_TILE_ANIM() macro with tileUpdatePicnum() function
git-svn-id: https://svn.eduke32.com/eduke32@7722 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/engine_priv.h
#	source/build/src/polymer.cpp
#	source/build/src/polymost.cpp
2019-09-20 13:15:07 +02:00
terminx
1e0dd0e534 Templatized linked list functions
git-svn-id: https://svn.eduke32.com/eduke32@7720 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 13:08:34 +02:00
terminx
00222e05f6 Use remove_pointer_t instead of regular std::remove_pointer and add a definition for it for CXX11 builds
git-svn-id: https://svn.eduke32.com/eduke32@7719 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 12:07:46 +02:00
terminx
3130b51a96 Add SLOPTABLESIZ preprocessor definition
git-svn-id: https://svn.eduke32.com/eduke32@7718 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 12:07:42 +02:00
terminx
3cdc20cac1 Patch from Nuke.YKT to increase the size of sloptable[]
git-svn-id: https://svn.eduke32.com/eduke32@7717 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 12:07:40 +02:00
terminx
d3f93fc00f EDuke32-specific libdivide customizations
git-svn-id: https://svn.eduke32.com/eduke32@7716 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 12:07:38 +02:00
terminx
db7a2bd0db Update libdivide from git
git-svn-id: https://svn.eduke32.com/eduke32@7715 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 12:07:36 +02:00