2023-11-25 01:39:49 +02:00
|
|
|
- "premade" (but also customizable) ui elements (buttons, text boxes, etc) with instanced rendering
|
|
|
|
|
- maybe force the window to be a specific resolution (for cudoku only? or all games?)
|
|
|
|
|
- border decorations for shapes (maybe. or maybe only for ui elements)
|
2023-11-23 04:05:15 +02:00
|
|
|
- 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
|
2023-11-24 23:21:08 +02:00
|
|
|
- [ ] unicode support (allows for non-ascii characters)
|
|
|
|
|
- unicode support removed for the foreseeable future
|
2023-11-23 04:05:15 +02:00
|
|
|
- [x] atlas texture for text glyphs (this means we only load in one texture for all text)
|
2023-11-24 23:21:08 +02:00
|
|
|
- [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
|
2023-11-23 04:05:15 +02:00
|
|
|
|
|
|
|
|
- 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)
|
|
|
|
|
|
2023-11-24 23:21:08 +02:00
|
|
|
- [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
|
|
|
|
|
|