Commit graph

220 commits

Author SHA1 Message Date
Christoph Oelckers
babe55819e - fullscreen toggle and some cleanup. Not fully working yet. 2018-06-17 22:11:35 +02:00
Christoph Oelckers
b65b83edb3 - removed the hard screen resolution switch that still was present on Windows and cleaned up the entire video backend code from the remaining support code for this.
Like Linux and macOS this will only support borderless fullscreen in the active desktop resolution now, which is what modern systems need.
The list of discrete resolutions has been removed as it makes no sense anymore with a fixed video mode - all the other scaling options remain active, though.
2018-06-17 20:08:35 +02:00
Christoph Oelckers
dc2a5b0cc9 - consolidated the 3 identical versions of I_CheckResolution and I_ClosestResolution. 2018-06-17 12:30:01 +02:00
Christoph Oelckers
684dd8f716 - moved the palette tester to its own file. 2018-06-17 09:55:30 +02:00
Christoph Oelckers
9ff7e5a4ef - force render buffers to be active.
For modern hardware the fallback path really makes no sense and this allows to simplify some things quite a bit.
2018-06-16 09:37:01 +02:00
Magnus Norddahl
f03c02df43 - fix gamepic render buffer issues 2018-06-03 13:59:40 +02:00
Christoph Oelckers
44dd48c7fa - moved the palette stuff and some remaining scaling code from OpenGLFrameBuffer to DFrameBuffer and fixed GetFlashedPalette 2018-05-16 22:10:24 +02:00
Christoph Oelckers
c2a7a4bf30 - moved viewport code to DFrameBuffer. 2018-05-12 17:23:56 +02:00
Christoph Oelckers
67cb6e63b5 - cleanup of the 2D interface.
Lots of this was still laid out for DirectDraw. This removes most of Begin2D so that it can be done more cleanlz.
Note that this commit renders weapon sprites and screen blends incorrectly. Those will be fixed in an upcoming commit.
2018-04-29 20:15:19 +02:00
Christoph Oelckers
06d20e13b8 - cleaned up the gamma correction code.
This had accumulated quite a bit of cruft by now and parts of it should be in non OpenGL code.
2018-04-29 13:45:53 +02:00
Christoph Oelckers
bbea6e7e3c Begin2D doesn't need a return type anymore
This was to tell the caller that software 2D was in use, but that doesn't exist anymore
2018-04-27 09:58:19 +02:00
alexey.lysiuk
2ae8d39441 Removed all superfluous #include's
Automatically optimized by CLion IDE with manual corrections
2018-04-24 14:30:35 +03:00
Magnus Norddahl
915f8862a7 - Remove code that seemingly doesn't do anything and really shouldn't be needed 2018-04-13 21:56:34 +02:00
Christoph Oelckers
b12a6fded9 - added the code for legacy shaders.
- force texture filtering for 2D to off when in software rendering.
2018-04-08 12:11:51 +02:00
Christoph Oelckers
df4f435952 - merged vid_renderer, swtruecolor and r_polyrender into one CVAR to reduce menu clutter.
- with renderers freely switchable, some shortcuts in the 3D floor code had to be removed, because now the hardware renderer can get FF_THISINSIDE-flagged 3D floors.
- changed handling of attenuated lights in the legacy renderer to be adjusted when being rendered instead of when being spawned. For the software renderer the light needs to retain its original values.
2018-04-07 23:30:28 +02:00
Christoph Oelckers
adbeb3f251 Merge remote-tracking branch 'remotes/origin/master' into 2D_Refactor 2018-04-07 18:50:24 +02:00
Christoph Oelckers
5fbc723842 - live switching of the renderer works. 2018-04-07 12:59:04 +02:00
Christoph Oelckers
b34d7f9e08 - added a software scene drawer to the GL renderer.
It still looks like shit and only works on the modern render path but at least the basics are working.
2018-04-07 10:20:59 +02:00
alexey.lysiuk
2e7d196f8b Fixed crash when vid_setmode CCMD is used from command line
It's impossible to validate video mode at such early stage of initialization
Added sanity check for mode's width and height as well

https://forum.zdoom.org/viewtopic.php?t=59990
2018-04-04 11:46:14 +03:00
Christoph Oelckers
d474b849a5 - removed the remaining calls from the FRenderer interface from the main game code.
This does not work with a setup where the same backend is driving both renderers.
Most of this is now routed through 'screen', and the decision between renderers has to be made inside the actual render functions.
The software renderer is still driven by a thin opaque interface to keep it mostly an isolated module.
2018-04-04 00:21:25 +02:00
Christoph Oelckers
fcc33f0a09 - moved around more stuff from the FRenderer interface. 2018-04-03 22:50:47 +02:00
Christoph Oelckers
9ba32cb994 - with the new order of things we need the software renderer to be always available. 2018-04-03 20:14:26 +02:00
Christoph Oelckers
853903bb7e - removed the border refresh counter.
This was just a relic of DirectDraw as main backend and is no longer needed.
2018-04-03 00:50:40 +02:00
Christoph Oelckers
942460ba55 - changed voxel remapping to make a copy instead of destroying the original.
With live renderer switching both sets of data are needed.
2018-04-03 00:30:02 +02:00
Christoph Oelckers
a9d5533603 - integrated GL parts of translation handling into the main module.
Now that this doesn't have to share assets with HW2D it could be simplified a lot.
2018-04-01 00:59:49 +02:00
Christoph Oelckers
a001a5304d - removed the old software renderer framebuffers for Windows
This cannot be refactored with the old code still present and done properly both renderers should share what they can.
2018-03-30 23:18:25 +02:00
Christoph Oelckers
29ad081368 - removed remaining DirectDraw code and a few other things that are no longer being used. 2018-03-27 21:04:01 +02:00
Christoph Oelckers
62f073ef60 - removed Accel2D variable and a little bit of locking cruft. 2018-03-27 17:13:10 +02:00
Christoph Oelckers
cff5f0e3c7 - removed DFrameBuffer's locking mechanism.
In its current form this is quite useless. What's really needed is to require a lock on the RenderBuffer for the 3D scene, but since this is not needed for the 2D stuff anymore it can be done far simpler.
2018-03-27 16:48:33 +02:00
Christoph Oelckers
c06ad5c59c - separated DFrameBuffer from DCanvas.
This was a bad idea from the start and really only made sense with DirectDraw.
These days a FrameBuffer represents an abstract hardware canvas that shares nothing with a software canvas so having these classes linked together makes things needlessly complicated.
The software render buffer is now a canvas object owned by the FrameBuffer.

Note that this commit deactivates a few things in the software renderer, but from the looks of it none of those will be needed anymore if we set OpenGL 2 as minimum target.
2018-03-27 14:14:46 +02:00
Christoph Oelckers
bb9283a9af - work on separating DFrameBuffer from DCanvas.
2D works in D3D backend, but 3D crashes because not all pointers have been rerouted yet.
2018-03-27 13:50:31 +02:00
Christoph Oelckers
1a28644d83 - cleaned out unused stuff from DCanvas.
- removed CocoaFrameBuffer because it is a software fallback which is no longer supported.
2018-03-27 11:25:06 +02:00
Christoph Oelckers
ba799aebbd - moved locking logic from DCanvas to DFrameBuffer.
The software canvases used for rendering camera textures and save pictures in the software renderer do not need this.
2018-03-27 11:12:13 +02:00
Christoph Oelckers
dd491d6558 - removed support for paletted Windows display modes.
This was only relevant for DirectDraw which has been removed.
2018-03-27 10:41:38 +02:00
Christoph Oelckers
ded21cba8e - moved more code from DCanvas to DFrameBuffer. 2018-03-27 10:34:21 +02:00
Christoph Oelckers
d650e37497 - stripped out the entire software 2D renderer and moved all 2D drawing functions to DFrameBuffer so that they cannot be used with software DSimpleCanvas anymore. 2018-03-26 23:16:27 +02:00
Christoph Oelckers
7301001a3f - made the necessary adjustments to the HW2D interfaces to handle alpha textures properly.
These cannot be done with the regular textures so there needs to be an option to create more than one native texture per FTexture. For completeness' sake there is also the option now to create a paletted version of a texture if the regular one is true color. This fixes a long standing problem that translations were not applied to non-paletted textures.
2018-03-23 23:04:30 +01:00
Christoph Oelckers
f4d9ad1123 - extended FTexture::GetPixels and FTexture::GetColumn by a RenderStyle parameter.
Now it is no longer necessary to provide specially set up textures for rendering shaded decals, they can use any PNG texture now that contains a proper red channel.
Handling of the alPh chunk has been removed as a result as it in no longer needed.
2018-03-18 21:33:44 +01:00
Christoph Oelckers
a399d79f8a - minor reformatting. 2018-03-18 14:18:42 +01:00
alexey.lysiuk
5162e7162e Fixed overbright screenshots with hardware gamma off
When render buffers are used to apply gamma/brightness/contrast screenshots should not use PNG gamma correction
2017-12-06 11:24:10 +02:00
alexey.lysiuk
0667f2ec55 Fixed string format issues reported by GCC/Clang
d_net.cpp:2874:25: warning: format specifies type 'int' but the argument has type 'unsigned long long' [-Wformat]
gl/utility/gl_clock.cpp:240:38: warning: format specifies type 'int' but the argument has type 'uint64_t' (aka 'unsigned long long') [-Wformat]
v_video.cpp:883:71: warning: format specifies type 'unsigned int' but the argument has type 'uint64_t' (aka 'unsigned long long') [-Wformat]
v_video.cpp:883:80: warning: format specifies type 'unsigned int' but the argument has type 'uint64_t' (aka 'unsigned long long') [-Wformat]
2017-11-26 09:59:28 +02:00
Rachael Alexanderson
909daadd75 - update more millisecond-storing data structures to u/int64_t to fix possible rollover bugs 2017-11-15 20:33:08 -05:00
Christoph Oelckers
2c65f08011 - more timer cleanup
* store the frame time in the current screen buffer from where all render code can access it.
* replace some uses of I_MSTime with I_FPSTime, because they should not use a per-frame timer. The only one left is the wipe code but even this doesn't look like it needs either a per-frame timer or a timer counting from the start of the playsim.
2017-11-13 00:28:43 +01:00
Christoph Oelckers
6bd76d6b5a - fixed compilation in debug mode.
- moved timer definitions into their own header/source files. d_main is not the right place for this.
- removed some leftover cruft from the old timer code.
2017-11-12 09:06:40 +01:00
Magnus Norddahl
307d8931d8 - Switch to C++11 steady clock
- Move the C++11 implementation to d_main
- Remove the platform specific timer implementations
2017-11-12 03:12:22 +01:00
Rachael Alexanderson
fc0ae896b2 - remove vid_tft and vid_nowidescreen and associated menu option. Their functionality was supersceded and extended by vid_aspect==3 (which has the same effect as setting both to true anyhow), and it was mostly just redundant. 2017-10-10 06:38:07 -04:00
Rachael Alexanderson
69abf095c9 - added vid_cropaspect. This cvar turns vid_aspect into a letterboxing function that will crop the unused sides of the screen away, instead of stretching it. Requires one of the non-legacy OpenGL framebuffers to work. 2017-10-07 20:18:37 -04:00
Rachael Alexanderson
10e1600faf - Replaced one more vid_scalemode check with a more versatile ViewportIsScaled43 check 2017-07-27 12:19:41 -04:00
Rachael Alexanderson
30087f7cd7 - cleaned up the video scale mode code a bit, in order to increase future flexibility. 2017-07-27 03:05:01 -04:00
Rachael Alexanderson
45a37211e4 - added special handling for vid_scalemode == [1||2] to force video aspect scaling off unless the user explicitly specified an aspect override. 2017-07-23 10:49:13 -04:00