Changelog
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.
[Unreleased]
Changed
- BREAKING: Enum counter entries renamed to
size_(#34)- Consistent naming across all enums
- Improved code generation and Doxygen compatibility
- Uses trailing underscore to avoid macro conflicts
- BREAKING:
MeshDatamerged withMesh(#22)- Simplified architecture by removing redundant abstraction
- Updated all references throughout codebase
- Documentation updated to reflect changes
UniformValueMap::float_valreturn type refactored (#33)- Changed from pointer to
std::optionalfor safer API - Better matches intended usage patterns
- Changed from pointer to
Materialownership structure (#13)- Material now owns both
ShaderandMaterialData - MaterialData is now optional (can be nullptr)
- Reduced tight coupling and unnecessary indirection
- Cleaner hierarchy:
Material → shared_ptr<Shader> + shared_ptr<MaterialData>
- Material now owns both
Fixed
- Potential nullptr dereference in
MaterialData(#16)- Added proper null checks
- Improved safety in material handling
[Milestone 1] - 2025-10-21
Added
- Application layer with event system
- Input manager for keyboard, mouse, and gamepad
- Low-level API subsystems integration (GLFW, GLAD)
- Basic rendering pipeline
- Scene graph with transform hierarchy
- Camera system with projection management
- Material and shader system
- Mesh and geometry handling
- Math library (vectors, matrices, transforms)
- Scoped logger implementation (#8)
- Default loggers for specific scopes (e.g.,
helios.rendering.shader) - LogManager for centralized logger access
- Default loggers for specific scopes (e.g.,
Infrastructure
- CMake build system with C++23 modules support
- Cross-platform support (Windows, Linux, macOS)
- Unit testing framework with Google Test
- Example applications (simple cube rendering, game controller input)
Release Notes
Upcoming Breaking Changes (Unreleased)
The following breaking changes are planned for the next release:
Enum Sentinel Naming (#34)
All enum counter/size entries have been renamed to size_:
// Before
enum class Key {
A, B, C,
COUNT // or SIZE, or size, etc.
};
// After
enum class Key {
A, B, C,
size_ // consistent across codebase
};
Migration: Search and replace enum size entries to use size_ consistently.
MeshData Removal (#22)
MeshData has been merged into Mesh, simplifying the architecture:
// Before
MeshData meshData = ...;
Mesh mesh(meshData);
// After
Mesh mesh = ...;
Migration: Remove MeshData references and use Mesh directly.
Material Ownership (#13)
Materials now own their shader and material data:
// Before
MaterialData materialData(shader, properties);
Material material(materialData);
// After
auto shader = std::make_shared<Shader>(...);
auto properties = std::make_shared<MaterialProperties>(...);
auto material = std::make_shared<Material>(shader, properties);
Migration: Update Material construction to pass shader and properties directly.