Changelog#

Generated on 07/28/2024

2024
TRAP™ Engine 0.10.93 - 07/21/2024|24w29b1
  • TRAP_ASSERT Fixed assertion failures didnt trigger debug break

  • VulkanRenderer Depth/Stencil RenderTarget now uses the same MSAA sample count as color RenderTargets

TRAP™ Engine 0.10.92 - 07/19/2024|24w29a2
  • VulkanRenderer Fixed missing instance extension error in headless mode

TRAP™ Engine 0.10.91 - 07/15/2024|24w29a1
  • Renderer Refactored various functions

TRAP™ Engine 0.10.90 - 07/14/2024|24w28b2
  • Texture Refactored various functions

  • TextureManager Refactored various functions

  • SpriteManager Refactored various functions

TRAP™ Engine 0.10.89 - 07/13/2024|24w28b1
  • Reworked handling of Shader loading failures

  • ShaderManager Changed order of shaderType parameters

TRAP™ Engine 0.10.88 - 07/11/2024|24w28a2
  • Shader Refactored various functions

TRAP™ Engine 0.10.87 - 07/09/2024|24w28a1
  • RendererAPI Refactored various functions

  • ResourceLoader Refactored various functions

TRAP™ Engine 0.10.86 - 07/07/2024|24w27a3
  • ShaderReflection Refactored various functions

  • VertexBuffer/IndexBuffer/UniformBuffer/StorageBuffer Refactored various functions

  • Camera/EditorCamera/OrthographicCamera Refactored various functions

  • PipelineDescHash Changed std::holds_alternative and std::get calls to std::get_if

TRAP™ Engine 0.10.85 - 07/03/2024|24w27a2
  • VulkanCommandBuffer use store color action when not otherwise specified (fixes regression on NVIDIA GPUs)

TRAP™ Engine 0.10.84 - 07/02/2024|24w27a1
  • VulkanShaderReflection Refactored various functions

  • Changed fmt submodule to tag 11.0.0

  • MSVC enabled /utf-8 compiler option

  • MSVC disabled warnings from /utf-8 compiler option for third party dependencies

TRAP™ Engine 0.10.83 - 06/30/2024|24w26a1
  • VulkanRenderer Refactored various functions

TRAP™ Engine 0.10.82 - 06/17/2024|24w25a1
  • Vulkan Reworked querying of instance and device extensions

TRAP™ Engine 0.10.81 - 06/10/2024|24w24a1
  • Log Made TP_* functions constexpr compatible

  • VulkanRenderer Removed unimplemented shader data types

TRAP™ Engine 0.10.80 - 06/09/2024|24w23b3
  • Utils Moved global static and private static members to anonymous namespace

  • Log Removed unused members

  • SocketImplLinux/SocketImplWinAPI Changed class to namespace and more constexpr

  • Input Moved global static and private static members to anonymous namespace

  • Texture Moved global static and private static members to anonymous namespace

  • Shader Moved global static and private static members to anonymous namespace

  • VulkanCommon Refactored various functions

TRAP™ Engine 0.10.79 - 06/08/2024|24w23b2
  • Moved more global static and private static members to anonymous namespaces

  • Application Moved global static and private static members to anonymous namespace

TRAP™ Engine 0.10.78 - 06/07/2024|24w23b1
  • Moved global static and private static members to anonymous namespaces

TRAP™ Engine 0.10.77 - 06/04/2024|24w23a1
  • Expected Fixed a compiler errors

  • VulkanCommon Added documentation and requires clause for LinkVulkanStruct()

TRAP™ Engine 0.10.76 - 06/02/2024|24w22a2
  • Made TRAP_ASSERT constexpr compatible (turns into a noop)

TRAP™ Engine 0.10.75 - 06/01/2024|24w22a1
  • VulkanTexture Refactored various functions

  • Updated VulkanLoader

TRAP™ Engine 0.10.74 - 05/26/2024|24w21b2
  • VulkanRootSignature Fixed wrong error on valid root constant

TRAP™ Engine 0.10.73 - 05/25/2024|24w21b1
  • SwapChain Reworked AcquireNextImage()

  • Updated Premake-Ninja submodule

TRAP™ Engine 0.10.72 - 05/22/2024|24w21a3
  • Added documentation for TRAP::Optional

TRAP™ Engine 0.10.71 - 05/21/2024|24w21a2
  • Updated ImGuiWindowing & ImGuiVulkanBackend

  • Fixed code coverage generation errors

TRAP™ Engine 0.10.70 - 05/20/2024|24w21a1
  • Reworked TRAP::Optional class

TRAP™ Engine 0.10.69 - 05/13/2024|24w20a1
  • Updated ImGuiVulkanBackend

TRAP™ Engine 0.10.68 - 05/12/2024|24w19b2
  • Fixed a bug which resulted in Vulkan errors when resizing on Linux X11

  • Made some Vulkan classes final

  • VulkanRenderer Moved SubmitMutex to VulkanQueue as static member

  • VulkanPhysicalDevice Added GetPhysicalDeviceSurfaceSupport() function

  • VulkanSwapChain Refactored various functions

TRAP™ Engine 0.10.67 - 05/10/2024|24w19b1
  • VulkanSurface Refactored various functions

TRAP™ Engine 0.10.66 - 05/09/2024|24w19a3
  • VulkanSwapChain Fixed crash when resizing on Linux X11/Xwayland

TRAP™ Engine 0.10.65 - 05/06/2024|24w19a2
  • ImGuiVulkanBackend Fixed fence synchronization errors

  • Updated ImGuiVulkanBackend

TRAP™ Engine 0.10.64 - 05/06/2024|24w19a1
  • VulkanShader Refactored various functions

TRAP™ Engine 0.10.63 - 04/21/2024|24w16a1
  • UnitTests Added tests for ContentionFreeSharedMutex

TRAP™ Engine 0.10.62 - 04/14/2024|24w15a1
  • Utils Added IsFutureType trait

  • Utils Added WaitForAll() function which waits for multiple futures

  • UnitTests Added tests for IsFutureType and WaitForAll()

TRAP™ Engine 0.10.61 - 04/01/2024|24w14a1
  • HotReloading Fixed shader changes not being visible after reload

TRAP™ Engine 0.10.60 - 03/31/2024|24w13b2
  • Replaced usages of std::mutex with Safe

  • Updated GitHub Action workflows

TRAP™ Engine 0.10.59 - 03/30/2024|24w13b1
  • Added ContentionFreeSharedMutex a contention free std::shared_mutex alternative

  • Added Safe a wrapper for a user-defined type and a mutex

  • ConstexprMap Extended API to more closely match STL containers

  • HotReloading Fixed incorrect filenames on Linux resulting in no reload

TRAP™ Engine 0.10.58 - 03/29/2024|24w13a1
  • Texture Fixed wrong texture type used when creating a multi-file cube texture

TRAP™ Engine 0.10.57 - 03/24/2024|24w12a1
  • Math Added perlin and simplex noise functions

  • UnitTests Added tests for perlin and simplex noise

TRAP™ Engine 0.10.56 - 03/17/2024|24w11a1
  • Renderer Fixed wrong instance count usage

  • Renderer EndScene() now waits for model SSBO to finish uploading instead of each Submit() call

  • Renderer EndScene() now waits for scene SSBO to finish uploading instead of BeginScene()

TRAP™ Engine 0.10.55 - 03/10/2024|24w10a4
  • Linux Disabled XNegative and YNegative macros

  • Removed invalid profiling trace points

TRAP™ Engine 0.10.54 - 03/09/2024|24w10a3
  • VulkanRootSignature Refactored various functions

  • Utils Added typedef for std::unordered_map with std::string as key and enabled heterogeneous lookup

  • VulkanSampler Refactored various functions

  • VulkanSampler Added VkSetObjectName() calls

  • VulkanSemaphore Added VkSetObjectName() calls

TRAP™ Engine 0.10.53 - 03/06/2024|24w10a2
  • VulkanRenderPass Refactored various functions

  • VulkanRenderTarget Added VkSetObjectName() calls

  • VulkanRenderTarget Refactored various functions

  • Utils Added StringHasher to enable heterogeneous string lookup for associative containers

  • Enabled heterogeneous lookup for std::unordered_map and std::map using std::string as key

TRAP™ Engine 0.10.52 - 03/05/2024|24w10a1
  • VulkanPipelineCache Added VkSetObjectName() calls

  • VulkanQueryPool Added VkSetObjectName() calls

  • Removed USE_RENDER_DOC macro (RenderDoc will inject the capture layer by itself)

  • VulkanQueue Refactored various functions

  • VulkanQueue Added VkSetObjectName() calls

TRAP™ Engine 0.10.51 - 03/03/2024|24w09b2
  • VulkanPhysicalDevice Refactored RatePhysicalDevices() function

  • VulkanPipeline Refactored InitGraphicsPipeline() function

TRAP™ Engine 0.10.50 - 03/02/2024|24w09b1
  • VulkanPhysicalDevice Refactored various functions

TRAP™ Engine 0.10.49 - 02/27/2024|24w09a2
  • VulkanInits Refactored various functions

  • VulkanInstance Refactored various functions

  • VulkanMemoryAllocator Refactored constructor

TRAP™ Engine 0.10.48 - 02/26/2024|24w09a1
  • VulkanFrameBuffer Refactored constructor

TRAP™ Engine 0.10.47 - 02/25/2024|24w08c2
  • VulkanDescriptorPool Added VkSetObjectName() calls

  • Added names for VulkanDescriptorPools

  • Moved ResourceLoader initialization to RendererAPI

  • VulkanDevice Refactored various functions

  • VulkanFence Added VkSetObjectName() calls

  • Added names for VulkanFencess

  • Removed ENABLE_DEBUG_UTILS_EXTENSION macro

  • VulkanCommon Changed VkSetObjectName()

  • VulkanFence Added ResetState() function

  • VulkanFence Refactored various functions

TRAP™ Engine 0.10.46 - 02/24/2024|24w08c1
  • VulkanDebug Added more safety checks

  • VulkanCommon Added missing VkResult entries to VkResultToString map

  • ImGuiVulkanBackend Reduced DescriptorSets to 1

  • ImGuiVulkanBackend Reduced DescriptorPool size to 1 combined image sampler

  • VulkanDescriptorSet Refactored Update() function

  • VulkanDevice Changed GetPhysicalDevice() to return a const reference instead of pointer

  • VulkanPhysicalDevice Made some function const

  • VulkanCommandBuffer Added VkSetObjectName() calls

  • Added names for VulkanCommandBuffers

  • VulkanCommandPool Added VkSetObjectName() calls

  • Added names for VulkanCommandPools

TRAP™ Engine 0.10.45 - 02/21/2024|24w08b1
  • ImGuizmo Fixed detection of reversed Z

  • Updated ImGuizmo submodule

  • Math Fixed Decompose function returning invalid euler angles for rotation

  • Math Removed deprecated projection matrix functions

  • Updated UnitTests

TRAP™ Engine 0.10.44 - 02/20/2024|24w08a1
  • Updated ImGuiLayer & ImGuiVulkanBackend

TRAP™ Engine 0.10.43 - 02/18/2024|24w07b2
  • Math Deprecated all Perspective() functions which are not infinite and not using reverse Z

  • Math Deprecated all Orthographic() functions which are not using reverse Z

  • Math Added InfinitePerspectiveReverseZ() function

  • VulkanRenderer Implemented support for depth/stencil attachment

  • Cube3D Updated Skybox shader for depth testing

  • VulkanCommandBuffer Fixed Vulkan errors in ResolveImage()

  • VulkanRenderer Added RenderScale support for Depth/Stencil RenderTarget

TRAP™ Engine 0.10.42 - 02/17/2024|24w07b1
  • Fixed compiler error when compiling without Nsight Aftermath

TRAP™ Engine 0.10.41 - 02/13/2024|24w07a1
  • VulkanCommandBuffer Refactored various functions

  • VulkanCommandPool Refactored AllocateCommandBuffer() and FreeCommandBuffer()

TRAP™ Engine 0.10.40 - 02/11/2024|24w06a1
  • VulkanCommandBuffer Refactored various functions

TRAP™ Engine 0.10.39 - 02/04/2024|24w05b2
  • VulkanCommandBuffer Changed arguments of functions

TRAP™ Engine 0.10.38 - 02/03/2024|24w05b1
  • Buffer Changed GetCPUMappedAddress() return type to std::span<T>

  • Updated calls to Buffer::GetCPUMappedAddress()

  • ResourceLoader Moved MappedRangeFlag struct to RendererAPI

  • RendererAPI Changed MappedMemoryRange::Data to std::span<u8>

  • RendererAPI Changed TextureUpdateDesc::MappedData and BufferUpdateDesc::MappedData to std::span<u8>

  • CommandBuffer BindPushConstants() & BindPushConstantsByIndex() now use std::span<const u8>

TRAP™ Engine 0.10.37 - 02/02/2024|24w05a2
  • TRAPEditorLayer/VulkanRenderer Added missing ElementCount and StructStride values to Buffers

TRAP™ Engine 0.10.36 - 01/29/2024|24w05a1
  • VulkanBuffer Removed unused functions

  • IndexBuffer/VertexBuffer/StorageBuffer/UniformBuffer set ElementCount and StructStride values

TRAP™ Engine 0.10.35 - 01/28/2024|24w04b1
  • Refactored VulkanBuffer

  • Updated ImGuiVulkanBackend

TRAP™ Engine 0.10.34 - 01/24/2024|24w04a2
  • Updated documentation build dependencies

TRAP™ Engine 0.10.33 - 01/23/2024|24w04a1
  • VulkanRenderer Fixed vkAcquireNextImageKHR semaphore synchronization error

  • Various minor code tweaks

  • CI Updated gha-workspace-cleanup to v1.2.5

TRAP™ Engine 0.10.32 - 01/15/2024|24w03a1
  • PipelineCache Changed GetPipelineCacheData() function

  • Various minor code tweaks

TRAP™ Engine 0.10.31 - 01/14/2024|24w02a3
  • Added docker files for Gitea Actions Runners

  • Added nodejs to Action Runner docker images

  • Various minor code tweaks

  • AftermathTracker now uses UniqueResource

TRAP™ Engine 0.10.30 - 01/13/2024|24w02a3
  • Make use of the new fmt std::source_location support

TRAP™ Engine 0.10.29 - 01/12/2024|24w02a2
  • Various minor code tweaks

  • Fixed compiler warnings in AftermathTracker

TRAP™ Engine 0.10.28 - 01/08/2024|24w02a1
  • FileSystemWatcher Added future return type to AddFolder() and AddFolders()

  • FileSystemWatcher better filtering of subdirs when recursive checking is enabled

  • UnitTests Added FileSystemWatcher tests

TRAP™ Engine 0.10.27 - 01/07/2024|24w01b1
  • Renamed FileChangeEvent to FileSystemChangeEvent

  • Renamed FileWatcher to FileSystemWatcher

  • Refactored FileSystemWatcher

  • Made FileSystemWatcher threadsafe

  • UnitTests FileSystem disabled logging except for critical messages

TRAP™ Engine 0.10.26 - 01/03/2024|24w01a1
  • Added UniqueResource and ScopeFail utility classes

  • Backported (as free standing functions) C++23 container range insert, append and assign functions (p1206r7)

  • Utils Added SetThreadName() which sets the thread name for profiling with tracy

  • Utils Added code documentation for ScopeFail and UniqueResource

2023
TRAP™ Engine 0.10.25 - 12/31/2023|23w52b3
  • Base reordered branches for operator new()

TRAP™ Engine 0.10.24 - 12/29/2023|23w52b2
  • Systems to profile can now be set at runtime

  • WindowingAPI Fixed some bugs

TRAP™ Engine 0.10.23 - 12/28/2023|23w52b1
  • Resolved various clang-tidy warnings

TRAP™ Engine 0.10.22 - 12/27/2023|23w52a3
  • Added Unittests for TRAP::FileSystem

  • HeadlessTests Removed old FileSystemTests

  • DiscordGameSDK is now compiled as static lib

TRAP™ Engine 0.10.21 - 12/26/2023|23w52a2
  • Cleaned up TRAP::FileSystem

TRAP™ Engine 0.10.20 - 12/25/2023|23w52a1
  • Update-Dependencies Added Premake-Ninja

  • ImGuiVulkanBackend CreateFontsTexture() Changed device wait idle to queue wait idle

TRAP™ Engine 0.10.19 - 12/24/2023|23w51b2
  • FileSystem Added ToCanonicalAbsolutePath() and GetCurrentWorkingFolderPath()

TRAP™ Engine 0.10.18 - 12/23/2023|23w51b1
  • Backported C++26 std::breakpoint(), std::breakpoint_if_debugging() and std::is_debugger_present()

TRAP™ Engine 0.10.17 - 12/21/2023|23w51a2
  • PipelineCache Fixed unstable hash values

TRAP™ Engine 0.10.16 - 12/20/2023|23w51a1
  • Cleaned up TRAP::FileSystem

TRAP™ Engine 0.10.15 - 12/09/2023|23w49a2
  • Build-CI Fixed Windows using wrong amount of CPU cores for compiling

  • Build-CI Enabled second Windows runner again

  • GitHub Actions Windows Runner Added ninja

  • Build-CI Windows switched from msbuild to ninja

TRAP™ Engine 0.10.14 - 12/08/2023|23w49a1
  • Made adjustments to Premake scripts

  • Updated Premake-VSCodeGen

  • Added Premake-Ninja as submodule

  • Added Ninja build file generation

  • Build-CI Switched to ninja for GCC and Clang builds

TRAP™ Engine 0.10.13 - 12/03/2023|23w48b2
  • Premake Removed unnecessary calls to GenerateWayland() and DiscordGameSDK Compatibility

TRAP™ Engine 0.10.12 - 12/02/2023|23w48b1
  • WindowingAPI Splitted DBus code into its own namespace and moved to Utils

TRAP™ Engine 0.10.11 - 11/27/2023|23w48a1
  • Quat, Mat3/4, Vec2/3/4 at() now throws std::out_of_range exception instead of asserting

  • Quat, Mat3/4, Vec2/3/4 at() is now constexpr

  • TRAP-Editor SceneGraphPanel Fixed tree using the same unique identifier for all entities

TRAP™ Engine 0.10.10 - 11/26/2023|23w47c2
  • GitHub Actions Runners Removed manually installed nodejs

  • Rebuilt and deployed Windows GitHub Actions Runners

  • artifact-upload Removed run_attempt from upload path

  • Updated Build-CI workflow

  • UnitTests Added tests for Mat3/4

  • Quaternion Added std::get support

  • Quat, Mat3/4, Vec2/3/4 Added std::swap support

TRAP™ Engine 0.10.9 - 11/25/2023|23w47c1
  • UnitTests Optional/Expected moved functions to anonymous namespace

  • UnitTests Added tests for Vec2/3/4

  • UnitTests Added tests for Quaternion

TRAP™ Engine 0.10.8 - 11/22/2023|23w47b1
  • EventDispatcher now uses std::reference_wrapper

  • EventDispatcher Dispatch() now forwards Event as const reference

  • GenerateCodeCoverage Fixed make using wrong amount of cpu cores

  • GenerateCodeCoverage Added demangling of function names

  • Improved code coverage of TRAP::Expected and TRAP::Optional

  • Improved code coverage of TRAP::Math

TRAP™ Engine 0.10.7 - 11/20/2023|23w47a1
  • Events now use std::reference_wrapper instead of pointers

  • GeneratorScripts Added separate scripts for GCC and Clang

  • Enabled warnings as errors

  • Build-CI Added llvm-17 to clang build

TRAP™ Engine 0.10.6 - 11/18/2023|23w46a2
  • Added custom std::expected implementation with custom extensions

  • UnitTests Replaced static_assert with STATIC_REQUIRE where possible

  • NumericCast Enabled checks for UnitTests

  • Resolved some NumericCasts with std::cmp_*** functions

TRAP™ Engine 0.10.5 - 11/14/2023|23w46a1
  • ImGuiVulkanBackend/ImGuiLayer Changed how font uploading works

TRAP™ Engine 0.10.4 - 11/11/2023|23w45c1
  • Added custom std::optional implementation with custom extensions

TRAP™ Engine 0.10.3 - 11/09/2023|23w45b2
  • Replaced ostream operators with fmt formatters

  • Linux Fixed a bug which made X11/XWayland the default instead of Wayland

  • Replaced calls to ConvertToString() with fmt::format

  • String Removed ConvertToString()

TRAP™ Engine 0.10.2 - 11/08/2023|23w45b1
  • Deleted copy constructor of various classes

TRAP™ Engine 0.10.1 - 11/07/2023|23w45a1
  • Changed doxygen comment style

  • Doxygen Removed hard coded STRIP_FROM_PATH values

  • TRAPEditorLayer SaveScene() and SaveSceneAs() now use the editor scene instead of the active scene

  • Application SetTimeScale() guard against negative values

  • Fully excluded SwapChain from Headless mode

  • Base Replaced TRAP_MAKE_VERSION(), TRAP_VERSION_MAJOR(), TRAP_VERSION_MINOR() and TRAP_VERSION_PATCH() with SemanticVersion class

  • Made UID really unique

  • Updated VulkanLoader

TRAP™ Engine 0.10.0 - 11/05/2023|23w44b1
  • GitHub workflows Replaced tibdex/github-app-token with actions/create-github-app-token

  • Added deprecation attributes and compiler warnings which should trigger when project switches to C++23

  • Utils::String Removed StartsWith() and EndsWith()

  • ResourceLoader/FileWatcher Replaced manual thread destruction with std::stop_token and std::stop_callback

  • Doxyfile Added threadsafety, threadsafe, reentrancy, experimental and callback_signature alias tags

TRAP™ Engine 0.9.125 - 11/04/2023|23w44a1
  • Fixed glichting of gizmos when using infinite far plane projection matrix (now using forked ImGuizmo)

  • Moved generated documentation to TRAP-Docs repository

  • Removed documentation contained in TRAP repository

TRAP™ Engine 0.9.124 - 10/29/2023|23w43a3
  • VulkanLoader Removed external C

TRAP™ Engine 0.9.123 - 10/28/2023|23w43a2
  • Core Added typedefs for fixed width primitive data types to make them shorter

  • Use new primitive typedefs everywhere

  • VulkanLoader/VulkanInstance VkGetInstanceVersion()/GetInstanceVersion() now returns std::optional<u32>

TRAP™ Engine 0.9.122 - 10/25/2023|23w43a1
  • Update-Dependencies Updated tags for Vulkan related dependencies

  • Reverted: GLSLang Enabled SPIR-V optimization, Removed SPIRV-Tools, SPIRV-Headers submodules

TRAP™ Engine 0.9.121 - 10/22/2023|23w42b3
  • Added new artifact-upload composite action (allows storing build artifacts on a custom Samba share)

  • GitHub Action Windows Runner Added 7z to PATH

  • GitHub Action Linux Runner Added p7zip-full package

  • Build-CI Replaced GitHub upload-artifact action with our own

  • Build-CI Replaced GitHub download-artifact action with our own (gamestrap/gha-download-artifact)

  • Build-CI Use GitHub artifact actions when ARTIFACT_HOST secret is not set

  • Build-CI Added Licenses folder to artifacts

  • Replaced manual equality operators with defaulted ones where possible

  • Replaced manual comparison operators with defaulted ones where possible

  • Update-Dependencies Changed regex for semver

  • Added SPIRV-Tools and SPIRV-Headers as submodules

  • GLSLang Enabled SPIR-V optimization

  • Update-Git-Dependency Fixed regex error

  • GitHub Action Runners Added Python 3

  • SPIRV-Tools Added missing SPIRV-Headers include dir

TRAP™ Engine 0.9.120 - 10/21/2023|23w42b2
  • Utils GetCPUInfo() Linux Replaced inline assembly with cpuid compiler intrinsic

  • WindowingAPILinuxWayland Fixed glitching when windows change between fractional and non-fractional scaling code paths

  • WindowingAPILinuxWayland Only add emulated video modes if wp_viewporter protocol is supported

  • WindowingAPILinuxWayland Fixed PointerHandleMotion() using wrong cursor position for InputCursorPos() call

  • WindowingAPILinuxWayland Added support for arbitrary (emulated) video modes

  • WindowingAPILinuxWayland Added support for using arbitrary video mode and fractional scaling at the same time

TRAP™ Engine 0.9.119 - 10/19/2023|23w42b1
  • Headless Fixed a crash in VulkanRenderer::UpdateInternalRenderTargets()

  • Again replaced NarrowCast(), WideCast() and SignCast() with an improved NumericCast()

  • Fixed various NarrowingErrors

  • Simplified NumericCast()

  • NumericCast() Replaced NumericCastError exception with TRAP_ASSERTs

  • NumericCast() only do check in debug mode

TRAP™ Engine 0.9.118 - 10/18/2023|23w42a3
  • WideCast() Added support for widening signed integral to floating point conversions

  • NarrowCast() Added support for narrowing floating point to signed integral conversion

TRAP™ Engine 0.9.117 - 10/17/2023|23w42a2
  • Added NarrowCast(), WideCast() and SignCast() as a replacement for NumericCast()

  • SignCast() now automatically deduces destination type from source type

  • GitHub Action Runners updated Ubuntu runner to 23.10 (Mantic)

  • Rebuild and deployed Ubuntu GitHub Action Runner images

  • Build CI Replaced Clang 16 with Clang 17

TRAP™ Engine 0.9.116 - 10/16/2023|23w42a1
  • ImGuiWindowing Added support for keys F13-F24

  • Premake drastically reduced redundancy between script files

TRAP™ Engine 0.9.115 - 10/15/2023|23w41a2
  • Added missing Catch2 license to Licenses directory

  • UnitTests Replaced Catch2 amalgamated with normal Catch2

  • Fixed Build-CI Clang warnings

  • Clangd Disabled IWYU warnings for TRAPPCH.h

  • MSVC Resolved SteamworksSDK warnings

  • MSVC Resolved TRAP-Headless LNK4006 warning

  • Utils DisplayError() now only displays message box for non headless and non unit test builds

  • MSVC Resolved more warnings

  • Backports Added std::unreachable()

  • Removed all unused includes

TRAP™ Engine 0.9.114 - 10/14/2023|23w41a1
  • Build-CI Added checks if secrets for NDA repos are set

  • Build-CI Added problem matchers for warnings and errors

TRAP™ Engine 0.9.113 - 10/09/2023|23w40c2
  • Re-enabled LTO for Profiling and Release builds

  • Fixed an ODR violation in spirv.hpp between SPIRV-Cross and GLSLang

TRAP™ Engine 0.9.112 - 10/08/2023|23w40c1
  • WindowingAPI Fixed Fullscreen Borderless using wrong window size

  • WindowingAPILinuxWayland Added second iteration of fractional scaling support

  • WindowingAPILinuxWayland fractional scale added updating of monitor content scale

TRAP™ Engine 0.9.111 - 10/07/2023|23w40b3
  • Updated DBus implementation

  • GenerateWayland Added fractional-scale-v1 protocol

  • WindowingAPILinuxWayland Added initialization of fractional_scale_manager

  • WindowingAPILinuxWayland Added deinitialization of fractional_scale_manager

  • WindowingAPILinuxWayland Added initial support for fractional scaling

TRAP™ Engine 0.9.110 - 10/06/2023|23w40b2
  • Application CreateApplication() now uses std::span

  • VulkanInits PipelineCacheCreateInfo() now uses std::span

  • VertexBuffer Create() and SetData() now use std::span

  • IndexBuffer Create() and SetData() now use std::span

  • ImGuiLayer AddFontFromMemoryTTF() now uses std::span

TRAP™ Engine 0.9.109 - 10/05/2023|23w40b1
  • Simplified CreatePipelineReflection()

  • Added typedef for UUID (std::array<uint8_t, 16>)

  • Resolved TODOs in CreatePipelineReflection()

  • VulkanInits::SwapchainCreateInfoKHR() Removed unnecessary queueFamilyIndexCount parameter

TRAP™ Engine 0.9.108 - 10/04/2023|23w40a3
  • ControllerMappings is now a constexpr array of string_views

  • Removed unnecessary linking in static libs

  • SPIRV-Cross now only compiles to a single static lib

  • GLSLang now only compiles to a single static lib

TRAP™ Engine 0.9.107 - 10/03/2023|23w40a2
  • Cleaned up destructors

  • Removed unnecessary reset() calls

  • Build-CI Added checkouts of non-public dependencies

TRAP™ Engine 0.9.106 - 10/02/2023|23w40a1
  • VulkanPhysicalDevice RatePhysicalDevices() Fixed RayTracing always failing checks

  • VulkanPhysicalDevice RatePhysicalDevices() Greatly reduced score impact of maxImageDimension2D and maxImageDimensionCube

  • VulkanDevice now always requests all available queues

  • VulkanRenderer InternalRenderTargets is now dynamically resized when needed (fixes crash on Wayland when minImageCount is > RendererAPI::ImageCount)

  • VulkanSwapChain Changed assert to warning when more images are returned than requested by vkCreateSwapchainKHR

  • ImGuiVulkanBackend SetMSAASamples() now waits for device idle before destroying old pipeline

  • FrameBufferTests Fixed Vulkan errors when MSAA is enabled

  • RendererAPI Updating of AntiAliasing state now happens per window instead of globally

TRAP™ Engine 0.9.105 - 10/01/2023|23w39b4
  • UnitTests Moved all functions into anonymous namespaces

  • Monitor VideoMode width and height are now uint32_t’s

TRAP™ Engine 0.9.104 - 09/31/2023|23w39b3
  • Engine now requires Windows 10 or newer

TRAP™ Engine 0.9.103 - 09/30/2023|23w39b2
  • Unittests Roll, Yaw and ATan2 now run the correct functions

TRAP™ Engine 0.9.102 - 09/29/2023|23w39b1
  • Refactored Update-Dependencies using composite action

TRAP™ Engine 0.9.101 - 09/28/2023|23w39a3
  • Made Utils::GetEndian() consteval and all calls to it now use if constexpr

TRAP™ Engine 0.9.100 - 09/26/2023|23w39a2
  • Linux Added support for generating code coverage reports using gcov and lcov

TRAP™ Engine 0.9.99 - 09/25/2023|23w39a1
  • VulkanLoader Fix conflict between FARPROC definition and minwindef.h

TRAP™ Engine 0.9.98 - 09/24/2023|23w38b2
  • Added GCEM as submodule

  • Made many more math functions constexpr using GCEM

  • Updated unit tests for updated math functions

  • Changed GCEM submodule to fork

  • Fixed implicit conversion warnings in unit tests

  • Update-Dependencies Added job for GCEM

  • Update-Dependencies Added job for Premake-VSCodeGen

TRAP™ Engine 0.9.97 - 09/23/2023|23w38b1
  • Tracy.lua Removed TRACY_ENABLE from non profiling configurations

  • ErrorCodes Replaced call to std::exit() with std::terminate()

  • Added CrashHandler class which allows to set custom exception handlers

  • Added exception handlers that log the exception and save the log to disk

TRAP™ Engine 0.9.96 - 09/20/2023|23w38a3
  • WindowingAPILinuxWayland Removed cursor unavailable error when setting cursor image

TRAP™ Engine 0.9.95 - 09/19/2023|23w38a2
  • VulkanSwapChain Added reusage of old swapchain on recreation

  • Updated Steamworks SDK support to v1.58

TRAP™ Engine 0.9.94 - 09/18/2023|23w38a1
  • Changed constructor initializations

TRAP™ Engine 0.9.93 - 09/17/2023|23w37a3
  • ImGuiLayer/ImGuiWindowing/ImGuiVulkanBackend Added more asserts

  • ImGuiLayer/ImGuiWindowing/ImGuiVulkanBackend Replaced pointers with references where possible

  • Added static to constexpr variables

TRAP™ Engine 0.9.92 - 09/13/2023|23w37a2
  • ImGuiVulkanBackend Texture cache now uses VulkanTexture class

TRAP™ Engine 0.9.91 - 09/11/2023|23w37a1
  • ImGuiVulkanBackend Replaced raw Vulkan with TRAP Vulkan classes

TRAP™ Engine 0.9.90 - 09/10/2023|23w36b2
  • Restructured ImGuiVulkanBackend

  • GitHub Action Runners updated to 2.309.0

  • Rebuild and deployed all GitHub Action Runner images

  • Updated GitHub Action workflow dependencies

TRAP™ Engine 0.9.89 - 09/09/2023|23w36b1
  • VulkanInits made SamplerCreateInfo() constexpr

  • ErrorCodes Added new error code VulkanNoMatchingMemoryTypeFound (0x0018)

  • ErrorCodes Fixed wrong error code for VulkanDeviceLost

  • Refactored ImGuiLayer and ImGuiVulkanBackend

TRAP™ Engine 0.9.88 - 09/06/2023|23w36a2
  • VulkanInstance/VulkanDevice Added more layer and extension information

  • RendererAPIInfo Added more layer and extension information

  • VulkanInits now uses designated initializers

TRAP™ Engine 0.9.87 - 09/05/2023|23w36a1
  • Vec2/3/4, Mat3/4, Quaternion Added spaceship and equality operators

  • Replaced ErrorCodes std::unordered_map with ConstexprMap

TRAP™ Engine 0.9.86 - 08/31/2023|23w35a3
  • Vec2/3/4 and Mat3/4 Added iterator support

  • Updated codebase to use Vec2/3/4 and Mat3/4 iterators

TRAP™ Engine 0.9.85 - 08/29/2023|23w35a2
  • Math small adjustments

TRAP™ Engine 0.9.84 - 08/28/2023|23w35a1
  • Mat3/Mat4 Added support for std::get()

  • Mat3/Mat4 Use std::get() where possible

  • GenerateWayland Added mirror URLs for protocol files

  • Use std::get() where possible

TRAP™ Engine 0.9.83 - 08/27/2023|23w34b1
  • Mat3/4 updated value and column constructors

  • Math small adjustments

TRAP™ Engine 0.9.82 - 08/26/2023|23w34a3
  • Fixed GCC, Clang and MSVC warnings

TRAP™ Engine 0.9.81 - 08/23/2023|23w34a2
  • Build-Docs target main branch again

  • Build-Docs Added action skip for documentation PRs

  • GenerateDocs Replaced fixed 16 threads with auto

  • Docs Removed .doctrees folder

  • WindowingAPI Resolved warnings with PlatformGetScanCodeNameXXX()

TRAP™ Engine 0.9.80 - 08/21/2023|23w34a1
  • Added Vulkan-Headers as submodule, removing the need for the VulkanSDK

  • Updated premake scripts

  • Update-Dependencies Added Vulkan-Headers update job

  • Build-CI Removed VulkanSDK step

  • Updated Documentation

TRAP™ Engine 0.9.79 - 08/20/2023|23w33a4
  • UnitTests Added tests for Math::ASin(), Math::ACos(), Math::ATan()

  • UnitTests Added tests for Math::SinH(), Math::CosH(), Math::TanH()

  • UnitTests Added tests for Math::ASinH(), Math::ACosH(), Math::ATanH()

  • Math Removed RGBColor(), HSVColor(), Saturation(), Luminosity()

  • UnitTests Added tests for Math::ConvertLinearToSRGB(), Math::ConvertSRGBToLinear()

  • UnitTests Added tests for Math::IsOdd(), Math::IsEven(), Math::IsFinite()

  • HeadlessTests Removed Math tests

  • ImGuizmo Fixed usage of wrong pre-processor macros

  • ImGuiWindowing Changed CursorPosCallback() to send current position instead of position from last call

TRAP™ Engine 0.9.78 - 08/19/2023|23w33a3
  • UnitTests Added tests for Math::Degrees(), Math::Cos(), Math::Tan()

  • Updated YAMLCpp

  • Quaternion changed data order to WXYZ

  • Math Added Recompose()

  • UnitTests Added tests for Math::Recompose()

  • EditorCamera/OrthographicCamera Removed invalid constexpr

TRAP™ Engine 0.9.77 - 08/16/2023|23w33a2
  • UnitTests Added tests for Math::AngleAxis(), Math::XAxis(), Math::YAxis(), Math::ZAxis(), Math::Any(), Math::All(), Math::Radians()

TRAP™ Engine 0.9.76 - 08/14/2023|23w33a1
  • UnitTests Added tests for Math::SLerp(), Math::Conjugate(), Math::EulerAngles()

  • UnitTests Added tests for Math::Roll(), Math::Pitch(), Math::Yaw(), Math::Mat3Cast(), Math::Mat4Cast()

  • UnitTests Added tests for Math::QuaternionCast(), Math::QuaternionLookAt(), Math::Angle(), Math::Axis()

TRAP™ Engine 0.9.75 - 08/12/2023|23w32a3
  • UnitTests Added tests for Math::Scale(), Math::LookAt(), Math::Row(), Math::Column(), Math::Decompose()

  • Math Changed implementation of Decompose()

TRAP™ Engine 0.9.74 - 08/08/2023|23w32a2
  • UnitTests Added tests for Math::Translate(), Math::Rotate()

TRAP™ Engine 0.9.73 - 08/07/2023|23w32a1
  • UnitTests Added tests for Math::InfinitePerspective()

TRAP™ Engine 0.9.72 - 08/06/2023|23w31a2
  • UnitTests Added tests for Math::Refract(), Math::MatrixCompMult(), Math::OuterProduct(), Math::Transpose(), Math::Determinant()

  • UnitTests Added tests for Math::Inverse(), Math::Orthographic(), Math::Frustum(), Math::Perspective(), Math::PerspectiveFoV()

TRAP™ Engine 0.9.71 - 08/05/2023|23w31a1
  • UnitTests Added tests for Math::Dot(), Math::Cross(), Math::Normalize(), Math::FaceForward(), Math::Reflect()

  • Build-CI Added unit testing jobs

TRAP™ Engine 0.9.70 - 07/30/2023|23w30a4
  • UnitTests Added tests for Math::FrExp(), Math::LdExp(), Math::FMod(), Math::Lerp(), Math::Pow(), Math::Exp()

  • Math IsPowerOfTwo() now requires an unsigned integral

  • Math FMod() and Pow() now requires floating point

  • Math Fixed a bug in Math::Lerp(Quat, Quat, Scalar)

  • UnitTests Added tests for Math::Log(), Math::Exp2(), Math::Log2(), Math::Sqrt(), Math::InverseSqrt(), Math::Length(), Math::Distance()

TRAP™ Engine 0.9.69 - 07/28/2023|23w30a3
  • UnitTests made Math::Step() tests run at compile time

  • UnitTests Added tests for Math::SmoothStep(), Math::IsNaN(), Math::IsInf(), Math::FMA()

TRAP™ Engine 0.9.68 - 07/25/2023|23w30a2
  • UnitTests Added tests for Math::Step()

  • Build-CI Added UnitTests executable to artifacts

TRAP™ Engine 0.9.67 - 07/24/2023|23w30a1
  • ImGui disabled deprecated/obsolete functions

  • Updated ImGuiWindowing

  • UnitTests Added tests for Math::LessThan(), Math::LessThanEqual(), Math::Not()

TRAP™ Engine 0.9.66 - 07/23/2023|23w29a4
  • UnitTests Fixed some tests always using int8_t

  • UnitTests Changed various edge case tests

  • Math Fixed unsigned integral Mod() giving wrong results

  • Math Replaced floating-point Mod() implementation with std::fmod()

  • Math Removed IRound() and URound()

  • Math Fixed NotEqual() sometimes not returning the correct value

  • Quaternion Fixed UB on dereferencing w component

  • UnitTests Added tests for Math::Mix(), Math::Equal(), Math::NotEqual(), Math::GreaterThan(), Math::GreaterThanEqual()

TRAP™ Engine 0.9.65 - 07/21/2023|23w29a3
  • Math constrained Abs() to signed types

TRAP™ Engine 0.9.64 - 07/20/2023|23w29a2
  • Math Added Min() and Max() with up to 4 parameters

  • Extended tests for Math::Min() and Math::Max()

  • Added test for Math::Clamp()

  • Math Added debug assert for Math::Clamp()

  • Premake Added TRAP-UnitTests configuration

TRAP™ Engine 0.9.63 - 07/17/2023|23w29a1
  • Math Added missing integral specialization of Math::Mod()

  • Math Resolved some compiler warnings

  • Added test for Math::Ceil(), Math::Floor(), Math::Fract(), Math::Mod(), Math::Modf(), Math::RoundEven() and Math::Sign()

  • Extended tests for Math::Round() and Math::Trunc()

TRAP™ Engine 0.9.62 - 07/16/2023|23w28b2
  • Replaced GoogleTest with Catch2

  • Added first unit tests for TRAP::Math::Sin() and TRAP::Math::Min()

  • Added tests for Math::Abs(), Math::Max(), Math::Round() and Math::Trunc()

  • Constrained Mat4, Mat3 and Quaternion to floating-point types

  • Math Added Abs() support for matrix types

  • Extended tests for Math::Abs() with matrix types

TRAP™ Engine 0.9.61 - 07/15/2023|23w28b1
  • Backported std::ranges::contains() from C++23

  • Used std::ranges::contains() where possible

  • Use std::ranges algorithms where possible

  • Replaced std::ranges::move() with std::shift_left()

  • Re-enabled TSAN builds as it works with RADV

  • Added GoogleTest as submodule

  • Update-Dependencies Added auto updating for GoogleTest dependency

  • Added UnitTest project using GoogleTest

TRAP™ Engine 0.9.60 - 07/12/2023|23w28a2
  • VulkanPhysicalDevice Added support for VkPhysicalDeviceDriverProperties

  • VulkanRenderer Changed device and driver logging

TRAP™ Engine 0.9.59 - 07/11/2023|23w28a1
  • TRAP::Log now prints warnings, errors and critical errors to std::cerr

  • RendererAPI Added size parameter to push constants to allow for validation with shader reflection

  • Use predefined TRAP::Math::X/Y/ZAxis<T>() instead of manual Vec3 construction

  • Shader fixed typo in #define when using user defined macros

  • Replaced reverse iterators with std::ranges::reverse_view()

  • SPIRVTools Replaced .count() with .contains()

TRAP™ Engine 0.9.58 - 07/09/2023|23w27a2
  • Added concepts/requires to template functions

  • Removed static from free standing constexpr functions in headers

  • Updated ImGuiVulkanBackend

TRAP™ Engine 0.9.57 - 07/08/2023|23w27a1
  • Added constexpr to functions where possible now since C++20

TRAP™ Engine 0.9.56 - 07/02/2023|23w26a4
  • Moved ToUnderlying() as std::to_underlying() to Core/Backports.h

  • Utils String Added Contains() function (backported from C++23)

  • Backported C++23s std::byteswap()

  • Utils Replaced Memory::SwapBytes implementation with std::byteswap

  • Base Added constraints to BIT()

TRAP™ Engine 0.9.55 - 07/01/2023|23w26a3
  • Made custom std::hash operators constexpr

  • Made UID constexpr

  • Replaced “.erase(std::remove())” calls with std::erase(_if)

  • Replaced std::strcmp with string_view comparisons

  • WindowingAPI::ParseUriList() Fixed prefix not getting removed

  • Refactored WindowingAPI::ParseUriList()

  • EventDispatcher Dispatch() Added support for member function parameters

  • Updated EventDispatcher::Dispatch() usage

  • Changed captures of lambdas

TRAP™ Engine 0.9.54 - 06/29/2023|23w26a2
  • Added constexpr to functions containing std::string

  • Simplified UUIDFromString()

  • Made ConvertHashToString() constexpr

  • Utils::String Added IsSpace(), IsAlpha(), IsAlphaNumeric()

  • Config::ParseLine() is now constexpr

TRAP™ Engine 0.9.53 - 06/26/2023|23w26a1
  • Added constexpr to functions containing std::vector

TRAP™ Engine 0.9.52 - 06/25/2023|23w25b2
  • Events Added constexpr to virtual functions

  • (Vulkan)Buffer Added constexpr

  • ScriptableEntity, Socket, Packet, Layer Added constexpr to virtual

  • Image Added constexpr to virtual

  • Shader, Camera, SwapChain, Semaphore, Sampler, QueryPool Added constexpr to virtual

  • PipelineCache, Fence, DescriptorSet, DescriptorPool, CommandSignature Added constexpr to virtual

  • RendererAPI Added constexpr to virtual

  • Replaced some find() != end() calls with contains()

  • Replaced std::thread with std::jthread where it makes sense

  • Added constexpr to destructors where possible

  • Math is now more constexpr

  • Updated ImGuiWindowing

  • Added constinit where appilcable

  • Update-Controller-Mappings Fixed invalid PR branch name

TRAP™ Engine 0.9.51 - 06/24/2023|23w25b1
  • Utils un-deprecated GetEndian()

  • Log Changed Log::Level checks

  • Utils Added fixed-size, compile-time and thread safe ConstexprMap container

  • VulkanCommon ErrorCheck() and ReflexErrorCheck() now use ConstexprMap

  • Replaced operators in some classes with the spaceship operator

  • TRAP::Utils::String Replaced StartsWith() with std::string::starts_with()

  • TRAP::Utils::String Replaced EndsWith() with std::string::ends_with()

TRAP™ Engine 0.9.50 - 06/22/2023|23w25a4
  • Replaced more string concatenation chains with fmt::format()

  • Changed fmt submodule to tag 10.0.0

  • Update-Dependencies Added fmt update job

TRAP™ Engine 0.9.49 - 06/21/2023|23w25a3
  • Replaced string concatenation chains with fmt::format()

TRAP™ Engine 0.9.48 - 06/20/2023|23w25a2
  • Added {fmt} as submodule

  • Updated premake scripts

  • Added fmt::formatter for existing std::ostream specialization

  • Replaced std::cout with fmt::print

  • Replaced std::cerr with fmt::print

  • TRAP::Log now uses fmt::format and fmt::print

  • Added fmt/std.h

TRAP™ Engine 0.9.47 - 06/19/2023|23w25a1
  • VulkanCommon VkCall() and VkReflexCall() now use std::source_location

  • Replaced deprecated EnTT functions

  • TRAP_ASSERT now uses std::source_location

  • Utils Deprecated GetEndian()

TRAP™ Engine 0.9.46 - 06/18/2023|23w24b2
  • TRAP version is now consteval

  • GitHub Actions reduced update checks to once a week

  • GitHub Actions Added Update-Dependencies workflow

  • ImGuiLayer Fixed loading of imgui.ini not working

TRAP™ Engine 0.9.45 - 06/17/2023|23w24b1
  • ControllerMappings Removed modification date

  • Updated generatedocs.lua

  • Build-Docs now uses virtual python enviroment for packages

  • Build-Docs Added missing graphviz dependency

TRAP™ Engine 0.9.44 - 06/16/2023|23w24a5
  • Added workflow to automatically update the controller mappings

TRAP™ Engine 0.9.43 - 06/15/2023|23w24a4
  • Update-Vulkan-Loader enabled cloning of submodules

  • Update-Vulkan-Loader Added signing of commits

  • Make some premake generation scripts independent from the project files

  • Set execute flags for Premake5 and GeneratorScripts

  • Build-Docs workflow now creates PRs instead of directly commiting

TRAP™ Engine 0.9.42 - 06/14/2023|23w24a3
  • Added workflow to automatically update the Vulkan Loader

TRAP™ Engine 0.9.41 - 06/13/2023|23w24a2
  • Build-CI Added experimental caching of build dependencies to job build-linux-gcc-13

  • Build-CI also cache intermediate files

  • Build-CI Reverted experimenal caching of build dependencies

  • Build-CI Added new cleanup step

  • Build-CI Removed old cleanup step

TRAP™ Engine 0.9.40 - 06/12/2023|23w24a1
  • Added Dockerfiles and scripts used by self-hosted GitHub Actions Runner

  • GitHub Action Runners Added NodeJS 12.22.12

  • GitHub Action Runners Changed post cleanup (fixes empty caches)

  • GitHub Action Runners Removed post cleanup

TRAP™ Engine 0.9.39 - 06/09/2023|23w23a1
  • Switched to self-hosted GitHub Action runners

  • Updated Build-CI and Build-Docs workflows

  • Build-CI now builds using GCC 13 and Clang 16

  • Build-CI switched back to using latest Vulkan SDK release

  • Build-CI Added missing dependencies for Ubuntu

  • Build-CI Removed PDB files from Windows build artifacts

  • Build-CI Removed Redists from Linux artifacts

  • Build-CI Added cleanup step

TRAP™ Engine 0.9.38 - 05/27/2023|23w21b2
  • Replaced std::filesystem::path::u8string() with std::filesystem::path::string()

  • Premake switched to C++20

  • Replaced TRAP::Utils::BitCast with std::bit_cast

  • Fixed entt compiler error

  • Log Replaced in place variadic unfolding hack

  • Replaced std::filesystem::path::generic_u8string() with generic_string()

  • Scene Replaced deprecated implicit this in lambdas

TRAP™ Engine 0.9.37 - 05/26/2023|23w21b1
  • Build-CI Ubuntu 22.04 replaced GCC 10 with GCC 12

  • Build-CI Ubuntu 22.04 replaced Clang 12 with Clang 14

  • Dropped support for Visual Studio 2019 (MSVC)

  • Build-CI Removed Visual Studio 2019 (MSVC) job

TRAP™ Engine 0.9.36 - 05/25/2023|23w21a2
  • Premake scripts reduced redundancy of optional third party dependencies

TRAP™ Engine 0.9.35 - 05/24/2023|23w21a1
  • Premake scripts reduced redundancy

TRAP™ Engine 0.9.34 - 05/21/2023|23w20b2
  • Updated ImGui submodule

  • Updated ImGuiVulkanBackend and ImGuiWindowing

  • RadianceImage Added support for x axis first images

  • Window GetVSync() and SetVSync() are now aliases to RendererAPI

TRAP™ Engine 0.9.33 - 05/20/2023|23w20b1
  • Monitor changed equality operators

  • Window Refactored SetDisplayMode() into SetFullScreen(), SetFullscreenBorderless() and SetWindowed()

  • VulkanRenderer Fixed VK_KHR_shader_float_controls extension not always applied

  • Updated GLSLang submodule

  • Updated SPIRV-Cross submodule

  • Updated Steamworks SDK support

  • Updated VulkanMemoryAllocator submodule

  • Updated YAMLCpp submodule

  • Updated controller mappings

  • Updated Vulkan loader

  • Added ImGuizmo as submodule

  • ImGuiLayer Added SetImGuizmoStyle()

  • WindowingAPILinuxWayland SetAspectRatio() now also emits a window resize event

TRAP™ Engine 0.9.32 - 05/19/2023|23w20a3
  • WindowingAPI Added GetNativeMode() for monitors

  • Monitor Added GetNativeMode()

  • Monitor Changed constructor

  • Monitor VideoMode Added equality operators

  • Window Added GetFrameBufferWidth() and GetFrameBufferHeight()

  • Window Reduced stored data

  • MonitorTests Removed caching of monitor data

  • Updated Premake Visual Studio Code workspace generator

TRAP™ Engine 0.9.31 - 05/18/2023|23w20a2
  • WindowingAPILinuxWayland Fixed key repeats not working

TRAP™ Engine 0.9.30 - 05/16/2023|23w20a1
  • Application exposed unfocused FPS limit via config and getter/setter

  • Disabled LTO because it makes GDB start very slowly

  • Events Added KeyRepeatEvent

  • Window Removed redundant WindowData

TRAP™ Engine 0.9.29 - 05/09/2023|23w19a1
  • Enabled Link time optimization (Interprocedural optimization) by default

  • Build-CI changed used Vulkan SDK version from latest to 1.3.243.0

  • Premake Linux enabled mold as default linker if installed

TRAP™ Engine 0.9.28 - 05/06/2023|23w18b2
  • ConvertToSPIRV Added info parameter to query generated shader files

  • Shader Replaced fixed-size std::arrays with std::vector

  • VulkanRenderer now requires SPIRV 1.4

TRAP™ Engine 0.9.27 - 05/05/2023|23w18b1
  • Changed SPIRV Shader file format from “.spirv” to “.tp-spv”

  • Added file format specification for TRAP-SPIRV (TP-SPV) files to ConvertToSPIRV

  • Updated ConvertToSPIRV utility

  • Updated engine side Shader implementation

TRAP™ Engine 0.9.26 - 05/02/2023|23w18a2
  • Texture Moved Rotate90Clockwise() and Rotate90CounterClockwise() to Image

TRAP™ Engine 0.9.25 - 05/01/2023|23w18a1
  • Fixed crash when loading an RadianceImage

  • Updated RadianceImage implementation

  • GenerateDocs Reverted pip break-system-packages flag and enabled pip output

TRAP™ Engine 0.9.24 - 04/29/2023|23w17a5
  • Resolved Build-CI Clang warnings

TRAP™ Engine 0.9.23 - 04/28/2023|23w17a4
  • Resolved Build-CI Clang warnings

TRAP™ Engine 0.9.22 - 04/27/2023|23w17a3
  • Replaced some static_casts with NumericCast() and ToUnderlying()

  • Resolved Build-CI GCC warnings

  • Resolved Build-CI Clang warnings

TRAP™ Engine 0.9.21 - 04/26/2023|23w17a2
  • Replaced some static_casts with NumericCast() and ToUnderlying()

  • Updated ModernDialogs submodule

TRAP™ Engine 0.9.20 - 04/25/2023|23w17a1
  • Replaced some static_casts with NumericCast() and ToUnderlying()

  • GenerateDocs Added pip break-system-packages flag

TRAP™ Engine 0.9.19 - 04/23/2023|23w16a5
  • Replaced some static_casts with NumericCast() and ToUnderlying()

  • TestNetwork Added missing SteamworksSDK to premake file

  • TestNetwork Removed unnecessary DiscordGameSDK from premake file

  • GitHub Actions Added job for Linux Clang

TRAP™ Engine 0.9.18 - 04/22/2023|23w16a4
  • Replaced some static_casts with NumericCast() and ToUnderlying()

TRAP™ Engine 0.9.17 - 04/20/2023|23w16a3
  • Fixed SteamworksSDK compiler error

  • Premake Added missing SteamworksSDK include headers

TRAP™ Engine 0.9.16 - 04/20/2023|23w16a2
  • Replaced some static_casts with NumericCast() and ToUnderlying()

TRAP™ Engine 0.9.15 - 04/18/2023|23w16a1
  • Replaced some static_casts with NumericCast() and ToUnderlying()

TRAP™ Engine 0.9.14 - 04/16/2023|23w15b1
  • Base Added NumericCast() a checked version of static_cast for integers and float

  • Base Added ToUnderlying() utility to convert enum values to its underlying data type

  • Vec2/3/4 and Mat3/4 Changed operator[] data type

  • Replaced some static_casts with NumericCast() and ToUnderlying()

  • Fixed Windows crash while loading secret symbols

TRAP™ Engine 0.9.13 - 04/15/2023|23w15a2
  • Changed Utils::BitCast function

  • Added comments to #endif

  • Config Fixed Get() didnt return std::vector

  • Config Get() now returns empty optional if key was not found

  • Config Removed Get() with out parameter

  • Added ErrorCode enum and DisplayError()

  • Replaced all critical errors with Utils::DisplayError()

  • Application GetHotReloadingFileWatcher() now returns an optional reference

TRAP™ Engine 0.9.12 - 04/10/2023|23w15a1
  • Branch NVReflex-1.8:

    • Premake made NVIDIA-Reflex SDK path not hard coded anymore

  • Merged NVReflex-1.8 into dev

  • Application reverted change to window minimization handling

TRAP™ Engine 0.9.11 - 04/09/2023|23w14b1
  • VulkanPhysicalDevice Allow other physical device types when using headless mode

  • Docs Updated differences between normal and headless mode

  • Renamed PerWindowData to PerViewportData

  • Headless mode Removed support for VSync

  • Branch headless-rendererapi-rework:

    • Headless mode Removed usage of TRAP::Window

    • Headless mode Removed support for Window, Monitor, SwapChain, VulkanSwapChain, VulkanSurface, Input, WindowingAPI

    • Headless mode Removed unnecessary TRAP_HEADLESS_MODE checks

    • Headless mode Removed unnecessary GetLinuxWindowManager() checks

    • Headless mode Added saving and loading of viewport width and height through engine.cfg

    • Headless mode Added RendererAPI::GetResolution() function to query viewport size

  • Merged headless-rendererapi-rework into dev

  • Fixed include order in some files

  • RendererAPI::CaptureScreenshot() now returns nullptr on error

  • Branch NVReflex-1.8:

    • Updated premake files

    • Updated NVIDIA-Reflex implementation

    • Verified correct functionality of NVIDIA-Reflex

TRAP™ Engine 0.9.10 - 04/08/2023|23w14a3
  • Refactored TRAP::Application functions

  • Application destructor Fixed Input::Shutdown() only called on Linux

  • Application Fixed crash with Headless mode

  • Headless mode Removed ImGuizmo dependency

  • Headless mode Removed ImGui dependency

  • Headless mode Removed DiscordGameSDK and NVIDIA-Reflex support

  • Added issue template for bug reporting

  • Headless mode Added NVIDIA Aftermath SDK as an optional dependency

  • Headless mode Added Steamworks SDK as an optional dependency

  • SteamworksSDK Added support for Steam Game Server API

  • Headless mode Removed support for ControllerEvent, KeyEvent and MonitorEvent

  • Headless mode Removed support for MouseEvent and WindowEvent

TRAP™ Engine 0.9.9 - 04/07/2023|23w14a2
  • Refactored TRAP::Application constructor and destructor

TRAP™ Engine 0.9.8 - 04/06/2023|23w14a1
  • GitHub Actions Added uploading of release executable artifacts

TRAP™ Engine 0.9.7 - 04/02/2023|23w13d1
  • WindowingAPIWin32 Added more accurate monitor names

  • TRAP::CreateApplication() now uses std::vector<std::string_view> for argv/argc parameter

  • Added .clang-tidy file

  • Resolved most clang-tidy warnings in TRAP

  • Games Resolved most clang-tidy warnings

TRAP™ Engine 0.9.6 - 04/01/2023|23w13c1
  • Replaced std::array::operator[] with std::get() where a constant index is used

  • Fixed MSVC compiler error in FuncCommon.cpp

  • ImageFormat/VulkanCommon Commented out deprecated formats of VK_IMG_format_pvrtc extension

  • Vec2/3/4 Added std::get() support

  • Docs Added NVIDIA Reflex SDK to additional libraries

  • All known critical errors now have a MsgBox and quit the engine immediately

  • Fixed warnings in Games folder

  • WindowingAPI Updated Taskbar progress implementation

TRAP™ Engine 0.9.5 - 03/31/2023|23w13b4
  • WindowingAPI PlatformDestroyWindow() Replaced pointer usage with references where possible

  • WindowingAPI Made functions constexpr where possible

TRAP™ Engine 0.9.4 - 03/30/2023|23w13b3
  • WindowingAPILinux Added const to pointers

  • WindowingAPI Replaced pointer usage with references where possible

  • WindowingAPILinux Fixed GetCursorPos() returning wrong values

  • WindowingAPI Callbacks replaced pointer usage with references where possible

TRAP™ Engine 0.9.3 - 03/29/2023|23w13b2
  • WindowingAPILinux Added missing elses

  • WindowingAPIWin32 Fixed PlatformGetVideoModes() returning the current video mode multiple times

  • WindowingAPIWin32 Replaced pointer usage with references where possible

  • WindowingAPIWin32 Added asserts

TRAP™ Engine 0.9.2 - 03/28/2023|23w13b1
  • WindowingAPILinuxX11 Replaced pointer usage with references where possible

  • WindowingAPILinuxWayland Fixed hidden or disabled cursors were still displaying

  • WindowingAPILinuxWayland Fixed drag and drop not working

  • WindowingAPILinuxWayland Replaced pointer usage with references where possible

TRAP™ Engine 0.9.1 - 03/27/2023|23w13a1
  • WindowingAPIWin32 Windows now also process events while being dragged or resized

  • FileWatcher Changed error message formatting

  • WindowingAPILinuxX11 Added asserts

  • WindowingAPILinuxX11 Replaced magic return values with std::optional where appropriate

  • WindowingAPILinuxWayland Added missing PlatformSetWindowAspectRatioWayland() function

TRAP™ Engine 0.9.0 - 03/26/2023|23w12d1
  • Merged Wayland support

  • Updated Controller mappings

  • Updated Vulkan loader

  • Updated Box2D, GLSLang, ModernDialogs, SPIRV-Cross, VulkanMemoryAllocator submodules

TRAP™ Engine 0.8.108 - 03/26/2023|23w12c1
  • Branch wayland:

    • GitHub Action Build-CI workflow Added Wayland dependencies

    • TRAP premake5.lua GenerateWayland() now immediately returns if OS is not linux

    • WindowingAPIWin32 Fixed compiler errors

    • Moved Wayland protocol generator into its own Premake module

TRAP™ Engine 0.8.107 - 03/25/2023|23w12b2
  • Branch wayland:

    • WindowingAPILinuxWayland Removed unnecessary assert

  • Added [[maybe_unused]] to commented out parameters

TRAP™ Engine 0.8.106 - 03/24/2023|23w12b1
  • Branch wayland:

    • WindowingAPILinuxWayland Added more asserts

    • WindowingAPILinuxWayland Changed some for loops

    • WindowFeaturesTests Changed hide briefly functionality

    • WindowingAPILinuxWayland Replaced some return types with std::optional

    • Utils Added TRAP_WM env var detection to GetLinuxWindowManager()

TRAP™ Engine 0.8.105 - 03/23/2023|23w12a2
  • Branch wayland:

    • WindowingAPILinuxWayland Added documentation for functions

TRAP™ Engine 0.8.104 - 03/22/2023|23w12a1
  • Branch wayland:

    • WindowingAPILinuxWayland Codestyle const-correctness

    • WindowingAPILinuxWayland Added Tracy markers everywhere

TRAP™ Engine 0.8.104 - 03/21/2023|23w12a1
  • Updated Redists/GameInputRedist.msi

TRAP™ Engine 0.8.103 - 03/18/2023|23w11a2
  • Branch wayland:

    • Added video mode emulation

TRAP™ Engine 0.8.102 - 03/17/2023|23w11a1
  • Branch wayland:

    • Implemented PlatformSetWindowMonitorBorderlessWayland()

    • Resolved shadowing warnings for “pointer”

    • Removed refresh rate rounding to integer

    • Better names for monitors

    • WindowingAPI Added Wayland remarks to functions

TRAP™ Engine 0.8.101 - 03/04/2023|23w09c1
  • Branch wayland:

    • Worked around NVIDIA Wayland bug making windows transparent with some blend modes

    • Marked commented out function parameters with [[maybe_unused]] attribute

TRAP™ Engine 0.8.100 - 03/03/2023|23w09b2
  • Branch wayland:

    • WindowingAPILinuxWayland Added support for wp_content_type protocol

TRAP™ Engine 0.8.99 - 03/01/2023|23w09b1
  • VulkanRenderer StartGraphicRecording() now handles VulkanSwapChain::AcquireNextImage() failures

  • Branch wayland:

    • WindowingAPILinuxWayland Added [[nodiscard]] attributes where applicable

    • WindowingAPILinuxWayland Added support for xdg_activation protocol

    • WindowingAPILinuxX11 Moved DBus stuff to WindowingAPILinux

TRAP™ Engine 0.8.98 - 02/28/2023|23w09a2
  • VulkanRenderer Added shutdown if swapchain image acquire fails

  • Branch wayland:

    • WindowingAPILinuxWayland Added missing libdecor.so unloading

TRAP™ Engine 0.8.97 - 02/27/2023|23w09a1
  • Update Tracy submodule

TRAP™ Engine 0.8.97 - 02/26/2023|23w08b1
  • Branch wayland:

    • WindowingAPILinuxWayland Added support for libdecor client-side window decorations

TRAP™ Engine 0.8.96 - 02/25/2023|23w08a1
  • Branch wayland:

    • ImGuiLayer disabled Multi-Viewport support when compiling with Wayland support enabled

    • WindowingAPILinuxWayland Implemented PlatformSetWindowResizableWayland()

TRAP™ Engine 0.8.96 - 02/24/2023|23w08a1
  • WindowingAPIWin32 PlatformGetVideoModes() now always returns the currently used video mode

  • WindowingAPIWin32 Updated dark/light mode handling

TRAP™ Engine 0.8.95 - 02/17/2023|23w07c1
  • Updated TRAP.gif animation

  • Updated VulkanLoader generator script

TRAP™ Engine 02/14/2023|23w07b1
  • Updated compile_commands.json generator

  • Updated Premake-VSCodeGen submodule

  • Added support for AddressSanitizer, UndefinedBehaviorSanitizer and LeakSanitizer on Linux

TRAP™ Engine 0.8.94 - 02/13/2023|23w07a3
  • Updated documentation (index.md)

  • WindowingAPIWin32 Windows now display black background during initialization

  • WindowingAPIWin32 now disables accessibility keys if not in use while engine is running

TRAP™ Engine 0.8.93 - 02/12/2023|23w06a2
  • GitHub Action Docs workflow now runs when pushed on master branch

  • Updated NVIDIA Nsight Aftermath support to 2022.2

  • Updated VulkanLoader to Vulkan API 1.3.240

  • Updated ControllerMappings

  • Updated Box2D, GLSLang, SPIRV-Cross, Vulkan Memory Allocator

  • Updated ImGui submodule

TRAP™ Engine 02/07/2023|23w06a1
  • Removed Visual Studio 2017 support (preparation for C++20)

  • Removed unnecessary Linux Visual Studio project generation scripts

  • GitHub Actions Added workflow for Visual Studio 2019

TRAP™ Engine 01/26/2023|23w04a1
  • Updated all licenses

2022
TRAP™ Engine 0.8.92 - 12/26/2022|22w52a1
  • ImageFormat Added ImageFormatIsNormalized(), ImageFormatIsSigned()

  • RendererAPI Added type for ClearValue (color/depth and stencil)

  • Updated RendererAPI to use new ClearValue type

  • VulkanInits Added ClearColorValue() which converts clear color data to a specific image format

  • Updated TRAP-Editor and FrameBufferTests

TRAP™ Engine 0.8.91 - 12/25/2022|22w51d1
  • Updated ResourceLoader

TRAP™ Engine 0.8.90 - 12/24/2022|22w51c1
  • Resolved GLSLang linker error

  • ConvertToSPIRV Fixed compiler error

  • ConvertToSPIRV Added nodiscard attribute where applicable

  • ImGuiLayer Added engine termination if ImGuiWindowing::Init() failed

  • exit() calls replaced -1 return code with the actual error code

  • ImGuiLayer Removed test code

TRAP™ Engine 0.8.89 - 12/23/2022|22w51b1
  • Made WindowingAPI sole owner of InternalWindows and InternalCursors

  • Updated Controller mappings

  • Updated Vulkan loader

  • Updated EnTT

  • Updated GLSLang

  • Updated ImGui

  • Updated SPIRV-Cross

  • Updated VulkanMemoryAllocator

  • Updated YAMLCpp

TRAP™ Engine 0.8.88 - 12/22/2022|22w51a3
  • Added [[nodiscard]] attribute to lots of functions

  • WindowsInput Replaced qsort with std::sort

  • (Vulkan)Buffer/PipelineCache/RootSignature Made some function non-virtual

TRAP™ Engine 0.8.87 - 12/21/2022|22w51a2
  • Removed TRAP_ASSERTs which are already guaranteed to not get triggered

TRAP™ Engine 0.8.86 - 12/20/2022|22w51a1
  • Added noexcept where applicable

TRAP™ Engine 0.8.85 - 12/18/2022|22w50c2
  • Added noexcept to some constructors

  • SPIRVTools Moved CrossCompiler::m_compiler to stack

  • WindowingAPI Fixed retrieving of monitor resolutions

  • Added noexcept to Events

TRAP™ Engine 0.8.84 - 12/17/2022|22w50c1
  • Premake Added architecture option to all files

TRAP™ Engine 0.8.83 - 12/16/2022|22w50b1
  • Sampler Added automatic updating of anisotropy level for samplers that use the engine default

TRAP™ Engine 0.8.82 - 12/12/2022|22w50a1
  • Application Fixed Fallback Shader/Texture destruction error

  • Headless FileSystem now doesnt create game documents folder

  • Headless AftermathTracker now uses current path instead of game documents path

  • AftermathTracker Changed crash dump file ending from “.dump” to “.nv-gpudmp”

TRAP™ Engine 0.8.81 - 12/11/2022|22w49b2
  • Branch decouple-resolution:

    • Added initial support for render scaling (doesnt support resizing and MSAA yet)

    • Added window resizing support for render scaling

    • Disabled VRS after render scaling pass

    • VulkanRenderer StartGraphicRecording() now checks with internal resolution against VRS image attachment

    • Updated VRSTests

    • RendererAPI MSAAResolvePass replaced Window* with CommandBuffer*

    • RendererAPI Removed RenderTargetsMSAA

    • VulkanRenderer Combined UpdateAntiAliasingRenderTargets() with UpdateInternalRenderTargets()

    • RendererAPI ShadingRateTextures are now cached so they dont get destroyed while being in use by command buffers

    • RendererAPI RenderScalePass() WIP MSAA support

    • RendererAPI ShadingRateTexture is now of type RenderTarget instead of Texture

    • ImGuiLayer now automatically sets appropriate MSAA sample count

    • ImGuiLayer Removed SetMSAASamples()

    • VulkanRenderer Finished MSAA RenderScale support

    • VulkanRenderer RenderScalePass() removed code redundancy

    • Headless-Mode Added support for RenderScale

    • Tests Added RenderScaleTests

TRAP™ Engine 0.8.80 - 12/10/2022|22w49b1
  • Branch decouple-resolution:

    • RenderCommand/RendererAPI/VulkanRenderer Added SetRenderScale(), GetRenderScale() and OnPostUpdate() functions

    • Engine.cfg Added RenderScale

    • Moved MSAA RenderTarget from SwapChain to PerWindowData

TRAP™ Engine 0.8.79 - 12/05/2022|22w49a1
  • VRSTests/AntiAliasingTests unsupported values are now greyed out in combo boxes

  • VRSTests now uses a circular pattern for shading rate texture

  • VRSTests Added visualization pass for shading rate

  • VRSTests Added check if VRS is actually supported before trying to load the visualization shader

  • VulkanShader Fixed a crash when shaders do not use any descriptors

  • Fixed Windows freezing when application focus is lost

TRAP™ Engine 0.8.78 - 12/03/2022|22w48b2
  • RendererAPI/RenderCommand Added Get/SetAnisotropyLevel()

  • Sampler constructor now injects engine set anisotropy level if EnableAnisotropy is true and OverrideAnisotropyLevel is 0

  • Engine.cfg Added AnisotropyLevel

  • Renderer2D Added SetCustomSampler() to specify a custom sampler to use

  • Renderer2D/Cube3D Added check if anisotropy level changed

  • Tests Added AnisotropyTests

  • Engine.cfg AntiAliasingQuality now defaults to 2 instead of (invalid) 1

  • TextureManager/ShaderManager Added Shutdown()

  • Moved RendererAPI usings to RenderCommand

TRAP™ Engine 0.8.77 - 12/02/2022|22w48b1
  • VulkanPhysicalDevice RatePhysicalDevices() Added checks for VRS

TRAP™ Engine 0.8.76 - 12/01/2022|22w48a4
  • VulkanRenderer Fixed VK_KHR_multiview used instead of VK_KHR_create_renderpass2

  • VRSTests Fixed issues with GPUs that dont support VRS

  • VulkanRenderer Fixed ReflexMarker() trying to call NVIDIA Reflex SDK API while not using supported NVIDIA GPU

TRAP™ Engine 0.8.75 - 11/30/2022|22w48a3
  • Updated README

  • Fixed VulkanPipeline.cpp compiler error

  • VRSTests Added resizing of shading rate texture

TRAP™ Engine 0.8.74 - 11/29/2022|22w48a2
  • VulkanRenderPass Added support for VkFragmentShadingRateAttachmentInfoKHR

  • Added support for Tier 2 Variable Rate Shading (Texture attachment)

  • VRSTests Added Tier 2 example

TRAP™ Engine 0.8.73 - 11/28/2022|22w48a1
  • Scene Added destructors of Box2D on OnRuntimeStop()

  • VulkanRenderer Added support for VK_KHR_create_renderpass2

  • VulkanRenderer now uses VK_KHR_create_renderpass2 as default when device supports it

TRAP™ Engine 0.8.72 - 11/26/2022|22w47c2
  • Replaced dynamic_cast with std::dynamic_pointer_cast where smart pointers are used

  • Silenced TracyLockable warnings for now

TRAP™ Engine 0.8.71 - 11/25/2022|22w47c1
  • DiscordGameSDK Create() now only sets default activity if provided appID is TRAPs

  • Monitor Removed Window::GetMonitor() friend

  • Window Added SetDisplayMode() overload for Monitor::VideoMode

  • RendererAPI Added SetNewGPU() and GetNewGPU() to allow setting a different GPU to use on the next engine run

  • Made TimeStep constexpr

  • Window/WindowingAPI Added SetAspectRatio() to restrict windows to a specific aspect ratio

  • Updated Tracy profiler to v0.9

  • Moved Tracy into own static lib

  • FileWatcher constructor removed path(s) parameter

  • Added TRAP_ASSERTs to Application, HotReloadEvent, WindowEvent, FileSystem and FileWatcher

  • Added TRAP_ASSERTs to DescriptorPool, Fence and Sampler

  • AftermathTracker Changed some variable and function names

  • Changed messages of TRAP_ASSERTs

TRAP™ Engine 0.8.70 - 11/24/2022|22w47b2
  • Fixed GCC Wshadow warnings

  • Updated Readme

TRAP™ Engine 0.8.69 - 11/23/2022|22w47b1
  • Fixed GCC Wconversion warnings

TRAP™ Engine 0.8.68 - 11/22/2022|22w47a2
  • Improved PNG loader

  • Reworked TRAP_ASSERT

  • Fixed GCC Wpedantic warnings

TRAP™ Engine 0.8.67 - 11/21/2022|22w47a1
  • Updated Codestyle.md

  • Added missing ModernDialogs License

  • Fixed bug in compile_commands.json generator

  • ImGuiLayer Added std::string overloads for InputText(), InputTextMultiline() & InputTextWithHint()

TRAP™ Engine 0.8.66 - 10/29/2022|22w43b1
  • Fixed TRAP_PROFILE_SYSTEMS() compiler errors

  • Games now use Framebuffer size instead of window size

  • Window/FrameBufferResizeEvent Added GetAspectRatio()

  • Games now use GetAspectRatio() instead of manually calculating it

  • WindowingAPI refresh rate is now a double, removed rounding

TRAP™ Engine 0.8.65 - 10/26/2022|22w43a2
  • Changed usage of constexpr in combination with static and inline keywords

  • Fixed FPS limiter inaccuracy

TRAP™ Engine 0.8.64 - 10/24/2022|22w43a1
  • Scene Removed OnComponentAdded() template

  • Application OnTick() may now be called multiple times per frame if devices FPS are lower than the set tick rate

  • Application limited number of OnTick() calls to a maximum of 8 per frame

TRAP™ Engine 0.8.63 - 10/23/2022|22w42c1
  • Integrated NVIDIAReflexTest into InputLagTest

  • Removed NVIDIAReflexTests

  • Windows Added COMInitializer an exception-safe RAII wrapper for COM initialization

TRAP™ Engine 0.8.62 - 10/22/2022|22w42b1
  • Changed includes

  • RendererAPI Removed the default window = nullptr stuff, RenderCommand now defaults to TRAP::Application::GetWindow()

  • Fixed MSVC linker error

TRAP™ Engine 0.8.61 - 10/21/2022|22w42a2
  • Docs Added Steamworks SDK to buildingtrap.md

  • RendererAPI Changed GetMainWindowData() into a generic GetWindowData() function

TRAP™ Engine 0.8.60 - 10/20/2022|22w42a1
  • FileSystem unified OpenFileInFileBrower() and OpenFolderInFileBrowser() into OpenInFileBrowser()

  • FileSystem unified MoveFile() and MoveFolder() into Move()

  • FileSystem unified CopyFile() and CopyFolder() into Copy()

  • FileSystem unified RenameFile() and RenameFolder() into Rename()

  • FileSystem renamed GetFileName() to GetFileNameWithoutEnding()

  • FileSystem renamed DeleteFileOrFolder() to Delete()

  • FileSystem renamed FileOrFolderExists() to Exists()

  • FileSystem renamed GetFileOrFolderSize() to GetSize()

  • FileSystem renamed IsPathEquivalent() to IsEquivalent()

  • FileSystem added IsEmpty() to check for empty files and folders

  • FileSystem added SetCurrentFolderPath() to set the current working directory

  • FileSystem made ReadTextFile() faster

  • FileSystem Fixed WriteFile() and WriteTextFile() append mode

  • HeadlessTests Addded FileSystemTests

TRAP™ Engine 0.8.59 - 10/15/2022|22w41a3
  • FileChangeEvent Changed oldName to be of type std::optional<std::filesystem::path>

  • FileSystem Added and changed error message

TRAP™ Engine 0.8.58 - 10/14/2022|22w41a2
  • LinuxInput Replaced opendir(), readdir() & closedir() in InitController() with std::filesystem equivalents

  • FileWatcher Fixed MSVC compilation errors

  • FileSystem OpenFileInFileBrowser() Replaced ILCreateFromPath() with SHParseDisplayName()

TRAP™ Engine 0.8.57 - 10/13/2022|22w41a1
  • Added more error checks for WinAPI/Linux specific functions

  • EntryPoint Removed OpenGL specific variables

  • Network prevented leaking “far” macro to other includes

  • Replaced FileStatusToString(), MouseButtonToString(), Rigidbody2DBodyTypeToString(), Rigidbody2DBodyTypeFromString() with ConvertToType() and ConvertToString()

  • Moved EncodeUTF8() to TRAP::Utils::String

  • LinuxInput Replaced POSIX regex with std::regex

TRAP™ Engine 0.8.56 - 10/08/2022|22w40b1
  • Log now utilizes the unused IsColorTerminal() function

  • Removed noexcept from potentially throwing functions

TRAP™ Engine 0.8.55 - 10/03/2022|22w40a1
  • AftermathTracker Fixed Tracy macro compiler error

  • Network Packet replaced std::copy_n with memcpy once again

  • Renderer2D lowered RAM usage by delaying buffer creation to the first draw call of each geometry type (i.e. quad, circle, line)

  • Profiler tracy::SetThreadName() now only gets called when TRACY_ENABLE is defined

  • ConvertToSPIRV Added version number (0.1.0) and added CLI parameter for it

TRAP™ Engine 0.8.54 - 10/02/2022|22w39c3
  • Base Added ability to compile-time define what to profile via TRAP_PROFILE_SYSTEMS()

  • Changed instrumentation to use TRAP_PROFILE_SYSTEMS()

TRAP™ Engine 0.8.53 - 10/01/2022|22w39c2
  • Premake scripts Added support for Tracy

  • Profiler Added names for threads

  • String Fixed double null terminator ins GetTimeStamp() and GetDateTimeStamp()

  • Profiler Added log messages

  • Base Added overloads for new and delete (only used for memory profiling)

  • Profiler Added all mutexes

  • Profiler Added instrumentation everywhere

  • Profiler color coded instrumentation

  • Premake disabled PCH for TracyClient.cpp

TRAP™ Engine 0.8.52 - 09/30/2022|22w39c1
  • Changed premake scripts optimize levels

  • Removed Instrumentor and all its macros

  • Premake scripts Added configuration for profiling

TRAP™ Engine 0.8.51 - 09/29/2022|22w39b2
  • Scene Copy() reversed iterating of UIDComponents so that the entities have the same order as in the original scene

TRAP™ Engine 0.8.50 - 09/28/2022|22w39b1
  • Renderer2D Added support for multiple per-frame instances

  • Application Added call to Renderer2D::Reset()

  • TRAP-Editor Added circle collider visualization

TRAP™ Engine 0.8.49 - 09/27/2022|22w39a2
  • VulkanPhysicalDevice Added GetVkPhysicalDeviceFormatProperties()

  • VulkanCommon/VulkanPipeline now automatically disables blending for formats that dont support it

  • TRAP-Editor Enabled blending

  • Renderer2D Quad/Circle now only use a single index buffer instead of one for each draw call

  • Refactored Renderer2D

  • Renderer2D Made circle anti aliasing resolution independent

  • Updated supported DiscordGameSDK version to 3.2.1

  • Components Added CircleCollider2DComponent

  • SceneSerializer Added support for CircleCollider2DComponent

  • Scene Added CircleCollider2DComponent Box2D physics integration

  • SceneGraphPanel Added support for CircleCollider2DComponent

TRAP™ Engine 0.8.48 - 09/26/2022|22w39a1
  • Embed Added Renderer2D circle shader

  • Renderer2D Added support for circle rendering

  • TRAP-Editor TransformComponent now can not be removed anymore

  • TRAP-Editor Changed save shortcut from Shift+S to CTRL+S

  • Added CircleRendererComponent

  • Scene/SceneSerializer Added support for circle rendering and CircleRendererComponent

TRAP™ Engine 0.8.47 - 09/23/2022|22w38c1
  • Renderer2D Added support for line and rectangle (non filled) rendering

  • TRAP-Editor gizmos now use the correct camera when SceneState is Play

  • Scene Added GetAllEntitiesWithComponents()

  • TRAP-Editor Added OnOverlayRender()

  • TRAP-Editor Added visualization for physics colliders (BoxCollider2D)

TRAP™ Engine 0.8.46 - 09/21/2022|22w38b1
  • OnTick() now also has a TimeStep as parameter

  • Scene Added OnTickRuntime() which updates the 2D physics

  • Components Added Rigidbody2D and BoxCollider2D components

  • SceneSerializer Added support for Rigidbody2D and BoxCollider2D components

  • TRAP-Editor SceneGraphPanel Added support for Rigidbody2D and BoxCollider2D components

  • Added [[fallthrough]] attribute where needed

TRAP™ Engine 0.8.45 - 09/20/2022|22w38a2
  • TRAP-Editor Added SceneState and play/pause button

  • FileSystem Added CopyFile() and CopyFolder() functions

  • TRAP-Editor Added automatic copying of default editor layout if no layout was found

  • TRAP-Editor Fixed MSVC compiler error

  • Updated WindowingAPIWin32

  • Added UID class

  • UID Added missing operator implementation

  • Components Added UIDComponent

  • Entity Added GetUID() utility function

  • Scene Added CreateEntityWithUID()

  • SceneSerializer now loads and saves entity UIDs

  • TRAP-Editor PropertiesPanel now displays entity UID on name text field hover

  • Components Added templated type for multiple components

  • Entity Added GetName() utility function

  • Entity Added AddOrReplaceComponent()

  • Scene Added support for copying and duplicating of entities

  • Scene Added Copy() to copy scenes

  • TRAP-Editor now uses a copy of the scene to use for playing state, preserving the original scene

  • TRAP-Editor Merged PropertiesPanel into SceneGraphPanel

  • TRAP-Editor Added keyboard shortcuts for entity duplication/deletion

  • Added Box2D as submodule

  • Premake Added support for Box2D

  • Updated all premake scripts

TRAP™ Engine 0.8.44 - 09/19/2022|22w38a1
  • Texture/ShaderManager made sure that fallback textures/shaders are still available after Clean() is called

  • ImGuiLayer/ImGuiVulkanBackend Added tracking of used descriptor sets and freeing them after RendererAPI::ImageCount frames

  • Texture/ShaderManager Fixed fallback textures/shaders not deleting on TRAP::Application destructor

  • ImGuiVulkanBackend Fixed ImGui_ImplVulkan_NewFrame() auto deduction failing

  • ImGuiVulkanBackend Reverted new tracking and freeing of used descriptor sets

  • ImGuiVulkanBackend Re-added caching of used descriptor sets

  • ImGuiVulkanBackend Added automatic creation of DescriptorPools when descriptor set allocation limit is reached

TRAP™ Engine 0.8.43 - 09/18/2022|22w37b1
  • Worked on const correctness for pointers

  • Moved some functions from TRAP::Graphics::Renderer to TRAP::Graphics::RenderCommand

  • Updated all programs

  • VulkanRenderer Fixed EndGPUFrameProfile() called while a RenderPass may still be active

TRAP™ Engine 0.8.42 - 09/15/2022|22w37a2
  • Cleaned up premake scripts

  • Removed Python dependency from GLSLang.lua script

TRAP™ Engine 0.8.41 - 09/13/2022|22w37a1
  • Changed some for loop data types

  • RendererAPI Renamed Present() to Flush()

  • VulkanRenderer split presentation from EndGraphicRecording()

TRAP™ Engine 0.8.40 - 09/08/2022|22w36a3
  • Branch NVReflex:

    • Application Moved FPSLimiter to start of Run() loop

    • VulkanInits Added SemaphoreWaitInfo()

    • RendererAPI/VulkanRenderer Added ReflexSleep()

    • Application now uses RendererAPI::ReflexSleep() for FPS limiting when NVIDIA Reflex is supported

    • RendererAPI/VulkanRenderer Added GetLatencyMode()

    • VulkanDevice now only enables NVIDIA Reflex if on Windows 10 or newer

    • Utils Added ConvertToString() & ConvertToType() overloads for RendererAPI::LatencyMode

    • Tests Added NVIDIAReflexTests

    • RendererAPI/VulkanRenderer Added ReflexMarker()

    • Added ReflexMarkers according to NVIDIA Reflex integration guide

    • RendererAPI/VulkanRenderer Added ReflexGetLatency()

    • NVIDIAReflexTests Added latency charts

    • Premake scripts added NVIDIA Reflex Stats include header

    • Added NVSTATS marker

TRAP™ Engine 0.8.39 - 09/07/2022|22w36a2
  • Branch NVReflex:

    • Dependencies Added NVIDIA-Reflex folder

    • Premake scripts added optional NVIDIA-Reflex support

    • VulkanRenderer Added support for VK_KHR_timeline_semaphore

    • VulkanCommon Added VkReflexCall() for NVIDIA-Reflex error checking

    • VulkanDevice Added NVIDIA-Reflex initialization

    • RendererAPI/RenderCommand Added SetLatencyMode() to enable/disable NVIDIA-Reflex

    • RendererAPI/VulkanRenderer Added SetReflexFPSLimit()

TRAP™ Engine 0.8.38 - 09/06/2022|22w36a1
  • RendererAPI/VulkanPhysicalDevice Added querying for GPU vendor

  • Updated premake5 version

  • Updated all premake scripts

TRAP™ Engine 0.8.37 - 09/04/2022|22w35b1
  • Application/RendererAPI Renamed GetFrameTime() to GetCPUFrameTime()

  • Renderer2D Added missing VertexLayout value in ExtendBuffers()

  • RendererAPI Added support for GPU Graphics and Compute frame time querying

TRAP™ Engine 0.8.36 - 09/01/2022|22w35a2
  • WindowingAPI Linux Added support for taskbar progress (KDE & Unity only)

TRAP™ Engine 0.8.35 - 08/30/2022|22w35a1
  • Log Fixed Trace level not working

  • Math Orthographic(), Frustum, Perspective, PerspectiveFoV now correctly use 0 to 1 clip values

  • EditorCamera/OrthographicCamera(Controller)/SceneCamera Flipped near and far planes

  • Implemented Reverse Z buffering (higher depth precision)

  • EditorCamera/SceneCamera now use infinite far clip plane

TRAP™ Engine 08/28/2022|22w34c2
  • Updated Branding

TRAP™ Engine 0.8.34 - 08/27/2022|22w34c1
  • Added sprite sheet animation support via SpriteAnimation

  • SpriteSheetTests Added two SpriteAnimations

  • Fixed gizmo usage when out of selected entity bounds

  • Log Added importance level for printing

TRAP™ Engine 0.8.33 - 08/24/2022|22w34b1
  • Fixed TRAPEditorLayer not compiling

  • TRAP-Editor SceneGraphPanel Added SetSelectedEntity()

  • Renderer2D Added DrawSprite()

  • Renderer2D Shader Added entity ID (used by mouse picking in TRAP-Editor)

  • Scene now uses Renderer2D::DrawSprite()

  • TRAP-Editor Added mouse picking (allows selection of entities from within the viewport)

TRAP™ Engine 0.8.32 - 08/23/2022|22w34a2
  • RendererAPI/VulkanCommandBuffer LoadActionsDesc Added support for int and uint values in ClearColorValues

  • VulkanRenderer Added support for multiple fragment render targets

  • VertexBufferLayout Added unsigned integer types to ShaderDataType

  • VulkanRenderer BindVertexBuffer Added support for integer formats

TRAP™ Engine 0.8.31 - 08/22/2022|22w34a1
  • RendererAPI Added TextureCopyDesc

  • CommandBuffer Added GPU to CPU texture copy support via CopySubresource function

  • ResourceLoader Added CopyResource (async GPU to CPU texture copy)

TRAP™ Engine 0.8.30 - 08/21/2022|22w33d1
  • ImGuiLayer Added SetInputEnabled() & IsInputEnabled()

  • ImGuiWindowing Added ImGuiConfigFlags_NoMouse checks

  • Cameras Added EditorCamera (arcball/flycam styles)

  • Renderer2D Added support for EditorCamera

  • Scene splitted OnUpdate() into OnUpdateRuntime() & OnUpdateEditor()

  • TRAP-Editor Added EditorCamera support

  • TRAP-Editor Disabled culling

  • Updated ModernDialogs submodule (fixed scene saving)

TRAP™ Engine 0.8.29 - 08/19/2022|22w33c2
  • Added ImGuizmo to dependencies

  • Added ImGuizmo premake script

  • Updated all premake scripts to use ImGuizmo

  • Scene Added GetPrimaryCameraEntity() (only temporary)

  • Math Added matrix decompose function

  • TRAP-Editor SceneGraphPanel Added GetSelectedEntity()

  • TRAP-Editor Added support for gizmos >30 mins

TRAP™ Engine 0.8.28 - 08/18/2022|22w33c1
  • Branch steamworks:

    • Update premake scripts to support Steamworks SDK

    • Application Added optional AppID parameter to constructor

    • SteamworksSDK Initialization, Shutdown and callbacks are now handled in Application

    • SteamworksSDK exposed SDK interfaces via TRAP::Utils::Steam

  • Merged branch steamworks

TRAP™ Engine 0.8.27 - 08/17/2022|22w33b1
  • Tests Added sprite sheets

  • Tests Added SpriteSheetTests

  • Renderer2D Fixed a crash while using nullptr SubTexture2D

TRAP™ Engine 0.8.26 - 08/16/2022|22w33a2
  • ParticleSystem2D Added dynamic particle limit

  • Renderer2D Fixed TextureSlotIndex not being reset on BeginScene()

  • Added SubTexture2D to make sprite sheets usable

  • Renderer2D Added ability to use SubTexture2D

  • Sandbox2D Added a test sprite sheet

  • Sandbox2D now uses sprite sheets

  • SubTexture2D Added ability to create from pixel coordinates directly

  • SubTexture2D Added name to class

  • Added SpriteManager to manage SubTexture2D objects

  • Sandbox2D now uses SpriteManager

  • ShaderManager and Shader now use TRAP::Ref (updated all programs)

  • TextureManager and Texture now use TRAP::Ref (updated all programs)

  • AntiAliasingTests adjusted scaling of quads

TRAP™ Engine 0.8.25 - 08/15/2022|22w33a1
  • RendererAPI/VulkanRenderer now saves shading rate state in GraphicsPipelineDesc

  • VulkanInits Added PipelineFragmentShadingRateStateCreateInfo()

  • VulkanPipeline Now uses shading rate state from GraphicsPipelineDesc

  • VulkanRenderer SetShadingRate() Added additional safety checks

  • Tests Added VRSTests

TRAP™ Engine 0.8.24 - 08/14/2022|22w32c3
  • ResourceLoader LoadTexture() Added support for already loaded images

  • Texture CreateFromImage() & CreateFromImages() now leverage the ResourceLoader

  • WindowingAPI Added WaitEvents() and PostEmptyEvent() functions

TRAP™ Engine 0.8.23 - 08/13/2022|22w32c2
  • SHA2 Made some functions constexpr

  • HeadlessTests Added HashTests

TRAP™ Engine 0.8.23 - 08/11/2022|22w32c2
  • Shader now automatically detects correct endianess for SPIRV files

  • Tests Added SPIRVTest (to test if ConvertToSPIRV utility works correctly)

  • ConvertToSPIRV Fixed MSVC compiler error

TRAP™ Engine 08/11/2022|22w32c1
  • ConvertToSPIRV Moved utilities into own file

  • ConvertToSPIRV Moved shader stuff into own file

  • ConvertToSPIRV Added support for custom output file names

  • ConvertToSPIRV Added support for custom macros

TRAP™ Engine 0.8.22 - 08/10/2022|22w32b1
  • Input Windows Fixed Xbox button press results hitting InputKey assert

  • Application Windows Fixed not calling Input::Init()

  • Renderer2D Added RendererAPI::ImageCount buffering

  • Renderer2D Fixed batch switching on texture slot exhaust

TRAP™ Engine 0.8.21 - 08/09/2022|22w32a2
  • Docs Linux Added required wayland packages

  • Utils Renamed ByteSwap.h to Memory.h

  • Shader Removed Convert8To32()

  • Utils Memory Added SwapBytes function for iterators

  • Utils Memory Added ConvertByte function and ConvertBytes for iterators

TRAP™ Engine 0.8.20 - 08/08/2022|22w32a1
  • Linux Enabled Xwayland support

  • Added macro to enable native Wayland support (disables use of Xwayland)

  • Branch wayland:

    • WindowingAPI Wayland Implemented PointerListener functions

    • WindowingAPI Wayland Implemented KeyboardListener functions

    • WindowingAPI Wayland Implemented OutputListener functions

    • WindowingAPI Wayland Implemented PlatformSetWindowMonitorWayland

    • WindowingAPI Now uses Xwayland by default (Wayland is still experimental)

TRAP™ Engine 0.8.20 - 08/07/2022|22w31c1
  • Branch wayland:

    • WindowingAPI Added support for Wayland functionality

    • Added Dependencies/Wayland folder

    • Premake Added Wayland protocol to C++ generation function

    • Updated all premake scripts

    • WindowingAPI Linux Moved KeySymToUnicode() from X11 to the shared header

    • WindowingAPI Data put X11 and Wayland stuff into their own structs

    • WindowingAPI InternalWindow/Cursor/Monitor put X11 and Wayland stuff into their own structs

    • WindowingAPI Wayland Implemented PlatformInitWayland

    • Updated all premake scripts to link against wayland-client, wayland-cursor and xkbcommon

    • WindowingAPI Wayland Implemented DataOfferListener & DataDeviceListener functions

TRAP™ Engine 0.8.20 - 08/06/2022|22w31c1
  • Branch wayland:

    • Application Removed Wayland check

TRAP™ Engine 0.8.19 - 08/05/2022|22w31b1
  • Fixed presentation failures when a swapchain resize was needed

  • DescriptorPool RetrieveDescriptorSet() now returns TRAP::Scope instead of raw pointer

  • Removed DescriptorSet.cpp

  • VulkanDescriptorPool now doesn’t save it’s allocated DescriptorSets anymore

  • VulkanShader now sets DescriptorSets as dirty when bound (they will be reused in RendererAPI::ImageCount frames)

  • Renderer2D reduced max number of textures per draw call from 4096 to 32

  • Renderer2D renamed FlushAndReset() to Reset()

  • Renderer2D Added ExtendBuffers() function which allocates buffers for another draw call

  • Renderer2D now allows up to 100000 quads with up to 32 different textures per draw call

  • Renderer2D now starts a new draw call when exceeding the current draw calls quad or texture limit

  • Renderer2D Removed ClearTextures() as it isn’t needed anymore

  • Fixed wrong descriptorCount usage in VkDescriptorSetLayoutBinding

  • Renderer2D Fixed artifacting because of non dynamically uniform array index value usage

  • Renderer Replaced UBO with SSBO for SceneData (+ updated all affected shaders)

TRAP™ Engine 0.8.18 - 08/03/2022|22w31a1
  • HeadlessTests Added IPAddressTests program

  • HTTP Fixed use of IPv6 when address is not valid

  • IPv4Address & IPv6Address Removed redundant null terminators from ToString()

  • Utils::HashCombine replaced recursion with fold expression

  • Moved Windows version checks from WindowingAPI to Utils

  • Utils Added IsWindows11BuildOrGreaterWin32()

  • Windows WindowingAPI now honors dark/light mode for window decorations on Windows 10/11

  • Application Added setter and getter for FPS limiter

TRAP™ Engine 0.8.17 - 07/31/2022|22w30a2
  • WindowingAPI Added asserts for using wrong thread in main thread only functions

  • WindowingAPI X11 WM_NORMAL_HINTS now doesn’t update the whole property when updating size-related parts

  • Window now doesnt send a FrameBufferResizeEvent when width or height is 0

  • ResourceLoader Fixed usage of a destroyed TRAP::Scope when converting RGB to RGBA

  • MathTests Removed the empty swizzle functions

TRAP™ Engine 0.8.16 - 07/30/2022|22w30a1
  • Replaced some asserts & TRAP_ASSERTs with static_assert

  • Replaced some template specializations with constexpr if

  • ByteSwap replaced “bit magic” (potential UB) with casting and reverse copy

TRAP™ Engine 0.8.15 - 07/23/2022|22w29b3
  • Fixed a crash in AntiAliasingTests (usage of MSAA and SampleCount 1 loaded from engine.cfg)

  • Moved MSAAResolvePass ResourceState::Present layout transitions to StartGraphicRecording/EndGraphicRecording

  • FrameBufferTests Added support for anti aliasing

  • Fixed Windows not creating main window

  • Moved CreateUTF8StringFromWideStringWin32() & CreateWideStringFromUTF8StringWin32() from WindowingAPI to TRAP::Utils::String

  • String GetStrError() Added support for WinAPI errors

  • Fixed Windows unresponsive windows

  • WindowingAPI TaskbarList3 is now properly implemented

TRAP™ Engine 0.8.14 - 07/22/2022|22w29b2
  • Made the anti aliasing settings now apply to the whole renderer (before was per window)

  • Application now sets anti aliasing on RendererAPI init instead of afterwards

  • FrameBufferTests Worked on adding support for anti aliasing

TRAP™ Engine 0.8.13 - 07/21/2022|22w29b1
  • Merged STL branch

  • GitHub Actions reduced compile time for Linux

  • Fixed bugs in CursorTests which where introduced by 725ccfa54eb0faa32e499fe1595d03858f29947f (0.8.5)

  • Fixed MultiWindowTests crash when closing the child window

  • FTP Fixed casting which resulted in wrong port usage

  • WindowFeaturesTests Fixed unable to disable max window size constraint

TRAP™ Engine 07/20/2022|22w29a3
  • Branch STL:

    • Checked for const correctness

    • Memory::SwapBytes() Added safety against const and non ref values

    • Moved Utils::GetStrError() to Utils::String::GetStrError()

    • Utils::String::ConvertToString() Added Utils::LinuxWindowManager overload

    • Utils::String::ConvertToType() Added Utils::LinuxWindowManager overload

TRAP™ Engine 07/19/2022|22w29a2
  • Branch STL:

    • Replaced const std::string& with const std::string_view where possible

    • Replaced const char* with const std::string_view where possible

    • Removed String::FindToken()

    • Removed WindowingAPI::StringInExtensionString()

    • Removed std:: from getenv

TRAP™ Engine 07/18/2022|22w29a1
  • Branch STL:

    • Replaced TRAP::FS with TRAP::FileSystem

    • Renamed FS.h/FS.cpp to FileSystem.h/FileSystem.cpp

    • Renamed src/FS folder to src/FileSystem

    • Replaced generic_u8string() with u8string()

    • Utilize std::filesystem::file_size more

TRAP™ Engine 07/17/2022|22w28b4
  • Branch STL:

    • Replaced reinterpret_cast with Utils::BitCast in various files

    • Removed std:: from memcpy

    • Replaced memcpy with std::copy or std::copy_n

    • Removed std:: from memset

    • Removed/Replaced memset where possible

    • Replaced remaining memset calls with std::fill or std::fill_n

TRAP™ Engine 07/16/2022|22w28b3
  • Branch STL:

    • TRAP_Assert Removed type from macros

    • TRAP_Assert Made path to file absolute

    • Utils backported C++20s std::bitcast

    • Application CheckSingleProcessLinux() now uses Utils::BitCast instead of reinterpret_cast

    • Vulkan every VkSetObjectName() call now uses Utils::BitCast instead of reinterpret_cast

    • Renderer2D EndScene() Removed reinterpret_cast from vertex data size calculation

TRAP™ Engine 07/15/2022|22w28b2
  • Branch STL:

    • Replaced reinterpret_cast with static_cast where possible

TRAP™ Engine 0.8.12 - 07/14/2022|22w28b1
  • Branch STL:

    • Base Removed unnecessary static_casts

    • Events GetName() replaced const char* with std::string

    • Events Made GetStaticType() constexpr

    • EventDispatcher Made constructor and Dispatch() constexpr

    • EventCategory Made operators constexpr

    • FileChangeEvent FileStatusToString() now throws invalid_argument if enum value isn’t valid

    • Made some functions constexpr in

      • FileChangeEvent

      • TextureReloadEvent

      • ShaderReloadEvent

      • KeyEvent

      • KeyPressEvent

      • KeyReleaseEvent

      • KeyTypeEvent

      • MouseMoveEvent

      • MouseScrollEvent

      • MouseButtonEvent

      • MouseButtonPressEvent

      • MouseButtonReleaseEvent

      • MouseEnterEvent

      • MouseLeaveEvent

      • WindowResizeEvent

      • WindowMinimizeEvent

      • WindowMaximizeEvent

      • WindowRestoreEvent

      • WindowCloseEvent

      • WindowMoveEvent

      • WindowFocusEvent

      • WindowLostFocusEvent

      • WindowDropEvent

      • WindowContentScaleEvent

      • FrameBufferResizeEvent

    • FileSystem Made some functions constexpr

    • FileSystem Added std::optional to some functions

    • FileSystem Added GetGameLogFolderPath() function

    • FileWatcher unified WatchWindows() and WatchLinux into Watch()

    • FileWatcher Made m_run thread safe

    • FileWatcher Removed SkipNextFileChange()

    • Updated all files to support the aforementioned changes

    • VulkanRenderer replaced unordered_map inserts with try_emplace

    • ImGuiLayer Pipeline cache Added fallback path

    • Monitor::VideoMode Made constructor constexpr

    • Monitor Added rule of 5

    • Monitor Made GetCurrentVideoMode(), IsInUse() and GetInternalMonitor() constexpr

    • AftermathTracker Replaced memcpy with std::copy_n

    • Application OnFileChange event now always returns false i.e. passes the event on to other callbacks

    • Application Added fallback paths for engine.cfg and trap.log

    • Updated Application

    • Updated ControllerTests

TRAP™ Engine 0.8.11 - 07/12/2022|22w28a1
  • TRAP-Headless Fixed crash when using RenderAPI::NONE (Application::Run() tried to present)

  • TestNetwork now uses TRAP-Headless

  • WindowingAPI Windows Fixed right shift key when using CJK IME

  • VulkanPhysicalDevice now rates max MSAA sample count

  • Shader Removed CreateFromFile redundancy

  • Base Added ENABLE_SINGLE_PROCESS_ONLY macro which makes the engine only run a single instance of itself

    • Added error code 0x0012 “A TRAP Application is already running”

  • Application Implemented the checks for ENABLE_SINGLE_PROCESS_ONLY

TRAP™ Engine 0.8.10 - 07/10/2022|22w27c1
  • Updated VulkanLoader

  • VulkanLoader Added ability to be included in multiple files

  • Replaced #include <vulkan/vulkan.h> with VulkanLoader.h

TRAP™ Engine 0.8.9 - 07/07/2022|22w27b1
  • Updated Networking

  • Moved Linux only includes from TRAPPCH.h into Utils/Linux.h

  • Moved Windows only includes from TRAPPCH.h into Utils/Win.h

  • Removed TRAPPCH.h include from ImGuiLayer.h (this affected a lot of files)

TRAP™ Engine 07/07/2022|22w27a3
  • Branch MSAA:

    • Added sample shading to MSAA if supported

    • Removed SSAA stuff

    • Fixed screenshot capturing when using MSAA

    • HeadlessTests Added AntiAliasing test

    • VulkanRenderer/Embed Removed MSAA resolve shaders

    • VulkanCommandBuffer Added ResolveImage function to resolve MSAA images into non MSAA images

    • VulkanInits Added VK_IMAGE_USAGE_TRANSFER_DST_BIT to SwapChainCreateInfoKHR

    • VulkanRenderer replaced manual MSAA resolve shaders with vkCmdResolveImage

    • VulkanRenderer made MSAAResolvePass function compatible with Headless mode

  • Merged MSAA into dev

TRAP™ Engine 07/06/2022|22w27a2
  • AftermathTracker Fixed unable to save crash dump

  • Branch MSAA:

    • Embed Added MSAAResolveShader

    • (Vulkan)SwapChain Added additional RenderTargets for MSAA

    • RendererAPI Fixed SampleCount enum

    • RendererAPI Added SampleCount to SwapChainDesc

    • RendererAPI PerWindowData Added SampleCount (currently hardcoded to 8x MSAA)

    • VulkanRenderer Added MSAA resolve shaders for 2x, 4x, 8x and 16x MSAA

    • VulkanRenderer Added MSAAResolvePass function

    • ImGuiLayer now uses SampleCount from PerWindowData

    • SwapChain Removed GetRenderTargetsNonMSAA() & GetRenderTargetsMSAAResolve

    • SwapChain Added GetRenderTargetsMSAA()

    • RendererAPI, VulkanRenderer & ImGuiLayer Updated GetRenderTargets usage

    • RendererAPI Added AntiAliasing enum

    • (Vulkan)SwapChain Added SetSampleCount function

    • RenderCommand/RendererAPI Added SetAntiAliasing function <10 mins

    • ImGuiVulkanBackend Added ImGui_ImplVulkan_SetMSAASamples function

    • ImGuiLayer Added SetMSAASamples function

    • Updated AntiAliasing test

    • RendererAPI Renamed SampleCount enum values

    • VulkanRenderer Added missing destruction of the MSAA resolve shaders

    • VulkanRenderer Fixed using wrong resolve shader

    • AntiAliasing test Added option to set anti aliasing method and sample count

    • RendererAPI/VulkanRenderer Added GetAntiAliasing function

    • ConvertToType/ConvertToString Added specialization for AntiAliasing and SampleCount enums

    • Application Added saving and loading of AntiAliasing and AntiAliasingQuality values

TRAP™ Engine 0.8.8 - 07/05/2022|22w27a1
  • Fixed WindowingAPI::InputKey not processing keys correctly

  • Branch MSAA:

    • Tests Added AntiAliasing test

TRAP™ Engine 07/04/2022|22w27a1
  • Docs Added changelog page generator

TRAP™ Engine 0.8.7 - 07/03/2022|22w26c1
  • RendererAPI GPUSettings Added MaxMSAASampleCount

  • VulkanPhysicalDevice now sets max supported MSAA sample count

TRAP™ Engine 0.8.6 - 06/30/2022|22w26b2
  • KeyEvent Moved NonPrintableKeyToString to Input (silenced error in TRAP::Input::GetKeyName)

  • Input Added KeyState enum

  • WindowingAPI now uses the TRAP::Input::KeyState instead of plain bools

  • WindowingAPI now also emits KeyState::Repeat in key callback (only in key callback!)

  • Updated Window

  • Updated ImGuiWindowing

TRAP™ Engine 0.8.5 - 06/29/2022|22w26b1
  • Updated ImGui submodule

  • ImGui Disabled usage of obsolete functions

  • Input Added MAKE_ENUM_FLAG for ControllerDPad enum

  • Updated ImGuiLayer

  • Updated ImGuiVulkanBackend

  • ImGuiWindowing complete overhaul

TRAP™ Engine 0.8.4 - 06/28/2022|22w26a2
  • Texture Added virtual Shutdown function

  • Texture Added Reload function to reload texture without needing to reconstruct it

  • Texture Fixed HotReloading paths not getting added

  • TextureManager now uses Textures Reload function instead of destructing/constructing

TRAP™ Engine 0.8.3 - 06/27/2022|22w26a1
  • Removed DummyShader

  • Shader Removed the CreateFromFile function used by HotReloading

  • Shader Added Reload function to reload shader without needing to reconstruct it

  • Shader Added IsShaderValid function

  • (Vulkan)Shader Made GetNumThreadsPerGroup virtual

  • (Vulkan)Shader Added virtual Init and Shutdown functions to reduce code redundancy

  • Shader updated other constructors accordingly

  • VulkanShader Added two new constructors

  • ShaderManager now uses Shaders Reload function instead of destructing/constructing

  • VulkanRenderer BindShader now detects invalid shaders and applies the correct fallback

TRAP™ Engine 0.8.2 - 06/25/2022|22w25a2
  • Docs Added difference between normal and headless mode on getting started page

  • README Added Build-CI status badge

  • Removed the temporary Exhale bug fix (problems with operators containing ‘<’ or ‘>’)

  • Added ToString functions to Math classes (Vec, Mat & Quat)

  • Added templates for Math classes on output stream operator so they use x.ToString function

TRAP™ Engine 06/23/2022|22w25a1
  • Updated compile_commands.json generator

TRAP™ Engine 0.8.1 - 06/20/2022|22w25a1
  • Added GitHub Actions workflow to build docs

  • Updated the GitHub Actions docs workflow

  • Added ability to use Headless in a WindowManager-less environment

TRAP™ Engine 0.8.0 - 06/19/2022|22w24b1
  • Added Build CI

  • Windows Added missing links for networking

  • TestNetwork Fixed Windows postbuildcommand not copying DiscordGameSDK dll

  • Math Fixed Abs for Vectors not being able to compile in constexpr context

  • ConvertToSPIRV Fixed Linux missing libraries

TRAP™ Engine 06/17/2022|22w24
  • Changed License now using the TRAP™ Engine EULA (modified Apache 2)

  • Docs Fixed doxygen warnings

  • Docs now use Breathe + Exhale to generate a good looking API reference

  • Docs Removed old reference page

  • Updated README

  • Moved MathTests to HeadlessTests

  • Brought TRAP back to GitHub

TRAP™ Engine 0.7.152 - 06/16/2022|22w24a2
  • Mat3, Mat4, Vec2, Vec3, Vec4 & Quaternion Added ToString functions

  • Math Renamed Quaternion to Quat

  • Docs Added automatic TRAP version updating on build

  • Docs Replaced ReadTheDocs theme with Fora

  • Docs Added 3 new extensions | Updated generatedocs.lua

  • Docs converted reST files to MyST

  • Math Fixed compiler error on MSVC

  • Added needed Windows redists

TRAP™ Engine 0.7.151 - 06/15/2022|22w24a1
  • Fixed Math bugs:

    • Mat3 & Mat4 Removed explicit on conversion constructors

    • Mat3 & Mat4 Fixed Length returning false value

    • Mat4 Fixed + operator

    • Quaternion Fixed an uncompilable constructor

    • Vec2, Vec3 & Vec4 Removed all Vec<1, X> stuff

    • Made some functions constexpr

    • Added Equal, NotEqual, GreaterThan, GreaterThanEqual, LessThan, LessThanEqual, Not functions for scalars

    • Fixed FrExp constant output variable

    • Removed all ULP stuff

    • Added Row & Column functions to retrieve rows and columns from matrices

    • Fixed some functions not compiling in constexpr context

    • Fixed other minor bugs

  • Tests Added MathTests

TRAP™ Engine 0.7.150 - 06/11/2022|22w23c1
  • Window Added GetPosition function

  • Window Added GetFrameBufferSize, SetPosition, IsHovered functions

  • Tests Added WindowFeaturesTests

TRAP™ Engine 0.7.149 - 06/10/2022|22w23b2
  • WindowingAPI Added some asserts

  • WindowingAPI Win32 Seperated helper window code from normal windows

  • Updated all submodules

  • Updated Vulkan loader

  • Updated Controller mappings

  • HotReloading now preserves used shader macros on reload

  • Tests Added InputLagTests

TRAP™ Engine 0.7.148 - 06/08/2022|22w23b1
  • Config Added ability to append new values to existing config files on save

TRAP™ Engine 0.7.147 - 06/07/2022|22w23a2
  • Texture Fixed a compiler error on MSVC

  • RendererAPI Made GetMainWindowData return a non-const reference (const reference before)

  • ComputeTests Now only executes Compute shader once and reuses the resulting texture

  • Headless disabled generation of Documents/TRAP/GameName/logs folder

  • Headless ComputeTest now also executes Compute shader only once

  • Merged compute-shader branch into master

TRAP™ Engine 0.7.146 - 06/06/2022|22w23a1
  • Renamed VulkanComputeTests to ComputeTests

  • Fixed Vulkan threading error (threads using graphics queue simultaneously)

  • RenderCommand & RendererAPI Added StartRenderPass and StopRenderPass functions

  • Texture switched format to R8G8B8A8_UNORM

  • VulkanRenderer switched surface format to B8G8R8A8_SRGB

  • Headless Added ComputeTest

  • Fixed TRAP-Editor crashing

  • Fixed FrameBufferTests crashing

  • Tested if Compute works when using a Graphics Queue (can be the case on some GPUs)

TRAP™ Engine 0.7.145 - 06/04/2022|22w22b2
  • Texture Added ability to provide additional flags (like Storage for storage images)

  • RenderCommand Added Dispatch and Transition functions

  • Updated VulkanComputeTests

  • VulkanComputeTests Added push constant test

  • Embed Added a fallback compute shader

  • Added HotReloading support for Compute shader

TRAP™ Engine 0.7.144 - 06/03/2022|22w22b1
  • Removed TextureBase, Texture2D & TextureCube

  • Texture class now combines TextureBase + Texture2D & TextureCube functionality

  • VulkanTexture is now derived from Texture directly

  • Updated everything that used TextureBase, Texture2D and TextureCube

  • Added TRAP::FileSystem alias for TRAP::FS

  • Updated VulkanComputeTests

  • RendererAPI Added ability to specify QueueType on some functions

TRAP™ Engine 0.7.143 - 06/01/2022|22w22a1
  • Added a test program for compute shaders (VulkanComputeTests)

  • VulkanComputeTests Added edge detection, sharpen and emboss compute shaders (source from SaschaWillems)

  • RendererAPI Added Dispatch and Transition functions

  • RendererAPI PerWindowData Added Compute stuff

  • RendererAPI Added GetTransferQueue function

  • VulkanInits SubmitInfo Added waitCount and signalCount parameters

  • VulkanShader Changed Use*** functions

  • VulkanRenderer Added StartComputeRecording & EndComputeRecording functions

  • VulkanRenderer Fixed a compile time macro

  • VulkanPhysicalDevice RatePhysicalDevice Fixed a bug (didn’t use same VkInstance used to enumerate physical devices)

  • VulkanPhysicalDevice RatePhysicalDevice Removed the VkInstance check

TRAP™ Engine 0.7.142 - 05/26/2022|22w21a2
  • Linux moved *.so files to output application folder

  • DiscordGameSDK Compatibility.lua now renames the discord_game_sdk.so to libdiscord_game_sdk.so

  • Premake Linux Added runpaths for the *.so dependencies (this allows building in non-root envs)

  • MSVC Discord Game SDK silenced all warnings

  • MSVC Vulkan Memory Allocator silenced all warnings

TRAP™ Engine 0.7.141 - 05/25/2022|22w21a2
  • Renamed VulkanFrameBufferTests to FrameBufferTests

  • Renamed VulkanMultiWindowTests to MultiWindowTests

  • Renamed VulkanIcoSphereTests to IcoSphereTests

  • Renamed VulkanTests to RendererAPITests

  • Added missing QOI License for QOIConv

  • Changed all premake files to use staticruntime “off”

  • Some small premake improvements

TRAP™ Engine 0.7.140 - 05/24/2022|22w21a1
  • Fixed an issue which leads to the render targets artifacting (StoreColorActions was set to DontCare instead of Store for the swapchain)

TRAP™ Engine 0.7.139 - 05/18/2022|22w20a1
  • Vulkan implemented Variable Rate Shading (VRS) support

TRAP™ Engine 0.7.138 - 05/15/2022|22w19b1
  • Utils String Added (Date)Timestamp to string functions

  • PNG Removed unused tIMECheck function

TRAP™ Engine 0.7.137 - 05/14/2022|22w19a2
  • Replaced typedefs with usings

  • Mat3/4 Made operator overloads constexpr

  • AftermathTracker Added D3D12 support (disabled as D3D12 isnt implemented)

  • Made AftermathTracker a namespace

  • Commented AftermathTracker

  • Moved the dynamic library loading functions from WindowingAPI to Utils

TRAP™ Engine 0.7.136 - 05/13/2022|22w19a1
  • Added optional support for NVIDIA Nsight Aftermath

  • Added AftermathTracker class

TRAP™ Engine 0.7.135 - 05/08/2022|22w18d1
  • VulkanDebug Added support for the older Debug Report extension (Android compatibility)

  • Vulkan Added support for GPU based validation (enabled via macro, off by default)

  • Vulkan progress on HDR support

  • Lowered auto generated shader code SPIR-V version to 1.4 (1.5 before)

  • Vulkan lowered required version to Vulkan 1.1 (Android compatibility)

  • Vulkan Updated device rating

  • Vulkan Added support for texture import/export from/to other processes

  • Vulkan Added support for lazy texture allocation

  • Vulkan Added store actions for render targets

  • RendererAPI Added optional ability to set a lod range

  • Updated VulkanLoader

TRAP™ Engine 0.7.134 - 05/06/2022|22w18c1
  • WindowingAPI Added ability to set progress state & value on taskbar on Windows

  • VulkanDevice Added device name for debugging tools (RenderDoc)

  • VulkanQueue Added queue type name for debugging tools (RenderDoc)

  • VulkanShader Added shader name + type for debugging tools (RenderDoc)

  • WindowingAPI Removed IsWindowsVistraOrGreaterWin32() as TRAP uses Windows 7 as minimum reqs

TRAP™ Engine 0.7.133 - 05/05/2022|22w18b1
  • SPIRVTools Made CrossCompiler a class

TRAP™ Engine 0.7.132 - 05/04/2022|22w18a2
  • Tests Added RendererAPIInfo program

TRAP™ Engine 0.7.131 - 05/03/2022|22w18a1
  • Small code cleanup

  • Made TextureManager & ShaderManager a namespace

  • ShaderManager & TextureManager now return the onwed pointer when using Remove()

  • Added forwarding of console args

TRAP™ Engine 0.7.130 - 05/01/2022|22w17c1
  • Application cleaned up Main Window creation

  • Corrected memory model (only use smart pointers when we care about ownership, else use raw pointers)

  • Removed window parameter from OrthographicCameraController

TRAP™ Engine 0.7.129 - 04/30/2022|22w17b3
  • Small WindowingAPI updates

  • Moved some class-members from heap onto stack

  • Corrected some unique_ptrs used as TRAP::Scope

TRAP™ Engine 0.7.128 - 04/29/2022|22w17b2
  • Updated Networking

TRAP™ Engine 0.7.127 - 04/28/2022|22w17b1
  • ImageLoader Added support for QOI

  • Added QOIConv to convert PNG<->QOI

  • Tests ImageLoader test Added QOI tests

  • Optimized PNG loading (removed unused chunks loading/validation)

TRAP™ Engine 0.7.126 - 04/26/2022|22w17a2
  • Documented code

TRAP™ Engine 0.7.125 - 04/25/2022|22w17a1
  • Documented code

TRAP™ Engine 0.7.124 - 04/24/2022|22w16a2
  • Documented code

TRAP™ Engine 0.7.123 - 04/19/2022|22w16a1
  • Documented code

TRAP™ Engine 0.7.122 - 04/16/2022|22w15a3
  • Documented code

TRAP™ Engine 0.7.121 - 04/14/2022|22w15a2
  • Documented code

TRAP™ Engine 0.7.120 - 04/12/2022|22w15a1
  • Moved RendererAPI Shutdown to Application destructor

  • Added std::hash overloads for Vec2,3,4 & Mat3,4

  • Math Added conversion functions for RGB to HSV & reverse

  • Math Added conversion functions for sRGB to linear & reverse

  • Applied rule of zero to some classes

  • Config renamed IsChanged to HasChanged

  • Config Moved ConvertToType & ConvertToString to TRAP::Utils

  • String Removed unused functions

  • Documented code

TRAP™ Engine 0.7.119 - 04/05/2022|22w14a1
  • Updated WindowingAPI documentation

  • WindowingAPI got rid of X11 linker dependency

TRAP™ Engine 0.7.118 - 04/03/2022|22w13a2
  • More clang-tidy cleanup

TRAP™ Engine 0.7.117 - 03/31/2022|22w13a1
  • Updated WindowingAPI::GetVulkanResultString

  • Fixed Windows YAMLCpp linker errors

TRAP™ Engine 0.7.116 - 03/27/2022|22w12b3
  • Fixed many clang-tidy warnings

TRAP™ Engine 0.7.115 - 03/26/2022|22w12b2
  • Premake Added script to create a compile_commands.json for clang-tidy

TRAP™ Engine 0.7.114 - 03/24/2022|22w12b1
  • Resolved clang-tidy warnings in Games/

TRAP™ Engine 0.7.113 - 03/22/2022|22w12a1
  • Updated WindowingAPI

TRAP™ Engine 0.7.112 - 03/16/2022|22w11b1
  • Updated Dependencies

TRAP™ Engine 0.7.111 - 03/14/2022|22w11a1
  • Headless Added assert in RendererAPI::GetRenderer() for RenderAPI::NONE

  • Small bugfixes in Window Destructor and RendererAPI::IsVulkanCapable

  • Made EnableGPU True by default if not engine.cfg exists

TRAP™ Engine 0.7.110 - 03/12/2022|22w10b1
  • RenderCommand Added CaptureScreenshot

  • RenderCommand Added SetResolution (only available in Headless mode)

  • Renderer Added recreation of RenderTargets on resolution change (Headless mode)

  • HeadlessTests now captures a screenshot before and after a resolution change

TRAP™ Engine 0.7.109 - 03/10/2022|22w10a1
  • ImageFormat Added ImageFormatIsFloat

  • VulkanInits Added VkBufferImageCopy initializer

  • CaptureScreenshot now also works with HDR/Float32 images

  • CaptureScreenshot now also works with uint16_t images

TRAP™ Engine 0.7.108 - 03/06/2022|22w09a1
  • Moved Headless-Tests into own project

  • Headless Added EnableGPU option to engine.cfg

  • Headless disabled ImGui

  • Headless Added offline rendering

  • PPMImage Added ability to save image to disk (EXPERIMENTAL)

  • Headless various small bug fixes

  • Added RendererAPI::CaptureScreenshot to make screenshot of the last frame

  • Added ScreenshotTest to Tests project

TRAP™ Engine 0.7.107 - 02/22/2022|22w08a1
  • Added WIP Headless mode (TRAP-Headless)

  • Relaxed RenderAPI requirements for Vulkan when using Headless mode

  • Added Headless-Tests project

  • Removed Headless RenderAPI

  • Relaxed IsVulkanCapable checks when using Headless mode

  • Config Added “NONE” RenderAPI to ConvertToString/Type

  • Added SIGINT capture routines for Headless mode to capture CTRL+C & [X] button closes to normally shutdown

  • Made Log & Config paths local to executable in Headless mode

  • Allowed using RenderAPI::NONE when using Headless mode

  • Renderers now get correctly shutdown when using Headless mode

TRAP™ Engine 0.7.106 - 01/26/2022|22w04b1
  • Updated VulkanLoader to Vulkan 1.3

  • Updated README

  • Cleaned up Dependencies premake scripts

  • Made big portion of VulkanCommon constexpr

TRAP™ Engine 0.7.105 - 01/25/2022|22w04a2
  • Fixed Windows (MSVC) compiling

TRAP™ Engine 0.7.104 - 01/24/2022|22w04a1
  • Updated GLSLang / Now using upstream GLSLang

  • Updated SPIRV-Cross / Now using upstream SPIRV-Cross

  • Updated GLSLang premake5 script

  • Updated EnTT premake5 script (now compiles lib)

  • Updated Vulkan loader

  • Updated Controller mappings

  • Updated zlib inflate algorithm (PNG)

  • Added FileSystem tests for opening file/folder or externally

TRAP™ Engine 0.7.103 - 01/23/2022|22w03a1
  • Updated VulkanMemoryAllocator

  • Made VulkanMemoryAllocator a submodule

  • Updated EnTT / Made EnTT a submodule

  • Updated Licenses

  • Updated ImGui / Now using upstream ImGui

  • Updated YAMLCpp / Now using upstream YAMLCpp

TRAP™ Engine 0.7.102 - 01/10/2022|22w02a1
  • Simplified Shader functions

2021
TRAP™ Engine 0.7.101 - 12/30/2021|21w52a1
  • Moved imgui.ini files to documents/game folder

  • Vulkan SwapChain recreation fixed InvalidImageLayout errors

TRAP™ Engine 0.7.100 - 12/25/2021|21w51a3
  • Simplified ConvertToSPIRV code

  • Updated ConvertToSPIRV

  • FS Added more utility functions

  • FS Added OpenFolderInFileBrowser, OpenFileInFileBrower, OpenExternally

TRAP™ Engine 0.7.99 - 12/22/2021|21w51a2
  • Fixed ImGui not binding RenderTarget if no RenderPass is running

  • Updated TRAP-Editor to use RenderTarget for viewport rendering

  • Renderer2D Fixed DrawQuad(Mat4, Vec4, Scope<Texture2D>) using wrong texture index for nullptr textures

  • TRAP-Editor Added clearing of viewport render target

TRAP™ Engine 0.7.99 - 12/20/2021|21w51a1
  • CommandBuffer Changed ResourceBarrier

  • RenderCommand Added BufferBarrier, TextureBarrier & RenderTargetBarrier

  • VulkanFrameBufferTests now uses RenderCommand::RenderTargetBarrier

  • RenderCommand Added non-vector versions of BufferBarrier, TextureBarrier & RenderTargetBarrier

TRAP™ Engine 0.7.99 - 12/19/2021|21w50a1
  • RenderTarget Removed unnecessary virtual functions

  • Removed VulkanFrameBuffer & FrameBuffer

  • ImGuiLayer Added ImGui::Image support for TextureBase

  • VulkanTextureTests Removed unused shader macro

  • Added VulkanFrameBufferTests

  • RenderCommand Added BindRenderTarget(s)

TRAP™ Engine 0.7.99 - 12/05/2021|21w48a4
  • Fixed hot shader reloading not updating shader without pipeline recreation

    • Pipeline recreation now forced by binding fallback shader

TRAP™ Engine 0.7.98 - 12/04/2021|21w48a3
  • Application Added event listener for OnFileChange events

  • Shader Added SupportedShaderFormatSuffixes

  • HotReloading FileWatcher Added tracking of Shaders and Textures

  • Application Removed old ProcessHotReloading function

  • Application Updated UpdateHotReloading function

  • Hot Texture Reloading fully working now!

  • Hot Shader Reloading fully working now!

TRAP™ Engine 0.7.98 - 12/01/2021|21w48a2
  • Converted FS class to namespace

  • Moved TRAP::FileWatcher to TRAP::FS::FileWatcher

  • FS Removed some deprecated functions related to hot reloading

  • Application Added GetHotReloadingFileWatcher, IsHotReloadingEnabled & SetHotReloading

  • FS Added IsPathAbsolute, IsPathRelative, ToAbsolutePath & ToRelativePath

  • FileWatcher now uses absolute paths internally

TRAP™ Engine 0.7.98 - 11/29/2021|21w48a1
  • FileSystem now uses std::error_code instead of try/catch

  • ByteSwap Fixed float & double strict aliasing violation

  • Log Added maybe_unused to TP_DEBUG

  • Linux FileWatcher Shutdown Added checks for write syscall

TRAP™ Engine 0.7.98 - 11/28/2021|21w47a2
  • ResourceLoader Replaced volatile int32_t with std::atomic<bool>

  • Removed some mutexes as they were unused (Concurrency will be reworked)

TRAP™ Engine 0.7.98 - 11/27/2021|21w47a1
  • Better utilization of std::string_view

TRAP™ Engine 0.7.98 - 11/21/2021|21w46b1
  • Removed old VFS FileWatcher

  • Added new FS FileWatcher

  • Added FileChangeEvent

  • FS FileWatcher is now fully event-based

TRAP™ Engine 0.7.98 - 11/17/2021|21w46a2
  • Linux X11 WindowingAPI Fixed multiple issues caused by wrong data types

  • Removed temporary Linux X11 workaround for window maximization via WindowProps

TRAP™ Engine 0.7.98 - 11/15/2021|21w46a1
  • Linux FS Documents folder now gets retrieved via XDG

TRAP™ Engine 0.7.98 - 11/14/2021|21w45b1
  • Windows Fixed GetDocumentsFolderPath returning an extra null byte

  • FS Added GetFolderPath to retrieve the folders from a file path

  • Windows Fixed saving of trap.log

  • Changed log date-time stamps to use YYYY-MM-DDTHH-MM-SS

  • Windows Fixed exclusive fullscreen crashing because of mode switching

TRAP™ Engine 0.7.98 - 11/11/2021|21w45a1
  • Updated Controller mappings

  • Updated Vulkan loader

  • New File System implementation

  • Complete engine now uses new File System

  • Disabled HotReloading systems until FileWatcher rewrite

  • Updated all Games

  • Moved Engine.cfg to Documents/TRAP/<GameName>/engine.cfg

  • Fixed some issues with TRAP.Log having wrong encoding

  • Moved TRAP.Log to Documents/TRAP/<GameName>/logs/trap-YYYY-MM-DDTHH:MM:SS.log

TRAP™ Engine 0.7.97 - 11/07/2021|21w44b1
  • HotTextureReloading now works correctly again

  • Renderer2D Added support for HotTextureReloading

  • FileWatcher Changed minimum check delay from 50ms to 500ms

  • TextureManager Reload functions now return reloaded texture

  • Added TextureReload event for hot reloaded textures

  • ShaderManager Reload functions now return reloaded shader

  • Added ShaderReload event for hot reloaded shaders

  • Sandbox2D now uses new TextureReload event

  • Sandbox2D now uses new ShaderReload event

  • Removed unused App events

TRAP™ Engine 0.7.96 - 11/07/2021|21w44a4
  • Vulkan Added max sampler allocation validation

  • Vulkan Added check for minimum support of 4 simultaneously bound descriptor sets

  • Vulkan Added check for maximum tessellation patch size

  • Discord Game SDK Added automatic reconnect on error/not running

TRAP™ Engine 0.7.95 - 11/06/2021|21w44a3
  • Vulkan typedef pointer types are now returned by value

  • Updated Premake to 5.0-beta1

  • Added support for Visual Studio 2022 project generation

TRAP™ Engine 0.7.94 - 11/02/2021|21w44a2
  • Fixed Wreserved-id-macro messages

TRAP™ Engine 0.7.93 - 11/01/2021|21w44a1
  • Shader Reflection Changed size types to uint64_t

  • Vertex/IndexBuffer Changed GetCount to return uint32_t

  • Tests fixed warnings

  • Windows again disabled min and max macros

  • Corrected for loop data types

  • GCC suppressed warnings from VulkanMemoryAllocator

  • Static code analysis

TRAP™ Engine 0.7.92 - 10/23/2021|21w42a1
  • Fixed a small bug in ImGuiWindowing::NewFrame which could cause a crash after some time

  • Added GetDiscordCore in DiscordGameSDK

TRAP™ Engine 0.7.91 - 10/16/2021|21w41a2
  • Added Drop-In support for the Discord Game SDK

  • Added simple wrapper for Discord Game SDK

  • Added activity wrapper for Discord Game SDK

  • Window Added check for minimum supported width & height at window creation

TRAP™ Engine 0.7.90 - 10/12/2021|21w41a1
  • Rule of five everywhere

  • Linux X11 workaround for window maximization via WindowProps

  • Fixed a bug which resulted in error code 0x0002

TRAP™ Engine 0.7.89 - 10/03/2021|21w39a2
  • Made ImGui custom font loading Vulkan compatible

  • Config Added support for Headless RenderAPI

  • Removed runtime RenderAPI switching

  • Implemented error codes for user visible critical error dialogs

TRAP™ Engine 0.7.88 - 09/28/2021|21w39a1
  • Renderer2D Fixed a bug when using Textures

TRAP™ Engine 0.7.87 - 09/25/2021|21w38a2
  • RendererAPI & RendererCommand Added DrawInstanced & DrawIndexedInstanced

  • Added Vulkan extension VK_KHR_shader_draw_parameters

  • StorageBuffer Removed IsWritable function

  • Made StorageBuffer always Mapped

  • Renderer Now uses StorageBuffers for ModelMatrices

  • Renderer Now uses DrawInstanced & DrawIndexedInstanced to leverage gl_BaseInstance as an index for the ModelMatrices StorageBuffer

  • Updated all Shaders to use StorageBuffers for ModelMatrices

  • Tests Removed TestTexture Shader

  • Renderer Removed ModelMatrices UniformBuffer

TRAP™ Engine 0.7.86 - 09/22/2021|21w38a1
  • Shader Changed binding of UBOs

  • Updated all UBO binding calls

  • Added StorageBuffer (SSBO) class

  • Shader Added UseSSBO function

  • Added UniformBuffer CalculateAlignedSize function

  • Added StorageBuffer CalculateAlignedSize function

TRAP™ Engine 0.7.85 - 09/19/2021|21w37a5
  • Added new Vulkan ImGui backend with Texture support

  • ImGui Added helper function for Texture drawing

TRAP™ Engine 0.7.84 - 09/18/2021|21w37a4
  • Removed OnMouseScroll Controller check from OrthographicCameraController

  • RendererAPI Added GetCurrentImageIndex function

  • VulkanShader Changed updating of dynamic resources

  • Renderer2D corrected UV coordinates

  • Renderer2D Upped Quad limit to 1 million

TRAP™ Engine 0.7.83 - 09/16/2021|21w37a3
  • Made ParticleSystem2D work again

  • VulkanRenderer Changed DescriptorSet binding

  • RenderCommand Added SetBlendConstant shortcut

TRAP™ Engine 0.7.82 - 09/15/2021|21w37a2
  • Fixed bugs in Premake action scripts

  • Changed Renderer2D

  • Made Sandbox2D work again (except Textures)

  • Made TRAP-Editor runnable again (viewport/framebuffer non-functional)

TRAP™ Engine 0.7.81 - 09/14/2021|21w37a1
  • Made Renderer2D work again (missing Textures)

  • Updated Renderer2D shader

TRAP™ Engine 0.7.80 - 09/02/2021|21w35a3
  • Made Descriptor set independent from DescriptorUpdateFrequency

  • Sandbox Updated Shaders

  • Tests3D Updated Shaders

  • Tests Updated Shaders

  • Made Texture constructors more useful

  • Sampler Added validation check for Anisotropy

  • Controller Guide button now works without reseting other axis and buttons states

TRAP™ Engine 0.7.79 - 09/01/2021|21w35a2
  • Added error message for using push constants bigger than GPU allows

TRAP™ Engine 0.7.78 - 08/31/2021|21w35a1
  • Renderer Added missing draw call reset

  • Sandbox Updated Shaders using new Renderer UBO

  • Better utilization of ENABLE_GRAPHICS_DEBUG

  • Increased Vertex Input Attributes & Bindings to be GPU limited

  • TextureBase Added Image dimension validation

TRAP™ Engine 0.7.77 - 08/29/2021|21w34a3
  • Made ENABLE_GRAPHICS_DEBUG and VERBOSE_GRAPHICS_DEBUG more useful

TRAP™ Engine 0.7.76 - 08/28/2021|21w34a2
  • RendererAPI GPUSettings Added MaxUniformBufferRange value

  • VulkanDescriptorSet Changed/Simplified constructor

  • VulkanShader Extended UseUBO to support dynamic UBOs

  • VulkanRenderer Added PerBatch and PerDraw support

  • Renderer Removed PushConstant usage

  • Renderer Now uses a dynamic UBO for sending model matrices (currently limited to MaxUniformBufferRange drawcalls per frame)

  • Tests3D Updated Shaders, now using dynamic UBO

TRAP™ Engine 0.7.75 - 08/23/2021|21w34a1
  • Added alias for Sampler related stuff in TRAP::Graphics namespace

  • Updated Tests & Tests3D using new TRAP::Graphics alias for Sampler

  • Added PerBatch and PerDraw stuff

TRAP™ Engine 0.7.74 - 08/21/2021|21w33a2
  • WindowingAPI X11 Fixed a small bug

  • Math Added unsigned integer typedefs

TRAP™ Engine 0.7.73 - 08/19/2021|21w33a1
  • Input Added GetControllerBatteryStatus (for XInput)

  • Input Controller Added support for Guide Button (Thanks M$ for making this so complicated)

  • Input Controller Fixed some bugs in Windows backend

  • Tests Controller Added Battery & Guide Button support

TRAP™ Engine 0.7.72 - 08/14/2021|21w32a3
  • VFS Renamed GetCurrentFolder to GetCurrentFolderPath (API consistency)

  • VFS Added GetDocumentsFolderPath function

  • WindowingAPI Removed foreground lock timeout

TRAP™ Engine 0.7.71 - 08/13/2021|21w32a2
  • VulkanCommon Removed old functions

  • Renderer Optimized Submit functions

  • Made ControllerMappings OS dependent on compilation

  • Input Controller fixed mismatching guid sizes

  • VFS Added GetCurrentFolder function

  • Input changed how Controller Mappings are initialized

TRAP™ Engine 0.7.70 - 08/12/2021|21w32a1
  • Renderer Removed ModelMatrix from per frame SceneData UBO

  • Now using push constants for per draw model matrices (To be changed)

  • Updated Sandbox/Tests/Tests3D Shaders

  • Fixed wrong result in VertexBuffer::GetCount

  • Removed 64 VertexBuffer limit (now device capped)

  • Invalid BindPushConstants calls are now ignored

  • Tests3D Fixed Skybox rendering

TRAP™ Engine 0.7.69 - 08/07/2021|21w31a2
  • WindowingAPI Removed const_casts

TRAP™ Engine 0.7.68 - 08/02/2021|21w31a1
  • Texture Added Rotation functions for vertical cross cubemaps

TRAP™ Engine 0.7.67 - 08/01/2021|21w30a6
  • Reimplemented Renderer Submit function

  • Updated SandboxLayer (fully working)

  • Tests3D Fixed Cube UV coordinates

  • Texture Fixed wrong Cubemap layer ordering

TRAP™ Engine 0.7.66 - 07/31/2021|21w30a5
  • RendererAPI Added checks against invalid use of Clear function

  • Updated all Test programs

  • Validated functionality of every Test program (except ImageLoader as it needs Renderer2D)

  • Sandbox Updated SandboxLayer (missing Camera)

  • TRAP.h Added Utils.h

  • Tests3D Partially updated

  • Decoupled UniformBuffer from Shader

  • Shader Added UseUBO function

  • Updated VukanTest programs

  • Tests3D Partially updated

  • Fixed crash in Texture2D::CreateEmpty

TRAP™ Engine 0.7.65 - 07/30/2021|21w30a4
  • Removed unused TextureUsage enum

  • Replaced BufferUsage with (RendererAPI::Descriptor)UpdateFrequency

  • GPUSettings Added fillModeNonSolid

  • Reimplemented RenderCommand

  • RenderCommand Added optional Window* for multiple Window support

TRAP™ Engine 0.7.64 - 07/29/2021|21w30a3
  • RendererAPI Removed unused forward declarations

  • VulkanCommon Commented some unused functions out

TRAP™ Engine 0.7.63 - 07/28/2021|21w30a2
  • Cleaned up RendererAPI::Clear functions (1/2)

  • Cleaned up RendererAPI::Clear functions (2/2)

TRAP™ Engine 0.7.62 - 07/26/2021|21w30a1
  • Small WindowingAPI fixes

  • Fixed MSVC warnings

TRAP™ Engine 0.7.61 - 07/25/2021|21w29a4
  • Texture Added GetMipWidth/Height/Size functions

  • VulkanTextureTests Added runtime updating of the Texture

  • Merged TextureAbstraction into master (internal)

  • Updated stable TRAPVK (internal) version

  • Doxygen excluded ControllerMappings

  • Better documentation of internal WindowingAPI

TRAP™ Engine 0.7.60 - 07/24/2021|21w29a3
  • ResourceLoader Restructured loading procedure

  • Texture2D Implemented CreateFromImage

  • Fixed wrong ColorFormat after converting an image from RGB to RGBA

  • TextureCube Implemented CreateFromImage(s)

  • Texture Implemented various GetBit/BytesPerPixel/Channel functions

  • Texture2D/Cube Implemented complete Texture Update

TRAP™ Engine 0.7.59 - 07/22/2021|21w29a2
  • ResourceLoader added R16G16 and R32G32 format support

  • Texture Added convert function for colorformat + bpp to image format

  • Texture2D/Cube Removed old leftover Upload functions

  • Texture2D Implemented CreateFromFile and Create functions

  • Image Added function to convert RGB images to RGBA

  • WindowingAPI Replaced manual RGB to RGBA conversion with TRAP::Image::ConvertRGBToRGBA

  • ResourceLoader Replaced manual RGB to RGBA conversion with TRAP::Image::ConvertRGBToRGBA

TRAP™ Engine 0.7.58 - 07/21/2021|21w29a1
  • Added TextureBase class as API agnostic Texture abstraction

  • Texture classes now uses TextureBase internally (not inherited!)

  • VulkanShader Added RetrieveDescriptorName to reduce code duplication in Use*** functions

  • Shader/DummyShader/VulkanShader Implemented UseTexture(s) functions

  • VulkanTextureTests now uses Shader::UseTexture instead of internal API

TRAP™ Engine 0.7.57 - 07/16/2021|21w28a3
  • RendererAPI Removed ForceMipLevel in SamplerDesc

  • VulkanTextureTests Replaced ForceMipLevel in SamplerDesc with textureLod in shader

TRAP™ Engine 0.7.56 - 07/15/2021|21w28a2
  • Big code maintenance (+100 Files changed)

  • Big code maintenance (+40 Files changed)

TRAP™ Engine 0.7.55 - 07/13/2021|21w28a1
  • Big code maintenance (+100 Files changed)

TRAP™ Engine 0.7.54 - 07/03/2021|21w26a1
  • Added SamplerHash class for RendererAPI::SamplerDesc hashing

  • Sampler Added GetMinFilter, GetMagFilter, GetMipMapMode, GetAddressU, GetAddressV, GetAddressW, GetMipLodBias, GetMaxAnisotropy, GetCompareFunc, GetForceMipLevel & GetMipLevel functions

  • Sampler Added caching of newly created Samplers so they are reused instead of always creating new ones (should prevent from ever reaching maxSamplerAllocationCount limit)

  • Replaced some push_back with emplace_back

  • VulkanShader Added UseSampler & UseSamplers functions to bind given Sampler(s) to Descriptor

  • VulkanTextureTests Replaced direct Sampler binding with abstraction

TRAP™ Engine 0.7.53 - 06/27/2021|21w25a4
  • VulkanDevice Changed VkQueueFlags vector to unordered_map

  • VulkanPhysicalDevice now also prints device name when a check doesn’t pass capability tester

  • UniformBuffer Added GetUBOs() function which returns the internal buffers holding the data

  • Moved UniformBuffer Use() function to inside Shader Use()

  • VulkanMultiWindowTets Added UBO test for secondary Window

  • Created TextureAbstraction branch

TRAP™ Engine 0.7.52 - 06/24/2021|21w25a3
  • RendererAPI Removed GetPerWindowData

TRAP™ Engine 0.7.51 - 06/22/2021|21w25a2
  • Application Removed GetDrawCalls & AddSingleDrawCall

  • Moved GetLinuxWindowManager from Application to Utils

TRAP™ Engine 0.7.50 - 06/21/2021|21w25a1
  • Added SupportedImageFormatSuffixes to TRAP::Image

  • Moved CPUInfo from Application to Utils

TRAP™ Engine 0.7.49 - 06/20/2021|21w24a2
  • Resolved more warnings (GCC)

  • Moved GetEndian from Application to Utils

TRAP™ Engine 0.7.48 - 06/14/2021|21w24a1
  • Resolved warnings (MSVC)

  • Added VulkanIcoSphereTests

TRAP™ Engine 0.7.47 - 06/08/2021|21w23a2
  • Made VulkanTextureTests work again

TRAP™ Engine 0.7.47 - 06/07/2021|21w23a2
  • GenerateVulkanLoader replaced copy with move

  • Shaders now create UniformBuffers automatically using reflection data

  • Updated VulkanLoader version

  • Updated Controller mappings

  • UniformBuffer Removed window stuff

  • Updated VulkanTests

  • Removed Window stuff from VulkanTests

  • Fixed a crash in Shader reflection

TRAP™ Engine 0.7.46 - 06/07/2021|21w23a1
  • Removed global GraphicsRootSignature in RendererAPI

  • Made RootSignature per shader for now

  • Shader Added creation of DescriptorSets into constructor

  • BufferUsage Removed Stream as it has no use for now

  • Removed Descriptors from UniformBuffer

  • UniformBuffer made Static not persistent mapped

  • UniformBuffer Changed Use method (will be replaced soon)

TRAP™ Engine 0.7.45 - 05/24/2021|21w21a1
  • Tests (Re)Added VulkanMultiWindowTests

  • Application Removed artifical FrameTime/FPS when not focused

  • RendererAPI Fixed for loop not running last iteration

  • RendererAPI Moved Compute stuff out of PerWindowData

  • RendererAPI Moved Queue stuff out of PerWindowData

  • RendererAPI Added enums for ShadingRate stuff (WIP)

  • Vulkan Changed how undefined layouts are handled

  • Layerstack Added Pop*** methods to remove Layers from LayerStack with a Layer pointer

  • GCC Silenced unknown pragma warnings

TRAP™ Engine 0.7.44 - 05/16/2021|21w19a2
  • Updated Codestyle.md

  • Resolved some warnings

  • Disabled warnings from dependencies on gcc/…

  • RendererAPI/ResourceLoader Removed MipLevel selection from texture updates

  • VulkanTextureTests Added runtime texture update test

TRAP™ Engine 0.7.43 - 05/14/2021|21w19a1
  • Moved Config class to Utils folder

  • Math Added Min & Max for 3-4 inputs

  • Math Added Rounding methods

  • Math made Dot & Cross functions constexpr

  • Math Added SLerp function with spin count

TRAP™ Engine 0.7.42 - 05/05/2021|21w18a2
  • Added VulkanLoader generation script

  • Updated VulkanLoader

TRAP™ Engine 0.7.41 - 05/04/2021|21w18a1
  • Replaced ModernFileDialogs submodule with ModernDialogs

TRAP™ Engine 0.7.40 - 04/29/2021|21w17b1
  • Seperated VulkanTests Textures stuff into VulkanTextureTests

  • VulkanTextureTests Seperated sampler from texture

  • Fixed a bug in UniformBuffer (Offset in DescriptorData was not BufferOffset)

  • Docs Removed VMA & VulkanLoader

TRAP™ Engine 0.7.39 - 04/29/2021|21w17a1
  • Added project generation scripts

  • Added controller mapping generation script

  • Added documentation generation script

  • Updated README

  • Updated Controller Mappings

  • Regenerated documentation

TRAP™ Engine 0.7.38 - 04/22/2021|21w16b1
  • Added mipmap creation for Vulkan API (vkCmdBlitImage)

  • Sampler Added ability to force a specific mip level

  • VulkanTests Splitted Texture related stuff into own VulkanTextureTests

TRAP™ Engine 0.7.37 - 04/20/2021|21w16a1
  • Added auto generator for ControllerMappings (premake5/lua)

TRAP™ Engine 0.7.36 - 04/18/2021|21w15c1
  • Updated ControllerMappings (PS5 support)

TRAP™ Engine 0.7.35 - 04/18/2021|21w15b1
  • RendererAPI Added Cube Texture support

  • ResourceLoader Added more validations to Texture loading

  • ResourceLoader shortened Texture upload code

  • ResourceLoader Added SplitImageFromCross for cubemaps

  • ResourceLoader Added support for Horizontal/Vertical-Cross Cubemap Textures

  • ResourceLoader Added support for Multi-File Cubemap Textures

TRAP™ Engine 0.7.34 - 04/13/2021|21w15a1
  • RendererAPI Default winding order is now CounterClockWise

  • RendererAPI/ResourceLoader Added 2D Texture support

  • RendererAPI Fixed GPUSettings not set correctly

  • RendererAPI Added Max Anisotropy to GPUSettings

  • Image Added Function to check if filepath is a supported Image file

  • VFS Fixed casing of paths

  • VulkanTests Changed Vertices to CounterClockWise winding order

  • VulkanTests Added UV coordinates to indexed quad vertices

  • VulkanTests Added a Texture Shader

  • VulkanTests Added Internal Texture & Sampler

TRAP™ Engine 0.7.33 - 04/10/2021|21w14a1
  • Removed unused Shaders

  • VulkanTests Added OnImGuiRender runtime information

  • UniformBuffer class now uses a global map of descriptors (likely needs to be moved/refactored)

TRAP™ Engine 0.7.32 - 03/14/2021|21w10a2
  • UniformBuffer is now usable except the Use function

  • Shader/Manager Added a way to provide optional macros on shader loading/creation

  • VulkanTests Replaced internal UniformBuffer with the UniformBuffer class

  • VulkanTests Added a shader macro as a test to the testubo.shader

TRAP™ Engine 0.7.31 - 03/13/2021|21w10a1
  • Premake5 Added debug symbols to RelWithDebInfo

  • Config Fixed missing semicolon

  • RootSignature Removed unused DescriptorCount variable

  • RendererAPI Added AddShaderToGraphicsRootSignature function

  • RendererAPI Added bool which indicates if RootSignatures should be rebuilt

  • VulkanRenderer Optimized RootSignature recreation check

  • Shader Constructor & Destructor now call RendererAPI::AddShaderToGraphicsRootSignature & RendererAPI::RemoveShaderFromGraphicsRootSignature

  • ShaderManager Removed calls to RendererAPI::RemoveShaderFromGraphicsRootSignature

  • (Linux) LinuxInput (Controller Vibration) Added check if write failed

  • (Linux X11) WindowingAPI Fixed a SEGFAULT in GetWindowPropertyX11

  • VulkanRootSignature Fixed a bug where only the newest binding of a set was getting bound (nasty bug)

  • VulkanTests Added a Test for multiple UniformBuffer usage

  • VulkanTests Added testubo.shader for the UniformBuffer test

TRAP™ Engine 0.7.30 - 03/02/2021|21w09a3
  • RendererAPI Added BindPushConstants & BindPushConstantsByIndex functions

TRAP™ Engine 0.7.29 - 03/01/2021|21w09a2
  • Log class can now be used by client code

  • Event callbacks now get a pointer to the affected window instead of its title

  • Fixed a bug where the VSync setting of Config.cfg got ignored

TRAP™ Engine 0.7.28 - 03/01/2021|21w09a1
  • .gitignore Added make and code-workspace files

  • WindowingAPIX11 Replaced Success macro with its value (compiler error)

  • WindowingAPIX11 Added missing CursorTypes

  • WindowingAPI Removed ErrorCallback now uses TP_ERROR directly

  • (Linux) VFS GetTempFolderPath Added “/” as last character of folder path

  • (Linux) VFS Added filesystem exist check if path starts with “/” but its not a virtualPath

  • Worked on UniformBuffer abstraction

  • VulkanPhysicalDevice Moved WindowingAPI initialization

  • Commented out VulkanFrameBuffer class

TRAP™ Engine 0.7.27 - 02/16/2021|21w07a2
  • RendererAPI Moved Graphics RootSignature from per window to static data

  • RendererAPI Added RemoveShaderFromGraphicsRootSignature function

  • ShaderManager/Shader Fixed multiple crashes when Shader creation fails (including HotShaderReloading)

  • Added DummyShader class which gets used when Shader creation fails (preventing crashes | HotShaderReloading)

  • Vulkan Memory Allocator updated

  • VulkanTests Added V key to toggle VSync

  • VulkanTests Enabled HotShaderReloading

TRAP™ Engine 0.7.27 - 02/16/2021|21w07a1
  • RendererAPI Added GetDescriptorPool & GetGraphicsRootSignature functions

  • VulkanRenderer Added BindDescriptorSet function

  • Added UniformBuffer abstraction class which currently only supports 1 binding per set

  • Shader Added predefined macros for UniformBuffer set index ordered by update frequency None -> every draw calls

  • VulkanRenderer Fixed VSync (used wrong bool to check if changed)

  • VulkanRenderer Removed Pipeline binding from draw calls

  • VulkanRenderer Added Pipeline binding & RootSignature recreation to BindShader function

  • VulkanLoader Updated to Vulkan 1.2.170

  • VulkanTests Added Shader using a single UniformBuffer

  • VulkanTests Added F4 key to toggle between UniformBuffer usage

TRAP™ Engine 0.7.26 - 02/14/2021|21w06b2
  • (Vulkan)DescriptorSet Removed unnecessary count parameter in Update function

  • Added RootSignature back to PipelineDescHash

  • RendererAPI Added GetMainWindowData function for ImGuiLayer

  • VulkanDescriptorPool Fixed out of bounds in RetrieveDescriptorSet

  • VulkanRootSignature Removed unused uint32_t & if check in constructor

  • VulkanRenderer Removed GetImGuiDescriptorPool & GetPerWindowData functions

  • VertexBuffer, IndexBuffer, UniformBuffer Added persistent map flag for Static usage

  • IndexBuffer Added constructor without immediate data upload

  • UniformBuffer WIP changes

  • ImGuiLayer Implemented OnAttach, OnDetach, End for VulkanAPI

  • ImGuiWindowing Fixed an IM_ASSERT

  • ImGuiLayer Added PipelineCache @ TEMP/TRAP/ImGui.cache

  • Application enabled ImGui again

  • VulkanTests Added small ImGui test

TRAP™ Engine 0.7.23 - 02/08/2021|21w06a1
  • Removed old VulkanVertexBuffer class

  • Removed old VulkanIndexBuffer class

  • Removed old VulkanVertexArray class

  • Removed old VulkanUniformBuffer class

  • Removed old VertexArray base class

  • RendererAPI, VulkanRenderer Added BindVertexBuffer/BindIndexBuffer function for use by VertexBuffer/IndexBuffers

  • RendererAPI, VulkanRenderer Added DrawIndexed function

  • RendererAPI Removed GetCurrentGraphicCommandBuffer & GetCurrentSwapChain functions

  • Added new VertexBuffer abstraction

  • Added new IndexBuffer abstraction

  • Added partially complete UniformBuffer abstraction

  • ShaderManager Added default call of Shader.Use on Reload*** functions

  • VFS Added creation of TRAP folder in Temp folder if not existing

  • VulkanRenderer Added automatic PipelineCache creation & saving to Temp/TRAP folder

  • ImGui Added support for different RenderAPI implementations

  • VulkanTests Added Quad Vertices (non indexed)

  • VulkanTests Added Quad Vertices (indexed)

  • VulkanTests Added Triangle Indices

  • VulkanTests Added Quad Indices

  • VulkanTests Added dynamic VertexBuffer updating Triangle, Quad via F2

  • VulkanTests Added dynamic IndexBuffer updating Triangle, Quad via F3

  • VulkanTests Added ESC to shutdown

TRAP™ Engine 0.7.22 - 02/04/2021|21w05a1
  • New Main Window Width & Height only gets saved if greater than 0

  • VulkanSwapChain Added missing RenderTargets destruction

  • Utils Added HashCombine which can be used to combine multiple std::hashes together

  • Window Set Minimum Default Window size to 2x2

  • Log Removed unused includes

  • Shader Added Use function

  • VulkanRenderer Added Caching of Pipelines

  • VulkanRenderer Finished functions:

    • SetDepthTesting

    • SetDepthWriting

    • SetDepthFunction

    • SetDepthFail

    • SetDepthBias

    • SetDepthBiasSlopeFactor

    • SetStencilTesting

    • SetStencilFail

    • SetStencilPass

    • SetStencilFunction

    • SetStencilMask

    • SetCullMode

    • SetFillMode

    • SetFrontFace

    • SetBlendMode

    • SetBlendConstant

  • VulkanRenderer Added Dynamic Graphics Pipeline recreation

  • RendererAPI Added std::hash overload for PipelineDesc

  • Log TP_TRACE now uses magenta instead of plain white color

  • VulkanRenderer Added default VertexLayout of 0:vec3

  • RendererAPI Removed ShaderSemantic

  • VulkanTest Added F1 toggle for Wireframe mode

  • VulkanTest fixed winding order of triangle vertices

  • Fixed a crash in VulkanDebugCallback when using RenderDoc

TRAP™ Engine 0.7.21 - 01/24/2021|21w03a1
  • RendererAPI Added ClearFlags enum

  • RendererAPI Removed Use function

  • VulkanCommon Added ClearFlagsToVkImageAspectFlags function

  • CommandBuffer Added Clear function

    • VulkanCommandBuffer Added Clear function implementation

  • VulkanRenderer Implemented functions:

    • Present (fully)

    • SetVSync (fully)

    • SetClearColor (fully)

    • SetDepthTesting (partially)

    • SetDepthWriting (partially)

    • SetDepthFunction (partially)

    • SetDepthFail (partially)

    • SetDepthBias (partially)

    • SetDepthBiasSlopeFactor (partially)

    • SetStencilTesting (partially)

    • SetStencilFail (partially)

    • SetStencilPass (partially)

    • SetStencilFunction (partially)

    • SetStencilMask (partially)

    • SetCullMode (partially)

    • SetFillMode (partially)

    • SetFrontFace (partially)

    • SetBlendMode (partially)

    • SetBlendConstant (partially)

    • Clear (fully)

    • SetViewport (fully)

    • SetScissor (fully)

    • GetVSync (fully)

    • WaitIdle (fully)

  • RenderCommand Disabled a lot of functions (Will be reworked)

  • VFS Added Query for temp folder path

  • Window Added SetVSync & GetVSync functions

  • Window Removed Use functions

  • Application constructor now requires game title

  • Multiple Windows are now supported by the RendererAPI

TRAP™ Engine 0.7.20 - 01/16/2021|21w02a3
  • Integrated code from VulkanTest into RendererAPI (Queues, CommandPools, CommandBuffers, Fences, Semaphores, SwapChain)

TRAP™ Engine 0.7.19 - 01/15/2021|21w02a2
  • Added ResourceLoader for Buffers like VertexBuffer, IndexBuffer, etc…

  • VulkanTest Added colored triangle

TRAP™ Engine 0.7.18 - 01/11/2021|21w02a1
  • Added loading/saving of PipelineCache from disk

  • Optimized/Reduced usage of std::dynamic_pointer_cast in Vulkan code

  • VulkanTest optimized Window resizing

TRAP™ Engine 0.7.17 - 01/06/2021|21w01a3
  • Reimplemented Shader base class

    • Replaced ShaderType enum with the RendererAPI::ShaderStage

    • Added ability to load GLSL or SPIRV(created with ConvertToSPIRV)

    • Removed Bind/Unbind functions

  • Removed old VkShader class

  • Moved constructors of the abstract Vulkan*** base classes to protected

  • VulkanTest Added Window Resizing

  • VulkanTest Added a test shader

  • VulkanTest now uses ShaderManager

  • Updated ConvertToSPIRV

TRAP™ Engine 0.7.16 - 01/05/2021|21w01a2
  • Implemented abstraction for Vulkan*** classes

    • Added CommandSignature base class

    • Added DescriptorPool base class

    • Added DescriptorSet base class

    • Added Fence base class

    • Added Pipeline base class

    • Added PipelineCache base class

    • Added Queue base class

    • Added Semaphore base class

    • Added SwapChain base class

  • RendererAPI replaced Vulkan*** with equivalent abstraction

  • VulkanTest replaced Vulkan*** with equivalent abstraction

TRAP™ Engine 0.7.15 - 01/04/2021|21w01a1
  • Fixed a bug in Ycbcr features testing (VulkanDevice)

  • Started implementing abstraction for Vulkan*** classes

    • Added Buffer base class

    • Added CommanBuffer base class

    • Added CommandPool base class

    • Added QueryPool base class

    • Added RenderTarget base class

    • Added RootSignature base class

    • Added Sampler base class

2020
TRAP™ Engine 0.7.14 - 01/02/2020|20w53a3
  • Replaced unions with std::variant

  • Fixed several bugs

  • Fixed a major bug

  • Added a Vulkan API clear screen test

  • Added support for combined image samplers

  • Added support for Ycbcr color conversion

  • VulkanQueue Added PresentStatus struct as return value for Present function

  • Added support for multi-planar image format

TRAP™ Engine 0.7.13 - 12/31/2020|20w53a2
  • VulkanCommandBuffer Added UpdateVirtualTexture/BindRenderTargets/GetQueue functions

  • VulkanDescriptorSet Added Update function (missing RayTracing)

  • VulkanQueue Added Present fuction

  • VulkanRenderTarget Added GetID function

  • VulkanSwapChain Added AcquireNextImage/ToggleVSync/GetVkSwapChain/GetPresentVkQueue function

  • VulkanTexture Added VirtualTexture support

  • FINISHED BASELINE IMPLEMENTATION OF ALL VULKAN CLASSES

TRAP™ Engine 0.7.12 - 12/29/2020|20w53a1
  • Added more functions to VulkanCommandBuffer

  • Added VulkanCommandSignature class

  • Fixed a bug in VulkanDevice::FindQueueFamilyIndex

  • Added getters to VulkanPipeline

  • Added VulkanQueryPool class

  • Added VulkanSwapChain (missing getters)

  • Fixed a bug in VulkanTexture

  • Added more utility functions to VulkanCommon

  • VulkanRenderer added DefaultResource creation/upload

TRAP™ Engine 0.7.11 - 12/23/2020|20w52a1
  • Added more utility functions to VulkanCommon

  • VulkanRenderer Added default BlendAttachments/RasterizerDesc/DepthStencilDesc/BlendDesc

  • Added VulkanPipelineCache class

  • Added VulkanPipeline class (missing RayTracingPipeline)

  • Added several CreateInfo functions to VulkanInits

TRAP™ Engine 0.7.9 - 12/17/2020|20w51a2
  • VulkanCommandBuffer Added important Bind/Set/Update/Draw functions

  • Changed VulkanCommandPool to return a pointer in function AllocateCommandBuffer

  • VulkanDescriptorSet Added getters

  • RendererAPI Added some ImageFormat functions

  • Moved some struct from Vulkan***.h files to VulkanRenderer.h

  • VulkanQueue Added Submit function

  • VulkanCommon/VulkanInits Added Blending utilities

  • Replaced some Vulkan extensions with predefined macros

TRAP™ Engine 0.7.8 - 12/16/2020|20w51a1
  • Added DeviceMemory functions to VulkanBuffer

  • VulkanCommandBuffer Added PushConstant binding functions

  • VulkanCommandBuffer Added DebugMarker support

  • VulkanDescriptorPool implemented RetrieveDescriptorSet function

  • VulkanDescriptorSet implemented (de)constructor

  • VulkanQueue Added WaitQueueIdle function

  • Updated VulkanInits

  • Added VulkanRootSignature

  • Added some getters to VulkanShader

  • Added DescriptorTypeToVkDescriptorType & ShaderStageToVkShaderStageFlags functions in VulkanCommon

  • Fixed TRAP_ASSERT checking wrong variable

TRAP™ Engine 0.7.7 - 12/06/2020|20w49a3
  • Renamed old VulkanShader class to VkShader

  • Added VulkanBuffer

  • Added VulkanSampler

  • Added more util functions to VulkanCommon

  • Added new VulkanShader class

  • Added ShaderReflection

  • Added VulkanShaderReflection (SPIRVCross)

  • Added CommonShaderReflection

  • Added SPIRVTools

TRAP™ Engine 0.7.6 - 12/05/2020|20w49a2
  • Added VulkanCommandpool

  • Added VulkanCommandBuffer

  • VulkanDevice added public FindQueueFamilyIndex function

  • Implemented VulkanFrameBuffer

  • Added VulkanQueue

  • Added Getters to VulkanRenderPass

  • Added VulkanRenderTarget

  • Added VulkanTexture

  • Added some helper function to VulkanCommon

TRAP™ Engine 0.7.5 - 12/01/2020|20w49a1
  • Added Assertions

  • Some changes on VulkanDescriptorPool

  • Added WIP VulkanDescriptorSet

  • VulkanDevice removed unnecessary VulkanInstance parameter

  • VulkanDevice added WaitDeviceIdle

  • VulkanFence added GetStatus, Wait & static WaitForFences functions

  • Added WIP VulkanFrameBuffer

  • VulkanPhysicalDevice added GetMemoryType

  • Added fully working VulkanSurface

  • Added fully working VulkanRenderPass

TRAP™ Engine 0.7.4 - 11/26/2020|20w48a2
  • Added VMAAllocator

  • Added VulkanDescriptorPool

  • Dropped Vulkan Multi-GPU (SLI/Crossfire) support

  • Move VulkanLoader to Graphics/API/Vulkan/Utils

  • Moved & renamed VulkanMemoryAllocator to Graphics/API/Vulkan/Utils/VMA

  • Added QueueFamilyIndex & QueueIndex to VulkanDevice

  • Added VulkanMemoryAllocator as wrapper for VMA

  • Added VulkanFence

  • Added VulkanSemaphore

  • Added some conversion functions to VulkanCommon for RenderCommand

  • RenderCommand added RendererCullMode enum

  • Added some more options to RenderCommand enums

TRAP™ Engine 0.7.3 - 11/24/2020|20w48a1
  • Updated VulkanLoader to use 1.2.162.0

  • Updated used Raytracing extensions

TRAP™ Engine 0.7.2 - 11/22/2020|20w47a3
  • Added fully working automatic VulkanPhysicalDevice selection

  • Added fully working VulkanPhysicalDevice

  • Added fully working VulkanDevice

  • Switched to Vulkan 1.2

TRAP™ Engine 0.7.1 - 11/21/2020|20w47a2
  • Moved RendererAPI initialization from TRAP::Window to TRAP::Application

  • Added VulkanInits

  • Added fully working VulkanInstance class

  • Added fully working VulkanDebug class

  • Moved VSync setting to RendererAPI and changed from uint32_t to bool

TRAP™ Engine 0.7.0 - 11/19/2020|20w47a1
  • Created Private Vulkan only testing fork (TRAPVK)

  • Removed all OpenGL code

  • Cleared up all Vulkan code

  • Merged Context class with RendererAPI

TRAP™ Engine 0.6.89 - 11/13/2020|20w46a4
  • TRAP-Editor Fixed ability to select multiple primary cameras

  • TRAP-Editor Fixed crash when creating a new scene while an entity is selected (PropertiesPanel)

TRAP™ Engine 0.6.88 - 11/11/2020|20w46a3
  • TRAP-Editor Added proper Save/Load dialogs & a New scene button

  • SceneSerializer::Deserialize now also works with virtual files

  • TRAP-Editor fixed adding the same component twice resulting in a crash

TRAP™ Engine 0.6.87 - 11/10/2020|20w46a1
  • Added ModernFileDialogs as submodule

  • Added MessageBoxes for Linux

TRAP™ Engine 0.6.86 - 11/04/2020|20w45a2
  • Moved MsgBox to TRAP::Utils::Dialogs namespace

TRAP™ Engine 0.6.85 - 11/03/2020|20w45a1
  • Added YAML-cpp as a submodule

  • Added SceneSerializer class

  • Added WIP Serialize & Deserialize button in TRAP-Editor

  • Fixed Tests3D (Cube3D)

  • Fixed Linux crash when closing engine

TRAP™ Engine 0.6.84 - 10/29/2020|20w44a3
  • Added Create Entity UI

  • Added Delete Entity UI

  • Added Add Component UI

  • Added Remove Component UI

  • Fixed Camera viewport resize bug

  • Fixed some asserts

  • New ImGui dark theme colors

  • Visual UI changes for TRAP-Editor

  • Embedded OpenSans font inside Embed.h

TRAP™ Engine 0.6.83 - 10/28/2020|20w44a2
  • Added basic scene graph panel

  • Added properties panel

  • Added TagComponent UI for properties panel

  • SceneCamera added support for perspective camera

  • Added CameraComponent UI for properties panel

  • Added SpriteRendererComponent UI for properties panel

  • Added TransformComponent UI for properties panel

TRAP™ Engine 0.6.82 - 10/27/2020|20w44a1
  • Reused Camera class for CameraComponent instead as a base class

  • Renderer & Renderer2D added support for the new Camera class

  • Added Components: TagComponent, TransformComponent, CameraComponent, NativeScriptComponent

  • Added Entity wrapped class for entt

  • Added Scene class

  • Added SceneCamera class

  • Added ScriptableEntity class used by NativeScriptComponents

  • Fixed linux build

  • Splitted Platform detection from Core.h into PlatformDetection.h

  • Moved & Renamed Core.h to Core/Base.h

TRAP™ Engine 0.6.81 - 10/25/2020|20w43a4
  • Added ECS entt

TRAP™ Engine 0.6.80 - 10/22/2020|20w43a3
  • Fixed bug in OpenGLFrameBuffer when deleting textures

  • ImGui changed event blocking

  • Fixed possible bug in Renderer2DVS shader (now using branching instead of indexing)

TRAP™ Engine 0.6.79 - 10/20/2020|20w43a2
  • Better thread utilization by FileWatcher

  • Fixed Horizontal_Cross texture crash

  • Added new 2D batch renderer

TRAP™ Engine 0.6.78 - 10/19/2020|20w43a1
  • Fixed OrthographicCameraController movement

  • Added OpenGL context debug bit

  • Deactivated OpenGL notification debug messages

TRAP™ Engine 0.6.77 - 10/18/2020|20w42a6
  • Moved file closing in Image loaders

  • Reduced redundancy in OpenGL

TRAP™ Engine 0.6.76 - 10/17/2020|20w42a5
  • Fixed Linux assertion

TRAP™ Engine 0.6.75 - 10/16/2020|20w42a4
  • Better Assertion support

TRAP™ Engine 0.6.74 - 10/15/2020|20w42a3
  • Simplified Math.h (removed redundancy)

  • Updated docs

TRAP™ Engine 0.6.73 - 10/14/2020|20w42a2
  • Math Added missing Matrix Equal & NotEqual functions

TRAP™ Engine 0.6.72 - 10/12/2020|20w42a1
  • Complete Reference overhaul

  • Fixed crash(assert) when no Engine.cfg exists

  • Fixed Windows Travis CI (new VulkanAPI version)

TRAP™ Engine 0.6.71 - 09/19/2020|20w38a2
  • Fixed missing last element in SplitStringView

  • VFS is now actually lowercase except filename

  • Some documentation stuff in TRAP::VFS

TRAP™ Engine 0.6.70 - 09/18/2020|20w38a1
  • Added Radiance(HDR) Image Format Loader

  • Added Radiance(HDR) Image to ImageLoaderTests

  • Fixed Bug for RGB Images when set as Window or Mouse Icon

TRAP™ Engine 0.6.69 - 09/11/2020|20w37a1
  • FileWatcher now also refreshes search list every check

TRAP™ Engine 0.6.68 - 09/06/2020|20w36a4
  • Changed lots of string stuff

  • Renamed MinimizeTests to WindowStateTests

  • Added ImGui instructions to tests

TRAP™ Engine 0.6.66 - 09/04/2020|20w36a2
  • Config Added Get & GetVector functions with non void return type

  • Config Reordered ConvertToType functions and added more primitive data types

  • Config Reordered ConvertToString functions and added more primitve data types

  • Config optimized ConvertToType & ConvertToString functions (removed stringstreams)

  • String added CompareAnyCase functions

  • Config made values case insensitive

  • String added several string_view functions

TRAP™ Engine 0.6.65 - 09/02/2020|20w36a1
  • Added bool silent = false to every Silent*** counter function

  • Removed every Silent*** function

  • Migrated TRAP::FileSystem to TRAP::VFS

  • Added Virtual path supprot to TRAP::VFS::FileOrFolderExists

  • Added Virtual path support to TRAP::VFS::GetFileOrFolderSize

  • Added Virtual path support to TRAP::VFS::GetLastWriteTime

  • Fixed getting 0 from TRAP::VFS::GetFileOrFolderSize if a folder was supplied

TRAP™ Engine 0.6.64 - 08/27/2020|20w35a2
  • Added custom VulkanAPI meta loader (Based on Volk)

  • Fixed a missing s6_addr in SocketImplLinux

  • Fixed VulkanSDK download on TravisCI on Windows

TRAP™ Engine 0.6.63 - 08/25/2020|20w35a1
  • FileSystem added append mode for file writes

  • VFS added append mode for file writes

  • Linux IPv6 compatibility

TRAP™ Engine 0.6.62 - 08/23/2020|20w34a5
  • Added IPv6Address

  • Added IPv6 support

  • HTTP added automatic prioritising of IPv6 over IPv4

TRAP™ Engine 0.6.61 - 08/22/2020|20w34a4
  • Made DragAndDrop non default

  • Added SetDragAndDrop to TRAP::Window

  • Added DragAndDrop Tests

TRAP™ Engine 0.6.60 - 08/20/2020|20w34a3
  • Made FTP Download/Upload virtual file path compatible

TRAP™ Engine 0.6.59 - 08/19/2020|20w34a2
  • Added TCP/UDP Client/Server test

  • Added FTP Client test

TRAP™ Engine 0.6.58 - 08/18/2020|20w34a1
  • Added Networking stuff (FTP, HTTP, TCPSocket, UDPSocket, Packet, IPv4Address)

TRAP™ Engine 0.6.57 - 08/05/2020|20w32a1
  • TravisCI updated Windows VulkanSDK to 1.2.148.0

  • Updated ImGui Docking submodule

  • Updated SPIRV-Cross submodule

  • Updated GLSLang submodule

TRAP™ Engine 0.6.56 - 08/02/2020|20w31a2
  • WindowingAPI Replaced manuall Mutex with std::mutex

TRAP™ Engine 0.6.55 - 07/29/2020|20w31a1
  • TRAP::FileWatcher moved lambda functions into own function

TRAP™ Engine 07/25/2020|20w30a4
  • Completely overhauled documentation generation

  • TRAP::FileSystem added additional checks for empty paths and/or data

TRAP™ Engine 0.6.53 - 07/23/2020|20w30a3
  • OpenGLShader if Fragment/Vertex shader does not contain entry point “main” the Fallback shader will be used

  • VulkanShader Added Debugging Reflection (enable via TRAP_DEBUG_SHADERS macro)

  • Replaced all logging prefixes with constant expressions inside TRAP::Log namespace

  • More documentation

TRAP™ Engine 0.6.52 - 07/22/2020|20w30a2
  • OpenGLLoader Removed some non Direct State Access (DSA) functions

  • ImGuiOpenGL4 replaced non-DSA functions with DSA functions

  • ImGuiOpenGL4 removed unnecessary bindings thx to DSA :D

TRAP™ Engine 0.6.51 - 07/20/2020|20w30a1
  • Fixed crash on shutdown when not using HotReloading (tried to join a nullptr thread xD)

  • Added GetKeyboardLayoutName() to TRAP::Input

  • Added KeyLayout Event to TRAP::Input Callback

  • Made X11 MsgBoxes prettier

  • Removed unused friend classes in OpenGLShader & VulkanShader

TRAP™ Engine 0.6.50 - 07/19/2020|20w29a3
  • Test3D Added Skybox

  • Fixed Bug in Test3D PerspectiveCameraController when x rotation is bigger than 90° or smaller than -90°

  • Fixed Bug when Camera gets an OnFrameBufferResizeEvent where width or/and height is 0

  • Added RawMouseInput entry to Engine.cfg

  • Tried to implement DirectInput rumble via Force Feedback but all my controller do not report the needed Force Feedback flag so I can’t test this feature properly! Help wanted :O

TRAP™ Engine 0.6.49 - 07/17/2020|20w29a2
  • Made Test3D cube indexed and added normals

  • Small changes to WindowingAPI

  • HotReloading is now multithreaded and instant reloads(15ms instead of 1000ms delay)

  • Added Runtime CPU detection (Detects AMD & Intel)

TRAP™ Engine 0.6.48 - 07/16/2020|20w29a1
  • Fixed a bug in TRAP::Math

  • Added Tests3D Project for 3D testing

  • Added Cube to Tests3D

  • Added an FPS Camera (like Minecraft Creative mode) to Tests3D

  • Fixed multiple bugs in FileWatcher (HotReloading System)

TRAP™ Engine 0.6.47 - 07/11/2020|20w28a2
  • WindowingAPI fixed 2 bugs in X11

  • Changed Window mouse event transparency inside WindowingAPI

  • Moved BlockingQueue & ThreadPool into TRAP namespace

TRAP™ Engine 0.6.46 - 07/08/2020|20w28a1
  • Removed deprecated sudo from Travis CI

  • WindowingAPI updates

  • Renamed Event folder to Events (naming consistency)

TRAP™ Engine 0.6.45 - 07/03/2020|20w27a3
  • Removed multiple VBO support inside a single VAO

TRAP™ Engine 0.6.44 - 07/02/2020|20w27a2
  • Fixed unresolved functions in Experimental ThreadPool & BlockingQueue

  • Added multithreading inside OpenGLTexture2D when loading an Image from filepath (STILL EXPERIMENTAL)

  • Removed Load() function from OpenGLTexture2D as it was only used by one of the constructors

  • Made Logging thread safe

  • Renamed TRAP Editor to TRAP-Editor (fixes Linux CI bug)

  • Added TRAP::Window documentation

  • Added PNG images to HotTextureReloading list

  • Added SPIRV shaders to HotShaderReloading list

TRAP™ Engine 0.6.43 - 06/29/2020|20w27a1
  • Implemented VulkanVertexBuffer

  • Implemented VulkanIndexBuffer

  • Added TRAP Editor project

  • Changed FrameBuffer API

TRAP™ Engine 0.6.42 - 06/28/2020|20w26a3
  • Added GetAllGPUs function which returns every GPU name and its UUID(VulkanAPI)

  • Updated docs

TRAP™ Engine 0.6.41 - 06/27/2020|20w26a2
  • Changed folder structure

  • Modularized remaining premake5 scripts

  • Config Fixed an out of range error when only the key exists without any value

  • Utils Added UUIDToString and UUIDFromString functions

  • Added VulkanGPU UUID entry to Engine.cfg

  • Vulkan Added Saving/Loading of a GPU UUID

  • Vulkan Removed Verbose debug messages

  • Added Query to get current GPU name

  • Added Stencil function

TRAP™ Engine 0.6.40 - 06/25/2020|20w26a1
  • Moved some functions from Image to TGAImage

  • Changed VFS std::byte to uint8_t data type

TRAP™ Engine 0.6.39 - 06/21/2020|20w25a2
  • Added new Documentation via Sphinx + Doxygen + Breathe + Exhale

  • Added ImageLoaderTests

  • BMP loader added error message for OS/2 images

  • BMP loader added grayscale support

  • BMP loader added grayscale and RGBA RLE 8 decoding support

TRAP™ Engine 0.6.38 - 06/19/2020|20w25a1
  • Refactored OpenGLTexture2D

  • Added UploadImage to Texture2D(OpenGLTexture2D)

  • Updated VulkanSDK version for Travis CI on Windows

  • Fixed a bug in VFS::MakeVirtualPathCompatible

TRAP™ Engine 0.6.37 - 06/08/2020|20w24a1
  • Changed Instrumentor & made it thread safe

TRAP™ Engine 0.6.36 - 06/07/2020|20w23a3
  • Vulkan fixed validation errors inside PrepareNextFrame when swapchain is out of date or suboptimal

  • WindowingAPI Linux X11/XLib is now loaded dynamically (doesnt apply for MsgBoxes)

  • WindowingAPI Linux X11 Added XIM callbacks (Fixed segfault)

  • WindowingAPI Linux X11 Filtered error from other connections

  • WindowingAPI Linux X11 XKB now also checks key aliases

  • WindowingAPI WinAPI Removed pre Windows XP checks

TRAP™ Engine 0.6.35 - 06/06/2020|20w23a2
  • Vulkan added support for multiple windows

  • Fixed remaining Vulkan errors

  • Validated Vulkan functionality on Ubuntu 20.04 LTS using NVIDIA 440.66.15

TRAP™ Engine 0.6.34 - 05/31/2020|20w23a1
  • Fixed SandboxLayer not rendering the quad

TRAP™ Engine 0.6.33 - 05/28/2020|20w22a1
  • Finished big VulkanAPI rework(replaced old implementation)

TRAP™ Engine 05/15/2020|20w20a1
  • Updated Premake 5 to Alpha 15

TRAP™ Engine 20w19 & 20w20
  • Worked on new Vulkan implementation

TRAP™ Engine 0.6.32 - 04/20/2020|20w17a1
  • Added macro TRAP_DEBUG_CONFIGS to allow tracing of config file values

TRAP™ Engine 0.6.31 - 04/16/2020|20w16a1
  • Started working on Vulkan rewrite

  • Fixed IsVulkanCapable using wrong Vulkan API version define

  • Removed Deprecated Vulkan Device Layers

TRAP™ Engine 0.6.30 - 04/10/2020|20w15a2
  • Added TimeScale feature

TRAP™ Engine 0.6.29 - 04/09/2020|20w15a1
  • Updated Travis.yml

  • Removed Standalone sub project

  • Dropped DirectX 12 support

TRAP™ Engine 0.6.28 - 03/26/2020|20w13a1
  • Moved OpenGL Max Texture Units from Texture2D/Cube to OpenGLRenderer

  • Fixed FrameTime when out of Focus

TRAP™ Engine 0.6.27 - 03/20/2020|20w12a2
  • Added Triangle as Renderer2D primitive

TRAP™ Engine 0.6.26 - 03/16/2020|20w12a1
  • Made TRAP::Log singleton

  • Updated TRAP::Log Docs

  • Added experimental ThreadPool (Dont use it for now)

  • Added a small 2D particle system example

TRAP™ Engine 0.6.25 - 03/14/2020|20w11a2
  • 2D Textures now can only be loaded directly from memory via a TRAP::Image

  • Cube Texture can now be loaded via a TRAP::Image

  • FPS now get calculated via the frametime

TRAP™ Engine 0.6.24 - 03/12/2020|20w11a1
  • Worked on Docs

  • Added ability to create texture via name and a TRAP::Image

  • Removed redundancy in Texture classes

  • Removed redundancy in Shader classes

TRAP™ Engine 0.6.23 - 03/08/2020|20w10a3
  • Docs now use Dark theme by default

  • Moved Event stuff from TRAP namespace to TRAP::Events

  • Updated Event Docs

  • Restructured Events in Docs

  • Made TRAP::Input class static

  • Updated Input Docs

  • Worked on Image Docs

TRAP™ Engine 0.6.22 - 03/07/2020|20w10a2
  • Enabled AVX2 compilation(CPU Requirement)

  • Added SHA2 hash functions

  • Changed Adler32 and CRC32 interface

  • Added SHA3 hash functions

  • Fixed SHA2 on Linux

TRAP™ Engine 0.6.21 - 03/04/2020|20w10a1
  • Added Quaternions

  • Replaced Matrix Rotations with Quaternions (thus fixing Gimbal Locking)

  • Added Missing GLM license notice in TRAP::Math

  • Added Missing GLAD license notice in OpenGLLoader

  • Added Missing GLFW license notice in TRAP::Input & TRAP::INTERNAL::WindowingAPI

  • Added Missing ImGui license notice in ImGui Layer

  • Added Missing GLSLang license

  • Added Missing SPIRV-Cross license

  • Added Missing Premake5 license

TRAP™ Engine 0.6.20 - 03/01/2020|20w09a4
  • Fixed Vulkan Present Queue

  • Added Command Buffer Submit synchronization

  • Added macro “TRAP_EXPERIMENTAL_VULKAN” to allow experimental usage of Vulkan API

TRAP™ Engine 0.6.19 - 02/29/2020|20w09a3
  • Renderer2D Added Rotation support

  • Working on Vulkan

TRAP™ Engine 0.6.18 - 02/27/2020|20w09a2
  • Added Random generator using mt19937_64

  • Validated Random generator

TRAP™ Engine 0.6.17 - 02/24/2020|20w09a1
  • TRAP::Application::Run is now only accessible by the engine

  • Added JSON based Performance Profiler

  • Added Profiling to SandboxLayer & Sandbox2D

  • Added Profiling to whole engine

TRAP™ Engine 0.6.16 - 02/23/2020|20w08a5
  • Fixed Heap corruption on Linux X11

  • Validated Controller functionality on Linux X11

  • Fixed Controller bugs when Connected while TRAP is running on Windows

  • Removed Singleton class

TRAP™ Engine 0.6.15 - 02/22/2020|20w08a4
  • Validated Window Title UTF-8 support on Windows

  • Validated Events on Linux X11

  • Validated Window Minimize functionality on Linux X11

  • Validated Window Icon functionality on Linux X11

  • Validated Monitor functionality on Linux X11

  • Validated Window Opacity functionality on Linux X11

  • Validated Window Title UTF-8 support on Linux X11

  • Controller vibrations now only get set if they differ from current (Fixes Linux bug with repeated calls)

  • Fixed compiler warnings on Linux X11

TRAP™ Engine 0.6.14 - 02/21/2020|20w08a3
  • Added support for translucent windows

  • Updated Docs

  • Validated Window Opacity functionality on Windows

TRAP™ Engine 0.6.13 - 02/20/2020|20w08a2
  • Added WindowMinimize/Maximize/RestoreEvents

  • Updated Docs

  • Validated Window Icon functionality on Windows

  • Added more queries to TRAP::Monitor

  • Updated Docs

  • Validated Monitor functionality on Windows

TRAP™ Engine 0.6.12 - 02/19/2020|20w08a1
  • Added Utility functions using TRAP::Math::Vec

  • Validated Controller functionality on Windows

  • Validated Window Minimize functionality on Windows

  • CloseController now only sends ControllerDisconnectEvents if the Controller was connected

  • Updated Docs

TRAP™ Engine 0.6.11 - 02/15/2020|20w07a3
  • Updated Travis.yml. Now uses Vulkan 1.2.131.2 SDK

  • Fixed Linux (XKB) Keyboard not working properly

  • Validated Clipboard functionality on Linux(X11)

  • Fixed and Validated Cursor functionality on Linux(X11)

  • Changed ToString functions in KeyPress/Release/TypeEvent & MouseButtonPress/ReleaseEvent & ControllerDis/ConnectEvent

  • Fixed missing InputCursorEnter calls in WindowingAPIWin32

  • Validated Events functionality on Windows

  • Updated Docs

TRAP™ Engine 0.6.10 - 02/11/2020|20w07a2
  • Updated ConvertToSPIRV tool for Vulkan 1.2 and SPIRV 1.5

  • Really Fixed CRLF endings for Linux

  • Added Tests project. Used for future tests

  • Validated Clipboard functionality on Windows

  • Fixed TRAP_RELWITHDEBINFO preprocessor in Sandbox & Tests

  • Added missing iterators to LayerStack

  • Validated Cursor functionality on Windows

  • Fixed ImGui overwriting Cursor the by Client

TRAP™ Engine 0.6.09 - 02/10/2020|20w07a1
  • Changed Controller API (Temporarily removed XInput)

  • Added support for up to 16 Controllers simultaneously

  • Fixed CRLF endings for Linux

  • Readded XInput support

  • Removed ControllerAPI from Engine.cfg

  • Finished combining DirectInput and XInput APIs

  • Added XInput entries to ControllerMapping

  • Fixed OrthographicCameraController not zooming until Controller trigger > 0.0

  • Fixed Windows builds

TRAP™ Engine 0.6.08 - 02/09/2020|20w06a4
  • Added Config class to Docs

  • Removed HotShader/TextureReloading from Engine.cfg

  • Added SetHotShader/TextureReloading() to TRAP::Application

  • Updated Docs

  • Removed TRAP::VFS::Get() function

  • Removed TRAP::Log::Get() function

  • Added TRAP::Log::GetBuffer() function

  • Added TRAP::Log to Docs

  • Added MonitorConnectEvent

  • Added MonitorDisconnectEvent

  • Fixed PollMonitorsWin32 not updating Monitor Handles

  • Added Monitor(Dis)ConnectEvent to Docs

  • Added automatic handling of Windows on Monitors that got disconnected

TRAP™ Engine 0.6.07 - 02/08/2020|20w06a3
  • Moved TRAP::VideoMode struct to TRAP::Monitor

  • Updated Docs

  • Replaced GetWindowLong with GetWindowLongPtr inside WindowingAPIWin32.cpp

  • Replaced SetWindowLong with SetWindowLongPtr inside WindowingAPIWin32.cpp

  • Removed TRAP::Application::Get() function

  • Made some TRAP::Application functions static

  • Added Single-Line Comments to Config files by using a ‘#’ at the beginning of a line

TRAP™ Engine 0.6.06 - 02/05/2020|20w06a2
  • Added WindowContentScaleEvent for OS DPI setting changes

  • Added GetContentScale to TRAP::Window

  • Updated Docs

  • Added Monitor class

  • Moved VideoMode struct from TRAP::INTERNAL::WindowingAPI to TRAP::

TRAP™ Engine 0.6.05 - 02/03/2020|20w06a1
  • Fixed TRAP_WINDOW_ASSERT undefined in release builds

  • Updated Docs

  • Added WindowDropEvent for Drag’n’Drop

  • Updated Docs

TRAP™ Engine 0.6.04 - 02/02/2020|20w05a1
  • Fixed Engine.cfg RefreshRate = 0 when invalid RefreshRate was used

  • Fixed GLSL Shaders for AMD GPUs

  • Added MouseEnter & MouseLeave Events

  • Replaced Single Linked Lists inside WindowingAPI with std::forward_list (This fixed a memory bug)

TRAP™ Engine 0.6.03 - 01/26/2020|20w04a3
  • Reworked Math API (Vec1-4, Mat3-4, General)

  • Updated GLSLang submodule

  • VulkanShader now convert GLSL to SPIRV 1.5 (Need Vulkan 1.2 SDK)

  • Renamed Events

  • Updated Docs

  • Splitted up WindowEvents from ApplicationEvents

  • Added FrameBufferResizeEvent

  • Switched WindowResizeEvent to FrameBufferResizeEvent

  • Updated Docs

TRAP™ Engine 0.6.02 - 01/21/2020|20w04a2
  • Added optional C++20 features

TRAP™ Engine 0.6.01 - 01/20/2020|20w04a1
  • Switched License from GPL 3.0 to Apache 2.0

  • Replaced GLAD

  • Added custom ImGui OpenGL 4 implementation

  • Updated docs

TRAP™ Engine 0.5.93 - 01/19/2020|20w03a2
  • Branch Window:

    • Fixed X11 parent window initialization

    • Fixed Windows no Win key release event

    • Updated Docs

    • Fixed Windows synthetic key event used TRAP::Input::Key::Unknown

    • Fixed Windows Frame/Window size callback called twice

    • Fixed Windows Trying to set SwapInterval while not using OpenGL

    • Added Cursor captured mode

TRAP™ Engine 0.5.92 - 01/18/2020|20w03a1
  • Branch Window:

    • Finished X11 Windowing

    • Fixed 2 small bugs

    • Made Config files Cross-Platform compatible (read text files now always use LF)

TRAP™ Engine 0.5.91 - 01/12/2020|20w02a4
  • Branch Window:

    • Added WindowingAPI functions to Window

    • Changed WindowProps constructor

    • Added clipboard functions to Input

    • Updated Docs

    • Added detection for X11 and Wayland on Engine startup

    • Engine now only runs on Windows 7 or newer

    • Made branch more linux compatible

TRAP™ Engine 0.5.90 - 01/11/2020|20w02a3
  • Branch Window:

    • Changed WindowingAPI from Scopes to Refs

    • Added more WindowingAPI functions

    • Added GetControllerGUID to Input

    • Added new WindowingAPI functions to Window

    • Updated Docs

TRAP™ Engine 0.5.89 - 01/07/2020|20w02a2
  • Branch Window:

    • Added 3 more functions to Window.cpp

    • Updated Docs

    • Removed some undefined behaviour

    • Removed some null deallocator smart pointer

TRAP™ Engine 0.5.88 - 01/06/2020|20w02a1
  • Branch Window:

    • Changed Context Use function to use raw pointer instead of const Scope reference

    • Removed pointer hack inside Window.cpp

    • Changed some Window functionality

TRAP™ Engine 0.5.87 - 01/05/2020|20w01a2
  • Branch Window:

    • Added ImGui support

    • Fixed False triggering 30FPS lock if ImGui child window is focused outside Main Window

    • Moar references

TRAP™ Engine 0.5.86 - 01/04/2020|20w01a1
  • Branch Window:

    • Added Main Window now keeps track of maximized status and saves it for next start

    • Added ability to set maximized state upon window creation

    • Added ability to set resizable state upon window creation

    • Added ability to set custom image as mouse cursor

    • Added ability to query maximized, minimized and resizable states from a window

    • Replaced every TRAP_BIND_EVENT_FN with lambdas

    • Removed TRAP_BIND_EVENT_FN instead use lambdas now

    • Fixed TRAP::Window crash if no EventCallbackFn was set

    • Updated Docs

2019
TRAP™ Engine 0.5.85 - 12/29/2019|19w52a6
  • Branch Window:

    • Added Hotkey ALT+(KP)Enter to switch between Windowed and Fullscreen mode (Single-Window only!)

    • Fixed Minimizing the Main Window on Multi-Window programs also stopped Rendering on the other Windows

    • Added 30 FPS Lock if Main Window loses focus (Single-Window only!)

TRAP™ Engine 0.5.84 - 12/28/2019|19w52a5
  • Branch Window:

    • Changed Borderless Fullscreen Window behaviour

    • Fixed: VSync setting gets ignored if switch to Fullscreen

    • Fixed: Input polling only used Main Render Window. Now it uses an optional parameter

    • Updated Docs

    • Fixed: Fullscreen Windows using wrong Viewport size

    • Updated Readme

TRAP™ Engine 0.5.83 - 12/27/2019|19w52a4
  • Branch Window:

    • Added more Cursors

    • Updated ImGui submodule

TRAP™ Engine 0.5.82 - 12/26/2019|19w52a3
  • Branch Window:

    • Finished Windows side of WindowingAPI

TRAP™ Engine 0.5.81 - 12/25/2019|19w52a2
  • Branch Window:

    • Updated Docs

    • Debugged and Fixed WindowingAPI

TRAP™ Engine 0.5.80 - 12/20/2019-12/23/2019|19w51a4-19w52a1
  • Branch Window:

    • Finished big parts of the new WindowingAPI

    • Current phase: Debugging of core features & Tidying up the API

TRAP™ Engine 0.5.75 - 12/04/2019|19w49a1
  • Branch Window:

    • Started working on new Window API

    • Removed GLFW

TRAP™ Engine 0.5.74 - 12/01/2019|19w48a4
  • Replaced cstring functions from Controller Input with std::strings

  • Merged some XInput functions with the other APIs

TRAP™ Engine 0.5.73 - 11/30/2019|19w48a3
  • Updated documentation

TRAP™ Engine 0.5.72 - 11/28/2019|19w48a2
  • Tidied up Input header functions

TRAP™ Engine 0.5.71 - 11/26/2019|19w48a1
  • Fixed SandboxLayer not initializing VertexArray

  • Fixed VulkanTexture2D creating Fallback2D with wrong name

TRAP™ Engine 0.5.70 - 11/24/2019|19w47a2
  • Branch ControllerInput:

    • Reverted XInput runtime loading

    • TRAP Engine now requires Windows 8 or newer because of XInput 1.4

    • Added DirectInput as new Controller API

    • Updated Docs

  • Created new Branch for a new Windowing API for Windows(Win32) and Linux(X11)

TRAP™ Engine 0.5.69 - 11/23/2019|19w47a1
  • Branch ControllerInput:

    • Finished Linux Controller Input

    • Windows XInput gets loaded at runtime now

    • Updated Documentation

TRAP™ Engine 0.5.68 - 11/17/2019|19w46a3
  • Branch ControllerInput:

    • Started working on Linux Controller Input

TRAP™ Engine 0.5.67 - 11/16/2019|19w46a2
  • Create new branch for Controller Input

    • Finished Controller Input(XInput)

    • Application Added check if Windows 8 or newer (XInput 1.4 Requirements)

    • Renamed ControllerHat functions to ControllerDPad

    • Added GetControllerDPad for XInput

TRAP™ Engine 0.5.66 - 11/14/2019|19w46a1
  • PNG Image Loader reduced memory usage

  • Reverted last PNG Optimization because it invalidated data

TRAP™ Engine 0.5.65 - 11/10/2019|19w45a4
  • Started working on Controller Input(XInput)

TRAP™ Engine 0.5.64 - 11/09/2019|19w45a3
  • ImageLoader changed some functions

  • Added ability to load 2D texure from memory

  • OpenGLFrameBuffer2D Added resolution safety check

  • Renderer2D now uses only 1 shader and a 1x1 White 2D Texture

TRAP™ Engine 0.5.63 - 11/06/2019|19w45a2
  • Memory SwapBytes now uses bitwise operations

TRAP™ Engine 0.5.62 - 11/05/2019|19w45a1
  • OpenGLTexture2D/Cube Fixed Uploading of 32BPP GrayScale-Alpha Images

TRAP™ Engine 0.5.61 - 11/03/2019|19w44a5
  • Optimized PNG Loader

  • Removed macOS support

TRAP™ Engine 0.5.60 - 11/02/2019|19w44a4
  • Changed Default Fallback Image

  • Started working on Renderer2D

  • Embedeed Shader for Renderer2D

  • Shader/TextureManager Added ability to remove Shader/Texture

TRAP™ Engine 0.5.59 - 10/31/2019|19w44a3
  • Config class can now be used in games

  • Changed some strings to string_views

TRAP™ Engine 0.5.58 - 10/29/2019|19w44a2
  • [Vulkan] Fixed some unitinialized variables

TRAP™ Engine 0.5.57 - 10/28/2019|19w44a1
  • Added HuffmanTree

  • Added Adler32

  • Added own zlib inflator

  • Removed zlib-ng submodule

TRAP™ Engine 0.5.56 - 10/27/2019|19w43a3
  • Finished PNG Loader

  • Tested PNG Loader with PNGSuite

  • Fixed small bugs in PNG Loader

TRAP™ Engine 0.5.55 - 10/26/2019|19w43a2
  • Added zlib to Inflate PNG Image Data

  • Disabled warnings from all submodules

  • Added Unfinished PNG Loader

TRAP™ Engine 0.5.54 - 10/21/2019|19w43a1
  • PNG Finished loading of all chunks

  • PNG Finished CRC Checking

  • Started working on PNG Decompression

TRAP™ Engine 0.5.53 - 10/19/2019|19w42a4
  • Worked on PNG Image File Format

TRAP™ Engine 0.5.52 - 10/18/2019|19w42a3
  • Finished caring about endian correctness

TRAP™ Engine 0.5.51 - 10/15/2019|19w42a2
  • Images started caring about endian correctness

  • Worked on PNG Image File Format

TRAP™ Engine 0.5.50 - 10/13/2019|19w41a4
  • Application Replaced BIND_EVENT_FN with TRAP_BIND_EVENT_FN

  • Texture Optimized RAM usage

  • Refactored OpenGLTexture2D

  • KeyPressedEvent Added actually counting the amount of key repeats

  • Removed EmptyImage class

  • Shaders Removed language tag and HLSL support

  • Shaders Fixed some edge cases in *.shader parsing

TRAP™ Engine 0.5.49 - 10/12/2019|19w41a3
  • Working on Shading language independent loading

  • ConvertToSPIRV Finished GLSL converting

  • Shader Optimized RAM usage

  • VulkanShader Added loading of SPIR-V

  • Dependencies Added SPIRV-Cross

  • Updated documentation

  • OpenGLShader Added loading of SPIR-V

  • Updated README.md

  • Fixed Travis CI

TRAP™ Engine 0.5.48 - 10/09/2019|19w41a2
  • OpenGLUniformBuffer with Stream usage now uses Orphaning(because of internal issues)

  • Working on Shading language independent loading

TRAP™ Engine 0.5.47 - 10/08/2019|19w41a1
  • OpenGLShader GLSL Ignore #version tag & always add “#version 460 core”

TRAP™ Engine 0.5.46 - 10/06/2019|19w40a5
  • OpenGLUniformBuffer Fixed Unbind function not using bindingPoint

  • OpenGLUniformBuffer Added Unbind/Bind safety checks

  • OpenGLUniformBuffer Optimized Binding/Unbinding of the same UniformBuffer to the same bindingPoint

  • Moved all inline functions to the .cpp files

  • Reordered functions to match declarations

TRAP™ Engine 0.5.45 - 10/05/2019|19w40a4
  • Finished & Added Event documentation

  • OpenGLTexture2D & OpenGLTextureCube Added safety checks to Bind and Unbind

  • Now utilizing structured bindings

  • OpenGLTexture2D & OpenGLTextureCube Optimized Binding/Unbinding of the same Texture to the same slot

TRAP™ Engine 0.5.44 - 10/04/2019|19w40a3
  • Windows now use overclocked monitors refresh rate or native refresh rate

  • Worked on Event documentation

TRAP™ Engine 0.5.43 - 10/03/2019|19w40a2
  • Fixed Window not updating position on windowed mode

  • Window Added storing of base video mode for every monitor

TRAP™ Engine 0.5.42 - 09/30/2019|19w40a1
  • Fixed invalid monitor usage if Engine.cfg doesnt exist

  • Added Core.h documentation

TRAP™ Engine 0.5.41 - 09/29/2019|19w39a4
  • Reverted Logging macros back to use TP_

TRAP™ Engine 0.5.40 - 09/28/2019|19w39a3
  • Worked on Event/Core documentation

  • Changed some things in Core.h

  • Changed some macro/template names

TRAP™ Engine 0.5.39 - 09/24/2019|19w39a2
  • Updated all submodules

TRAP™ Engine 0.5.38 - 09/23/2019|19w39a1
  • OpenGL Finished Persistent Mapped Triple Buffered(No Sync) Buffers

TRAP™ Engine 0.5.37 - 09/20/2019|19w38a2
  • Only Textures and Shaders which already exist in the Shader/TextureManager are getting reloaded now

  • OpenGL working on Persistent Mapped Triple Buffered(No Sync) Buffers for streaming data to the GPU every frame

TRAP™ Engine 0.5.36 - 09/19/2019|19w38a1
  • Moved Platform detection macros from premake to Core.h

  • Added OrthographicCameraController class and outsourced camera stuff from Sandbox

  • Added Zooming via mouse scrolling | controller triggers

  • Made OrthographicCameraController rotations optional

  • Made OrthographicCameraController controller input optional

  • Removed Translate and Rotate functions from OrthographicCamera

  • Added support for multiple OrthographicCameraControllers on different Windows

  • Main Window Resizing now gets handled inside the Engine

  • Added documentation for TRAP::Input

TRAP™ Engine 0.5.35 - 09/14/2019|19w37a5
  • Renderer changed Clear()

  • Fixed TimeStep class

  • Added new shader for testing(and fun :D)

TRAP™ Engine 0.5.34 - 09/13/2019|19w37a4
  • Working on Documentation for TRAP::Input

TRAP™ Engine 0.5.33 - 09/12/2019|19w37a3
  • Finished Controller support

  • Changed all enums to use UpperCamelCase

TRAP™ Engine 0.5.32 - 09/11/2019|19w37a2
  • Window Added Detection for which Windows uses which Monitor when using Fullscreen or Borderless

  • UniformBuffer Added support for multiple UBOs @ the same time

  • Working on Controller support

TRAP™ Engine 0.5.31 - 09/09/2019|19w37a1
  • ShaderManager now uses unordered_map

  • TextureManager now uses unordered_map

  • TextureManager changed some functions

  • ShaderManager changed some functions

  • Textures and Shaders that already exists don’t get overwritten now

  • ShaderManager Added Load functions to replace Add + CreateFromFile/Source

  • TextureManager Added Load functions to replace Add + CreateFromFile(s)/Cross

  • VFS Added GetFileName to retrieve filename of a virtualPath

  • Added Scopes and Refs as unique_ptr and shared_ptr replacement

TRAP™ Engine 0.5.30 - 09/08/2019|19w36a7
  • Replaced Key and Mouse defines with enum classes

  • Input Added GetKeyName

  • Window Added GetMonitorNames, GetMonitorName

  • Started Adding Gamepad support

  • Shader Added CreateFromFile without name parameter

  • Texture2D Added CreateFromFile without name parameter

  • TextureCube Added CreateFromCross without name parameter

TRAP™ Engine 0.5.29 - 09/07/2019|19w36a6
  • Added setting of the CursorMode

  • Added Raw Mouse Input support

TRAP™ Engine 0.5.28 - 09/06/2019|19w36a5
  • Working on Documentation(TRAP::Window)

  • Fixed a Bug inside Window SetDisplayMode when using Fullscreen

  • Restructured Window class

TRAP™ Engine 0.5.27 - 09/05/2019|19w36a4
  • BufferElement GetComponentCount() Removed Invalid returns

  • Started Working on Documentation

  • Replaced every unsigned int with uint32_t

  • Replaced every int with int32_t

TRAP™ Engine 0.5.26 - 09/04/2019|19w36a3
  • Added Camera Base class

  • OpenGL Added Texture Swizzle for GrayScale Images

  • RenderCommand Added Enable/Disable of Depth Masking

  • RenderCommand Added Setting of the Depth Test Function

  • RenderCommand Added Setting of different Blend Equations for RGB and alpha

  • RenderCommand Added Setting of different Blend Functions for srcRGB, srcAlpha, dstRGB, dstAlpha

  • RenderCommand Added Default values to some functions

  • Made VSync Window dependent

  • Removed GetVSyncInterval from API::Context

  • Added SetVSyncInterval and GetVSyncInterval to TRAP::Window

  • Removed unecessary TRAP::WindowProps constructor

TRAP™ Engine 0.5.25 - 09/03/2019|19w36a2
  • Removed std::function in EventDispatcher for performance

  • Fixed Changing Wrap/Filter of Texture

  • Added automatic drawing without IndexBuffer if no IndexBuffer exists

  • Added functions Get2D/GetCube to TextureManager

  • Updated Submodules

TRAP™ Engine 0.5.24 - 09/02/2019|19w36a1
  • OpenGL Added Texture Cube with Vertical Cross

  • Added HotTextureReloading to TextureCube

  • OpenGL Added TextureCube with Horizontal Cross

  • Modified TextureManager::Get() function to pass TextureType

  • Added Fallback for TextureCube

  • Made Input class Singleton

  • OpenGL Added TextureCube with multiple images

TRAP™ Engine 0.5.23 - 08/29/2019|19w35a3
  • Vulkan Added incomplete graphics pipeline

  • Added TextureCube Base class

TRAP™ Engine 0.5.22 - 08/28/2019|19w35a2
  • 8BPP Indexed RLE BMP are now unsupported

  • Added EmptyImage for OpenGLFrameBuffer

  • Vulkan Splitted Compute/Graphics shaders

  • OpenGL Changed DrawCall function

TRAP™ Engine 0.5.20 - 08/25/2019|19w34a7
  • Optimized Vertical/Horizontal Functions for Image flipping

  • Optimized Image Decode/Convert Functions

TRAP™ Engine 0.5.19 - 08/24/2019|19w34a6
  • Optimized memory usage in TGA Image Loader for RLE images

TRAP™ Engine 0.5.18 - 08/23/2019|19w34a5
  • Added Multi-Window support

  • Changed Events system so it now passes current window title through

TRAP™ Engine 0.5.17 - 08/22/2019|19w34a4
  • Removed support for Non-Opaque Uniforms in GLSL Shaders(Use UBOs instead)

  • Added support for custom window icon with TRAP::Image

  • Simplified Compile function from OpenGLShader

  • Added support for 16BPP Indexed (RLE) TGA Image Files

  • Fixed bug in DecodeBGRAMap & DecodeRLEBGRAMap

  • Added Support for BMPV5 BitField Images

TRAP™ Engine 0.5.16 - 08/21/2019|19w34a3
  • Switched to OpenGL DSA(Direct State Access) mode

TRAP™ Engine 0.5.15 - 08/20/2019|19w34a2
  • Tested NPOT Textures on all current image formats

  • Simplified FlipX/Y function

  • Made the OpenGLTexture2D more bindless

TRAP™ Engine 0.5.14 - 08/19/2019|19w34a1
  • Got padding for 8 BPP BMP Images working

  • Fixed Linux compiling

  • Added support for NPOT Textures

TRAP™ Engine 0.5.13 - 08/14/2019|19w33a2
  • Got 32 BPP BMP Images working

TRAP™ Engine 0.5.12 - 08/13/2019|19w33a1
  • Working on BMP Image Loader

  • Added check if OpenGLTexture2D exceeds max size

TRAP™ Engine 0.5.11 - 08/11/2019|19w32a2
  • Added Range to FPSLimiter(25-1000FPS)

TRAP™ Engine 0.5.10 - 08/05/2019|19w32a1
  • Finished TGA Image Loader

TRAP™ Engine 0.5.9 - 08/04/2019|19w31a7
  • Working on TGA Image Loader

TRAP™ Engine 0.5.8 - 08/03/2019|19w31a6
  • Added uniform location caching for OpenGL shaders

TRAP™ Engine 0.5.7 - 08/02/2019|19w31a5
  • Allow FileWatcher to track sub directory files

  • Started working on TGA Image Format

TRAP™ Engine 0.5.6 - 08/01/2019|19w31a4
  • Confirmed PPM, PNM, PGM, PAM and PFM Image Formats working

  • Added TextureManager

  • Added HotTextureReloading

TRAP™ Engine 0.5.5 - 07/31/2019|19w31a3
  • Added Image class

  • Added DefaultImage for errors

  • Added PPM Image Format

  • Added PNM Image Format

  • Added PGM Image Format

  • Added PAM Image Format

  • Added PFM Image Format

TRAP™ Engine 0.5.4 - 07/30/2019|19w31a2
  • Tested if Tessellation Control and Evaulation Shader are working

  • Added PATCHES to RendererPrimitive for Tessellation

  • Fixed bug with single comments

  • Removed OpenGLShader comment detection because its unecessary

TRAP™ Engine 0.5.3 - 07/29/2019|19w31a1
  • Added GetDrawCalls()

  • Added optional FPSLimiter

  • Added OnTick, SetTickRate, GetTickRate functions

  • Tested if Geometry Shaders are working

  • Added OpenGL Shader Linker Error detection

  • Added RendererPrimitive option

TRAP™ Engine 0.5.2 - 07/28/2019|19w30a5
  • Added Projection/View/Model Matrix to the Passthrough Shader

  • Changed destruction order Renderer->ShaderManager->RendererAPI->Context->Window

TRAP™ Engine 0.5.1 - 07/27/2019|19w30a4
  • Added FPS and FrameTime overlay

  • Migrated UBO for Matrices to the abstract Renderer

  • Added Projection Matrix recalculation on resizing

  • Added support for Model(Transformation) Matrix

  • Added new FPS calculation method thx to Nilusss

TRAP™ Engine 0.5.0 - 07/26/2019|19w30a3
  • Linux support now official

TRAP™ Engine 0.4.10 - 07/24/2019|19w30a2
  • Readded MsgBoxLinux

  • Fixed premake5.lua to successfully build on Linux and Windows

  • Fixed all issues with Travis

TRAP™ Engine 0.4.9 - 07/22/2019|19w30a1
  • Removed unused Exception class

  • Removed MsgBoxLinux(Will be re-added without the need of GTK)

TRAP™ Engine 0.4.8 - 07/21/2019|19w29a2
  • Resolved Cyclic Dependency in tVec2,3,4 and Mat3,4(I know Math.h is ugly)

TRAP™ Engine 0.4.7 - 07/19/2019|19w29a1
  • Updated Submodules

  • Added UniformBuffer support

  • Changed Shader file format

  • Added support for comments(non range based) in Shaders

  • Shader parser now ignores UniformBufferBlock because they get handled by the UBOs

TRAP™ Engine 0.4.6 - 07/09/2019|19w28a1
  • Removed Texture stuff for now…

  • Moved some Renderer abstractions

  • Renamed Renderer class to RendererAPI

  • Added new Renderer class for abstractions

  • Added RenderCommand class for Renderer settings

  • Removed rectangle from Sandbox

  • Added automatic viewport change on WindowResizeEvent

  • Started evaluating the validity of my Maths API results(Vectors seem to work fine)

  • Added OrthographicCamera class

  • Changed Sandbox Color Shader to allow View and Projection Matrix

TRAP™ Engine 0.4.5 - 06/17/2019|19w25a2
  • Added TextureManager Reload functionality

  • Added Conversion from BGR(A) to RGB(A) format

TRAP™ Engine 0.4.3 - 06/16/2019|19w24a4
  • Added abstract Image class

  • Added Texture(2D) class

  • Added TextureManager

TRAP™ Engine 0.4.2 - 06/15/2019|19w24a3
  • Added TGAImage and BMPImage class to load Images

TRAP™ Engine 0.4.1 - 06/14/2019|19w24a2
  • Added checks for Geometry and Tessellation Shader support inside Vulkan

TRAP™ Engine 0.4.0 - 06/10/2019|19w24a1
  • Added BufferLayout

  • Added Vertex Buffer

  • Added Index Buffer

  • Added Vertex Array

  • Changed where ShaderManager gets destroyed

TRAP™ Engine 06/05/2019|19w23a2
  • Changed TRAP Engine verison to 19w23b1(0.3.2)

  • Worked on VulkanShader

TRAP™ Engine 0.3.1 - 06/03/2019|19w23a1
  • Added IsVulkanCapable() functionality inside VulkanContext

  • Added check if Vulkan 1.1 is supported by physical device inside VulkanContext

TRAP™ Engine 0.3.0 - 06/02/2019|19w22c1
  • Added Runtime switching between RenderAPIs

  • Added MsgBox API to create cross-platform Message Boxes

  • Fixed Bug #9 Crash if Engine.cfg was overwritten with an incompatible RenderAPI

  • Added RenderAPI auto correction for Bug #9

TRAP™ Engine 0.2.78 - 05/31/2019|19w22b1
  • Added Automatic selection of RenderAPI if there’s no/an invalid provided in Engine.cfg

TRAP™ Engine 0.2.77 - 05/30/2019|19w22a4
  • Changed checks if TRAP_PLATFORM_WINDOWS for D3D12 API

  • Changed calculation of FPS & set FPS and FrameTime at the end of the GameLoop

  • Added SetIcon inside Window and embedded TRAP logo as default icon

TRAP™ Engine 0.2.76 - 05/29/2019|19w22a3
  • Big CodeStyle overhaul

TRAP™ Engine 0.2.75 - 05/28/2019|19w22a2
  • Uploaded Repository to GitHub Yay :D

TRAP™ Engine 0.2.74 - 05/27/2019|19w22a1
  • Removed GLFW and ImGui

  • Re-Added GLFW and ImGui as submodules

  • Added GLSLang as Dependencie submodule

  • Reimplemented Hot Shader Reloading(FileWatcher)

TRAP™ Engine 0.2.73 - 05/26/2019|19w21c3
  • Splitted Dependencies into a seperate group

  • Added GLSLang library for runtime GLSL to SPIRV compiling

TRAP™ Engine 0.2.71 - 05/25/2019|19w21c2
  • Added Optional Shader Types to Shader System

  • Added Hot Shader Reloading Support with Hotkey(R+S) and On File Modified

  • Added Fallback Shader to Shader System for runtime Shader compile errors

TRAP™ Engine 0.2.70 - 05/24/2019|19w21c1
  • Windows Favors Nvidia or Amd GPU now

  • Fixed Bug #6 Added a check if shader == nullptr return

  • Removed TryCompile & TryCompileFromFile

  • Replaced GetTimeStamp with TIME macro

  • Added Timer & TimeStamp classes

  • Added GetFrameTime & GetFPS in Application

  • Readded GetTimeStamp with new Format

  • Added some missing constructors

  • Replaced all shared_ptr with unique_ptr

  • Added Multi Monitor support

  • Added Shutdown in Application to use for Hotkeys

  • Added Monitor Resolution Check for Fullscreen see Bug #2

  • Added Refresh Rate to Fullscreen

TRAP™ Engine 0.2.69 - 05/23/2019|19w21b3
  • Finished removing new & delete from Shader System(replaced by unique_ptr)

  • Added advanced debugging for OpenGL(DebugCallback)

  • Fixed Bug Shaders are now correctly destroyed before Context current == nullptr

  • Renamed Pixel Shader to Fragment Shader

  • Replaced some function parameters and return types from string to string_view(Shader System)

TRAP™ Engine 0.2.68 - 05/22/2019|19w21b2
  • Started removing new & delete from Shader System

TRAP™ Engine 0.2.67 - 05/21/2019|19w21b1
  • Updated ImGui

  • Replaced some function parameters and return types from string to string_view(Only Shader System is missing now)

TRAP™ Engine 0.2.66 - 05/20/2019|19w21a2
  • Fixed Bug #4 replaced VFS::Get()->WriteTextFile() with ofstream

  • Config changed forEach loops to use std::find_if()

  • Changed enums to enum classes

  • Removed EVENT_CLASS_CATEGORY macro

  • Removed EVENT_CLASS_TYPE

TRAP™ Engine 0.2.62 - 05/19/2019|19w20d2
  • Removed Warnings

  • Removed #defines

  • Removed potential memory leak in LayerStack

TRAP™ Engine 0.2.60 - 05/19/2019|19w20c2
  • Changed Config class std::map to std::vector

TRAP™ Engine 0.2.59 - 05/18/2019|19w20c1
  • Added Config class(using VFS for reading and writing to files)

  • Added Loading & Saving of Window Width, Height, Mode, VSync and RenderAPI

TRAP™ Engine 05/16/2019|19w20b2
  • Fixed Bug #1 replaced VKContext* Get() with shared_ptr<VKContext> Get()

  • Renamed VK to Vulkan, GL to OpenGL, DX to D3D12

  • Added a Config class(not using VFS for now)

TRAP™ Engine 05/15/2019|19w20a1
  • Finished adding TP_RENDERER_ASSERT back to VKRenderer

TRAP™ Engine 05/14/2019|19w20a
  • Updated Trello board https://trello.com/b/OFXQuscQ/trap-engine-redesign

  • Updated Version Number

TRAP™ Engine 0.2.55 - 05/10/2019|19w19b3a
  • Reported Bug #1 Destruction of Context before VkImageViews could be cleaned up by Renderer Destructor

  • Added more TP_RENDERER_ASSERT back to VKRenderer

TRAP™ Engine 0.2.54 - 05/09/2019|19w19b2
  • Started Adding TP_RENDERER_ASSERT back to VKRenderer

TRAP™ Engine 05/08/2019|19w19b1
  • Added Precompiled Header files(PCH) to speed up compiling

  • Optimized all vector accesses by replacing vector.at() with vector[] operators

  • Log.txt is now created by the Virtual File System(VFS)

  • Replaced all uint8_t with std::byte less error prone because std::bytes has no operator overloads except bitwise operations

  • Added macros for versioning TRAP Engine

  • Changed Parameters of WriteFile(VFS), WriteFile(FileSystem) to use std::vector<std::byte>& instead of std::byte*

  • Added TP_RENDERER_ASSERT back to VKContext