| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307 |
- Changelog
- - 0.11.0
- - Due to changes in the Vulkan layer, the newest SDK must be installed on macOS.
- - Removed rendergraph. Applications are now expected to roll their own bespoke "application renderer"
- - Removed viewports as a construct from the engine code.
- - Revamped camera system -> kcamera_system, which has increased responsibility of items like fov, near/far clip, projection matrix.
- - Renamed frustum->kfrustum
- - Reworked material system to replace khandles with typedefed u16s (kmaterial). This results in a far lighter data structure being passed around for material instances.
- - Renamed *material* to kmaterial (i.e. material_instance -> kmaterial_instance)
- - Reworked shader system to replace khandles with typedefed u16s (kshader).
- - Renamed shader_system to kshader_system and updated all references.
- - Added KASSERT_DEBUG_MSG, which is an assertion that is only included in debug builds and also takes in a string message for context.
- - Removed khandles from the renderer and renderer backends.
- - Reworked timeline system to use typedefed u16s (ktimeline) in place of khandles.
- - Renamed xform -> ktransform. All code reference updated.
- - Reworked ktransform system to use typedefed u32s(ktransform) in place of khandles.
- - Reworked audio frontendThe metadata for the given node, or INVALID_ID_U64 on error. to use typedefed u16s(kaudio_emitter) in place of khandles.
- - Removed dependency on the hierarchy graph. It is now up to the bespoke application scene to provide this.
- - Added renderer support for double-sided materials.
- - Added support for 'masked' materials. Those materials with both 'masked' and 'has_transparency' set use the discard method of transparency (best for things like foliage).
- - The threshold for discard is hardcoded to 0.1, and may be configurable in the future if the need arises.
- - Emissive values and texture maps now work on PBR materials.
- - Fixed a variety of Vulkan validation issues.
- - Added a new renderer config option require_discrete_gpu to indicate if a dedicated GPU is required by the application. Defaults to false if not provided. Ignored on macOS.
- - Added BVH to use for scene picking, along with several utility functions surround this.
- - Converted renderbuffers to use handles (krenderbuffers).
- - Added support for storage buffers.
- - Added string_nformat and string_nformat_v to allow string formatting to be done on the stack, if desired. They are the ultimate replacement for the unsafe variants.
- - Changed renderer frontend (and backend) to use the same texture handle for both, eliminating the need for handle lookups between the two.
- This also means there is no longer a backend ktexture handle type. Only the texture system manages these handles now, so any handle must be obtained via the texture system.
- - Added pool_allocator.
- - Added binary_string_table.
- - Replaced MEMORY_TAG_ENTITY and MEMORY_TAG_ENTITY_NODE with MEMORY_TAG_BINARY_STRING_TABLE and MEMORY_TAG_BINARY_DATA, respectively, as entities are not a part of Kohi core.
- - Changed Kohi binary file magic number marker from 0xCAFEBABE to 0xDECAFBAD. This will require all assets to be re-imported.
- - Material system base material loads are now synchronous, eliminating the need to wait to check its properties. Its textures are still async, though.
- - Animation system added (part of the model system);
- - Created K3D universal model format, which can store either animated or static mesh data.
- - Added custom 'printf' backing for string_format which can now take vector and kname arguments. See string_format comments for details.
- - Fixed issues in the audio system that were causing issues between 2/3D audio not loading correctly in certain scenarios.
- - Added ability to preload kaudios without immediately issuing a new instance. These are not auto-released by default.
- - NOTE: kaudios obtained the "old" way are auto-released when the instance count reaches 0.
- - Added platform_get_file_mtime to platform layer, which get a file's modified time in unix timestamp format (u64).
- - Added --updated-only option to asset importer so that only updated assets (i.e. source > target asset time) are re-imported.
- - Added option to use shader with a given topology for greater control over how things are rendered.
- - Added kson_tree_to_string_with_options to give formatting control over indent levels and tabs/spaces. kson_tree_to_string now pipes into this
- with new defaults of tabs instead of spaces, and 1 character per indent level.
- - Added enhancements to hardware detection for macOS, Linux and Windows to facilitate better error reporting.
- - Added kcamera clone and INVALID_KCAMERA. Fixed a few small issues around this.
- - Removed hierarchy_graph
- - Added parent capability to transform system and removed ability to set world transform. This is now calculated automatically by the transform system on update.
- - Added clipboard functionality at the platform layer. For now, this just handles text.
- - Simplified lifecycle of Standard UI controls by removing load (now part of create), unload (now in destroy), and frame_prepare (now part of render).
- - Fixed various bugs with Standard UI, including using correct sampling and adding mouse event propagation blocking to controls by default.
- - Added ability to register an event for a single firing, upon which it auto-unregisters.
- - Added missing functions exposing binding of samplers to binding sets in shader system.
- - Fixed and enhanced SUI control focus and text input. Added numeric types as well as string to textboxes.
- - Fixed an issue that caused debug data to render correctly, as well as BVH picking.
- - Moved renderer from game code to a newly-defined kforward_renderer in the runtime.
- - Moved scene from game code to a newly-defined kscene in the runtime.
- - Moved editor from game code to the kohi utils plugin.
- - Added ability to have multiple vertex layouts per shader, with each specifying said layout in the shader config.
- This allows for the same fragment shader to be used across multiple vertex layouts (i.e. for skinned vs static vs terrain/blended geometry).
- - Added configurable shader attachments.
- - Added depth pre-pass to renderer.
- - Added configurable fog to scene and pass-through to renderer.
- - Renamed SUI -> KUI (Kohi UI), and reworked to use handles/ids like other Kohi systems. Also setup configurable atlas and removed hardcoded values.
- - Revamped build system to allow components to be built individually as well as all together.
- - 0.10.0
- - Combined asset_image_format and texture_format into a single kpixel_format which is used for both.
- - Moved VFS from core to runtime.
- - Jobifyed async asset loads.
- - Fixed logic errors in string_directory_from_path and string_filename_from_path.
- - Refactored texture system to use a newly-created typedef 'ktexture', which is essentially an id used to lookup texture info. Texture system internals and engine-wide references were reworked to support this.
- - Added KRESIZE_ARRAY utility function.
- - Reworked audio system to use indices instead of handles, and reworked to use new asset system.
- - added 'default_package_name' option to app config, intended to tell the VFS what package to use by default if one is not provided.
- - 0.9.0
- - Fixed several issues in the math library where some functions were not the correct handedness and/or major. The
- entire library is now right-handed and column-major (-z forward, +y up) as it should have been.
- - Fixed an issue with OBJ imports when not de-duplicating vertices.
- - 0.8.0
- - Removed preferential VSCode settings from settings.json in the project. Only project-specific config is remaining. The rest now exists in user configuration and will be added to an external repo if wanted.
- - Added debug labels to all rendergraph nodes using "renderings".
- - Added dynamic state caching on the renderer frontend. These get automatically re-applied per "rendering".
- - There is a "per frame default" struct of settings that is automatically reapplied at the beginning of a frame.
- - Added water plane resource, which allows the rendering of a basic plane of water.
- - The rendering of this is handled within the forward rendergraph node.
- - Skybox rendergraph node has been merged with forward rendergraph node to facilitate water plane rendering.
- - Fixed an issue with UTF8 window titles not rendering correctly in X11 (Linux).
- - Fixed a few issues on Win32 when dealing with wide strings.
- - Fixed several memory issues that were causing stability issues. The bonus of this is that now the custom allocator
- has more debugging capability and can be disabled if needed.
- - string_length now gracefully handles null being passed and returns 0.
- - Fixed an issue where the skybox was not using the inverted view matrix for the reflection view when rendering for water.
- - Tweaked the fragment shader for the water to make it look a bit nicer and properly add a "wetness" look to surfaces under water.
- - Added asset packaging system.
- - Added Virtual File System (VFS) which sits atop the packaging and native file systems to abstract the process of reading/writing files from the engine entirely.
- - Added new Asset System, responsible for the lifetime of assets.
- - Split off responsibility of resources to only be resources used in rendering/the world, versus assets which are loaded from disk/package.
- - Added `kson_object_create()` and `kson_array_create()` to enhance the KSON API's usability.
- - Added gets/sets to kson for mat4, vec4/3/2 types to enhance the KSON API's usability.
- - Added kname system, a system used to hash strings (to u64) for faster comparisons. Strings and thier hashes are stored in a global lookup table for reuse. These should be used
- for any "named" item in Kohi, such as assets or resources. knames are case-insensitive.
- - Added kstring_id system, a system used to hash strings (to u64) for faster comparisons. Strings and thier hashes are stored in a global lookup table for reuse. These should be used
- for any case-sensitive string in Kohi.
- - Added u64_bst (Binary Search Tree) structure. Primarily for use with knames, but could be used for any u64-keyed data.
- - Added typed arrays with iterators. These are fixed-size but dynamically allocated array containers. See kohi.core, containers/array.h.
- - Added typed stackarrays with iterators. These are fixed-size and stack-allocated array containers. See kohi.core, containers/stackarray.h.
- - Added typed darrays with iterators. These are dynamic-size, dynamic resizing (and dynamically allocated) array containers that are a
- type-safe replacement to the old darrays. See kohi.core, containers/darray.h.
- - Added additional public API to hierarchy_graph to further avoid having to access the internal structure.
- - Renamed k_handle -> khandle.
- - Renamed shader -> kshader.
- - Renamed range -> krange.
- - Overhauled kson parser internals to use kstring_ids instead of strings for faster lookups.
- - Added PBR field support to MTL serializer for material imports from Wavefront OBJs.
- - Added "triple_buffering_enabled" option to renderer config. This gets passed on to the renderer during creation. May get ignored by the backend if not supported for some reason.
- - Enhanced renderbuffer deletions to now be queued for a few frames before actually freeing the data in the buffer. This eliminates read/write race conditiions.
- - Synchronized all shaders using vertex_3d-like vertex information to actually use the same data structure (involved changing in_tangent vec3-vec4 in some cases)
- - Added ability to dynamically set face cull mode in renderer.
- - Changed point/dynamic lights to properly use a range of 0-1 for rgb values. PBR shaders now scale this internally automatically instead of requiring it from the light.
- - Revamped audio system and emitters. Emitters are now configurable and loadable in scenes.
- - Reworked OpenAL audio plugin to be more robust and feature-rich, with more features coming.
- - Fixed and issue in the build makefiles regarding spaces in include paths for compile_flags.txt files.
- - Audio now can be assigned a "space" of 2D or 3D regardless of whether it is mono or stereo.
- - KNOWN ISSUES:
- - Terrains do not work due to the dependance on blended materials, which do not yet exist. These will be re-added in a future version.
- - 0.7.1
- - Fixed window resizing issues in macOS
- - 0.7.0
- - NOTE: For macOS, use version 0.7.1 instead, as a bugfix was made there for it.
- - NOTE: Due to changes in structure, it is recommended that you perform a full clean build if you used prior versions previously.
- - It is also recommended to manually remove all files within `bin/` and `obj/` directories.
- - Performed rename pass on all libraries and executables on the project for consistency. Build scripts have been updated to reflect this.
- - Kohi-specific libraries now begin with `kohi.<library>`. For example, `kohi.engine`.
- - Kohi plugins are now named in the format `kohi.plugin.<plugin_type>.<name>`. Examples are `kohi.plugin.renderer.vulkan` and `kohi.plugin.audio.openal`.
- - Tests will be split by library. Ex: `kohi.engine.tests`.
- - Tools will have a separate 'namespace' as well `kohi.tools.<name>`. Ex: `kohi.tools.versiongen`.
- - Applications will use the application name as the namespace, followed by '.kapp' or '.klib' `<application_name>.[kapp|klib]`. Ex: `testbed.kapp` is the executable and `testbed.klib` is the code library.
- - Renamed "simple_scene" to just "scene". Moved it and loader to engine core, removed references from testbed application.
- - Added handles to be used in place of raw pointers. Resource systems (i.e. materials, textures, meshes, etc.) need to be converted to use this.
- - Created xform and xform system to replace transforms.
- - Fixed an issue on Linux (X, specifically) where key repeats were disabled if the application did not shutdown gracefully.
- - Fixed an issue where resources were incorrectly reporting memory tags other than MEMORY_TAG_RESOURCE for load/unload. This was causing erroneous reports of some types (notably textures).
- - Fixed an issue that was causing text to flash/render incorrectly on some platforms. The underlying issue was usnga single staging buffer instead of a unique one per frame, which resulted in a race
- condition of data being used/updated in the staging buffer across frames.
- - Fixed an issue where darrays could be initialized to a different type than what was actually being assigned.
- - Added custom storage format (kson), complete with tokenizer/parser.
- - Converted scenes to use new kson storage format.
- - Added flags to scene load, can flag as read-only (vs. editor mode) etc.
- - Added "to_string" functions for basic types (int, bool, float, etc.) and vector types (vec2, vec3, etc.).
- - Added kreallocate, kreallocate_aligned and kreallocate_report for easier handling of reallocs in user code.
- - Added basic timeline system. Will likely be enhanced in the future.
- - Project has been restructured.
- - Expanded kvar system to also include floats and strings along with ints. Registered new console commands as well.
- - Simplified kvar system so that kvar_x_set also creates the variable if it doesn't yet exist, and remove create function. Also added "description" field for an optional description if desired, which will show up when dumping all kvars.
- - Fixed string API to no longer require unnecessary strings when converting ints, floats and bools to string.
- - Added KDEPRECATED macro to mark functions as deprecated.
- - Marked renderer frontend "geometry" functions as deprecated. These will be removed in a future release.
- - `math/geometry_utils.h` has now been combined with and renamed to `math/geometry.h`.
- - Changed `dest` parameter of `darray_pop()` and `darray_pop_at()` to be optional. If 0/null is provided, the element data is just thrown away.
- - Enhanced assertions to actually stop the application when failed.
- - Added a new, safer version of `string_format` that allocates the memory needed on the fly. Renamed the previous version to `string_format_unsafe` and marked as deprecated.
- - Renamed assets folder to 'testbed.assets' and moved application config to it. This is now the testbed-specific asset folder.
- - Shader system 'get' function now attempts to auto-load shader if it does not yet exist. This allows shader 'load'/resource logic to be removed elsewhere.
- - Added min and max values to defines for all integer types.
- - 0.6.0
- - Updated versioning system and build process. Each library now maintains its own version (and potentially changelog at some point).
- - New version format is MAJOR.MINOR.PATCH.BUILD-REVISION. This will allow for greater versioning control and patching to minor versions.
- - Only 0.6+ will follow this, older versioning will stay as it is.
- - Removed a trace warning about early memory allocations.
- - Branching strategy is changing.
- - Branch names will be based on version using the format "vMAJOR.MINOR.PATCH". Ex: v0.6.0
- - Development will continue to happen in feature branches, but those will be branched from version branches.
- - When complete, feature branches will merge into version branches.
- - Ex: feature/terrain_chunking is branched from v0.6.0. When complete, feature/terrain_chunking is merged into v0.6.0. feature/terrain_chunking is then deleted.
- - Version branches will be merged into main as they are completed. A tag is then created on the main branch.
- - Release cycles (when they happen) will follow this.
- - Changelog will list all changes under a minor version (i.e. 0.6.0) unless a later patch is made.
- - If a patch update is made, new notes would appear under that patch version (i.e. 0.6.1, 0.6.2, etc.).
- - All libraries (as of now, engine, plugin_audio_openal, standard_ui, testbed_lib and vulkan_renderer) now maintain their own versions.
- - NOTE: The engine version is the one used to denote primary releases, this changelog, etc. since plugins, etc. may not have updates between versions.
- - The build process now generates a file for each library: <assembly-folder>/src/<assembly-name>_version.h. Ex: engine/src/engine_version.h.
- - Each library includes its version file and now reports version to the console during its initialization.
- - versiongen utility has been updated to accept a filename parameter instead of major/minor versions. The build process passes "<assembly-folder>/version.txt".
- - version.txt is read in its entirety (up to 10 characters) and is used to define the major, minor, and patch. Ex: "0.6.0". This is then prepended to the generated build-revision to complete the format listed above.
- - Added terrain chunking support.
- - Fixed an issue with darrays that could cause invalid header data in certain scenarios.
- - Updated simple scene query functions to take pointers to arrays of geometry render data to account for array resizes if needed.
- - Fixed extents generation for terrain chunks, which fixes improper frustum culling issue.
- - Fixed a bug where shader scopes weren't being bound properly in the scene pass, causing debug objects to render all over the place.
- - The scene is now only queried once for geometry to be used with all shadow map cascades, as opposed to once per cascade.
- - Removed "wireframe" shader config property and replaced it with "supports_wireframe". See next entry for details.
- - Added the ability to have a wireframe mode, if supported, in a shader. This creates a separate set of pipelines that are used when this
- mode is selected.
- - Added a RENDERER_MODE_WIREFRAME, which will enable wireframe for certain shaders when swapped to.
- - macOS: Note that, in order to support wireframe mode in macOS the newest (at the time) Vulkan SDK
- must be used (1.3.275).
- - Fixed an issue where ksort would segfault while trying to access a negative array index.
- - Added "skirt" geometry to terrain sides in an effort to plug holes in transitions between chunks.
- - Vulkan Renderer performance updates (see Vulkan Plugin Changelog).
- - To facilitate the above, several areas of logic that previously required a separate command buffer and queue wait have had thier work offloaded
- to the beginning of the next frame. This reduces waits and more efficiently batches workload to the GPU.
- - The core engine frame lifecycle now has a slightly altered sequence of events. The new cycle is as follows (only changed section is listed):
- - After resize detection, renderer_prepare is called, which can cause the renderer to wait for resource regeneration if needed. Otherwise:
- - renderer_begin is now called in the main engine loop instead of by the application. This makes the renderer begin its current command buffer.
- - systems_manager_renderer_frame_prepare is called. All systems can now have a "frame_prepare" phase, which is optional. Only standard_ui uses this for now. This is to allow updates which need GPU uploads to occur before the rest of the frame workload begins.
- - The application instance recieves a call to its prepare_frame.
- - In testbed, this calls a new function in simple_scene for prepare_frame, which handles any GPU uploads before the rest of the frame workload begins.
- - renderer_end ends the renderer's current command buffer. This is now called from the main engine loop instead of the application.
- - renderer_present presents the current drawn-to attachment to the screen. This is now called from the main engine loop instead of the application.
- - Added missing "peek" function to stack container.
- - Fixed an issue with the sui_label_control where pending data didn't include new vertex/index buffer offsets during an update.
- - Created specialized rendergraphs for Forward rendering, one for the Editor (currently lives in TestBed) and one for Standard UI.
- - Added job ids, and job dependencies that can be used to link jobs one after another.
- - Added semaphores.
- - Updated job system to use semaphores to block worker threads until there is work to be done. Semaphores are signaled when work is deployed to a job thread.
- - Added threadpool, worker threads and setup layered texture loading to use them.
- - 0.5x
- - Added Physically-Based Rendering (PBR) material type support.
- - Fixed an issue with pulling the default checkerboard texture when already using a default texture (i.e normal, spec, ao, etc.).
- - Added in partial descriptor binding support in Vulkan backend to allow for uniform descriptor aliasing.
- - Modified material system to handle PBR properties.
- - PBR materials are now required on terrains. Phong will not work.
- - Added default cubemap, metallic, roughness and AO textures to texture system.
- - Added query to texture system to indicate if a given texture is a one of the default textures.
- - Adjusted material system to globally track an irradiance cubemap for IBL.
- - Renamed clock to kclock to avoid collisions with standard library types.
- - Added function pointers to rendergraph_passes to get attachment textures and regenerate textures for self-owned attachments.
- - Added shadow maps with optional PCF filtering. A KVAR called "use_pcf" can be toggled 1/0 to turn this on/off.
- - Added dynamic shadow frustum generation.
- - Implemented generic quick-sort (see ksort.h).
- - Added queries to simple scene for getting mesh and terrain geometries using frustums.
- - Fixed various math bugs as they relate to frustum generation and use.
- - Added per-frame tracking of shadow map draw calls.
- - Added cascading shadow maps (right now limited to 4 cascades).
- - Fixed a bug in the Vulkan allocator where memory was not properly freed from a call to vulkan_alloc_reallocation if the reported size was 0, as per the spec.
- - Moved uniform sampler counts logic to renderer frontend to facilitate queries.
- - Removed all traces of defunct UI material type.
- - Removed Phong material type, shaders, etc. Entire material pipeline is now PBR.
- - Changed the way samplers work on the frontend and backend to allow for arrayed uniforms.
- - Shader config now requires specification of sampler type (sampler2D, samplerCube, sampler2DArray, etc.)
- - Shader config now allows for arrays of uniform types. Ex: sampler2D[4] specifies an array of 4 sampler2Ds.
- - Added array_index argument to shader uniform-setting functions to allow for setting arrayed uniforms. array_index is ignored for non-arrayed uniforms.
- - Changed nomenclature of "uniform index" to "uniform location".
- - Moved shader file parsing logic to frontend in preparation for #include directive logic.
- - Vulkan backend changes to allow not having any global/instance (one or the other) UBO and/or samplers.
- - Updated the API around local uniforms to require a bind/set/apply flow similar to the other scopes.
- - Refactored Vulkan push constant logic to handle the above.
- - Added support for array textures. Converted shadow map pass to use them as attachments.
- - Changed PBR and terrain materials to use a "combined" map containing metallic in R, roughness in G and AO in B. Also wrote a conversion utility in tools for this.
- - As a result, explicit metallic, roughness and AO maps have been removed.
- - Terrains now combine maps from materials into a single array texture. This comes with the requirement that all terrain material maps be of the same size.
- - Refactored various Vulkan image loading logic to properly handle layered images.
- - Added ability to load layered textures in the texture system by passing a series of texture names and a layer count to a new function.
- - Fixed an issue with parsing directory from string where the resulting string was not zero terminated.
- - Fixed various obj/mtl loading issues and added conversions for new PBR map types.
- - Fixed an issue in the shadow map shader/pass where albedo textures were not being sampled (thus transparent materials weren't being taken into account).
- - Added a test tree model resource.
- - Point lights are now unaffected by directional shadow maps.
- - 0.4x
- - Added first pass of Standard UI system, including panel, button, label, and textbox controls.
- - Removed ui_text and replaced with sui_label_control as part of the Standard UI system.
- - Moved DebugConsole to Standard UI.
- - Resolved several DebugConsole bugs, in particular ones involving commands and command history.
- - Modified the Windows build process to use incremental linking to speed things up.
- - Added cursor to textbox control. Fixed typing, backspace, delete and left/right navigation.
- - Added support for stencil buffers/stencil testing.
- - Added support for toggling keyboard key repeats on/off.
- - Added Standard UI clip masks.
- - Fixed various issues around Vulkan dynamic state feature detection.
- - Changed Vulkan backend to require dynamic pipeline state either natively (Vulkan 1.3+) or via extension (VK_EXT_extended_dynamic_state). If this plugin is not available, this backend won't work. This is because the engine requires several forms of dynamic state, potentially all at once, which would mean having a pipeline for each state _on top of_ per topology category, which was becoming unweildy.
- - Updated readme with build instructions and updated prerequisites.
- - Updated VSCode configuration to include new libraries' include paths.
- - Various tweaks to debug console to make it look/act nicer.
- - 0.3x - Changelog started at this point to track change list. The major changes here are:
- - Fixed build process for both debug _and_ release builds, including a few required code changes.
- - Release builds now properly make no-ops out of KTRACE and KDEBUG log messages.
- - Release builds are now set to use O2 level compiler optimizations.
- - Debug builds are now set to use O0 level compiler optimizations explicitly (although -g did this informally already).
- - Removed all geometry logic and tracking from the renderer backend and correctly handle this in the frontend.
- - Moved geometry vertex and index buffers to the renderer frontend.
- - Removed the concept of geometry internal data, since it no longer has graphics API-specific data (and really never did).
- - Geometry itself now manages the concept of vertex/index buffer offsets.
- - Moved version console output to systems_manager, right after logging is instantiated so it appears at the top of the logs.
- - Overhauled the implementation of identifiers to now be a struct which holds a u64, generated by a newly Mersenne Twister random number generator. This new refactoring will also ease the process of (de)serialization.
- - Anything using a form of "unique id" should now be using the refactored identifiers.
- - Fixed scene unloading by handling this state in application_prepare_frame in testbed_lib.
- - Fixed a state checking issue in simple scene updates to trigger an unload and return if an unload has been requested.
- - Added device pixel ratio logic for Windows and macOS.
- - Added event handler for monitor changing on macOS. This helps capture DPI changes when switching monitors.
-
- - 0.2x - Added audio plugin. Build versioning wasn't fixed yet, though, so this wasn't a readily visible
- change in version number. Also recieved a plethora of nondescript bugfixes and performance tweaks.
- - 0.1x - Initial versions of the engine including all changes up to ~October 2023. Includes
- basic functionality and some basic engine sub-systems.
|