Commit graph

702 commits

Author SHA1 Message Date
Christoph Oelckers
8381092cce - major shader rework
* handle brightmaps in the main shader instead of keeping separate instances around.
* added detail and glow layers from Raze.
* fixed material setup which could not guarantee that everything was initialized correctly.
* for warped textures, warp all layers. With this brightmaps finally work on warped textures.

Note: Vulkan reports a "device lost" error with this which still needs to be investigated.
2020-04-19 10:57:43 +02:00
Christoph Oelckers
e92be97f33 - let FSkybox inherit from FImageTexture to simplify the redirection of the base image for the software renderer. 2020-04-13 14:23:57 +02:00
alexey.lysiuk
9c23c0ac59 - fixed compilation with GCC 5 2020-04-12 11:50:11 +03:00
Christoph Oelckers
8f8aed5ee3 - moved bitmap.cpp to 'common' and remove the duplicate IceRemap. 2020-04-11 20:23:26 +02:00
Christoph Oelckers
9dce6d88fa - use 'override' qualifier. 2020-04-11 20:21:00 +02:00
Christoph Oelckers
0cb2a1b8e9 - moved gl_load to common. 2020-04-11 20:20:59 +02:00
Christoph Oelckers
295fa1e73f - header cleanup in gl_interface.cpp 2020-04-11 20:20:59 +02:00
Christoph Oelckers
1e40b745d5 - added some things from Raze to allow using the same code in both projects. 2020-04-11 20:20:59 +02:00
Christoph Oelckers
5fe22c70b5 - moved the 2D drawer to 'common'. 2020-04-11 20:20:59 +02:00
Christoph Oelckers
def123823b - cleanup of 2D code. 2020-04-11 20:20:58 +02:00
Christoph Oelckers
ce4c2be3c7 - use the 2d drawer's size where appropriate. 2020-04-11 20:20:58 +02:00
Christoph Oelckers
b18faacab0 - 2D drawer cleanup. 2020-04-11 20:20:58 +02:00
Christoph Oelckers
ac1f4b8f11 - initialize native functions before the first query. 2020-04-11 20:20:57 +02:00
Christoph Oelckers
932f5c64c2 - moved stats.cpp to common. 2020-04-11 20:20:57 +02:00
Christoph Oelckers
fa99fc5346 - added global variants of the main 2D-draw functions taking an F2DDrawer as their first parameter.
This is a preparation for refactoring the calls to these so that they no longer require a 'screen' parameter.
2020-04-11 20:20:57 +02:00
Christoph Oelckers
3bf7686cfb - moved v_text.cpp to 'common'. 2020-04-11 20:20:56 +02:00
Christoph Oelckers
f8ac9a2662 - moved DObject and core parts of the VM to 'common'.
# Conflicts:
#	src/common/objects/dobject.h
2020-04-11 20:20:51 +02:00
Christoph Oelckers
1a0ace4f88 - palette related fixes. 2020-04-11 20:20:40 +02:00
Christoph Oelckers
d586ffa79c - const-ified the palette pointers in the texture creation code.
- fixed includes.
2020-04-11 20:20:39 +02:00
Christoph Oelckers
65f15e1147 - moved the material class to 'common' as well. 2020-04-11 20:20:38 +02:00
Christoph Oelckers
580e463498 - moved texture code to 'common'. 2020-04-11 20:20:38 +02:00
Christoph Oelckers
2ff93b4635 - added the missing blend modes to FRenderStyle. 2020-04-11 20:20:37 +02:00
Christoph Oelckers
3e285d2261 - moved renderstyle and colortables code to 'common'. 2020-04-11 20:20:37 +02:00
Christoph Oelckers
f8e9cb8fbc - major dependency reduction of the texture system. 2020-04-11 20:20:37 +02:00
Christoph Oelckers
721b857e5e - minor FTexture cleanup. 2020-04-11 20:19:53 +02:00
Christoph Oelckers
ac610d87e5 - merged FPalette and PaletteContainer. 2020-04-11 20:19:53 +02:00
Christoph Oelckers
7243495b16 - moved special color maps to utilities.
The default tables are needed by the texture compositor which should be universal, so this needs to be, too.
2020-04-11 20:19:52 +02:00
Christoph Oelckers
c3a381ed92 - moved most of the console code to 'common'.
The main console.cpp file cannot be done yet, but the rest is ready to go.
2020-04-11 20:19:51 +02:00
Christoph Oelckers
603ad755ab - separated the button code from c_dispatch.
Two separate features justify two separate files.
2020-04-11 20:19:24 +02:00
Christoph Oelckers
e425615770 - moved the V_GetColor family of functions to the global palette utilities. 2020-04-11 14:00:22 +02:00
Christoph Oelckers
05d8856fe0 - moved file system implementation to 'common'. 2020-04-11 14:00:20 +02:00
Christoph Oelckers
80c6d5b276 - renamed more stuff and also moved the Strife teaser voice handling out of the file system. 2020-04-11 14:00:19 +02:00
Christoph Oelckers
c1bb7de23a - more file system refactoring.
* moved the sprite renaming out of the file system entirely into a caller-provided callback.
* renamed several functions to closer match the terms of a file system.
* moved the VM interface out of the implementation.
2020-04-11 14:00:19 +02:00
Christoph Oelckers
6bccde3b51 - renamed the file system related classes to actually use the term "FileSystem". 2020-04-11 14:00:18 +02:00
Christoph Oelckers
fdc14ca805 - renamed fullscreen CVar internally to vid_fullscreen to make searching for it easier.
The word 'fullscreen' appears a bit too frequently in the source.
2020-04-11 14:00:15 +02:00
Christoph Oelckers
fb1a7679ec - moved most basic utility code without any dependencies on the rest of the engine to 'common' directory.
Again the objective is easier sharing with Raze.
2020-04-11 14:00:13 +02:00
Christoph Oelckers
6996d54a23 - moved more code to 'common'.
This is all low level utilities with no dependencies on game logic. Having this in a separate directory makes sharing with Raze a lot easier.
2020-04-11 14:00:12 +02:00
Christoph Oelckers
cf757ba834 - made the translation container a class.
This also splits off some Doom-specific implementation details into higher level headers.
2020-04-11 14:00:11 +02:00
Christoph Oelckers
0a7344e432 - abstract the external translation interface.
The translation table array now only gets accessed from within r_translate.cpp.
2020-04-11 14:00:10 +02:00
Christoph Oelckers
b0ecb02d6b - move SuperFastHash to its own set of files, instead of having this tied to the console.
- replace swapvalues with std::swap globally.
- added some additions to utility code from Raze, mainly to reduce file content differences.
- reduced some unused utilities
2020-04-11 14:00:10 +02:00
Christoph Oelckers
1fe667c6a0 - cleaned up the includes in m_png.h, this file had far too many and far too broad dependencies. 2020-04-11 14:00:09 +02:00
Christoph Oelckers
c623b04170 - copied some fixes for overlong config entries from Raze.
- renamed basictypes.h to basics.h to keep the file name in line with Raze and make comparisons easier.
2020-04-11 14:00:08 +02:00
Lucy Phipps
2c1a42ae55
remove gl_texture_usehires since it's unused now
GLTEXMNU_ENABLEHIRES in language.csv is unused too
2020-04-05 13:22:32 +01:00
Christoph Oelckers
5490ffcd77 - removed the obsolete Doomsday 1.8-style texture pack support.
This poorly integrated into the texture system and wasn't compatible with modern texture packs anymore so its usefulness was questionable.
2020-04-04 12:55:24 +02:00
drfrag
8336e80f48 - Fixed sprites sunk into water on Carmack with HQ resize modes. 2020-04-01 14:25:10 +02:00
dondiego
4bfb0e937f
- Fixed tutti-frutti and crash with liquid warp effects on the Carmack renderer when texture resizing was disabled. (#1063) 2020-03-31 19:17:41 -04:00
dondiego
cc0594df2e
- Use g_sin for the SoftPoly warp effects as Graf suggested. (#1061) 2020-03-31 10:25:46 -04:00
Rachael Alexanderson
6049e806d1 - amend previous commit: add softpoly fix 2020-03-26 17:53:32 +01:00
Rachael Alexanderson
7c9d8a0b99 - fix nullptr crash in player.camera reference when player.camera is nullptr 2020-03-26 17:53:32 +01:00
Rachael Alexanderson
ecb3ff0977 - add warp2 shader to softpoly2 2020-03-24 14:05:39 -04:00
Magnus Norddahl
175b697ba2 Implement warp effect 2020-03-24 17:49:21 +01:00
Rachael Alexanderson
aa0df7479e - remove assumption in DFrameBuffer::FillBorder that ultrawide screens will stretch an image, since it is no longer the case. 2020-03-22 06:47:34 -04:00
Christoph Oelckers
828cba13a1 - changed translation management so that the fonts also use translation IDs. 2020-03-16 17:23:30 +01:00
Christoph Oelckers
16ae7e3124 - fixed typo. 2020-03-15 12:19:22 +01:00
Christoph Oelckers
db5efddf12 - implemented better aspect ratio control for fullscreen images.
Due to backwards compatibility needs and for flexibility this needs to be controlled by a gameinfo setting (fullscreenautoaspect):

0: Treat all images as having an aspect ratio of 4:3, this is the default for compatibility reasons
1: Scale all images to fit the screen, i.e. either pillarbox or letterbox them.
2: Scale all images to fill the screen.
3: Scale all images so that the center 4:3 area is always fully visible. This is the recommended mode for 16:9 images designed to be shown with the sides being cropped on narrower displays.

A new DTA_ tag - DTA_FullscreenEx also exists which allows specifying the scale mode directly
2020-03-15 09:27:02 +01:00
Magnus Norddahl
920b322d72 Add missing segment clipping clamps for decals, sprites and wall sprites 2020-03-11 02:18:43 +01:00
alexey.lysiuk
5d6a490846 - prohibit core shaders overriding for OpenGL renderer
https://forum.zdoom.org/viewtopic.php?t=67519
2020-02-25 15:57:50 +02:00
drfrag
68f338b134 - Fixed compilation with MinGW and did some cleanup. 2020-02-16 09:39:17 +02:00
Magnus Norddahl
08e86b5bcc - fix vulkan crash when there are no textures in player's view 2020-02-15 10:42:46 +01:00
Magnus Norddahl
dd2d9f4182 - Fix vk_hdr looking for the wrong colorspace 2020-02-15 09:46:24 +01:00
Christoph Oelckers
617b6cd987 - use floats for sprite depth sorting in the hardware renderer.
Fixed point is clearly insufficient here.
2020-02-15 09:22:30 +01:00
alexey.lysiuk
bf18eab54b - fixed sprite and particle colors when not affected by dynlights
When gl_light_sprites and/or gl_light_particles CVARs were unset, random values could be used their colors

https://forum.zdoom.org/viewtopic.php?t=67066
2020-01-23 17:20:20 +02:00
Magnus Norddahl
e43894213e Remove softpoly specific matrix and vector classes 2020-01-18 13:56:37 +01:00
Magnus Norddahl
43562c94d0 Seems the clamp was required 2020-01-18 12:55:36 +01:00
Magnus Norddahl
e68b46cb6a Implement special colormap support for softpoly 2020-01-17 21:58:33 +01:00
Magnus Norddahl
3b336a1476 Fix broken fixed camera light for walls 2020-01-17 01:15:44 +01:00
alexey.lysiuk
efd2f8a1a8 - implemented screenshots in softpoly backend 2020-01-14 12:14:03 +02:00
Kevin Caccamo
91589d9799 Attempt to optimize check for ML_DRAWFULLHEIGHT
It is less likely that a line will have the ML_DRAWFULLHEIGHT flag than its' ceiling will be above the neighbouring sector's ceiling and vice versa.
2020-01-11 13:24:02 +01:00
Kevin Caccamo
d73a5f5e16 Use != 0 after ANDing with the relevant flags
This is mostly a "just in case" measure, in case I did something wrong with the previous commits.
2020-01-11 13:24:02 +01:00
Kevin Caccamo
2ff92e91d2 Fix ML_DRAWFULLHEIGHT flag check 2020-01-11 13:24:02 +01:00
Kevin Caccamo
7ca6e7e5c1 Add handling for drawfullheight flag
Parse drawfullheight flag in UDMF
Draw full height for walls if the linedef has this flag
2020-01-11 13:24:02 +01:00
Kevin Caccamo
9b598017f9 Add more ways to prevent GZDoom from drawing skybox walls
Add noskywalls flag to sectors and linedefs
2020-01-11 13:24:02 +01:00
alexey.lysiuk
3185e359b9 - added workaround for GLSL noise functions on macOS
There is no chance that Apple will fix their OpenGL drivers
The only viable solution is to preprocess these functions out, and put zeroes instead of them
2020-01-10 13:52:17 +02:00
alexey.lysiuk
7e050010aa - removed obsolete softpoly render modes
https://forum.zdoom.org/viewtopic.php?t=66888
2020-01-06 14:31:34 +02:00
Rachael Alexanderson
cb7a097ed4 - vid_scalemode 1 now only goes down to 640x400 at minimum, instead of 320x200 2020-01-04 15:05:35 -05:00
alexey.lysiuk
651dfbc49f - fixed a few compilation warnings
src/d_main.cpp:280:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
src/rendering/r_videoscale.cpp:147:22: warning: comparison of integers of different signs: 'int' and 'unsigned long' [-Wsign-compare]
src/sound/s_reverbedit.cpp:250:18: warning: comparison of integers of different signs: 'size_t' (aka 'unsigned long') and 'int' [-Wsign-compare]
2020-01-04 12:59:26 +02:00
Magnus Norddahl
fca3da8af4 Update and clarify the licenses for the postprocess, vulkan and softpoly parts 2020-01-03 05:52:01 +01:00
Rachael Alexanderson
f398819ce3 - due to issues with chat, scoreboard, and the stat screen, disable 320x200 in multiplayer for now 2020-01-02 06:47:17 -05:00
Rachael Alexanderson
118e3db5ca - r_videoscale: make the compiler manage vScaleTable's size 2020-01-01 23:23:20 -05:00
Rachael Alexanderson
dff45eb1f3 - relicense some of my past work under BSD 2020-01-01 07:38:06 -05:00
Rachael Alexanderson
5ae0ae885d - amend last commit: do it the other direction, too 2020-01-01 01:28:42 -05:00
Rachael Alexanderson
e87ed35565 - add framerate limiter to polybackend update function 2020-01-01 00:39:33 -05:00
Rachael Alexanderson
aa4abfc977 - added pixel ratio detection to supersampling detection for forcing linear scaling - this should likely make it so if there's ever an instance where a viewport pixel is smaller than a screen pixel, the screen should go to linear scaling now 2020-01-01 00:25:48 -05:00
Rachael Alexanderson
5389d8ad1a - set sane limits for vid_scale_custompixelaspect 2019-12-31 15:21:47 -05:00
Rachael Alexanderson
4bc923dddf - slight rearrange of vid_scalemode and menu update 2019-12-31 10:41:30 -05:00
Rachael Alexanderson
903f448461 - made linear scaling more user controlled 2019-12-31 10:26:23 -05:00
Rachael Alexanderson
5d2d187b84 - allow custom pixel ratio scaling 2019-12-31 09:41:42 -05:00
Magnus Norddahl
839b737429 Fix wrong blend tables used when dynamic lights hits translucent lines 2019-12-31 03:00:36 +01:00
Cacodemon345
7fd27bc925 Add PSPF_PLAYERTRANSLATED flag (makes a PSprite layer translated to the user's color) 2019-12-30 13:05:38 +01:00
Christoph Oelckers
77469e0512 - fixed the colorization parser. 2019-12-29 12:11:16 +01:00
Christoph Oelckers
f9d2dc51d0 - cleanup of new colorization code.
- profiling shows that running the code for applying the colorization and the gradients is extremely expensive, apparently this always causes a cache miss, so now the entire thing is enabled by a sidedef flag.
2019-12-29 11:30:36 +01:00
Rachael Alexanderson
9858ed70b0 - fixed sprite drawing with hqresized textures 2019-12-24 06:44:52 -05:00
Rachael Alexanderson
9ad628f6e5 - fixed: strife conversations do not need to unnecessarily trigger the switch to 640x400 2019-12-24 00:55:24 -05:00
Rachael Alexanderson
4ff8922006 - reinstate 320x200 with the following caveat: it only functions outside of menus and console, and only when the dialogues and logs use the default font, the game will temporarily switch to 640x400 in these situations 2019-12-23 23:14:08 -05:00
Rachael Alexanderson
f284567830 - change vid_scalemode 6 to work similarly to 0 and 1 when vid_cropaspect is turned on
- add vid_scaletolowest
2019-12-22 09:01:43 -05:00
Christoph Oelckers
738b9ceb08 - fixed incompletely changed shader.
It was still using a variable from the first revision that no longer exists.
2019-12-21 21:07:00 +01:00
Magnus Norddahl
1004ac1636 Automatically size the StreamUBO to 64 KB regardless of what is in it 2019-12-21 16:13:39 +01:00
alexey.lysiuk
81ea919d61 - fixed shader compilation errors with OpenGL backend
ERROR: 0:95: Use of undeclared identifier 'uTextureModulateColor'
ERROR: 0:104: Use of undeclared identifier 'uTextureAddColor'
ERROR: 0:107: Use of undeclared identifier 'uTextureModulateColor'
...
2019-12-21 15:42:04 +02:00
Christoph Oelckers
bb8db9422f - scaled down the texture colorization feature for easier usability.
It makes little sense exposing every minute detail of this through UDMF.
Setting it up that way is far too complicated. Using virtual textures that map to a real texture plus a colorization record should be far easier to use by mappers.
This also doesn't piggyback on the Doom64 color feature anymore and is completely separate, despite some redundancies.
This is still missing the texture definition part, though.
2019-12-20 22:25:10 +01:00
Christoph Oelckers
03537e90ff - linked new properties with the renderer.
Support for the softpoly renderer still missing.
2019-12-20 18:56:03 +01:00
Christoph Oelckers
3a249cb06f - added high level interface to the new properties, i.e. UDMF and ZScript. 2019-12-20 18:02:42 +01:00
Christoph Oelckers
3209d4ed23 - added a few more texture coloring options to the shader.
Aside from adding an additive component it can now also do:

- desaturation (not limited to the range of 0..1 so it can also be used for oversaturation by applying a negative number or negative saturation by going above 1.0.
- invert the texture
- apply a blend, including 3 special mode taken from EDuke32.

Currently only the implementation is done, it is not exposed to UDMF yet.
2019-12-20 16:05:00 +01:00
Christoph Oelckers
41a9496bef - the texture precaching message is supposed to be debug only 2019-12-20 14:38:22 +01:00
alexey.lysiuk
a0670f5c5b - added minimal time profiling of texture precaching 2019-12-20 11:06:00 +02:00
Rachael Alexanderson
33483115cd - amend last commit: use VID_MIN_HEIGHT and VID_MIN_WIDTH macros in place of hardcoded values 2019-12-20 03:31:44 -05:00
Rachael Alexanderson
a53652f36e - implement vid_scalemode = 6 - sets absolute minimum scaling to fill entire screen - useful for speeding up software rendering 2019-12-20 03:05:44 -05:00
Magnus Norddahl
c5717d98db Implement the other light modes and fix dynamic lights being calculated twice(!) 2019-12-15 20:05:13 +01:00
Magnus Norddahl
b44c40a63d Implement EFF_FOGBOUNDARY 2019-12-15 17:33:49 +01:00
Magnus Norddahl
5632c80ab2 Split softpoly into more files 2019-12-15 17:14:23 +01:00
David Carlier
e0fb9a45e2 Marking final class to suppress build warning with clang. 2019-12-12 23:26:32 +01:00
Magnus Norddahl
49af4a4b35 - fix line backside textures mirrored 2019-12-10 00:44:40 +01:00
Magnus Norddahl
2052a6db53 Simplify code slightly 2019-12-08 18:27:26 +01:00
Magnus Norddahl
1e239ba4bb SSE for the blend functions 2019-12-08 18:20:50 +01:00
Magnus Norddahl
819c675c3d Fix typo 2019-12-08 16:40:14 +01:00
Magnus Norddahl
0b9e4e1f3d Oops, shifting using a SSE register apparently requires AVX2 2019-12-08 16:29:14 +01:00
Magnus Norddahl
6c65c25303 Create specific blend functions for the common legacy render styles 2019-12-08 16:06:42 +01:00
Magnus Norddahl
42720f87cc Select fragment shader once per triangle 2019-12-08 14:52:12 +01:00
Magnus Norddahl
f7ae955e6a Select blend function once per triangle 2019-12-08 14:42:20 +01:00
Magnus Norddahl
73c62c5404 Minor code simplification 2019-12-08 13:57:40 +01:00
Magnus Norddahl
aa44fa7c77 Create SSE2 version of BlendColor 2019-12-08 13:55:28 +01:00
Magnus Norddahl
844b203971 Split the various stages of the fragment shader into functions 2019-12-08 03:18:05 +01:00
Magnus Norddahl
c97d02ae51 Alpha test must be performed before vcolor is applied 2019-12-08 02:39:42 +01:00
Magnus Norddahl
fdb93309fe Fix render to texture 2019-12-08 01:39:17 +01:00
Magnus Norddahl
cef3fd53ab Clamp vColor 2019-12-08 00:41:24 +01:00
Magnus Norddahl
f365f6f433 Fix depth test staying active when it shouldn't 2019-12-08 00:41:02 +01:00
Magnus Norddahl
310ef73aa8 Rename PolyTriangleDrawer to PolyCommandBuffer and make its interface look like one 2019-12-07 23:15:12 +01:00
Magnus Norddahl
bb64b178e1 Fix sky transition 2019-12-07 21:17:11 +01:00
Magnus Norddahl
90f5eee6c6 Add dynamic lights 2019-12-07 15:09:58 +01:00
Magnus Norddahl
75248cffd0 - fix decal color bug 2019-12-06 23:26:38 +01:00
Magnus Norddahl
fd4fc45040 Move blend operator and alpha test flag out of the inner blend loop 2019-12-06 20:35:19 +01:00
Magnus Norddahl
aede0633bc - fix bug where SSE wasn't actually really used at all
- improve precision of the SSE version of WriteW
- use SSE to calculate the texture wrapping
2019-12-06 18:51:41 +01:00
Magnus Norddahl
8075510289 Merge remote-tracking branch 'origin/master' into polybackend 2019-12-06 00:20:25 +01:00
Magnus Norddahl
a7a899ca14 Fix null pointer crash 2019-12-06 00:19:51 +01:00
Magnus Norddahl
9b7db26a37 Fix the compile error on Windows 2019-12-05 21:18:11 +01:00
Magnus Norddahl
e4bd2483e5 Implement SDL present functions 2019-12-05 21:26:01 +01:00
Magnus Norddahl
a9e6592feb Switch to the D3DSWAPEFFECT_FLIPEX swap model 2019-12-02 20:05:13 +01:00
Magnus Norddahl
43139276d1 SSE2 version of wrap 2019-12-02 18:44:15 +01:00
Rachael Alexanderson
3269b61ffc - change menu option for 'vid_preferbackend' 2019-12-02 09:43:06 -05:00
Magnus Norddahl
f501e1bb49 Fix texture binding bug 2019-12-02 01:48:59 +01:00
Magnus Norddahl
865b7a1a2c Implement func_paletted shader 2019-12-02 01:28:35 +01:00
Magnus Norddahl
44c2223c2f Draw 8-bit software renderer with polybackend (well, sort of!) 2019-12-02 01:07:28 +01:00
Magnus Norddahl
4a2b763aaa Support 8-bit textures 2019-12-02 00:35:15 +01:00
Magnus Norddahl
74c6b9fe6d Remove PolyDrawArgs 2019-12-02 00:21:42 +01:00
Magnus Norddahl
d2f4570337 Remove old polyargs 2019-12-02 00:01:04 +01:00
Magnus Norddahl
4a4b79194d Remove/disable old swrenderer model rendering code 2019-12-01 23:37:43 +01:00
Magnus Norddahl
3059b8f5c8 Remove old softpoly drawer implementation 2019-12-01 23:23:25 +01:00
Rachael Alexanderson
f1e136487d Merge branch 'polybackend' of https://github.com/coelckers/gzdoom into polybackend 2019-12-01 16:06:54 -05:00
Rachael Alexanderson
bdc7329d32 - replace vid_enablevulkan with vid_preferbackend - disabled startup window selector for this (will replace when the startup screen changes are done) 2019-12-01 16:06:36 -05:00
Magnus Norddahl
8ca05fe30a Implement crossfade 2019-12-01 22:05:10 +01:00
Magnus Norddahl
1b9479ea45 Implement burn.fp and second texture binding 2019-12-01 21:44:44 +01:00