Mirage Engine Latest Updates

Since my last post about “Mirage”, I had the chance to work on different branches in adding several new features to the engine. And while it is a complicated long term project & a side project as well, the progress becomes slow, but still happy with the outcomes regardless the amount.

Screenshop
Mirage now have a new tool called Screensho[p], which by that weird name you can easily guess it is the screenshot-ing tool in within the engine. Now no need to capture screens with a third party helper app or any external tools.
There is now a full screenshot-ting support that is copying right away from the buffers to a new imageview.
In the past years I had the chance to work with several commercial and in-house engines, while those engines either not allowing you to do screenshots without adding your own solutions (Unity as commercial example requires you writing editor extension for that goal), or giving you the opportunity to capture screenshots with many limitations (Unreal for example as an existing limited tool) such as file format, UI capturing and quality.

While writing the Mirage in-engine screenshot tool, I decided to start adding more options, like file format and UI which used to annoy me a lot with in in-house engines more than commercial engines. While in something like Unreal UI will not be captured, in Unity it will be captured, and will look ugly most of the time!

Check out the UI in this Unity based game I made earlier, it is captured using a Unity editor extension I made

Next step will be adding more functions to scale up the image. But yet, satisfied with the current options and generated captures….May be not satisfied with the JPG captures ­čśÇ but what can we do JPG is JPG after all!

Another interesting part (for me at least) regarding this feature, was checking for & creating a user folder. It is something i didn’t think about it yet. The engine will need to store many values and/or files & user settings. So I decided to start handling this now while not much data need to be stored yet. And for the first time in the past ~8 years to handle such a thing in pure cpp. Have always been doing system/files related stuff either in C#, .Net or Py as the most common interfaces with any engine/API I used to use. And coming after those many years of dealing with Windows[C# & Py] to windows[C++]; I only must say, dealing with windows system in c++ got a lot worst over the years!
And btw, the engine footage in this article, in addition to the post featured image, are captured with Mirage’s Screenshop tool.

HDR & Cubemaps
While working on loading textures to test out models loading & the PBR shaders, I started in a new branch to load textures, as yet all the models were using color based textures. Yes Mirage yet can load textures to sample on meshes, but limited usage, so it was the time to expand that feature and make it BIG. And glad to say that Mirage by now can not only load all textures formats (JPG, PNG, PSD, TGA, TTF,…etc), but also all types.
For example apart from the common file format for images, Mirage can read HDR & KTX at the same time as high ranged images, and for each can load as HDR, LDR or Cubemap. All those options can be found in other engines of course, but not all of them at once!

A capture showing couple of PNG, JPG loaded along side to an HDR & RTX. Youll notice that the seleced image format is R8G8B8A8 while being HDR image as you can see, this is because for that example I done conversion from HDR to LDR

While I’ve to stop now, there are many other features been added, such as MSAA, VSync, Editable Wireframes, CollectionAssets, TurnTable Matrix, Editor options…. and much more, will sign off for now, and will be posting again about other things when I get the time. If you’ve any questions, feel free to reach out!

-m