mirror of
https://github.com/IllusionMan1212/cudoku.git
synced 2026-10-24 02:12:25 +00:00
45 lines
2.3 KiB
Plaintext
45 lines
2.3 KiB
Plaintext
- maybe force the window to be a specific resolution
|
|
- border decorations for shapes
|
|
- remove the hardcoded 1920 and 1080 values when applying relative pixel constraints
|
|
and replace them with the screen's currently active resolution
|
|
|
|
text rendering improvements
|
|
- [ ] unicode support (allows for non-ascii characters)
|
|
- unicode support removed for the foreseeable future
|
|
- [x] atlas texture for text glyphs (this means we only load in one texture for all text)
|
|
- [x] better estimation of atlas width and height (currently the generated atlas texture
|
|
has a lot of empty space (over 50% of the texture's height))
|
|
- ended up just looping over the ascii glyphs and finding the max width and height
|
|
|
|
- SDF generation allowing for better text scaling (slower but visually better)
|
|
- SDF is too slow if we want to support unicode. it's acceptably fast for ascii only though.
|
|
- An alternative is to use MSDF at a much lower pixel height (e.g 16) which results in
|
|
better scaling than SDF (almost perfect) and is fast enough to include unicode.
|
|
- Another alternative is using a pre-baked SDF texture atlas. This is the fastest
|
|
but it's also the least flexible because we can't load arbitrary fonts
|
|
- Maybe also rendering text as vector using bezier curves. Sounds like a lot of work though.
|
|
|
|
Will probably end up using MSDF (if I can get it to work with C lol)
|
|
|
|
- [x] instanced rendering for text (this means we only have to do one draw call for all text)
|
|
running into problems. we got the positions to instance correctly but the texture coordinates
|
|
are more difficult to work with because we can't just send a texcoord per vertex per instance
|
|
- Ended up passing hardcoded texcoords of all glyphs to the shader using a uniform array which allows us to render infinite
|
|
instances of text in one draw call without exceeding any buffer limits. Of course this does mean that if we were to support
|
|
unicode we'd have to make the uniform array bigger and its size dynamic. So unicode is dropped for now
|
|
|
|
|
|
text tests / iGPU / Non-instaned rendering
|
|
- 10 texts / 72 font size
|
|
0.8-0.9ms per frame (1200-1300fps)
|
|
|
|
- 100 texts / 48 font size
|
|
1.2-1.3ms per frame (770-830fps)
|
|
|
|
- 1000 texts / 28 font size
|
|
9-9.5ms per frame (105-110fps)
|
|
|
|
- 10000 texts / 9 font size
|
|
80-85ms per frame (12-13fps)
|
|
|