Xultaik
Xultaik copied to clipboard
Xultaik Game Engine
Vultaik is a 2D/3D renderer implemented in Vulkan®
Overview
Vultaik can be used to produce render layers for custom engines or next-gen games and provides building blocks for writing your own engine or game quickly. Due to the parallel nature of GPUs, Vultaik can use GPGPU to exploit a GPU for computational tasks. Supports ComputePipeline and more, allowing to be used for general computations
Low-level rendering backend
The rendering backend focuses entirely on Vulkan and HLSL, however, the API greatly simplifies the more painful points of writing straight Vulkan. Modern Vulkan extensions and features are aggressively made use of to improve performance
Some notable extensions that should be supported for optimal or correct behavior. These extensions will likely become mandatory later.
-
VK_EXT_descriptor_indexing
-
VK_KHR_timeline_semaphore
-
VK_KHR_ray_tracing_pipeline
-
VK_KHR_acceleration_structure
-
VK_KHR_ray_query
-
VK_KHR_buffer_device_address
-
VK_KHR_fragment_shading_rate
Features:
- [ ] Ray Tracing
- [ ] Conservative rasterization
- [ ] Multiview rendering
- [ ] Conditional rendering
- [ ] Shading rate
- [x] Descriptor indexing
- [ ] Timeline semaphore
- [ ] Synchronization2
- [x] Memory allocator
- [x] GPU-Assisted Validation
- [x] Compute Shader
- [x] Geometry Shader
- [x] Tessellation Shader
- [ ] Instancing, Indirect drawing
- [ ] Post-AA (FXAA, SMAA and TAA)
- [ ] Multithreaded rendering
- [x] Automatic descriptor set management
- [x] Shader reflection with SPIRV-Cross
- [x] Vulkan HLSL for shaders, shaders are compiled in runtime with DirectXShaderCompiler
- [x] GLTF 2.0 for samples
Examples
Example | Details |
---|---|
Clear Screen This example shows how to configure the device and clear the color. |
|
Triangle This example shows how to render simple triangle. |
|
Transformations This example how to transform the world space for each object. |
|
Push Constant This example use push constants, small blocks of uniform data stored within a command buffer, to pass data to a shader without the need for uniform buffers. |
|
Load GLTF This example shows how to load GLTF models. |
|
Load Texture This example shows how to load 2D texture from disk (including all mip levels). |
|
Bindless This example demonstrates the use of VK_EXT_descriptor_indexing for creating descriptor sets with a variable size that can be dynamically indexed in a shader using SPV_EXT_descriptor_indexing . |
|
Diffuse Lighting This example shows how to create diffuse lighting. |
|
Ambient Lighting This example shows how to create ambient lighting. |
|
Specular Lighting This example shows how to create specular lighting. |
|
Compute Texture Use a calculation shader in conjunction with a separate calculation queue to modify a full screen image. |
Additionally, Vultaik uses NuGet packages or code from the following repositories: