Commit graph

237 commits

Author SHA1 Message Date
Leon Styhre 486942c792 The cache manager now differentiates between mipmapped and non-mipmapped images. 2022-11-05 20:41:17 +01:00
Leon Styhre bebb345936 Replaced the checkerboard pattern for the default blank texture with a truly blank texture. 2022-10-30 09:16:14 +01:00
Leon Styhre b17c78bc42 Increased the default VRAM limit from 256 to 512 MiB and increased the maximum limit from 1024 to 2048 MiB.
Also increased the default VRAM limit for the Raspberry Pi from 184 to 192 MiB.
2022-10-30 09:11:59 +01:00
Leon Styhre 3c82bb4dfb Changed the renderer pixel format from RGBA to BGRA.
Also implemented premultiplied alpha for all images, animations and videos and improved the carousel reflection falloff logic.
2022-10-28 00:08:41 +02:00
Leon Styhre e4f4f29198 Merged the master branch into new-svg-renderer. 2022-10-26 19:52:01 +02:00
Leon Styhre 2fd5580e13 Fixed a small font offset problem mostly seen at really low resolutions. 2022-10-26 18:42:42 +02:00
Leon Styhre a8d1c4a2e1 Fixed an issue in CarouselComponent where setting itemScale to less than 1.0 did not work as expected.
Also fixed a problem where carousel text entries did not get multiplied by itemScale.
2022-10-25 20:33:12 +02:00
Leon Styhre 4513b20339 Some minor font sizing improvements.
Also fixed a few implicit casts.
2022-10-25 01:20:31 +02:00
Leon Styhre 84f019680d Greatly improved text sizing and rendering. 2022-10-25 00:39:40 +02:00
Leon Styhre 16c4fb6d17 Fixed some alignment issues in CarouselComponent. 2022-10-14 18:14:15 +02:00
Leon Styhre 7e923cb9b6 Some refactoring of the OpenGL renderer and TextureDataManager. 2022-10-11 18:11:36 +02:00
Leon Styhre d74966a3c4 Fixed a heisenbug where letters would sometimes get rendered with ugly edge artifacts. 2022-10-11 18:07:56 +02:00
Leon Styhre 241a0119ef Fixed a crash in the Font::wrapText function. 2022-10-10 21:12:49 +02:00
Leon Styhre 610ac9adb3 Implemented dynamic texture allocation to the font handling. 2022-10-10 20:32:35 +02:00
Leon Styhre 0232635504 Refactoring/cleanup. 2022-10-09 19:13:54 +02:00
Leon Styhre 0757156caf Improved error handling for unloadable font files. 2022-10-09 18:01:30 +02:00
Leon Styhre fdcd4a4a9d (Windows) Fixed an MSVC compiler warning. 2022-10-08 11:22:46 +02:00
Leon Styhre d927135034 Fixed an issue where line breaks were included in single-line text entries. 2022-10-08 10:00:40 +02:00
Leon Styhre 508ea87963 Rewrite of the text wrapping code to work with languages which generally lack spaces, like Japanese.
Also implemented massive performance improvements to the text wrapping code.
2022-10-08 09:33:57 +02:00
Leon Styhre d2ca019a75 Avoided unnecessary SVG file parsing for images previously found to be invalid. 2022-10-06 20:20:48 +02:00
Leon Styhre bbe9666f69 Removed the use of a deprecated LunaSVG function that is no longer required. 2022-10-03 21:38:01 +02:00
Leon Styhre bf5cce31c6 Replaced the NanoSVG library with LunaSVG. 2022-10-03 18:43:30 +02:00
Leon Styhre f048d06b95 Fixed a text abbreviation issue. 2022-09-28 17:21:02 +02:00
Leon Styhre 15e30bc0ca Increased the minimum VRAM limit from 80 MiB to 128 MiB. 2022-09-27 17:43:27 +02:00
Leon Styhre 0736192417 Fixed a text abbreviation issue. 2022-09-24 16:45:18 +02:00
Leon Styhre 2742424ca2 Some general code cleanup. 2022-09-08 18:56:02 +02:00
Leon Styhre b9303e5494 Mipmapping is now taken into consideration when calculating the VRAM usage. 2022-09-07 21:17:01 +02:00
Leon Styhre 8361c4f15c Moved the Alignment enumerator from Font to GuiComponent. 2022-09-07 19:54:55 +02:00
Leon Styhre b4b709b589 Added a tileSize property to the image element so that the size of each individual image in tiled textures can be defined. 2022-09-06 21:33:50 +02:00
Leon Styhre b6dc0bd72c Removed the font texture linear magnification support as it caused various rendering artifacts. 2022-09-06 00:51:16 +02:00
Leon Styhre 9d46625739 Added support for texture mipmapping with trilinear filtering. 2022-09-05 23:36:49 +02:00
Leon Styhre 01d410867c Moved back the wide SVG images size compensation from TextureData to ImageComponent. 2022-09-05 23:00:47 +02:00
Leon Styhre b079421205 Changed it so that only fonts of a certain minimum size gets linear texture magnification applied. 2022-09-05 22:36:33 +02:00
Leon Styhre e8c74450a0 Enabled linear interpolation for all font rendering regardless of resolution. 2022-09-05 00:11:53 +02:00
Leon Styhre ce50c1121b Enabled linear interpolation for font texture magnification when running on display resolutions at or above approximately 1920x1080. 2022-09-02 21:30:16 +02:00
Leon Styhre 9b1fb95865 Enabled linear interpolation for font texture minifications. 2022-09-02 21:03:19 +02:00
Leon Styhre 039c27fa8e Added support for sizing SVG images arbitrarily (overriding the image aspect ratio by stretching and squashing). 2022-09-02 20:48:45 +02:00
Leon Styhre 7b279a7c73 Made SVG rasterizations slightly more accurate. 2022-08-31 21:17:13 +02:00
Leon Styhre 6126016289 Cleaned up some font-related code. 2022-08-30 19:31:57 +02:00
Leon Styhre 2c86e4f99e Removed the deprecated SVG force rasterization flag from the cache manager. 2022-08-28 20:21:58 +02:00
Leon Styhre 48a9571609 Refactored RatingComponent to improve rendering accuracy and performance. 2022-08-28 20:11:20 +02:00
Leon Styhre 5dae37f558 Added support for caching SVG images. 2022-08-23 22:24:24 +02:00
Leon Styhre 047d080346 Fixed a small text abbreviation issue. 2022-08-21 21:24:46 +02:00
Leon Styhre e2fb03dbf3 Fixed an issue where the tile property for the image element did not work correctly with SVG images. 2022-08-21 19:06:51 +02:00
Leon Styhre ce217c48a4 Added support for vertical abbreviations of multiline text entries. 2022-08-21 16:33:29 +02:00
Leon Styhre 67488467c3 (Linux) The data installation directory is now excluded for themes and resources when built as an AppImage. 2022-08-20 11:30:15 +02:00
Leon Styhre 225a602a74 If the same raster image is used with different interpolation methods then these are now cached separately. 2022-08-16 22:37:36 +02:00
Leon Styhre 967b98008b Fixed an issue where raster graphic images could get scaled incorrectly. 2022-08-16 21:04:39 +02:00
Leon Styhre 899ace3eb6 Added a manualUnloadAll function to TextureResource.
Also converted some variables to static inline and cleand up some code.
2022-08-14 21:31:02 +02:00
Leon Styhre fdf63a9ad0 Fixed an issue where the 'quit' custom event would not trigger on application shutdown. 2022-05-18 22:57:03 +02:00
Leon Styhre 53ad5a3152 Fixed an issue where the texture buffer sometimes couldn't fit Chinese characters. 2022-05-09 20:12:08 +02:00
Leon Styhre f990d91841 Reverted the previous commit. 2022-05-04 00:42:28 +02:00
Leon Styhre f86ab2ea89 Increased the font texture size slightly. 2022-05-03 23:35:47 +02:00
Leon Styhre 91460495be Added size restrictions to fonts and textures to avoid crashes caused by invalid theme configuration. 2022-04-10 11:53:44 +02:00
Leon Styhre c4cae406e9 Fixed a font loading crash caused by an insufficient font texture size.
Also added a preventive measure for similar crashes in the future and made some general cleanup of the font code.
2022-04-02 11:59:52 +02:00
Leon Styhre 06a037d8cf Shader flags are now sent as bit masks instead of via discreet values.
Also changed the shader flags to enums.
2022-03-14 22:30:24 +01:00
Leon Styhre f0c35d8509 Refactored the rendering code into proper classes. 2022-03-14 19:51:48 +01:00
Leon Styhre a7db474a64 Unified the OpenGL and OpenGL ES renderers and removed the fixed function pipeline.
Also made some other rendering optimizations and cleaned up some code.
2022-03-13 23:52:32 +01:00
Leon Styhre 32251e0264 Fixed multiple issues with the shader post-processing.
Also removed an unnecessary parameter for the createTexture() function.
2022-03-12 14:22:27 +01:00
Leon Styhre 755b2c9f50 Changed some render variables to more verbose names.
Also fixed an issue with fade transitions for legacy themes.
2022-03-11 23:51:41 +01:00
Leon Styhre 63af859618 Modernized the OpenGL renderer and replaced most fixed function pipeline code with shaders.
Also greatly improved the shader post processing performance and added component dimming support.
2022-03-11 23:17:04 +01:00
Leon Styhre ed540359c5 Updated GIFAnimComponent to a fully working state. 2022-03-05 20:56:47 +01:00
Leon Styhre 35970dd95d (Windows) Fixed a few MSVC compiler warnings. 2022-02-11 23:45:25 +01:00
Leon Styhre 4eb763d816 Replaced the ambiguous alignment properties with specific horizontal and vertical properties. 2022-02-11 00:19:08 +01:00
Leon Styhre a443f86235 Removed a huge amount of unnecessary Window* function arguments. 2022-01-19 18:01:54 +01:00
Leon Styhre 0c8efee8ad General refactoring and code cleanup. 2022-01-16 18:18:28 +01:00
Leon Styhre 8a6652552f Set the clang-format option SpaceBeforeCpp11BracedList to true. 2022-01-16 12:09:55 +01:00
Leon Styhre a233b96c2a Removed some unnecessary typedefs and replaced the remaining ones with the more modern 'using' keyword.
Also harmonized the names of some user defined types and made some other minor cleanup.
2022-01-11 21:57:00 +01:00
Leon Styhre b4e08ba92b Renamed Platform to utils/PlatformUtil 2022-01-10 18:56:04 +01:00
Leon Styhre 2d149c5161 Moved all Platform functions to the utility namespace. 2022-01-10 18:43:17 +01:00
Leon Styhre 0c552dd8fb Added a GLSL shader to convert the color model BGRA to RGBA.
Also added support for specifying a separate format as compared to internalFormat when creating textures, although the shader should be used primarily as this is not really supported by the OpenGL standard.
2022-01-07 18:54:52 +01:00
Leon Styhre 254b00a3d8 Large refactoring to improve thread safety and improve singleton pattern usage. 2022-01-04 21:21:26 +01:00
Leon Styhre fa993a0489 Fixed a texture corruption issue caused by too aggressive optimizations. 2021-12-27 21:24:34 +01:00
Leon Styhre ab92a4135a Fixed an issue where using fallback fonts at very low resolutions could lead to a crash. 2021-12-14 17:12:39 +01:00
Leon Styhre 0314b2d439 Fixed a performance regression caused by excessive mutex locks. 2021-11-18 17:20:59 +01:00
Leon Styhre af52d9b0ac Changed most increment and decrement operators from postfix to prefix for es-core. 2021-11-17 17:48:49 +01:00
Leon Styhre 9937476e18 Replaced some mutex locks with atomic variables.
Also removed an SDL audio issue workaround from AudioManager.
2021-11-16 17:49:05 +01:00
Leon Styhre 999b9a6c04 Improved thread safety in TextureData and TextureDataManager. 2021-11-15 23:33:16 +01:00
Leon Styhre 14e1b800fa Made two optimizations in TextureData. 2021-11-07 18:18:41 +01:00
Leon Styhre 8b5386df79 Fixed an issue where corrupt SVG graphics could crash the application. 2021-11-03 17:26:19 +01:00
Leon Styhre 2f09c21d3f Reversed a previous change that caused multiple texturing issues. 2021-10-30 17:05:04 +02:00
Leon Styhre ee80792e0f (Windows) Fixed two MSVC compiler warnings. 2021-10-29 20:10:43 +02:00
Leon Styhre 0dc6f1e17a Removed the deprecated SVG scaleDuringLoad functionality. 2021-10-29 19:43:07 +02:00
Leon Styhre 58345863b3 Changed an RGBA vector getter from copy to reference to reduce CPU usage. 2021-10-26 18:23:52 +02:00
Leon Styhre 3d3d951842 Renamed alwaysRasterize to forceRasterization.
Also removed an unnecessary function call in ImageComponent.
2021-10-26 18:22:41 +02:00
Leon Styhre 848e0a1a94 Fixed an SVG graphics corruption issue. 2021-10-26 18:13:31 +02:00
Leon Styhre 7ed0267f5b Made a large optimization to the SVG rasterization logic. 2021-10-25 18:39:58 +02:00
Leon Styhre dd94aeec96 Fixed two casting issues. 2021-10-23 15:53:31 +02:00
Leon Styhre 6cee6d2732 Fixed multiple image scaling and rasterization issues. 2021-10-23 15:45:44 +02:00
Leon Styhre 08888e00af Clarified the use of bundled include files. 2021-10-06 18:41:21 +02:00
Leon Styhre c78386e648 Fixed an issue where defining a really small font size would crash the application. 2021-09-30 19:49:18 +02:00
Leon Styhre 081fbc5665 Made an optimization for SVG graphics to avoid a lot of unnecessary re-rasterizations. 2021-09-27 20:59:33 +02:00
Leon Styhre 63767347f2 Fixed numerous compiler warnings reported by the -Wall and -Wpedantic flags. 2021-09-19 14:37:10 +02:00
Leon Styhre 0b6d987263 Fixed lots of compiler warnings reported by the -Wall and -Wpedantic flags. 2021-09-18 09:53:26 +02:00
Leon Styhre 5580de74b1 Bundled the bold font version of Fontfabric Akrobat. 2021-08-22 14:08:24 +02:00
Leon Styhre 6e882dd564 Added support for upscaling bitmap images using linear filtering. 2021-08-19 20:16:42 +02:00
Leon Styhre 12c853bc31 Moved the remaining math functions to a math utility namespace. 2021-08-17 22:11:16 +02:00
Leon Styhre 74e21e8c03 Replaced some internal math functions with equivalents from the GLM library. 2021-08-17 20:55:29 +02:00
Leon Styhre 7b5d673050 Replaced the internal Vector2i data type and functions with the GLM library equivalent.
Also applied some code formatting changes for braced lists using clang-format.
2021-08-17 18:41:45 +02:00
Leon Styhre 1fb0ccef0d Replaced the internal Vector2f data type and functions with the GLM library equivalent. 2021-08-16 18:25:01 +02:00