You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This issue is to describe the general structure, goals, hardware requirements and some initial features of Daemon-vulkan.
Goals
Daemon-vulkan is aimed at creating, supporting, and expanding a Vulkan-based renderer using modern API features to provide a smooth, high-framerate experience on scenes of any (reasonable) complexity in Unvanquished.
Clear framework for hardware support.
Structure
Daemon-vulkan is (to be) a highly GPU-driven pipeline, with CPU tasks realised through a task (job) list.
The required API features and extensions are put into 3 featuresets: minimal, recommended, and experimental (names subject to change). This is in contrast to the granular extension enablement in the OpenGL renderer: while it might provide finer control over them, there usually isn't any need to - and at the same time hardware usually supports a whole set of features rather than just cherry-picking them (e. g. in OpenGL, if something supports SSBOs, it likely also supports compute shaders). At the same time, the fine-grained enablement increases the amount of potential codepaths exponentially, which is not great for maintenace.
Featuresets
The featuresets represent 3 different categories of devices:
minimal: minimal to run Daemon-vulkan (this means that it supports the requried features and extensions, but it does not necessarily guarantee that it would run well on such hardware; a list of minimal hardware requirements to run the game well might be created later)
recommended: TBA
experimental: this is where newer things like mesh shaders or hardware raytracing will land
Once some initial development is done, the first 2 featuresets will be fairly set-in-stone: more features might be added to them, but likely only those that are already supported by the minimum hardware for that featureset. The 3rd featureset, on the other hand, is less strict, so hardware requirements for it may fluctuate. Some extensions might be enabled alongside a featureset, e. g. the NVidia version of Device Generated Commands, which is supported on fairly old GPUs, compared to the core version of this extension.
The featureset list is still under construction, and can be found here - #12
Note that this list might fluctuate quite a lot in the near future.
Code-wise these featuresets would be contained in their own directories. Any shared parts would be outside of that.
Phasing out
At this time, there's no hardware phasing out planned. However, if we do need it at some point, it will simply require:
Deleting the minimal featureset directory.
Renaming recommended featureset to minimal.
Copying the experimental featureset directory to a newly-created recommended featureset directory (potentially with some changes, based on feature/extension availability in the experimental featureset at the time).
Versioning
Daemon-vulkan has its own versioning system on top of the Daemon one. It is not a replacement for the Daemon version, only an addition to it! Daemon-vulkan has the exact same API/ABI compatibility to Unvanquished as the GL-renderer does.
The version consists of 3 numbers [major].[minor].[patch]:
[major]: Major features and milestones.
[minor]: Minor features and milestones.
[patch]: Bugfixes and minor changes that don't qualify for [minor] version.
Roadmap
The projected features are sorted by their expected version. Mainly, they will be projected a few minor versions (for minor features) and one major version (for major features) ahead. This does not include changes for [patch] versions. Other features will be in the unsorted category, version to be added later. The major and minor versions are also reflected through the milestones.
Uh oh!
There was an error while loading. Please reload this page.
This issue is to describe the general structure, goals, hardware requirements and some initial features of Daemon-vulkan.
Goals
Daemon-vulkan is aimed at creating, supporting, and expanding a Vulkan-based renderer using modern API features to provide a smooth, high-framerate experience on scenes of any (reasonable) complexity in Unvanquished.
Clear framework for hardware support.
Structure
Daemon-vulkan is (to be) a highly GPU-driven pipeline, with CPU tasks realised through a task (job) list.
The required API features and extensions are put into 3 featuresets: minimal, recommended, and experimental (names subject to change). This is in contrast to the granular extension enablement in the OpenGL renderer: while it might provide finer control over them, there usually isn't any need to - and at the same time hardware usually supports a whole set of features rather than just cherry-picking them (e. g. in OpenGL, if something supports SSBOs, it likely also supports compute shaders). At the same time, the fine-grained enablement increases the amount of potential codepaths exponentially, which is not great for maintenace.
Featuresets
The featuresets represent 3 different categories of devices:
minimal: minimal to run Daemon-vulkan (this means that it supports the requried features and extensions, but it does not necessarily guarantee that it would run well on such hardware; a list of minimal hardware requirements to run the game well might be created later)
recommended: TBA
experimental: this is where newer things like mesh shaders or hardware raytracing will land
Once some initial development is done, the first 2 featuresets will be fairly set-in-stone: more features might be added to them, but likely only those that are already supported by the minimum hardware for that featureset. The 3rd featureset, on the other hand, is less strict, so hardware requirements for it may fluctuate. Some extensions might be enabled alongside a featureset, e. g. the NVidia version of Device Generated Commands, which is supported on fairly old GPUs, compared to the core version of this extension.
The featureset list is still under construction, and can be found here - #12
Note that this list might fluctuate quite a lot in the near future.
Code-wise these featuresets would be contained in their own directories. Any shared parts would be outside of that.
Phasing out
At this time, there's no hardware phasing out planned. However, if we do need it at some point, it will simply require:
Versioning
Daemon-vulkan has its own versioning system on top of the Daemon one. It is not a replacement for the Daemon version, only an addition to it! Daemon-vulkan has the exact same API/ABI compatibility to Unvanquished as the GL-renderer does.
The version consists of 3 numbers [major].[minor].[patch]:
Roadmap
The projected features are sorted by their expected version. Mainly, they will be projected a few minor versions (for minor features) and one major version (for major features) ahead. This does not include changes for [patch] versions. Other features will be in the unsorted category, version to be added later. The major and minor versions are also reflected through the milestones.
The current feature list can be found in: https://github.com/orgs/DaemonEngine/projects/25/views/1
The goal for version 1.0.0 is feature parity with the GL renderer. The current minor goal is the task list and Vulkan device initialisation.
The text was updated successfully, but these errors were encountered: