All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Considered passing default data types by value (e.g.
float
) in modules - Refined and simplified method descriptions
- Removed outdated comments and addressed TODO comments
- Streamlined console logging for better clarity
- Replaced
#define
macros ingltf-scene-importer
withenum class
for improved type safety and readability
- Added vcpkg git submodule
- Added pull request and issue templates
- Replaced deprecated nativefiledialog with nativefiledialog-extended package and adjusted implementation in OpenGL viewer app
- Moved texture manager declarations and implementations in separate header and source files
- Utilized fixed size unsigned and signed integers in modules
- Replaced helper method in
gltf-scene-importer
with initalizer_list helper function in separate header file in modules - Considered passing default data types by value, objects by reference in modules
- Avoided setting empty strings during construction in modules
- [Feature] Add nginx web server dev container
- [Feature] Port Desktop application to the web trough emscripten SDK
- Update
CMakeLists.txt
to support web builds. Update bash and ps1 script to compile C++ code trough theemscripten SDK
for rendering in web browsers
- [Fix] Reset AABB attributes for newly loaded scenes
- [Fix] Add vcpkg to dev containers with tools for C++ repos
- [Feature] CI workflows ensuring continuous testing of the modules. Test executables rely on
glfw3
andglew
, requiring a graphical environment. On Linux Ubuntu OS, a virtual framebuffer is established usingxvfb
for those tests. However, for MacOS and Windows OS, only builds are feasible due to the complexities or impossibility of replicating similar setups.
- [Feature] Native file dialog support for loading new glTF scenes
- Introduce helper methods within the
GltfSceneImporter
class to facilitate the correct initial transformations of the scene and its node meshes. These transformations are essential for initially centering the model according to the scene's AABB.
- [Fix] Ensure only node meshes are cleared when using the
Clear()
method in node.cpp
- [Feature] Integrated simple menu (e.g. with sliders and other widgets)
- [Feature] Cross-platform CPack packaging for Linux OSes, MacOS and Windows OSes
- [Feature] Add git submodule providing several glTF samples to load and render
- [Feature] Create
CMakeLists.txt
files for cross-platform build environment generation - [Feature] High code coverage with GoogleTest for methods in rendering and window module structs and classes
- [Feature] CI workflows ensuring cross-platform compilation primarily for Desktop operating systems
- [Feature] CI workflows ensuring a coherent code base trough auto-formatting with clang-format and security with cpplint
- [Feature] Support for glTF scene loading
- [Feature] PBR shader pipeline considering primarily the metal roughness workflow