Skip to content

Releases

0.3.0

Choose a tag to compare

@github-actions github-actions released this 31 Oct 12:35
89bb456

Added

  • Fixed-step pacing: set FPacingConfig::Pacing to EPacing::Fixed to advance the loop in steps of FixedDelta. examples/headlesspulse --fixed shows it. (#50)
  • scripts/check-docs-links.sh fails CI on a broken relative link under docs/. (#49)
  • docs/STYLE.md, the writing standard for the guide. (#51)

Changed

  • Breaking: FApplicationConfig takes one EPresentation value (Window, WindowImGUI, Headless) in place of the EnableGUI and CreateWindow booleans. (#50)
  • Breaking: the CMake option ND_BUILD_TRACY_PROFILER is now ND_ADD_TRACY_PROFILER_TARGET, and it defaults to ON. (a9f155d)
  • Application::Run() takes frame time from the new Nodens.FramePacer module and clamps it to FPacingConfig::MaxFrameDelta (250 ms by default). (#50)
  • TaskSystem::Submit accepts move-only arguments and no longer allocates a std::shared_ptr. (15403cc)
  • The tutorial and architecture pages moved from the wiki into docs/guide/, and docs/ is split into guide/, 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, chore and tooling build. See docs/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

Choose a tag to compare

@github-actions github-actions released this 28 Oct 00:05

Added

  • scripts/check.sh runs the format check on the changed C++ files and a Debug build in build/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, tooling build) are committed directly to main, and risky ones (feat, fix, refactor, perf, ci, and build that changes CMakeLists.txt or a dependency version) go through a squashed pull request. A failing main is fixed before anything else, and a tag is created only on a commit whose CI run succeeded. See docs/BRANCHING.md.
  • The Zed tasks and debug scenarios run in the dev container through the Dev Containers CLI (@devcontainers/cli), and .zed/docker.sh is gone. The CLI reads the same devcontainer.json as 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

Choose a tag to compare

@github-actions github-actions released this 27 Oct 19:10

Changed

  • The job system type is TaskSystem, renamed from JobSystem, and the accessor is Application::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; see docs/naming.md.
  • The graphics types are IGraphicsBackend, OpenGLBackend and VulkanBackend, renamed from IGraphicsContext, OpenGLContext and VulkanContext, and IWindow::GetBackend() replaces GetGraphicsContext(). 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 is m_Backend.
  • The theme enum is ETheme, renamed from EDefaultTheme. Its first member is None, so the word default belongs to the appliers, which keep their names, and the theme field on FApplicationConfig is Theme; the module keeps the name Nodens.DefaultTheme.
  • The startup structs are FWindowConfig and FApplicationConfig, renamed from FWindowProps and FApplicationSpecification, and the names that hold them follow: the window factory and the Application constructor take config, and the examples hold appConfig. FWindowConfig::API is now GraphicsAPI, matching the enum and the application config.

Note

Full Changelog: v0.1.1...v0.2.0

0.1.1

Choose a tag to compare

@github-actions github-actions released this 27 Oct 14:41

Changed

  • ImPlot is fetched at v1.1, up from v1.0.
  • The dev container has one configuration per GPU type, .devcontainer/nvidia and .devcontainer/dri, instead of a single file edited by hand. docker.sh picks one, and NODENS_GPU overrides 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 circularwave3d example 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_EXAMPLES defaults to off when Nodens is consumed by another project. The default was on, because the second option() call was a no-op.
  • The MouseButtonReleased event has a name. It was empty, so the event logged as an empty string and the file failed to compile with GCC.
  • EventBus::Subscribe takes the registry lock, and QueueEvent no 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

Choose a tag to compare

@github-actions github-actions released this 24 Oct 18:16
631600e

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 Profiling build configuration.
  • Example applications: circularwave3d and planetaryscan.
  • 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.