Commit graph

16712 commits

Author SHA1 Message Date
Christoph Oelckers
64e301130b - moved low level sky rendering to 'common' 2020-04-29 00:21:30 +02:00
Christoph Oelckers
4b8fb7d48b - moved around some sky rendering code so that the game independent parts are grouped together. 2020-04-29 00:14:42 +02:00
Christoph Oelckers
b1dd1eff50 - moved video files to 'common'. 2020-04-28 23:08:27 +02:00
Christoph Oelckers
ddef3f7b98 - made video base code game independent 2020-04-28 22:54:53 +02:00
Christoph Oelckers
2196b4fb04 - moved the frame rate drawer out of DFrameBuffer.
Too much of this is not shareable and all it consists of are drawing operations on the 2D drawer.
2020-04-27 23:53:26 +02:00
Christoph Oelckers
5f3e4a5d0e - did a bit of cleanup on DFrameBuffer, most notably taking GetCaps out of it.
With the old softpoly renderer and OpenGL 2.x being gone there is no more need for such complex handling, it is now a single function in d_main.cpp.
2020-04-27 22:24:41 +02:00
Christoph Oelckers
3ee1aa76c3 - moved model code to 'common'. 2020-04-27 20:50:46 +02:00
PaulyB
66bac45615 Properly namespaced UDMF flag 2020-04-27 20:30:37 +02:00
PaulyB
8d1451689b Exposed MTF_NOCOUNT to UDMF 2020-04-27 20:30:37 +02:00
PaulyB
573b2958c6 Added MTF_NOCOUNT to spawn flags 2020-04-27 20:30:37 +02:00
Christoph Oelckers
d434ce32c8 - split voxels.cpp into a backend and a game dependent part. 2020-04-27 19:46:27 +02:00
Christoph Oelckers
b79230da9b - added missing include to macOS code. 2020-04-27 19:46:13 +02:00
Christoph Oelckers
d6dca40cb7 - separated models.cpp as well into engine and game parts. 2020-04-27 01:29:25 +02:00
Christoph Oelckers
46d263b5a8 - header separation of model code. 2020-04-27 01:16:17 +02:00
Christoph Oelckers
8ea0a0c5f8 - took the game dependent model render functions out of the FModelRenderer class.
This makes FModelRenderer game independent - the 3 functions in question may just be global functions instead.
2020-04-27 00:25:53 +02:00
Christoph Oelckers
6afa73bdcd - moved m_bbox to 'common' 2020-04-27 00:07:17 +02:00
Christoph Oelckers
67a50d084a - started cleanup of model code.
* refactored FBoundingBox so that the game dependent members are global functions now.
* changed some methods of the model renderer to take a render style parameter instead of a full actor.
2020-04-27 00:03:23 +02:00
Christoph Oelckers
b58e3172fc - need hw_viewpointuniforms.h as well in 'common', after decoupling it from game data. 2020-04-26 23:02:16 +02:00
Christoph Oelckers
cb1e8a177f - moved gl_shader.cpp to 'common'. 2020-04-26 22:24:27 +02:00
Christoph Oelckers
1346787e29 - moved 2 more modules to 'common'. 2020-04-26 21:38:34 +02:00
Christoph Oelckers
f8dcb09ff0 - moved postprocessing shaders to their own folder. 2020-04-26 21:22:57 +02:00
Christoph Oelckers
fde9172ea3 - moved shadowmap to 'common'. 2020-04-26 20:28:43 +02:00
Christoph Oelckers
c30165db0d - removed the remaining dependencies of the shadowmap code on game data.
Everything is handled with callbacks now.
2020-04-26 19:58:17 +02:00
Christoph Oelckers
ba0b42465d - changed shadowmap setup so that the AABB tree is owned and controlled by the map, not the renderer.
Needed to properly separate game logic from backend implementation, the shadowmap had both in the same object thanks to the old setup.
2020-04-26 18:54:43 +02:00
Christoph Oelckers
0a3e9a49f8 - changed the light parameter of ShadowTest to a position vector.
This was one of two places where game state leaked into the shadowmap implementation.
2020-04-26 14:53:26 +02:00
Christoph Oelckers
02832297ff - moved most of the OpenGL backend to 'common'.
A few things are yet to do, because they still need some changes.
2020-04-26 14:44:19 +02:00
Christoph Oelckers
763e9e0f35 - fixed texture scaling setup in a few places. 2020-04-26 13:48:51 +02:00
Christoph Oelckers
5611fe0f41 - cleaned up the dependencies in the model rendering code and separated it into game-independent and game-dependent parts. 2020-04-26 13:19:57 +02:00
Christoph Oelckers
69d724ae73 - moved lightbuffers and flatvertices to 'common'. 2020-04-26 12:41:13 +02:00
Christoph Oelckers
c5dca89e66 - clean separation of vertex creation from map data and the buffer object.
This was yet another object with too broad scope, the vertex creation has been offloaded into out-of-class functions now.
2020-04-26 12:12:07 +02:00
Christoph Oelckers
cf41a0b1fb - moved hw_cvars to 'common'. 2020-04-26 11:38:38 +02:00
Christoph Oelckers
61c94c25ed - more hw_cvars cleanup.
Copied several range checks from Raze, moved vid_gamma to hw_cvars.cpp and removed some old and no longer necessary gamma setup code.
2020-04-26 10:58:44 +02:00
Christoph Oelckers
1ad2f30e0d - moved sprite CVARs out of the global CVAR storage file.
They are local to hw_sprites.cpp now, as they aren't used anywhere else.
2020-04-26 10:47:57 +02:00
Christoph Oelckers
686aa9779d - moved VR code and IntRect to 'common' 2020-04-26 10:26:29 +02:00
Christoph Oelckers
4b56714199 - made hw_postprocess.cpp compatible.
The shadowmap is not universal, it depends on Doom's map format.
2020-04-26 00:03:08 +02:00
Christoph Oelckers
0c63f5c832 - moved FRenderState to 'common' and removed some game-dependent parts from it. 2020-04-25 23:29:38 +02:00
Christoph Oelckers
21f32834b2 - moved the postprocessing code to 'common', except for the game-dependent script exports. 2020-04-25 22:37:27 +02:00
Christoph Oelckers
b6cc31eb0d - moved around a few more files. 2020-04-25 22:17:41 +02:00
Christoph Oelckers
b9e3c9681b - moved a few files from 'rendering' to 'common'. 2020-04-25 21:52:21 +02:00
Christoph Oelckers
59360f2d77 - started cleanup of dependencies of the framebuffer class.
* made the portal state global, outside the framebuffer, because it is pure logic state without dependencies on the backend.
* took the setup functions out of FDynLightData - there is no need to have them as members and they age game dependent.
2020-04-25 21:08:07 +02:00
Christoph Oelckers
9872065fc6 - moved file to its proper place. 2020-04-25 18:38:17 +02:00
Christoph Oelckers
10bc37b37e - moved RenderView out of the framebuffer classes to complete the consolidation of the renderer's entry points. 2020-04-25 17:58:26 +02:00
Christoph Oelckers
9dceedd3b0 - cleanup 2020-04-25 14:15:15 +02:00
Christoph Oelckers
730d07fbf7 - reworked canvas texture updater to avoid passing game data to the render backends.
These are now handled one level above using a callback to perform the actual rendering.
2020-04-25 14:13:36 +02:00
Christoph Oelckers
44d39ef63e - consolidated the savegame picture code. 2020-04-25 13:18:57 +02:00
Christoph Oelckers
6177ed153d - consolidated the 3 RenderViewpoint variants and took the function out of the framebuffer class. 2020-04-25 10:51:45 +02:00
Christoph Oelckers
c203df5edb - consolidated the 3 virtually identical instances of DrawScene and moved the function to HWDrawInfo.
The only backend dependent call in there, ambient occlusion, has been made a virtual of DFrameBuffer.
2020-04-24 21:47:18 +02:00
Christoph Oelckers
90585c4931 - added a RenderState virtual to the FrameBuffer class. 2020-04-24 16:15:18 +02:00
Christoph Oelckers
70d30feb4c - moved the render interface functions out of FGLRenderer into OpenGLFrameBuffer.
These need some consolidation among the backends, and the additional indirection in the OpenGL backend made it harder than necessary.
2020-04-24 15:52:31 +02:00
Magnus Norddahl
ab16cbe298 Fix missing texture update 2020-04-24 13:08:22 +02:00
SanyaWaffles
994550fb00 Add the check to the other loop per Graf's request. 2020-04-24 10:01:36 +02:00
SanyaWaffles
6a604f35cb A much smarter DEFBINDS fix. Check if the lump is in the range of an IWAD, if so, override the settings... if not, don't override the settings.
https://forum.zdoom.org/viewtopic.php?f=2&t=68292
2020-04-24 10:01:36 +02:00
SanyaWaffles
1cf8c2f63e Fix keybinds part 1 of whatever 2020-04-24 08:10:09 +02:00
Christoph Oelckers
72533e2f8a - redirect ST_Sound to a callback because the sound code is game specific 2020-04-23 22:33:43 +02:00
Christoph Oelckers
f8e23500c7 - moved Windows platform code as well. 2020-04-23 22:26:30 +02:00
Christoph Oelckers
0b544f2956 - moved the Posix platform files to 'common' after making sure that Raze can compiled with them as-is.
No content changes.
2020-04-23 21:48:50 +02:00
Christoph Oelckers
612bf20809 - moved game state connections of the startup screen out of the backend code. 2020-04-23 00:02:34 +02:00
Christoph Oelckers
ea30707c41 - added missing include. 2020-04-22 23:48:20 +02:00
Christoph Oelckers
d19ac5b260 - separated the game specific Steam code from the pure backend. 2020-04-22 22:56:15 +02:00
Christoph Oelckers
8473be2a0c - some final cleanup. 2020-04-22 22:35:28 +02:00
Christoph Oelckers
3961f708fe - moved refreshfreq variable to a common place. 2020-04-22 22:32:24 +02:00
Christoph Oelckers
6934aebbe6 - fixed typo in HAVE_SOFTPOLY. 2020-04-22 21:57:59 +02:00
Christoph Oelckers
7f83b190cc - a few more fixes. 2020-04-22 21:46:22 +02:00
Christoph Oelckers
4da2351671 - fixed compile errors in POSIX platform code. 2020-04-22 20:42:13 +02:00
Christoph Oelckers
12e69adec3 - system backend cleanup.
This is mainly for running CI on Linux and macOS. Windws is already working.
2020-04-22 19:57:14 +02:00
Christoph Oelckers
a40578a0a4 - changed more license headers to BSD. 2020-04-21 22:11:59 +02:00
Christoph Oelckers
f17617706d - moved the scale overrider to v_draw.h. 2020-04-21 21:23:04 +02:00
Christoph Oelckers
ce95d7379f - swapped out the license in two files.
BSD is preferred over LGPL
2020-04-21 21:06:11 +02:00
Rachael Alexanderson
8c1db978b8 - fixed: hwrenderer materials were nullptr checked but the pointers were not always properly initialized 2020-04-21 09:41:33 -04:00
alexey.lysiuk
62d4bbbe65 - restored Wads.GetNumLumps() scripted function
https://forum.zdoom.org/viewtopic.php?t=68300
2020-04-21 10:07:24 +03:00
alexey.lysiuk
426f40dd52 - fixed crash when loading saved game that has no music 2020-04-20 15:08:33 +03:00
alexey.lysiuk
c37dcc6eb4 - added validation of game skill when changing a level 2020-04-20 13:32:02 +03:00
alexey.lysiuk
a9c0765fe1 - fixed potential crash on intermission cast screen 2020-04-20 12:49:18 +03:00
Christoph Oelckers
5d49faf190 Merge branch 'master' into texture_rework 2020-04-19 21:15:28 +02:00
Christoph Oelckers
f296660266 - set all texture IDs after finishing the initial texture manager initialization.
As it turned out, not all textures have a valid ID at that point so it needs to be redone.
2020-04-19 21:15:01 +02:00
Christoph Oelckers
4fb6b7c7d4 - block off the Substitute function by making it private to the 3 classes that really need it. 2020-04-19 21:08:24 +02:00
Christoph Oelckers
bd3f4e7347 - relax pointer substitution restriction for morphed monsters. 2020-04-19 21:08:23 +02:00
Christoph Oelckers
b7ea483323 - fixed checkForHacks placement. 2020-04-19 19:52:03 +02:00
Christoph Oelckers
8dbc727178 - fixed compile errors pointed out by CI 2020-04-19 19:05:50 +02:00
Christoph Oelckers
88d5bf6877 - relax pointer substitution restriction for morphed monsters. 2020-04-19 19:03:25 +02:00
Christoph Oelckers
0eb68177ca Merge branch 'master' into texture_rework 2020-04-19 18:07:16 +02:00
Christoph Oelckers
052172b9ee - let TeleportSpecial universally map to Teleport when checking action special names. 2020-04-19 18:00:27 +02:00
Christoph Oelckers
db6a284253 - apply aspect ratio compensation for all fullscreen images with a height of 200 and 400, and not just to 320x200 and 640x400. 2020-04-19 13:49:10 +02:00
Christoph Oelckers
a21d3ae106 - fixed incorrect value range for particle's depth value, used for sorting. 2020-04-19 13:46:00 +02:00
Christoph Oelckers
e63871d6f5 - made 3D floor damage transfers optional by adding a new flag bit (2048) and made that mode automatic for the old ZDoom-based light only transfer special. 2020-04-19 13:40:21 +02:00
Christoph Oelckers
5228a67ff5 - fixed keybinding reader - before trying to load DEFBINDS the lump index wasn't reset. 2020-04-19 13:23:02 +02:00
Christoph Oelckers
90f3b49bc3 - removed the "no IWAD definitions found" error message because the condition it checks for is not an error. 2020-04-19 13:17:20 +02:00
Christoph Oelckers
6dfc416b51 - fixed setup of IPK3's where all content is in a subdirectory.
These never received the file name list that was needed to eliminate this directory from internal paths.
2020-04-19 13:04:29 +02:00
Christoph Oelckers
d4cc217d42 - fixed a few things that slipped through 2020-04-19 12:40:30 +02:00
Christoph Oelckers
14ce0f4605 - deleted unused variable. 2020-04-19 12:37:50 +02:00
Christoph Oelckers
1c99e0917e - do not treat the ':' as a path separator.
The cases where it really is needed have special handling for it, in all others it causes more problems than it solves.
2020-04-19 12:24:12 +02:00
Christoph Oelckers
b2281c38e1 - fixed texture layer management so that each material layer can decide for itself if it wants to allow upscaling.
- rewrote the hardware texture precacher to use the new texture management to properly track the data to delete.
2020-04-19 10:57:56 +02:00
Christoph Oelckers
cedc95c2a5 - split out FGameTexture into its own files. 2020-04-19 10:57:56 +02:00
Christoph Oelckers
5a2a72fc95 - store the Vulkan descriptor sets in the material - where they belong!
Having them in the base texture object was a major maintenance issue.
2020-04-19 10:57:56 +02:00
Christoph Oelckers
46e75e8107 - fixed crash with particles checking a non-existent actor. 2020-04-19 10:57:56 +02:00
Christoph Oelckers
c836dd3dbf - initialize bNoRemap0 2020-04-19 10:57:55 +02:00
Christoph Oelckers
ef8e7a4944 - reworked the multipatch texture builder to reuse the FImageTexture objects. 2020-04-19 10:57:55 +02:00
Christoph Oelckers
59cd049b77 - added missing handling for Rotations to the hardware renderer.
Untested due to lack of material.
2020-04-19 10:57:55 +02:00
Christoph Oelckers
389892a079 - moved SkyOffset and Rotations. 2020-04-19 10:57:55 +02:00
Christoph Oelckers
f7dd16ba16 - test skyboxes with dynamic_cast and scale them properly. 2020-04-19 10:57:55 +02:00
Christoph Oelckers
217b80b1fb - moved the brightmap check flag out of FTexture. 2020-04-19 10:57:54 +02:00
Christoph Oelckers
0a1bd458db - moved most material flags out of FTexture. 2020-04-19 10:57:54 +02:00
Christoph Oelckers
d812801707 - moved the shader properties to FGameTexture. 2020-04-19 10:57:54 +02:00
Christoph Oelckers
e60d758287 - made all member variables of FTexture protected. Also temorarily disabled the CleanUnused call of the precacher - this needs some reworking, now that the texture system is better equipped for it. 2020-04-19 10:57:54 +02:00
Christoph Oelckers
718949f74d - moved the texture name to FGameTexture. 2020-04-19 10:57:53 +02:00
Christoph Oelckers
7dd108c960 - removed FTexture's Scale variable. 2020-04-19 10:57:53 +02:00
Christoph Oelckers
eb369dbf41 - initialize texture offsets for images on construction. 2020-04-19 10:57:53 +02:00
Christoph Oelckers
61380fc505 - moved the offsets to FGameTexture.
# Conflicts:
#	src/common/textures/textures.h
2020-04-19 10:57:53 +02:00
Christoph Oelckers
8843761bf8 - moved most of the texture size maintenance to the FGameTexture class. 2020-04-19 10:57:53 +02:00
Christoph Oelckers
9bc1d4f38f - restored null texture setup. 2020-04-19 10:57:52 +02:00
Christoph Oelckers
c563f4993f - took the sky cap color getter out of the texture system.
# Conflicts:
#	src/common/textures/textures.h
2020-04-19 10:57:52 +02:00
Christoph Oelckers
d1da26895b - moved the texture ID up one level. 2020-04-19 10:57:52 +02:00
Christoph Oelckers
7641da8b7b - moved several members from FTexture to FGameTexture. 2020-04-19 10:57:52 +02:00
Christoph Oelckers
42304d9680 - store the material layers in reference counted pointers in the FGameTexture object.
Reference counting is used because a texture image may be shared by more than one game texture.
2020-04-19 10:57:51 +02:00
Christoph Oelckers
70ec20c137 - optimization of texture scaling checks.
The texture dimension checks can be performed up front when the texture is inserted into the texture manager.
2020-04-19 10:57:51 +02:00
Christoph Oelckers
09898ef6c3 - cache the upscaling check's result in the texture, as this will be queried quite frequently. 2020-04-19 10:57:51 +02:00
Christoph Oelckers
8505c7ee7d - major refactor of texture upscaling control.
All decisions were done deep inside the texture creation code, leaving zero options to the higher level code for controlling the feature.
Changed this so that the option to upscale must be passed as a parameter to FRenderState::SetMaterial and extended all needed variables to manage the added texture variants.
Still not solved: Material layers need explicit control, not only for scaling but also for filtering.
2020-04-19 10:57:51 +02:00
Christoph Oelckers
0b990f0dcb - moved the decision whether to upscale textures up one level in the function chain. Still not the perfect place, this should be decided before creating the texture, not in the middle of the process.
- disabled the selective texture cleaning in the precacher. The logic here turned out to be a serious blocker and needs to be rethought.
2020-04-19 10:57:50 +02:00
Christoph Oelckers
a81bb2a136 - make FGameTexture a separate object owning an FTexture instead of merely using a type cast to access it. 2020-04-19 10:57:50 +02:00
Christoph Oelckers
095a5e2c0a - allocate the sprite positioning info on demand only.
For most textures this is never needed and it can easily be put in the memory arena being used for image sources.
2020-04-19 10:57:50 +02:00
Christoph Oelckers
c5e81c54a2 - Moved the raw texture handling into the texture manager as well. 2020-04-19 10:57:50 +02:00
Christoph Oelckers
5352682697 - moved the front layer hack for Hexen's skies to the texture manager. 2020-04-19 10:57:50 +02:00
Christoph Oelckers
da873ca8d1 - moved the handling for paletted replacements into the texture manager.
This is something the texture should not concern itself with.
2020-04-19 10:57:49 +02:00
Christoph Oelckers
18760d6622 - deleted unused function. 2020-04-19 10:57:49 +02:00
Christoph Oelckers
662fa6e667 - removed the conversion helper code and fixed a few places where FMaterial was only used to access the hardware textures in the FTexture class. 2020-04-19 10:57:49 +02:00
Christoph Oelckers
7bdef7fe9a - cleaned the texture manager's method interface from FTexture references. 2020-04-19 10:57:49 +02:00
Christoph Oelckers
f5d5888c22 - thinned out the Texturemanager interface. 2020-04-19 10:57:49 +02:00
Christoph Oelckers
437d4f8af0 - changed storage in texture manager to FGameTexture. 2020-04-19 10:57:48 +02:00
Christoph Oelckers
397b1520bc - deal with I_SetCursor 2020-04-19 10:57:48 +02:00
Christoph Oelckers
c605359b0e - animator transitioned. 2020-04-19 10:57:48 +02:00
Christoph Oelckers
83817080bb - more texture cleanup.
It is now in a state where FTexture really needs to be separated from FGameTexture.
2020-04-19 10:57:48 +02:00
Christoph Oelckers
31035a6cea - cleaned out the coordinate code in FMaterial. 2020-04-19 10:57:48 +02:00
Christoph Oelckers
c178313da5 - got rid of the last remaining FMaterial references in the high level renderer. 2020-04-19 10:57:47 +02:00
Christoph Oelckers
4cbd20e822 - transitioned sky and decal code away from FMaterial. 2020-04-19 10:57:47 +02:00
Christoph Oelckers
cca3f878f5 - removed FMaterial references from other high level renderer data like HWFlat and HWSprite. 2020-04-19 10:57:47 +02:00
Christoph Oelckers
1146cf9e08 - use FGameTexture instead of FMaterial for texture tracking in HWWall.
The FMaterial object is only needed when finally binding the texture to the render state.
2020-04-19 10:57:47 +02:00
Christoph Oelckers
0ce0099e29 - moved the sprite positioning info out of FMaterial back into FTexture.
This cleans out half of FMaterial and brings it closer to being a texture binding descriptor, which is all it really should be.
2020-04-19 10:57:47 +02:00
Christoph Oelckers
9099bc8420 - reworking some lower level texture code. 2020-04-19 10:57:46 +02:00
Christoph Oelckers
72835c5462 - transitioned the GLDEFS parser to FGameTexture. 2020-04-19 10:57:46 +02:00
Christoph Oelckers
54f4267597 - use FGameTexture in the model rendering code. 2020-04-19 10:57:46 +02:00
Christoph Oelckers
b9b6a354c7 - changed all texture access in the play code to use FGameTexture and redid Hexen's front sky layer by adding a new texture instead of hacking the existing one. 2020-04-19 10:57:46 +02:00
Christoph Oelckers
9e7094848c - transitioned the 2D drawer to FGameTexture. 2020-04-19 10:57:45 +02:00
Christoph Oelckers
d9928b51a8 - eliminated all cases of calling DrawTexture with an FTexture.
Everything uses FGameTexture now.
2020-04-19 10:57:45 +02:00
Christoph Oelckers
c7db5b932e - switched the entire status bar code to use FGameTexture.
- scale the automap parchment to clean 320x200 dimensions.
2020-04-19 10:57:45 +02:00
Christoph Oelckers
5d8adb90c4 - made 'supportRemap0' an image property so that later the handling for this can be taken out of the actual texture class by just providing a replacement texture for the skies. 2020-04-19 10:57:45 +02:00
Christoph Oelckers
9593cb56ae - decoupled the software renderer entirely from FTexture - it will only look at FSoftwareTexture now, all access to the texture manager has been wrapped. 2020-04-19 10:57:45 +02:00
Christoph Oelckers
73b4fbe861 - FGameTexture conversion in am_map.cpp 2020-04-19 10:57:44 +02:00
Christoph Oelckers
aeba304715 - texture code refactoring to consolidate multiple textures referencing the same backing image. 2020-04-19 10:57:44 +02:00
Christoph Oelckers
3a47c5c7f7 - fixed Vulkan's uTextureMode setup. Also only mask out the flags we really do not want to avoid surprises in the future. 2020-04-19 10:57:44 +02:00
Magnus Norddahl
9ef6d8fd53 Always null textures for all slots because the vulkan target is an OpenGL emulator ;) 2020-04-19 10:57:44 +02:00