Commit graph

487 commits

Author SHA1 Message Date
Christoph Oelckers
0ed1077f29 - correct checks for HasDynamicLights 2018-06-26 08:51:21 +02:00
Christoph Oelckers
548ccb1df4 - removed some references to r_viewpoint in game code
Mainly to reduce number of search results.
2018-06-19 11:20:36 +02:00
Christoph Oelckers
8787905fed Fixed: DBaseStatusBar::Draw did not use its ticFrac parameter when being called from scripts
Instead it directly went to the global viewpoint again which would be inconsistent.
2018-06-19 09:00:50 +02:00
drfrag666
703d2bc0cd - Fixed missing include due to non conformant preprocessor in VS. 2018-06-18 20:57:52 +02:00
alexey.lysiuk
36779cf88c - restore startup game state on restart
At least values of custom server CVARs were not restored because of this

https://forum.zdoom.org/viewtopic.php?t=60711
2018-05-27 16:42:48 +03:00
alexey.lysiuk
e085a8d58a - garbage collect static event handlers on restart
Remaining object(s) led to a potential crash on the next garbage collection cycle
Assertion failure was triggered during restarting in Debug configuration
2018-05-27 16:42:48 +03: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
de15b589c0 - moved the screen blending code out of the renderer.
This is better be made part of the 2D interface.
That would have been done long ago if it hadn't been for the totally incompatible way this was handled by the purely paletted software renderer.
Now with that out of the way there is no point keeping this code this deeply embedded in the renderer.
2018-05-05 11:20:37 +02:00
alexey.lysiuk
2be84dc636 - skip rendering when application is not active
Use vid_activeinbackground CVAR to override this behavior
2018-05-04 11:24:37 +03:00
Christoph Oelckers
43b491ea33 - moved the global 'no dynamic lights' variable to FLevelLocals so that it is outside renderer specific data. 2018-05-03 21:27:45 +02:00
Christoph Oelckers
af76e9a9c4 - allow animated title pics.
This also applies to all other images shown in the title loop as well.
2018-04-30 23:48:59 +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
alexey.lysiuk
2ae8d39441 Removed all superfluous #include's
Automatically optimized by CLion IDE with manual corrections
2018-04-24 14:30:35 +03: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
1897073b60 -fixed: When performing a restart the SW scene drawer's resources should be reset because they are outside the control of higher level containers. 2018-04-08 08:03:46 +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
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
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
1fc4c9801b - moved all GLDEFS parsing into a dedicated source file.
- split gl_postprocessshader.h in two so that the hardware independent part can be used by GLDEFS without pulling in all of OpenGL.
2018-04-02 12:28:20 +02:00
Christoph Oelckers
6d6196388e - made SPROFS a more usable feature.
This was originally invented to fix the sprite offsets for the hardware renderer.
Changed it so that it doesn't override the original offsets but acts as a second set.
A new CVAR has been added to allow controlling the behavior per renderer.
2018-03-31 10:37:46 +02:00
Christoph Oelckers
2ed744963c - Changed frame buffer locking mechanism so that the only place where a lock is needed is when the software renderer wants to access the render buffer, which is precisely for the duration of the RenderView function.
No more locking insanity! :)
There are no locking counters or other saveguards here that would complicate the implementation because there's precisely two places where this buffer must be locked - the RenderView functions of the regular and poly SW renderer which cannot be called recursively.
2018-03-27 20:02:44 +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
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
e89a598b31 - renamed FTexture's UseType flags and gave them a dedicated type.
This was done mainly to reduce the amount of occurences of the word FTexture but it immediately helped detect two small and mostly harmless bugs that were found due to the stricter type checks.
2018-03-25 20:26:16 +02:00
alexey.lysiuk
bdeae23a56 Added native UI dialog to confirm stats collection
Implemented only for Windows so far
Need good message to explain purpose of this feature
2018-03-14 10:20:46 +02:00
Christoph Oelckers
d2fa4d0ff9 - most stat stuff done. 2018-03-12 19:33:48 +01:00
Rachael Alexanderson
c15e868b0f - implemented anonymous stats collector 2018-03-12 19:33:48 +01:00
Christoph Oelckers
b939836846 - renamed FileRdr back to FileReader. 2018-03-11 19:29:37 +01:00
Christoph Oelckers
b14ee50d0d - transition to new FileReader interface complete, but untested. 2018-03-11 12:33:46 +01:00
Christoph Oelckers
542d3431ff - Start of soundfont refactoring. This does not compile yet! 2018-02-22 07:21:19 +01:00
Neil McPhail
ded0c7805d Fix failure to write under ~/ in confinement
When running in a confined environment (such as a snap) it may not be
possible to write to directories such as ~/.config. By using the $HOME
variable instead of the '~' shortcut, the confined environment can pass
an alternative 'home' directory with write privelges.

I have only changed this for posix/unix and haven't touched code for
MacOS, as I don't know if that behaves differently
2018-01-21 10:52:42 +01:00
alexey.lysiuk
f25a5ea2bc Marked a few commands as unsafe
This process of finding unsafe commands is not complete!
2018-01-07 15:03:49 +02:00
alexey.lysiuk
90c734a39f Fixed VM abort when drawing from ZScript happens during 0 game tic
https://forum.zdoom.org/viewtopic.php?t=58523
https://forum.zdoom.org/viewtopic.php?t=58780
2017-12-19 18:07:29 +02:00
Rachael Alexanderson
a29d9e157c - fixed: screen->FrameTime should use an adjusted frame start time 2017-12-07 03:01:57 -05:00
Christoph Oelckers
8627a48b34 - consolidation of 'stat' calls.
Since this is a non-standard function it's better kept to as few places as possible, so now DirEntryExists returns an additional flag to say what type an entry is and is being used nearly everywhere where stat was used, excluding a few low level parts in the POSIX code.
2017-12-02 16:07:09 +01:00
Rachael Alexanderson
6d43c5cdc6 Merge remote-tracking branch 'origin/friendly_window_title' 2017-11-24 14:41:25 -05:00
Rachael Alexanderson
f1405f68a7 Merge remote-tracking branch 'origin/master' into friendly_window_title 2017-11-18 14:08:33 -05:00
Rachael Alexanderson
c3c637a0cc - set i_friendlywindowtitle to true by default 2017-11-18 08:17:18 -05:00
Rachael Alexanderson
e418663a26 - fixed: Reverted an accident in a previous commit where I_StartTic() was moved inappropriately. The new location fixed a mouse stutter, however, it causes net desyncs so it cannot be used here. 2017-11-15 22:20:55 -05: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
0323f54384 - rename I_FPSTime function.
- now that the frame buffer stores its render time, the 'ms' return from I_GetTimeFrac is not needed anymore, we may just as well use the globally stored value instead.

The only feature this value was ever used for was texture warping.
2017-11-13 00:54:32 +01:00
Christoph Oelckers
96e9eadd97 - removed I_MSTime entirely after checking how the wipe code actually works.
Since this calls I_WaitVBL, which resets the frame time, it was essentially just like calling a real-time timer anyway and nothing in it required a specific 0-timepoint.
The same applies to the ZScript interface. All it needs is a millisecond-precise timer with no semantics attached.
2017-11-13 00:38:04 +01: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
93e9c383fa - get the timer used for animation only once at the very beginning of the frame and pass it on to the renderer to avoid any dependencies on the timer's implementation. 2017-11-12 18:51:11 +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