[IonutCava]- Singleton elimination update Part I.I: Correct Part I— Small corrections to previous commit: Fix all asserts, memory leaks and errors that appeared during the following test: Start app -> Load War Scene -> Return to Default Scene -> Quit

[IonutCava]- More performance analysis guided optimizations.- Some refactoring to allow later removal of Singletons status for: GFXDevice, SFXDevice, PXDevice, GUI and Input.— Pass a PlatformContext around objects to access these classes.

[IonutCava]- Fix a few crashes:— Missing language file during startup causes crash instead of log + exit— Closing application causes crash due to RenderTarget cleanup of the GPU Object arena-— Still not fully fixed: leaking graphics resources on shutdown- Make mat and vec constructors and assignment operators “noexcept” (helps with usage in containers)- Add a “NonMovable” class, similar to the “NonCopyable” class to help with readability in certain situations

[IonutCava]- Removed a lot of high level GFX state and merged it back on a lower level:— depth mask is now a framebuffer specific toggle controlled by the RenderPolicy— rasterization is now a per-buffer draw switch toggled by a rendering flag in GenericDrawCommand- Replaced old style GL texture binding code with DSA style glBindTextures and glBindSamplers even for single textures— completely removed the concept of a active texture unit in the GL code- Fixed some draw policy settings that were clearing the depth buffer in the PostFX passes- More build type flag replacement of macros- Render pass system bug fixing- Add option to skip occlusion culling for certain nodes

[IonutCava]- Added initial environment mapping code:— Allow adding, per scene, of multiple environment probes that generate cube map reflections— Support 2 types of probes: infinite (such as sky only probes) and local. Local probes use an AABB that will later be used for parallax correction— Probes are held in a scene specific pool, can be updated at different rates and their results can be passed on to materials (if materials don’t need specific reflection systems such as for water or mirrors)- ToDo:— Blend between probes (currently, only the closes one is selected)— Reduce VRAM usage— Set as fallback for screen space reflections