Commit Graph

1049 Commits

Author SHA1 Message Date
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