Clownacy
08b14fa03f
Don't use upscaled framebufer if it's not needed
...
This matches the SDLTexture backend.
Again, it would be really nice if this code weren't duplicated.
2020-09-15 22:16:05 +01:00
Clownacy
97d5373fa5
Add smooth upscaling to the OpenGL backends
...
Bleh, this is kind of messy and ugly. I also don't like how much
duplicate code there is from the SDLTexture backend.
2020-09-15 22:05:58 +01:00
Clownacy
fd82adf099
Remove invalid comment
2020-09-15 21:00:27 +01:00
Clownacy
13ce62ae05
Minor cleanup
2020-09-15 20:51:04 +01:00
Clownacy
c6af61de5e
Chars aren't guaranteed to overflow at 256
2020-09-15 20:49:24 +01:00
Clownacy
52c2a5ceee
Make software renderer a bit more foolproof
...
This also eliminates some comparisons with mismatching signedness
2020-09-15 20:48:18 +01:00
Clownacy
11bbad7372
Cleanup
...
Now RenderBackend_DrawGlyph doesn't pass an unnecessary parameter
2020-09-15 19:40:10 +01:00
Clownacy
392d5898a3
Make GetVertexBufferSlot consistent
...
It would be nice keep this batching stuff in a common file
somewhere...
2020-09-15 16:28:35 +01:00
Clownacy
e2b64df84a
Oops, also offload colour-fill vertices as well
2020-09-15 16:18:48 +01:00
Clownacy
0f5af36951
Offload vertex transformation to the GPU
2020-09-15 16:08:56 +01:00
Clownacy
07e4e3b971
Offload texture coord transformation to GPU
...
I imagine this isn't too helpful when the GPU is the bottleneck, like
on my Raspberry Pi.
2020-09-15 14:21:58 +01:00
Clownacy
f0e1119a91
Move OpenGL shader stuff to a struct
...
The uniform naming scheme was already emulating this
2020-09-15 14:13:45 +01:00
Clownacy
6b96ada4a8
Use proper OpenGL buffer access specifier
...
The previous value was inherited from the old pre-batching code,
where it actually made sense.
2020-09-15 00:48:14 +01:00
Clownacy
142db71cb9
Move sanity checks to Draw.cpp
...
There, no need to keep track of a bunch of duplicate sanity checks
2020-09-15 00:07:10 +01:00
Clownacy
611afe7417
Remove those annoying renderer sanity checks
...
Duplicate junk. If they're that important, they can go in the game,
not the backends.
2020-09-14 23:55:39 +01:00
Clownacy
27b3980a56
Flush Wii U vertex buffers when stuff happens
...
You know, this 50-character commit name limit is really annoying.
2020-09-14 23:47:52 +01:00
Clownacy
e96ee6ed89
Don't leave dangling OpenGL texture IDs
2020-09-14 23:43:18 +01:00
Clownacy
9ea6caad72
Merge branch 'accurate' into portable
2020-09-14 23:31:01 +01:00
Clownacy
eadc04e46e
Bump StartDirectDraw fix to FIX_MAJOR_BUGS
...
I was debugging GLFW earlier, and this fix wasn't being enabled.
FIX_BUGS should be for aesthetic bugs that only affect gameplay, not
ones that affect fundamental stability.
2020-09-14 23:30:11 +01:00
Clownacy
2bcab6adee
Change software renderer sub-backend API
...
No more locking
2020-09-14 23:26:55 +01:00
Clownacy
30ea89d3fa
Remove some now-unneeded struct members
2020-09-14 23:17:21 +01:00
Clownacy
e18ec87f99
Update Wii U renderer
2020-09-14 23:16:45 +01:00
Clownacy
98f66444d7
Updated OpenGL renderers
2020-09-14 23:12:18 +01:00
Clownacy
f55c965a70
Update SDLTexture backend
2020-09-14 23:09:55 +01:00
Clownacy
37a1518056
Update SDLSurface renderer
2020-09-14 23:06:42 +01:00
Clownacy
6b18ec91be
Replace LockSurface with UploadSurface
...
The old locking/unlocking API was plain inefficient. Soon I'll move
upscaling to the backend anyway, to minimise the overhead where
possible.
Currently only the software renderer has been updated.
2020-09-14 23:03:23 +01:00
Clownacy
ba797d0fea
Merge branch 'accurate' into portable
2020-09-14 20:04:41 +01:00
Clownacy
55b473a490
Document Flash.cpp some more
2020-09-14 17:01:00 +01:00
Clownacy
95f370a720
Integer-only ratio logic
2020-09-14 16:31:54 +01:00
Clownacy
746ebb822c
Bump glyph cache limit to 256
...
This should fit an entire extended ASCII set, and also help Japanese
support a little by having a larger pool of cached glyphs.
2020-09-14 15:29:04 +01:00
Clownacy
2446ec02c8
More PHILOSOPHY.md tidying
2020-09-14 13:29:27 +01:00
Clownacy
f9fa8ccbbf
Rework PHILOSOPHY.md some more
2020-09-14 13:21:47 +01:00
Clownacy
d59b3fab89
Update PHILOSOPHY.md
...
This branch has shifted focus slightly, from just porting Cave Story
as-is, to porting it while also trying to recreate the original 2004
experience.
2020-09-14 12:49:46 +01:00
Clownacy
afed830366
Only mark render-target textures as lost
...
SDL2 only loses target textures.
2020-09-14 12:49:34 +01:00
Clownacy
05b8b607fa
Correct outdated comment
2020-09-14 12:26:56 +01:00
Clownacy
63e4ac9aa9
Remove RenderBackend_FlushGlyphs
...
No longer used for anything
2020-09-14 12:25:39 +01:00
Clownacy
daa55b1a3c
Allow font atlases to be non-square
...
Saves a little memory in some cases. It's the backend's job to decide
if this is a problem or not, and pad it if it has to.
2020-09-14 12:08:27 +01:00
Clownacy
17da39fa14
Rename FontObject to Font
...
Explicitly calling it an object just seems unnecessarily verbose,
2020-09-14 11:54:37 +01:00
Clownacy
1625d3961d
Correct some awkward wording
2020-09-14 11:50:48 +01:00
Clownacy
0cdd6ad4df
Rename a rect
2020-09-14 10:44:54 +01:00
Clownacy
2d5f6a547d
Disable blending for the framebuffer
2020-09-14 10:42:31 +01:00
Clownacy
5e28463509
Remember to free the upscaled framebuffer
2020-09-14 10:39:16 +01:00
Clownacy
56b96ed432
Only use an upscaled framebuffer if we have to
2020-09-14 10:36:35 +01:00
Clownacy
53e96486ce
Use proper texture access type
2020-09-13 19:50:47 +01:00
Clownacy
2f748810bf
Disable blending for the upscaled framebuffer
...
I'd set it to RGB24 instead of RGBA32, but I don't know if there'd be
a performance penalty.
2020-09-13 19:41:19 +01:00
Clownacy
4517c9be9e
Fix incorrect upscaled framebuffer size
2020-09-13 19:37:01 +01:00
Clownacy
c12149b96e
Fix a weird old typo
2020-09-13 19:35:31 +01:00
Clownacy
7bc028f5d8
Enable window-resizing in the SDLTexture renderer
...
Previously, the window was a fixed size just like the original.
This change highlights a weird issue in CSE2: this doesn't exactly
match the behaviour of the original game, so why did I change it?
Simple: monitors had much lower pixel-densities back in the early
2000s, meaning that 320x240 and 640x480 weren't as laughably small as
they are today.
I like to think of CSE2's portable branch as Cave Story's equivalent
to Chocolate Doom: the point isn't to replicate the game's behaviour
100% - that's the accurate branch's job - no, the point of the
portable branch is to replicate the *experience* of the game, as it
was back in 2004. This means no commically-small windows.
This is the same reason font anti-aliasing is disabled, even in
versions of Windows later than XP.
Sidenote: the OpenGL3/OpenGLES2 renderers already had this feature,
but they used linear-filtering, causing the screen to be extremely
blurry in 320x240 mode. This renderer uses a better method, which
does apply slight blurring at the edges of pixels at resolutions
that aren't an exact multiple of 320x240/640x480, but otherwise it
resembles nearest-neighbour. This is way nicer to look at, and fits
the game's aesthetic. This feature will be ported to the other
renderers soon.
2020-09-13 18:17:58 +01:00
Clownacy
aa3cd55b43
Fix SDLTexture surface freeing
2020-09-13 12:30:56 +01:00
Clownacy
bf93334b94
Fix out-of-bounds font atlas accesses
2020-09-13 12:30:01 +01:00