Skip to main content

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: MeshData merged with Mesh (#22)
    • Simplified architecture by removing redundant abstraction
    • Updated all references throughout codebase
    • Documentation updated to reflect changes
  • UniformValueMap::float_val return type refactored (#33)
    • Changed from pointer to std::optional for safer API
    • Better matches intended usage patterns
  • Material ownership structure (#13)
    • Material now owns both Shader and MaterialData
    • MaterialData is now optional (can be nullptr)
    • Reduced tight coupling and unnecessary indirection
    • Cleaner hierarchy: Material → shared_ptr<Shader> + shared_ptr<MaterialData>

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

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.