Commit graph

265 commits

Author SHA1 Message Date
Clownacy
a37e1d31f2 Remove extra newline 2020-09-11 13:06:52 +01:00
Clownacy
69f3fbcd5a Change a dumb parameter 2020-09-10 17:56:22 +01:00
Clownacy
0fa538732d Use PrintError instead of ShowMessageBox 2020-09-10 17:48:21 +01:00
Clownacy
988f1128dd Convert a bunch of ints to size_t
ints are dumb - only use them when you have to
2020-09-10 17:36:21 +01:00
Clownacy
8ad56ced43 Remove superfluous brackets 2020-09-10 16:08:53 +01:00
Clownacy
d80ef38af5 Lock SDL2 software renderer surface properly 2020-09-10 16:02:13 +01:00
Clownacy
f42a0530b0 Handle the framebuffer failing to lock
Also needed by SDL2
2020-09-10 16:02:02 +01:00
Clownacy
e90b903692 Change some variables to size_t
Really need to change the whole backend API to use size_t
2020-09-10 15:50:06 +01:00
Clownacy
b6c9467151 Switch software renderer to lockable framebuffer
SDL2 surfaces may require locking
2020-09-10 15:47:27 +01:00
Clownacy
7c4a2b5caa Lock SDL_Surfaces 2020-09-08 18:53:06 +01:00
Clownacy
07f70200d0 Renderer cleanup 2020-09-08 12:48:25 +01:00
Clownacy
b37e088465 Remove an empty line 2020-09-08 02:48:06 +01:00
Clownacy
f079a14b58 Update the SDLTexture renderer 2020-09-08 02:40:27 +01:00
Clownacy
0b83da1fd9 Make the Wii U batch its font rendering
Yaaaaaaaay
2020-09-08 02:12:37 +01:00
Clownacy
23156d38de Optimise OpenGL renderer a little 2020-09-08 01:55:57 +01:00
Clownacy
b080954a71 Wii U cleanup 2020-09-08 01:50:49 +01:00
Clownacy
bcf5513495 Updated Wii U renderer
Turns out it doesn't even batch the font stuff. I'll need to add that
later.
2020-09-08 01:17:07 +01:00
Clownacy
1d9446d425 Update SDLSurface renderer for new font batcher 2020-09-07 23:44:51 +01:00
Clownacy
096fa3b578 New custom font batcher
Previously, the font batching system was very shoddy: basically,
glyph bitmaps would be cached to system memory, and uploaded
on-demand to the GPU.

The OpenGL3, OpenGLES2, and SDLTexture backends relied on
`cute_spritebatch.h` to handle batching. While nice, this library is
overkill: it's intended for managing a whole game, not just a couple
of glyphs. It also depends on C++11, which is something I'd rather be
without.

Being so complex, it appears that internally it spams the backend
when merging atlases together. According to bug reports, this causes
the game to skip a lot of frames.

Instead, I've ditched the system-memory-side caching, and made the
game maintain its own atlas. Unlike `cute_spritebatch.h`, this one
doesn't purge glyphs after they've gone unused for 30(?) seconds -
instead, glyphs are only purged when room in the atlas runs out, at
which point the oldest glyph is replaced. This method doesn't involve
creating or destroying atlases at runtime, avoiding the overhead of
whatever OpenGL/DirectX do internally when that happens.

Currently only the OpenGL3, OpenGLES2, and Software renderers have
been updated with this - the others will fail to build.

I know immediate-mode renderers won't benefit from this, but it
replaces the leaky old caching system, so it's still an improvement.
2020-09-07 23:11:01 +01:00
Clownacy
1582af91cf Replace more float logic with integer-only
I hate floats >:(
2020-07-09 01:09:19 +01:00
Clownacy
6e486d9226 Er, actually remove those dead includes 2020-07-08 20:00:49 +01:00
Clownacy
ab82f014ae Avoid some float logic
Also shuts up some VS2019 warnings
2020-07-08 19:33:53 +01:00
Clownacy
565c79a4ce Fix GLFW3 software renderer in VS2019
GLFW will include these headers for us properly
2020-07-08 19:33:49 +01:00
Gabriel Ravier
81edd4db52 src: Restored SDL.h includes to conform to project style of including SDL2
Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
2020-07-02 14:59:55 +02:00
Gabriel Ravier
187847fbcc src: Fixed not including headers that are included for detection of conflicting definitions
Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
2020-07-02 14:43:47 +02:00
Gabriel Ravier
32c8795ead src: Cleaned up includes to only (and always) include what we use
Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
2020-07-01 18:26:22 +02:00
Clownacy
a5c09b67f7 Wii U renderer cleanup 2020-06-29 22:13:03 +01:00
Clownacy
f6fe0537ed Add vertex-batching to Wii U port
Should remove the last bit of lag that port has (like the Labyrinth
fight where you team-up with Curly)
2020-06-29 21:37:05 +01:00
Clownacy
9925c16b29 Minor cleanup 2020-06-29 19:19:50 +01:00
Clownacy
93535c5501 Sync OpenGL3 renderer with Wii U renderer 2020-06-29 18:36:38 +01:00
Clownacy
1523f1d3a6 Unified the Wii U vertex buffers 2020-06-29 16:40:32 +01:00
Clownacy
c7bd79e13f Comment style tweaks 2020-06-29 15:25:01 +01:00
Clownacy
29f7c19a02 Fixed Null backend 2020-05-06 23:15:02 +01:00
Clownacy
5596c33b38 Fix stuff
Looks like the Null backend's been broken for a while though
2020-05-06 23:10:40 +01:00
Clownacy
e93ee47728 More backend rearranging
The Window stuff isn't meant for the user, so hide it a bit more
2020-05-06 23:02:08 +01:00
Clownacy
dacd34072a Fix everything after the last commit 2020-05-06 22:52:11 +01:00
Clownacy
616b9cda9e Rearrange shader files
The old way just kind of mashed two approaches together.
2020-05-06 22:40:10 +01:00
Clownacy
c5691d7570 Fix Wii U port when TV is set to 1080p
WUT's bugged. See here:
https://github.com/devkitPro/wut/issues/119

It apparently got this bug from the Decaf emulator. Maybe I should
tell those guys too.
2020-04-25 00:22:24 +01:00
Clownacy
a8d0595bcd Update other backends to current API
The only other backend besides the Wii U one to use `render_target`
is the SDLTexture one.
2020-04-23 14:38:45 +01:00
Clownacy
b841f22c6d Remember to free the glyph shader 2020-04-23 14:35:41 +01:00
Clownacy
b8dd512dc4 Free surface upon failure 2020-04-23 14:34:58 +01:00
Clownacy
d7c138f818 More error-handling 2020-04-23 14:33:59 +01:00
Clownacy
1f9247e587 Cleanup and extra error-handling 2020-04-23 14:31:19 +01:00
Clownacy
ee1d777ebb ...Actually do what the last commit said 2020-04-23 13:41:24 +01:00
Clownacy
a2cdd9ac18 Allow surfaces to be marked as not-render-targets
The Wii U has a very limited pool of memory for render targets
(32MB), so we should only use it if we have to.

This 'fixes' a bug in the enhanced branch, where if you use 2x
sprites at 854x480, the third line of the text box will be corrupted
(text will appear on the second line instead, and be black instead of
white).

The other renderers haven't been updated for the API change yet.
2020-04-23 13:23:10 +01:00
Clownacy
ebb96ad239 Cleanup 2020-04-22 01:50:31 +01:00
Clownacy
4752423ff3 Use pitch 2020-04-22 01:46:48 +01:00
Clownacy
0421a7ca54 Wii U: Glyphs don't use colour-buffers 2020-04-22 01:08:31 +01:00
Clownacy
abdd7fc771 Add missing case for Wii U screen size
My Wii U always uses this value
2020-04-21 23:53:37 +01:00
Clownacy
17fb47bce8 Correct typo 2020-04-21 22:27:13 +01:00