S2ENGINE HD 2022: TEXTURE STREAMING

S2ENGINE HD

S2 ENGINE HD is a complete general-purpose software kit for developing and running videogames, specifically dedicated to PC game hobbyists and enthusiasts. Its simplicity lets them turn on their computers and create amazing visuals in minutes just as if they were professionals.

Hi guys, In the last months we have worked on a completely new feature: [b]Texture streaming[/b]. [h2]WHAT IS TEXTURE STREAMING?[/h2] Texture streaming is a feature used in most of [b]AAA games[/b] today. Today games have many high resolution textures that comsume a lot of video memory. Texture streaming is implemented for keeping video memory usage under certain values while keeping texture quality high. [h2]HOW IT WORKS?[/h2] Textures are loaded into or removed from video memory on-fly, during the game, basing on what is currently visible. Texture loading is asyncrhonous, this means that texture data is loaded into system memory on a separate thread, while the rest of the game runs. [h2]TEXTURE STREAMING IN S2ENGINE[/h2] In s2Engine Texture streaming is exactly as we have described before: [list] [*] Async loading of data [*] Currently visible textures pool managing [*] Mipmap chains selection [*] Amortized texture uploading on video memory [/list] Thanks to these features texture streaming is now possible on s2engine and results are incredibly good. [h2]RESULTS[/h2] The best practical application of this new feature was certainly [url=https://store.steampowered.com/app/1168690/HELLSEED/]HELLSEED[/url]. The game is rich of High quality / High resolution textures, in addition there is one single big level with different locations all existing at the same time in memory. We haven't finished to add contents in the game but we have already reached about 4GB of video memory!! We had 2 solutions: [list] [*] 1 - Separate the game in more than one level, but we didn't want this (breaking atmosphere, loading times, etc...) [*] 2 - Texture streaming :D [/list] The following is a screenshot showing the same scene without and with Texture streaming. We have used MSI Afterburner for scanning video memory usage: [img]{STEAM_CLAN_IMAGE}/23073876/1bdf1c9c250fa173eed14592379ff81dbbb93bca.png[/img] De facto, Texture streaming will make it possible to develop [url=https://store.steampowered.com/app/1168690/HELLSEED/]HELLSEED[/url]! :D As first iteration of the feature, we have added some performance counters like memory used and streaming pool computation timing in addition to the rendering profiling information: [img]{STEAM_CLAN_IMAGE}/23073876/bc0340a89fd1830ee56eb966e0bad352c42e43ce.png[/img] In the engine configuration you can decide what percentage of available video memory must be reserved to the texture pool (target memory) and, when profiling, you can see how much memory, from the target memory pool, is used. There are some other parameters added, like: [list] [*] Per object streaming priority (to enable/disable streaming on a per object basis) [*] Texture upload amortization (for avoiding frame stalling due to poor video card memory bandwidth) [*] Number of textures to upload per frame (only if amortize is not set, to speeding up texture visualization at the cost of bigger memory bandwidth of video card used) [/list] [h2]MORE...[/h2] If you are interested in knowing more about the engine development or if you want to support us and believe in our work and in our engine you can join the [b]new Patreon Page[/b] dedicated to S2ENGINE: https://www.patreon.com/s2engine Now it is time to return back to rendering optimizations :D Stay tuned!