Commit graph

1286 commits

Author SHA1 Message Date
Jupeyy 9b8da90151 check screen state 2018-03-21 15:41:45 +01:00
Jupeyy 91b1699994 remove unused and check freetype version 2018-03-15 14:22:08 +01:00
Jupeyy da311d03c4 use a different texture filter instead of correcting text coordinates 2018-03-15 03:33:22 +01:00
Jupeyy 62c3074c88 add new text renderer engine to support text buffering, cursors, text
marking and less character texture updates
2018-03-13 21:49:07 +01:00
Jupeyy 75eddfec7a add new shader programs 2018-03-13 21:47:45 +01:00
Jupeyy 898af39311 add new functions to support the new backend layout and the new
rendering system
2018-03-13 21:47:07 +01:00
Jupeyy 35f3dd5bc2 add new shader programs in the backend 2018-03-13 21:44:58 +01:00
Jupeyy 5b56e5b2c4 move the keyboard state back into the gfx update 2018-03-12 16:51:31 +01:00
Jupeyy 081057d6b9 style fixes and remove float cast 2018-03-12 15:43:31 +01:00
Jupeyy 5e1bee2760 clean up a bit to and descripe it better 2018-03-12 15:10:49 +01:00
Jupeyy cc7371c1cd set upper limit, for the case, if the refreshrate is smaller than the gameticks 2018-03-02 03:12:30 +01:00
Jupeyy 089cb1ea44 this must be inactive ofc 2018-03-01 08:25:34 +01:00
Jupeyy a808ee07d3 add accedentially removed cast 2018-03-01 08:07:48 +01:00
Jupeyy 3458ee0976 check if gfx_refresh_rate is non zero 2018-03-01 07:50:52 +01:00
Jupeyy 6f0509cfae the actual description to the problem 2018-03-01 07:44:22 +01:00
Jupeyy edaf632c04 Merge branch 'master' of https://github.com/ddnet/ddnet 2018-03-01 07:38:50 +01:00
Jupeyy 238c8847c0 keep track of lost frames and updates, to ensure FPS stability and
better CPU sleep times
2018-03-01 07:34:14 +01:00
Jupeyy 3dabb5c2bd ensure right internal image format, to prevent unsupported reformatting 2018-03-01 07:31:09 +01:00
heinrich5991 f7b7054152 Fix crash on startup due to sound initialization
Of course `WavpackOpenFileInputEx` is subtly incompatible to
`WavpackOpenFileInputEx64` in that it requires the userdata for the main
steam to be nonnull.

Fixes #1041.
2018-02-18 12:45:03 +01:00
heinrich5991 73c03544b4 Support older wavpack versions 2018-02-17 01:35:07 +01:00
heinrich5991 99fe1d7bcf Revert "Fix bundled wavpack when system wavpack is available"
This reverts commit 0d9265b1fa.
2018-02-17 01:31:40 +01:00
def 0d9265b1fa Fix bundled wavpack when system wavpack is available 2018-02-15 19:30:40 +01:00
bors[bot] c0fa444f3a Merge #1034
1034: Try to find external GLEW, pnglite and Wavpack  r=Learath2 a=heinrich5991

Allow for newer versions of Wavpack, fixes #1023.

Fixes #1016.
2018-02-13 02:02:07 +00:00
heinrich5991 94818ec1f0 Try to find external GLEW, pnglite and Wavpack
Allow for newer versions of Wavpack, fixes #1023.

Fixes #1016.
2018-02-12 23:29:45 +01:00
bors[bot] 6283ad2012 Merge #1015
1015: Fix typo r=heinrich5991 a=yangfl
2018-02-07 16:22:48 +00:00
Dennis Felsing f62833b699 Always keep same resolution on macosx 2018-02-07 13:21:18 +01:00
yangfl 1620fc9b0f Fix typo 2018-02-07 16:10:40 +08:00
Dennis Felsing 4c8a770ba6 macosx highdpi try #123456789 2018-02-07 08:22:57 +01:00
def 864ff1ac74 Remove highdpi stuff
This reverts commit d234c55dfa.
2018-02-06 23:21:17 +01:00
Dennis Felsing d234c55dfa Try macosx highdpi fix 2018-02-05 14:37:26 +01:00
def 151da9af97 Remove Emojis 2018-01-25 20:03:18 +01:00
def 9139737aa7 Minor style cleanup 2018-01-15 19:08:33 +01:00
bors[bot] 5b2a929bc1 Merge #976
976: fixed rand init error message r=heinrich5991 a=ChillerDragon

the ``dbg_msg()`` func doesn't work until the
``IEngine *pEngine = CreateEngine("DDNet", Silent);`` line gets executed.

I used a bool to leave the code order untouched c:
2018-01-07 17:02:44 +00:00
Chiller Dragun 52a7f84583 code styling 2018-01-07 03:03:33 -08:00
def 4813a4b857 Add cl_shownotifications (fixes #949) 2018-01-05 20:20:39 +01:00
Chiller Dragun 654dd597fe fixed rand init error message 2018-01-04 06:33:21 -08:00
Jupeyy 060f6fd36e Load shaders through IStorage class
Fixes #939.
2017-12-02 22:19:57 +01:00
bors[bot] bad105c5e4 Merge #953
953: Overhauled job system r=Learath2 a=heinrich5991

The engine now takes `std::shared_ptr<IJob>`, this will ensure the
appropriate lifetime of the given parameters, it also allows for proper
destruction. Remove the now obsolete `IFetcher` interface and `CFetcher`
class.

Also adds some locks to `CUpdater`, previously it didn't have any locks
at all.
2017-11-27 23:34:54 +00:00
bors[bot] 41f6140179 Merge #945
945: Don't use nonstandard `#pragma pack` r=Learath2 a=heinrich5991

It's not needed in that place anyway.
2017-11-26 16:27:50 +00:00
bors[bot] f9e0b6b3fe Merge #931
931: Add Speedup tiles correctly at the border creation & remove tile layer extension restriction & fix the LastIndex buffer initlialization & setup non mipmap textures up correctly(texture completness) r=heinrich5991 a=Jupeyy

Allows speedups to be drawn on extended range(out of map range) too.
2017-11-26 13:32:05 +00:00
Jupeyy b1d99de87a s_ 2017-11-26 14:10:47 +01:00
Jupeyy bff1186d3b is now s_ 2017-11-26 14:08:00 +01:00
Jupeyy 14297ae45c code pattern 2017-11-26 13:28:41 +01:00
heinrich5991 94acac91a0 Overhauled job system
The engine now takes `std::shared_ptr<IJob>`, this will ensure the
appropriate lifetime of the given parameters, it also allows for proper
destruction. Remove the now obsolete `IFetcher` interface and `CFetcher`
class.

Also adds some locks to `CUpdater`, previously it didn't have any locks
at all.
2017-11-23 15:47:38 +01:00
heinrich5991 f0c647dba5 Change os_compare_version to os_is_winxp_or_lower
This stops leaking OS details in non-`system.c` files.
2017-11-23 03:10:15 +01:00
heinrich5991 be80ccb7d6 Don't use nonstandard #pragma pack
It's not needed in that place anyway.
2017-11-18 00:24:44 +01:00
bors[bot] 27722633a3 Merge #940
940: Put shaders into the data/ directory r=Learath2 a=heinrich5991

Simplifies a lot of things
2017-11-15 23:29:55 +00:00
heinrich5991 17d3f4afa4 Put shaders into the data/ directory
Simplifies a lot of things
2017-11-08 22:19:47 +01:00
bors[bot] fdb2e330ce Merge #904
904: Fix use-after-free r=heinrich5991 a=Learath2

Not sure if this is the best way to go about this, but it works :/
2017-11-08 17:30:34 +00:00
Jupeyy 78c06e180f remove dublicated GL queries 2017-11-04 05:38:48 +01:00
Jupeyy 78a9fbb9b5 use the write buffer slot, instead of elementarray slot to create the
index buffer
2017-11-04 04:57:58 +01:00
Jupeyy d367f94d7c invalidate all index buffer bindigs, when index buffer is resized 2017-11-03 19:48:17 +01:00
Jupeyy c22af4bb4d fix index buffer bindig for normal quads(fixes startup crashes) and
initialize non mipmap textures as linear(texture completness)
2017-11-03 19:33:23 +01:00
bors[bot] 5528cde5f6 Merge #869
869: Complete rework of the ghost and race recorder r=Learath2 a=Redix

This PR fixes a lot of issues with the ghost and race recorder, introduces a new ghost file format and implements some pretty useful features.

**A quick overview:**
 - When you cross the start line multiple times, both (ghost and recorder) will only restart if it is a non-solo server
 - If available, both will use the race timer to recognize the start instead of searching for the start line
 - Fastcap support for both
 - The recorder immediately starts when the Tee spawns, so the preparation steps (which are quite important for speedruns) will be included in the demo. If you do not cross the start-line within 20 seconds, it will stop the demo until you really start.
 - Better ghost menu (colors, reloading, deleting and saving ghosts)
 - The ghosts are more resistant against lags (old ones were sometimes completely useless due to small lags)
 - New ghosts files are significantly smaller
 - Cleanup, bugfixes..


**About the new ghost format (version 4/5):**
This format is used by Teerace for over a year now. The code for handling the binary files was moved to the engine. It includes an auto updater which creates a backup of all ghosts and converts them to the new format afterwards. The major differences from the format used by DDNet right now (version 2), are the ability to store multiple types of data, the usage of delta-encoding and a more portable header.

For whatever reason, the ghost stores values for every predicted tick, but without tick information, so lost snapshots can make them unusable. The new code uses the original values from the snapshots including ticks but it can also handle the old ones without. Since hardly any server uses the high bandwidth option this practically reduces the file size.

Like the demo recorder the ghost recorder directly stores the data to a file (every 50 snapshots) instead of writing the whole file at the end of the race. Indeed this can be changed with only a few lines if the old behavior is preferred.

The updater can handle version 2 (DDNet) and 3 (old teerace format, only slightly different from version 2) files. The updating already happens when the files are scanned for generating the list in the menu and not only when you activate them. The change from version 4 to 5 was only needed due to a bug in the implementation, the ghost loader can read both.

Some numbers about the file size: (map: hotrun, both about 30 seconds)

 - Old ghost: 30.4 kB (converted: 10.7 kB)
 - New ghost: 5.4 kB


**One thing about the race recorder:**
The old implementation compared the new file only with the first file it found for the particular map. The new one compares with all related demos and deletes them possibly, so that only the best demo is left. Since DDNet can also store the demos without name, this might also delete demos from other players, that you might have in your directory.
To prevent this I at least check whether the demo contains the player name if `cl_demo_name` is on. 
In my opinion the better solution would be to remove `cl_demo_name` and always use the player name.
2017-10-30 20:27:10 +00:00
Redix de1c0cf24d Fixed several issues with the ghost (thanks to Learath2) 2017-10-28 14:23:24 +02:00
Michał 58b0ae5fc7 Possible emoji rendering fix 2017-10-28 09:08:17 +02:00
Learath2 a6eb1b94f2 Add lock around m_Destroy and m_PastCB 2017-10-27 15:26:39 +02:00
Jupeyy 442a1767d4 reset lastindexbuffer at object deletion 2017-10-24 03:12:48 +02:00
Jupeyy 5c9fc3d19b remove unused variable 2017-10-23 18:31:44 +02:00
Jupeyy 37c5102928 only delete VBOs when the VAO, which uses the VBO, is deleted(AMD driver
bug under windows). And only allow true fullscreen under supported
display resolutions, to enable prevention of DPI scaled opengl viewport
2017-10-23 18:02:18 +02:00
def cb00a294b8 Enable gfx_opengl3 by default 2017-10-20 22:52:38 +02:00
Dennis Felsing 6c7f6e3a7e glew on macosx as well... 2017-10-20 11:49:00 +02:00
Dennis Felsing 5a75dc7f27 New glew try 2017-10-20 11:35:44 +02:00
Dennis Felsing 88c0778b21 Bundle glew instead 2017-10-20 11:12:27 +02:00
Dennis Felsing 07db95ed59 Mac build fix 2017-10-20 10:20:29 +02:00
Dennis Felsing d7eabb0ea9 Further macosx fixes 2017-10-20 09:31:42 +02:00
Dennis Felsing db46d18e71 No GLEW on OSX necessary (untested) 2017-10-20 09:08:49 +02:00
Dennis Felsing d6999bb726 Merge "Pull Request using OpenGL 3.3" 2017-10-18 12:49:27 +02:00
Edgar Luque 3408d4f016 MinGW putenv workaround. 2017-10-17 16:38:40 +02:00
Learath 30aebc9cf4 Destroy() implies Abort() 2017-10-17 15:42:17 +02:00
Learath 96acddb57f Fix the other use after free 2017-10-17 15:39:20 +02:00
Learath 7f8356e37e Fix a heap-use-after-free 2017-10-17 14:23:56 +02:00
Jupeyy cc54c4acdf also out the LOD to the fragment shader to make sure we use the same LOD
on every hardware
2017-10-14 23:27:14 +02:00
heinrich5991 16694a0d7b Use a random token for serverbrowse requests
This alleviates the risk for spoofed servers.
2017-10-14 21:58:23 +02:00
Jupeyy 5389dd9666 fix border amount for right and bottom border lines 2017-10-14 16:37:48 +02:00
heinrich5991 2fc018aac3 Add asynchronous file output, port dbg_msg()s to that system
Also add tests.
2017-10-10 04:11:14 +02:00
Learath 1855992014 Fix style 2017-10-09 20:51:16 +02:00
Learath f4b3bc63b3 Forgot classes need to be initialized with new
Also matched the function signatures to the ones in the interface
2017-10-09 20:04:23 +02:00
Learath 26efee9506 Forgot the virtuals 2017-10-09 19:22:44 +02:00
Jupeyy 26bd800d63 calculate the LOD on CPU side and restrict mipmap levels for huge
textures to remove bad looking mipmap generations at high zoom levels
2017-10-09 18:58:44 +02:00
Learath2 70ee5d9645 Properly free CFetchTask in case of abort 2017-10-09 18:47:02 +02:00
Learath2 9bce7e8630 Use a proper interface for CFetchTask 2017-10-09 18:47:02 +02:00
Jupeyy 43fa2fd1a7 use wrap mode for every individual texture 2017-10-09 15:59:16 +02:00
Learath 1b0ab87015 Get rid of unnecessary queue in CFetcher 2017-10-08 00:57:56 +02:00
def b368234dae Delete editor before graphics (fixes #881) 2017-09-30 06:27:05 +02:00
Redix e9a0271c29 Improved ghost and race recorder file handling 2017-09-28 19:13:20 +02:00
Redix a3a82b6571 Move filename clearing function to base lib 2017-09-28 16:02:01 +02:00
Redix ac234ad3ee Write the correct player name into ghosts that are saved from menu 2017-09-28 16:01:59 +02:00
Redix 5b3e9e4bbf Improved ghost file management 2017-09-28 16:01:58 +02:00
Redix 5cc0d16029 Reworked the race recorder 2017-09-28 16:01:57 +02:00
Redix c189678e44 Cleaned up the ghost component and made it use the ghost recorder and loader 2017-09-28 16:01:56 +02:00
Jupeyy 7aa547946b more warning fixes 2017-09-27 15:01:38 +02:00
Jupeyy 463944b143 fix code pattern mistakes and warnings 2017-09-27 14:52:06 +02:00
Jupeyy 9fd1290734 auto adjust font size for entity overlay 2017-09-27 12:19:39 +02:00
Jupeyy 91216fb90c reduce upload size by normalizing color values, fix slow upload for some
iGPUs and force old opengl context, if issueinit fails
2017-09-27 12:16:34 +02:00
Jupeyy a85f542d1d only use 4x2 matrix 2017-09-27 12:15:30 +02:00
def 553c97b52d Fix crash with broken ddnet-info.json 2017-09-20 22:25:55 +02:00
Redix 43f246f174 Made int packing functions safe 2017-09-17 02:36:50 +02:00
Dennis Felsing 43d0299a45 Merge branch 'master' into pr_ddnet_fix_msvs_warnings 2017-09-16 11:17:39 +02:00
Jupeyy 26607cfd47 at texture upload, check if we have enough space in the command buffer
too
2017-09-15 03:50:06 +02:00