Repository navigation
Releases
Releases · eldritch-codex/nodens
0.3.0
Added
- Fixed-step pacing: set
FPacingConfig::PacingtoEPacing::Fixedto advance the loop in steps ofFixedDelta.examples/headlesspulse --fixedshows it. (#50) scripts/check-docs-links.shfails CI on a broken relative link underdocs/. (#49)docs/STYLE.md, the writing standard for the guide. (#51)
Changed
- Breaking:
FApplicationConfigtakes oneEPresentationvalue (Window,WindowImGUI,Headless) in place of theEnableGUIandCreateWindowbooleans. (#50) - Breaking: the CMake option
ND_BUILD_TRACY_PROFILERis nowND_ADD_TRACY_PROFILER_TARGET, and it defaults toON. (a9f155d) Application::Run()takes frame time from the newNodens.FramePacermodule and clamps it toFPacingConfig::MaxFrameDelta(250 ms by default). (#50)TaskSystem::Submitaccepts move-only arguments and no longer allocates astd::shared_ptr. (15403cc)- The tutorial and architecture pages moved from the wiki into
docs/guide/, anddocs/is split intoguide/,dev/and the branching and committing pages. (#49) - The guide follows the new style standard. (#51)
- Every change goes through a pull request, including
docs,style,choreand toolingbuild. Seedocs/BRANCHING.md. (#49)
Removed
scripts/check.sh, since CI now runs on every pull request. (#49)
Note
Full Changelog: v0.2.1...v0.3.0
0.2.1
Added
scripts/check.shruns the format check on the changed C++ files and a Debug build inbuild/check, in the dev container. It is the check to run before a direct commit that touches C++ or the build.
Changed
- Small changes (
docs,style,chore, toolingbuild) are committed directly tomain, and risky ones (feat,fix,refactor,perf,ci, andbuildthat changesCMakeLists.txtor a dependency version) go through a squashed pull request. A failingmainis fixed before anything else, and a tag is created only on a commit whose CI run succeeded. Seedocs/BRANCHING.md. - The Zed tasks and debug scenarios run in the dev container through the Dev Containers CLI (
@devcontainers/cli), and.zed/docker.shis gone. The CLI reads the samedevcontainer.jsonas the editor, so the container is not described twice. Both GPU configurations mount the project at its host path, so build outputs and debugger source paths match the host.
Note
Full Changelog: v0.2.0...v0.2.1
0.2.0
Changed
- The job system type is
TaskSystem, renamed fromJobSystem, and the accessor isApplication::GetTaskSystem(). In the engine literature a job system drains a queue of jobs that run to completion, with coroutines or fibers for jobs that sleep and counters to join a batch (Gregory 2019, pp. 553-555), while this pool takes one callable and returns a future; seedocs/naming.md. - The graphics types are
IGraphicsBackend,OpenGLBackendandVulkanBackend, renamed fromIGraphicsContext,OpenGLContextandVulkanContext, andIWindow::GetBackend()replacesGetGraphicsContext(). The interface covers backend initialization and frame presentation, and Vulkan owns an instance, a device and a swapchain rather than a context, so the shared word cannot be context; the window's member ism_Backend. - The theme enum is
ETheme, renamed fromEDefaultTheme. Its first member isNone, so the word default belongs to the appliers, which keep their names, and the theme field onFApplicationConfigisTheme; the module keeps the nameNodens.DefaultTheme. - The startup structs are
FWindowConfigandFApplicationConfig, renamed fromFWindowPropsandFApplicationSpecification, and the names that hold them follow: the window factory and theApplicationconstructor takeconfig, and the examples holdappConfig.FWindowConfig::APIis nowGraphicsAPI, matching the enum and the application config.
Note
Full Changelog: v0.1.1...v0.2.0
0.1.1
Changed
- ImPlot is fetched at
v1.1, up fromv1.0. - The dev container has one configuration per GPU type,
.devcontainer/nvidiaand.devcontainer/dri, instead of a single file edited by hand.docker.shpicks one, andNODENS_GPUoverrides it. - The shared Zed tasks and debug scenarios are tracked in the repository, and they run from the project root even when the Zed workspace is a parent folder.
Fixed
- Configuring without the Vulkan SDK prints a warning. Before, the build was silently OpenGL-only and exited at startup under the default Vulkan API.
- The
circularwave3dexample advances by the frame time, so the curve no longer scrolls faster at a higher frame rate. - GLFW is fetched at its pinned tag. It was declared but never made available, so the build linked the system copy.
ND_BUILD_EXAMPLESdefaults to off when Nodens is consumed by another project. The default was on, because the secondoption()call was a no-op.- The
MouseButtonReleasedevent has a name. It was empty, so the event logged as an empty string and the file failed to compile with GCC. EventBus::Subscribetakes the registry lock, andQueueEventno longer reads the subscriber list unlocked for its trace line, so subscribing or queueing a new event type from another thread no longer races on that list.
Note
Full Changelog: v0.1.0...v0.1.1
0.1.0
Added
- Application lifecycle built around a layer stack, with an application specification that selects the graphics API.
- GLFW windowing with OpenGL and Vulkan backends, each gated by a CMake option.
- Event system: typed events routed through the layer stack, plus a thread-safe publish and subscribe bus for queued dispatch.
- Input polling with platform-independent key and mouse-button codes.
- Job system built on C++20 jthreads.
- Dear ImGui integration with ImPlot and ImPlot3D, a renderer abstraction per backend, and a default theme.
- Tracy CPU and GPU profiling behind a dedicated
Profilingbuild configuration. - Example applications:
circularwave3dandplanetaryscan. - GitHub Actions CI: Debug, Release and Profiling builds with clang in the development image, a Vulkan backend assertion, formatting checks on changed files, and a tag-triggered release.
- Branching and release policy in
docs/BRANCHING.md.
Changed
- OpenGL and Vulkan backends are optional at configure time.
- The Vulkan context, command buffers and frame synchronization are owned by Nodens and borrowed by renderers.
- The default graphics API is Vulkan.
Note
Full Changelog: https://github.com/eldritch-codex/nodens/commits/v0.1.0