Commit graph

1441 commits

Author SHA1 Message Date
Christoph Oelckers
15d869ccde -moved scancodes.h out of Build folder.
This file is from the Duke source and available under a good license so it can be moved to a better place.
2020-06-20 12:54:33 +02:00
Christoph Oelckers
198ed45357 - clean up redundancy 2020-06-20 10:58:47 +02:00
Richard C. Gobeille
d28929c437 engine: add klabs() back into ksqrtasm_old() 2020-06-17 17:10:11 +02:00
Richard C. Gobeille
4128fd62c7 engine: set g_loadedMapVersion in engineLoadBoardV5V6()
# Conflicts:
#	source/build/src/engine.cpp
2020-06-17 12:26:05 +02:00
Richard C. Gobeille
1cab7b9765 engine: add divideu64()/divideu64_noinline() 2020-06-17 12:26:03 +02:00
Dino Bollinger
9c2c1cc765 Fix 3D model animation depending on the number of sprites present on the map.
Fixes terminx/eduke32#64.
2020-06-17 12:26:03 +02:00
Christoph Oelckers
2a29dbf793 - use backend independent code to render the camera textures. 2020-06-14 21:57:21 +02:00
Christoph Oelckers
946da7d622 - moved the textures used for the animations into the texture manager.
This is to allow giving them a texture ID so that they can be used from ZScript which has no access to naked textures.
This also consolidates AnimTexture and VpxTexture.
2020-06-14 20:27:13 +02:00
Christoph Oelckers
67b1963e7c - fixed render state management.
There are effectively two states - the one in the backend and a local one in the drawer for the render list which is supposed to eliminate some of the more costly repeated calls.
This higher level state was cached globally, which did not work anymore because the real render state could be changed elsewhere without this code realizing it.
All this means that the render list drawer must create a new state cache for each call and also must apply its current pending render state before leaving to ensure that everything is properly reset.
2020-06-12 22:32:49 +02:00
Christoph Oelckers
a419181c36 - simplified screenshot code. 2020-06-12 00:39:06 +02:00
Christoph Oelckers
f2d075e0d0 - code cleanup. 2020-06-12 00:37:40 +02:00
Christoph Oelckers
6a9f1e9da1 - removed the old OpenGL interface. 2020-06-12 00:25:52 +02:00
Christoph Oelckers
ba397f5ca1 - always draw floors opaque 2020-06-11 23:55:23 +02:00
Christoph Oelckers
22aad4999c - use the engine backend to render the scene 2020-06-11 22:26:46 +02:00
Christoph Oelckers
a6545788a6 - do RR's lightning flash as a postprocessing effect. 2020-06-07 22:06:47 +02:00
Christoph Oelckers
4c6abe1bb9 - pass the shade through the 2D drawer, so that palette emulation can still use it. 2020-06-07 14:50:12 +02:00
Christoph Oelckers
b6d204a88b - fixed: Weapons are part of the scene and always need to be rendered with the global base palette. 2020-06-07 13:50:41 +02:00
Christoph Oelckers
f2a637418d - moved palette.cpp out of Build folder. 2020-06-07 13:06:18 +02:00
Christoph Oelckers
3fe4dbed01 - fixed fog translation table generation. 2020-06-07 12:51:26 +02:00
NY00123
ec11d22caf Use static instead of LUNATIC_EXTERN
# Conflicts:
#	source/build/include/build.h
#	source/duke3d/src/gamedef.cpp
2020-06-07 10:36:43 +02:00
NY00123
6a70389f1d Let's just use __fastcall instead of LUNATIC_FASTCALL
# Conflicts:
#	source/build/include/build.h
2020-06-07 10:36:04 +02:00
NY00123
cca922f023 Engine: Adjust krand for removal of LUNATIC
# Conflicts:
#	source/build/include/build.h
#	source/build/src/engine.cpp
2020-06-07 10:35:23 +02:00
NY00123
dba06d9601 Engine: Remove the LUNATIC-specific definitions
of engine_main_arrays_are_static, engine_v8 and Mulscale.

# Conflicts:
#	source/build/src/engine.cpp
2020-06-07 10:34:33 +02:00
Richard C. Gobeille
a0876223ab Assignments
# Conflicts:
#	source/build/src/clip.cpp
2020-06-07 10:17:33 +02:00
Christoph Oelckers
09e31fd5f4 - disabled sky texture clamping because it never really worked. 2020-06-07 10:14:32 +02:00
Christoph Oelckers
60d7f4f7c2 - got rid of the RF_NPOTEmulation flag.
This can easily be controlled with the 2 main variables alone.
2020-06-07 09:30:55 +02:00
Christoph Oelckers
f159496f6e - moved the ShadeDiv array into the lookup table and took the numshades-2 divisor out of the stored value.
The value was changed to allow easier reuse in scenarios where the size of the shade table does not matter anymore.
2020-06-05 23:18:21 +02:00
Christoph Oelckers
0bd460d9e3 - split up the visibility factor into a scene specific and an element specific part.
The main reason here is that the scene specific part contains a projection dependent component which would be a problem when transitioning to GZDoom's code. The global viewpoint data already has a field for such a factor so now that gets used.
This also means a significant simplification of the visibility code in Polymost and the removal of several global variables.
2020-06-05 19:06:31 +02:00
Christoph Oelckers
9dfd3ddd02 - migration of texture tinting to GZDoom's version.
- start of visibility migration - removing unused globvis variable.
2020-06-05 17:02:21 +02:00
Christoph Oelckers
d812c2997c - start renaming uniforms to match GZDoom.
Needed to allow using the same shader with the backend.
2020-06-04 21:34:27 +02:00
Christoph Oelckers
cf6855904d - took projection and view matrix out of the render state.
This is a preparation to migrate to GZDoom's HWViewpointUniforms buffer.
2020-06-04 18:46:44 +02:00
Christoph Oelckers
7638ead1c8 - simplified the texture sampler setup.
DAMETH_CLAMPED was redundant and only causig problems.
2020-06-02 16:55:02 +02:00
Christoph Oelckers
080333311c - removed polymost_dorotatespritemodel.
Models are inoperable right now anyway so this would never get called, but it does a few things that would cause problems with refactoring the backend code.
2020-06-01 11:28:07 +02:00
Christoph Oelckers
350acd2ac3 - scale the vertex coordinates that get output to the hardware by 1024.
This is needed to get a coordinate system that is compatible with GZDoom's so that its lighting code can be reused more easily.
2020-06-01 09:55:28 +02:00
Christoph Oelckers
ab2686db34 - camtex transition 2020-05-31 21:43:32 +02:00
Christoph Oelckers
c26b6cdf59 - backend sync with GZDoom. 2020-05-31 21:25:52 +02:00
Christoph Oelckers
611dad7f69 - added the softpoly and Vulkan backend code fron GZDoom.
Not hooked up yet.
2020-05-31 10:53:11 +02:00
Christoph Oelckers
1d15fe63a6 - another backend update, pulling in the sky renderer. 2020-05-31 10:32:10 +02:00
Christoph Oelckers
1e2a3da5fd - video base code unified.
# Conflicts:
#	source/core/rendering/v_video.cpp
2020-05-31 09:18:43 +02:00
nukeykt
714ed1ecdd Engine: fix sprite sorting issue that caused broken voxel rendering in polymost 2020-05-30 23:28:41 +02:00
Christoph Oelckers
5728241c1c - updated backend from GZDoom. 2020-05-30 23:10:17 +02:00
Christoph Oelckers
ea08fa0a4e - updated common code.
Most of what got added is still unused.

# Conflicts:
#	source/build/src/palette.cpp

# Conflicts:
#	source/build/src/palette.cpp

# Conflicts:
#	source/common/engine/i_interface.h
2020-05-30 22:28:24 +02:00
Christoph Oelckers
423f758314 - texture code restructuring. 2020-05-30 21:42:35 +02:00
Christoph Oelckers
cdcb25bc1f - use high level textures to render voxels. 2020-05-30 00:30:56 +02:00
Christoph Oelckers
cca4fc609f - texture code cleanup, mainly cppying layer data into the textures at startup to be able to use a real material system. 2020-05-29 23:33:26 +02:00
Christoph Oelckers
2c94b2bb6d - split texture selection from binding. 2020-05-29 21:53:28 +02:00
Christoph Oelckers
1bc744b77b - moved hictinting data into the lookup tables. 2020-05-29 20:15:42 +02:00
Christoph Oelckers
66809ca9f4 - fixed indexed display of 2D content. 2020-05-29 16:46:36 +02:00
Christoph Oelckers
87a87c155d - moved to GZDoom's gl_hwtexture.cpp. 2020-05-29 01:03:01 +02:00
Christoph Oelckers
381e53017d - some hackery to make the camera textures in DN3D work again.
They depend on a deleted texture not writing to the depth buffer, but other parts in the engine like ROR surfaces depend on them writing a proper depth buffer value, so for now there is a global variable that allows to exclude a single tile from ever getting rendered.
2020-05-29 00:44:13 +02:00
Christoph Oelckers
72889540a5 - use GZDoom's gl_samplers.cpp 2020-05-28 23:48:50 +02:00
Christoph Oelckers
362be65060 - removed FHardwareTexture's mSampler member.
This was a mostly unused relic of early development, the few places using it were static sampler settings.
2020-05-28 21:45:33 +02:00
Christoph Oelckers
5e93b8f3e7 - fixed transparent color. 2020-05-28 08:31:08 +02:00
Christoph Oelckers
a3e6829817 - fixed Exhumed menu by adding a proper layout mode to the drawer instead of hacking the broken tile offsets. 2020-05-27 23:30:36 +02:00
Christoph Oelckers
193b940eef - palette code cleanup. 2020-05-27 22:19:02 +02:00
Christoph Oelckers
7109ce4e30 - made some changes to the font and texture system to allow late loading of the palette.
The base palette can be set via .def files so that the engine has no access to it until the entire game state is set up.
This means that font translations and PNG palette remap tables cannot be built when the owning objects are created.
For PNGs this has the added advantage that they only get done when really required and not unconditionally - most of the time the remap table isn't even needed here.

Thid fixes the slider graphics in the option menus.

# Conflicts:
#	source/core/gamecontrol.cpp

# Conflicts:
#	source/core/gamecontrol.cpp
2020-05-26 21:43:32 +02:00
Christoph Oelckers
29db3febb8 - updated the platform code to be mostly identical with GZDoom 2020-05-26 00:08:26 +02:00
Christoph Oelckers
c4017de12f - updated to GZDoom's new texture management system. 2020-05-25 23:59:07 +02:00
Christoph Oelckers
55a3c62b59 - use GZDoom's 2D drawer.
Console and menu font colors are not ok yet, aside from that it works.
2020-05-25 17:11:32 +02:00
Christoph Oelckers
1d065085d4 - fixed some palette issues 2020-05-25 00:46:46 +02:00
Christoph Oelckers
94cb36ae53 - removed helper #ifdefs. 2020-05-25 00:33:25 +02:00
Christoph Oelckers
758e4ad7cb - stripped down the palette manager in the GL backend and let it use the data that's managed elsewhere.
This class is only needed to manage the palette textures used by the indexed render mode, all the rest is available globally.
2020-05-25 00:31:55 +02:00
Christoph Oelckers
6bd4f77c5b - fix compilation. 2020-05-25 00:31:55 +02:00
Christoph Oelckers
531c68edfe - use GZDoom's font code to fix the crash issues and moved around some files in the PK3.
This pulls in a lot of Doom specific font setup, this can be sorted out later as it won't get into the way.

# Conflicts:
#	source/CMakeLists.txt

# Conflicts:
#	source/glbackend/hw_draw2d.cpp

# Conflicts:
#	source/CMakeLists.txt

# Conflicts:
#	source/glbackend/gl_texture.cpp

# Conflicts:
#	source/CMakeLists.txt

# Conflicts:
#	source/build/src/palette.cpp
#	source/core/gamecontrol.cpp
2020-05-24 23:28:44 +02:00
Christoph Oelckers
a70b7fa698 - use the texture manager to handle texture data. 2020-05-24 23:26:47 +02:00
Christoph Oelckers
6bffdf80a1 - finally managed to merge in the original texture system commit.
Game compiles and runs but transparency doesn't work yet.

# Conflicts:
#	source/CMakeLists.txt
#	source/core/menu/menu.cpp
#	source/core/textures/buildtiles.cpp
2020-05-24 22:53:14 +02:00
Christoph Oelckers
53891004a0 - fixed compilation 2020-05-24 22:37:50 +02:00
Christoph Oelckers
7a84887fc4 - transitioned FTexture.
Mostly working. Note: Brightmaps must be per-translation!
2020-05-24 19:12:22 +02:00
Christoph Oelckers
e6b94d35ff - reorganized how BuildTiles stores its data.
Arrays of struct are better than struct of arrays.
2020-05-24 15:02:20 +02:00
Christoph Oelckers
266364fc2e - properly implement texture offsets 2020-05-24 13:26:45 +02:00
Christoph Oelckers
db4850a028 - added a reverse tile map so that the tile manager can retrieve special info even when a tile texture is passed by object to the render code and not by index. 2020-05-24 10:30:09 +02:00
Christoph Oelckers
0c029750b6 - moved hightile replacements out of the texture class. 2020-05-24 08:47:45 +02:00
Christoph Oelckers
498b19873d - split up textures.h. 2020-05-24 07:58:56 +02:00
Christoph Oelckers
da26d1cec4 - more trivial adjustments. 2020-05-24 00:38:10 +02:00
Christoph Oelckers
00e7b2fa25 - simple stuff from the texture manager inclusion commit.
To get this out of the way first...
2020-05-24 00:27:24 +02:00
Christoph Oelckers
ab6e87b5f8 - workaround for Ion Fury display glitches on the first map.
I have no idea why this needs to be different than in EDuke32, but without always clearing the depth buffer before rendering a scene viewpoint the game will glitch like crazy.
2020-05-23 22:43:06 +02:00
Christoph Oelckers
2703823ac4 - fixed palette setup. 2020-05-23 22:43:05 +02:00
Christoph Oelckers
2d29d130c0 - fixed Blood startup. 2020-05-23 22:43:05 +02:00
Christoph Oelckers
b8a289bf61 - move brightmap handling to the common code.
# Conflicts:
#	source/common/utility/basics.h

# Conflicts:
#	source/build/src/palette.cpp
2020-05-23 22:43:05 +02:00
Christoph Oelckers
ae6403a205 - added a level of abstraction to the lookup table code to ease later refactoring. 2020-05-23 22:43:05 +02:00
Christoph Oelckers
f929419a0a - refactoring of the lookup tables. 2020-05-23 22:43:04 +02:00
Christoph Oelckers
daf77e55f7 - fixed compilation.
Much of this commit will have to be undone later, once the texture manager becomes available.
2020-05-23 22:43:04 +02:00
Christoph Oelckers
b971bc2717 - avoid using global palette settings when drawing 2D content with a custom palette.
Instead pass the palette info with the render call to avoid stale global state.
2020-05-23 22:43:01 +02:00
Christoph Oelckers
8d3199514d - removed some 'pragma' cruft. 2020-05-23 13:08:10 +02:00
Christoph Oelckers
d0406e27b6 - all base palette data has been transitioned to GPalette. 2020-05-23 12:31:05 +02:00
Christoph Oelckers
6f9ee4b60f - store palettes in the palette container. 2020-05-23 12:31:05 +02:00
Evan Ramos
8b0da35cb8 Avoid warnings when defining only extra in tilefromtexture
# Conflicts:
#	source/build/src/defs.cpp
2020-05-22 17:30:52 +02:00
nukeykt
1ef8df0a4c Blood: Fix model yoffset 2020-05-22 17:29:50 +02:00
sirlemonhead
19ab05655b Prevent invalid array index in polymost_spriteIsModelOrVoxel()
# Conflicts:
#	source/build/src/polymost.cpp
2020-05-22 17:22:18 +02:00
Richard C. Gobeille
e2d79b4682 engine: add yax_getflorzofslope() and yax_getceilzofslope() 2020-05-22 17:01:36 +02:00
Richard C. Gobeille
3ab314e95a engine: make cliptestsector() (used by clipmove(), etc) TROR aware
This is intended to help with issues where enemies get stuck in thin TROR layers.

# Conflicts:
#	source/build/src/clip.cpp
2020-05-22 17:00:55 +02:00
Richard C. Gobeille
f5788c331e Clarify clipupdatesector() log message a bit
# Conflicts:
#	source/build/src/clip.cpp
2020-05-22 16:52:08 +02:00
Richard C. Gobeille
94d098f8ef Fix a crash with tabledivide64()
Fixes #1.
2020-05-22 16:50:02 +02:00
Christoph Oelckers
bad17f29e0 - made some tweaks to the anti-z-fighting code in Polymost.
It now picks the minimum of the current formula and the one from before June 2017 - the current one was causing problems with sprites in the distance so now the old one is used as an upper bound.
2020-05-22 16:27:45 +02:00
NY00123
6fcb8f7a6a Add gethiq16angle and the getq16angle wrapper to the engine 2020-05-21 18:47:37 +02:00
Mitchell Richters
3749a89d6a Build: Change renderSetRollAngle() to take a float and not an int32_t. 2020-05-13 15:12:44 +02:00
Mitchell Richters
68a0ead5f0
- fix Linux builds following reset of master branch. (#44)
* - fix Linux builds following reset of master branch.

* - fix Linux Clang CI failure.

* - change '#ifdef __linux__' to '#ifndef _WIN32' as requested/required.

* - initialise batchrun in proper spot.
2020-05-05 10:45:21 +03:00
Christoph Oelckers
e6031654f2 - uncommented the compatibility case in updatesector.
In the RedNukem frontend this was causing view interpolation glitches, this probably should be disabled a bit more targeted but right now I do not know yet which call causes the problem
2020-05-04 00:03:51 +02:00
Mitchell Richters
1ce4081d37 - change 'refreshfreq' from int to double.
A double is already used in CalcSmoothRatio. Further to this, displays that use TV standard frequencies do not use perfect 60Hz frequencies, but frequencies such as 59.94Hz, 23.976Hz (precisely, 24*(1000/1001) = 23.9760239760239760...) etc.

Reference: 'https://www.ghacks.net/2010/04/28/59-hertz-refresh-rate/', 'http://www.paradiso-design.net/videostandards_en.html'.

# Conflicts:
#	source/build/include/baselayer.h
#	source/platform/posix/cocoa/i_main.mm
2020-04-16 00:03:00 +02:00
Mitchell Richters
4654fd648d Renderer: Disable models by default since they're not supported currently.
- Better to see sprites in HRPs than nothing on-screen.
2020-04-14 00:00:23 +02:00