Releases: inexorgame/vulkan-renderer
Nightly Release
Latest development release, ready to install.
This release tag is continuously updated.
0.1.0-alpha-3 (RAII refactoring snapshot)
Snapshot from RAII refactoring
Join our discord: https://discord.gg/acUW8k7.
This is our third tech demo of our new C++17 game engine which is based on Vulkan API. We are currently refactoring our engine so it makes extensive use of RAII. This means there is nothing new to see here compared with 0.1.0-alpha-2, but a lot has changed under the hood which is of interest for game engine programmers.
It is very important to keep testing when doing a refactoring. This way, we make sure everything that worked before refactoring is still working after it :).
Vulkan is a new low-level application programming interface (API) for fast graphics programming and computation. Click here if want to know more details about Vulkan API.
FAQ
Check out our website www.inexor.org
Join our discord: https://discord.gg/acUW8k7.
Overview for v0.1-alpha.3
- RAII in shader code
- RAII in shaders, gpu memory buffers, staging buffers, mesh buffers and textures
- RAII in descriptors
- RAII VkInstance
- RAII Swapchain
Feedback
We need your feedback! Join our discord: https://discord.gg/acUW8k7.
Does my graphics card even support Vulkan?
- You can check if you graphics card supports Vulkan API on this site: vulkan.gpuinfo.org
- You can also check here: https://www.khronos.org/conformance/adopters/conformant-products#vulkan
- Help Sascha Willems! Download the GPU info viewer and upload your graphics cards' statistics! This helps developers to see which features are available on which graphics card depending on the driver version.
Update your graphics card before testing :)
- Keep your graphics drivers up to date! They contain bug fixes and performance improvements.
- You can check if you graphics card supports Vulkan API on this site: vulkan.gpuinfo.org
Usage
Hold down left mouse button and move the mouse to rotate the octree.
v0.1-alpha.2 (Vulkan API test 2, First octree demo)
Let there be octree..
Join our discord: https://discord.gg/acUW8k7.
This is our second tech demo of our new C++17 game engine which is based on Vulkan API. In this tech demo, we added a simple implementation of an octree data structure which is being converted into vertex geometry.
Vulkan is a new low-level application programming interface (API) for fast graphics programming and computation.
Click here if want to know more details about Vulkan API.
FAQ
Check out our website www.inexor.org
Join our discord: https://discord.gg/acUW8k7.
Overview for v0.1-alpha.2
- Added a simple C++17 implementation of an octree.
- Added event system using boost::signals2.
- Use boost::bitstream for data processing.
- Convert octree data structure to vertex geometry (a mesh buffer).
- Support arbitrary indentations of octree geometry.
- Added a descriptor set layout for simple octree geometry.
- Ported Vulkan Memory Allocator library (VMA) to Linux.
- Fixed a bug that would render every model twice.
- Improvements considering C++ code quality standards.
- Added a simple camera movement class.
- Write spdlog console output to a logfile.
We are working on a proper glTF 2.0 implementation.
Feedback
We need your feedback! Join our discord: https://discord.gg/acUW8k7.
Does my graphics card even support Vulkan?
- You can check if you graphics card supports Vulkan API on this site: vulkan.gpuinfo.org
- You can also check here: https://www.khronos.org/conformance/adopters/conformant-products#vulkan
- Help Sascha Willems! Download the GPU info viewer and upload your graphics cards' statistics! This helps developers to see which features are available on which graphics card depending on the driver version.
Continuous Integration (CI)
Thanks to the help of our contributors, we maanged to set up Travis and GitHub actions CI.
Update your graphics card before testing :)
- Keep your graphics drivers up to date! They contain bug fixes and performance improvements.
- You can check if you graphics card supports Vulkan API on this site: vulkan.gpuinfo.org
Usage
Hold down left mouse button and move the mouse to rotate the octree.
v0.1-alpha.1 (Vulkan API test 1) (updated)
It has begun..
Join our discord: https://discord.gg/acUW8k7.
This is our very first tech demo of our new game engine which is based on Vulkan API.
Vulkan is a new low-level application programming interface (API) for fast graphics programming and computation.
Click here if want to know more details about Vulkan API.
DOWNLOAD
Update: AMD v-sync bug is fixed!
- The bug causing the application to run at maximum of 60 fps was cause by enabling vsync by default.
- You can now use
-vsync
to enable it if you want to. It is turned off by default. - Ticket: Implement vsync command line argument.
- Ticket: Why is VK_PRESENT_MODE_MAILBOX_KHR not available in v0.1-alpha.1 on AMD graphics cards?
FAQ
What is Inexor?
- Inexor will be a new first person shooter game which is based on a new octree-based game engine.
- Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series.
- Inexor will be written from ground up new in modern C++17.
- It will offer task based multithreading as a core engine feature.
- You can contribute anything you want: code, content, ideas..
- Inexor and all its content is 100% open source!
What is the point of Inexor?
- We want to create a game which has classic gameplay and a very powerful but also simple to use embedded world editor.
- Inexor is a sandbox: There is no separation between engine editor and the game itself. Creating the game is part of the game.
- People's ideas for for octree-based game will no longer be limited by the underlying engine technology.
- Players can express their map or game mode ideas without any restrictions by us, using a visual scripting enviroment - even collectively in multiplayer.
Who is behind Inexor?
- A collective of game programmers, artists, or people who are very passionate about gaming.
- There is no strict hierarchy behind this organisation.
- Everybody is welcome.
How to contribute?
- Currently, we are in the process of writing the game engine.
- Programmers and testers are most needed right now.
- Artists and mappers are also welcome, but the time for creating maps has not come yet.
Why develop a new game engine?
- We need a new octree-based game engine which is based on a task-based, multithreaded engine.
- Vulkan API is a new graphics API which allows us to gain better performance.
How to get into contact?
- Please join our discord: https://discord.gg/acUW8k7.
- You can also write us:
[email protected]
.
When will Inexor be playable?
- This depends on the speed of our progress.
- We can't forsee this yet.
I found a bug in Inexor, what now?
- Open a ticket.
Which systems will be supported?
- This release contains files for Windows only.
- We are working to get the Linux build working as fast as possible.
- We might support Android in the future.
- Because Apple decided not to support Vulkan API natively, we will not Mac OS.
We are not planing on using moltenVK to get our projects running on Mac OS either.
Does Vulkan require a monster graphics card to even run properly?
- No!, that is a big misconception people have about the API.
- Vulkan uses the same hardware but more efficiently (compared with OpenGL).
Does my graphics card even support Vulkan?
- You can check if you graphics card supports Vulkan API on this site: vulkan.gpuinfo.org
- You can also check here: https://www.khronos.org/conformance/adopters/conformant-products#vulkan
- Help Sascha Willems! Download the GPU info viewer and upload your graphics cards' statistics! This helps developers to see which features are available on which graphics card depending on the driver version.
Will you have an OpenGL fallback in Inexor for old graphics cards?
- The sad reality is: no. It's time to move on.
- OpenGL's core design is way too old! It was designed in the 90s.
- OpenGL's design does not match the architecture of modern graphics cards at all!
- Khronos themselves recommend to move on from OpenGL to Vulkan API.
- OpenGL drivers contain a myriad of hacks which slow down performance.
- OpenGL is single threaded rendering only, so the CPU acts as a bottleneck for the GPU :(
- The age of OpenGL is engine: Apple already removed support already!
- If your graphics card is not capable of running Inexor, you might will have problems with other games as well.
- There is no good alternative for us: OpenGL is deprecated, DirectX 12 is Windows 10 only, Metal is Apple only and thats it.
- Maintaining two rendering engines is tedious and cost way too much time. By the time we would have another engine running most of you would have bought a new Vulkan capable graphics card anyways.
Is Inexor a fork of Cube2?
- No, Inexor is a new code base which has no dependencies in cube-engine.
What will be different in Inexor compared with Cube2?
- It is too early to answer this question as we're in the process of writing the game engine first.
- The answer to this question will very much depend on your input.
Will you use any code parts from cube-engine?
- No. Cube engine is single threaded. This was fine back in the day of its creation but nowadays it acts as a bottleneck for the gpu.
Will Inexor be compatible with Cube2 or other games?
- No, because Inexor's objective is different.
- We don't want to limit ourselves by supporting old technology?
Can I import my maps from Cube2 into Inexor?
- We are working on a map converter.
- It is not ready yet.
What's next?
- v0.1-alpha.2: April 25th, 2020.
We need your feedback! Join our Discord!
We need testers!
Download this alpha and try it out. You should see something like this:
- You can start
inexor-vulkan-renderer.exe
directly or you can usestart_inexor.bat
. - When starting with
start_inexor.bat
, a logfile is generated. - It would be nice if you could send us this logfile by mail:
[email protected]
. - The logfile does not containt any personal information about the system.
Overview for v0.1-alpha.1
- Create a CMake file with conan package manager setup.
- Integrate Vulkan Memory Allocator (VMA) library.
- Integrate RenderDoc support.
- Use spdlog as logger library.
- Integrate tiny_gltf library.
- Mesh buffer manager for vertex and index buffers based on VMA.
- Texture manager based on stb_image and VMA.
- Uniform buffer manager based on VMA.
- Shader manager for loading SPIR-V shaders.
- Load TOML configuration files using toml11. We deliberately won't use JSON for this.
- Vulkan fence manager.
- Vulkan semaphore manager.
- GPU info query functions.
- Vulkan debug callbacks.
- Vulkan standard validation layers.
- C++11
std::chrono
class. - Use glm.
- Depth buffer.
- Let VMA generate memory debug logs.
- Associate internal resource names with memory regions to improve debugging.
- Use separate data transfer queue for cpu to gpu memory copies if available.
- Availability checks for Vulkan features.
- Settings decision maker for Vulkan initialisation.
- Simple command line argument parser.
- Automatic GPU selection mechanism and
-gpu <N>
command line argument for preferential GPU. - Create windows using glfw3.
- Keyboard input based on glfw3.
- Load geometry of glTF 2.0 files using tiny_gltf library.
- Basic camera class.
Command line arguments
Inexor can be started with the following command line arguments:
-gpu <index>
If there are multiple graphics cards installed which support Vulkan API, you can specify w...