Turbo is rendering engine base Vulkan
- Relative document can be read in Essentials.of.Vulkan. such as Vulkan KHR Ray Tracing standard.
- Deltail design document please reference
docs/TurboDesign.drawio(need installdrawwio). - Still need to fix issue,please check
docs/Issue.md. - Programming record video Turbo engine record
item info namespace Turbo::Coredoc ./docs/TurboDesign.drawio:Coreand Core.mdpath ./engine/coredependency discrete describe Coreas kernel modular communicate withVulkan. It is the most important bridge betweenCoreandVulkan. All the calling in upper strecuture will return toCore。
item info namespace Turbo::FrameGraphdoc ./docs/TurboDesign.drawio:FrameGraph和FrameGraph.mdpath ./engine/framegraphdependency discrete describe FrameGraphused to record the resource, rendering configure and command in a frame
item info namespace Turbo::Renderdoc FrameGraphAdvance.md path ./engine/renderdependency Core和FrameGraph。describe Due to the complexity of directly using Core,Rendermodular will combineCoreandFrameGraphfor a more clearly work pass for get free fromCore.
Note
for now mainly developing Core
git clone --recursive https://github.com/FuXiii/Turbo.git
Note
Third party maintained by submodule in git, so need --recursive to automatically download third party.
Note
-
For now
Turbohave two main branches :masteranddev. Themasteris default branch, it ensure that compilation and develope passed without deadly bug. Thedevusually develope new feature, if you want know what changed in develope forward, please checkdevbranch, this branch not promise can compile smoothly. -
Turboengine kernel in./engine/coreis a discrete modular and can be islanded compile. You can directly copy them to yourself project. Will output lib file which namedTCore. -
Turboengine will use kernel to develope new feature, about how to use them can reference codes under./main.cppand./sampleswhich supply many demo. -
Coremodular used thirdparty:lib info glslang Compile Shadercode string toSPIR-VSPIRV-Cross Parse SPIR-V,fetch declare interface inShader.(Maybe consider to useSPIRV-ReflectforsakeSPIRV-Cross)SPIRV-Reflect Parse SPIR-V,fetch declare interface inShader.VulkanMemoryAllocator Manage Vulkanmemory resource -
Non-Coremodular used thirdparty:lib info glfw Window lib glm Use for vector and matrix calculate imgui Use for draw UI KTX-Software Khronos Textureuniform texture standardtinygltf Read gltf
Important
Vulkan SDK is not necessity for Turbo (Not dependent Vulkan SDK)
Windows
-
Need check the
binpath under thegithad been add in system enironment(KTX-Sofwarecompile dependentbash.exe, normaly it will undergit/bin). -
Please install
Python(Many thirdparty usePythonscript ,after install please make sure${Python install path}/Python{Version}/目录和${Python install path}/Python{Version}/Scriptshad been add in system enironment) -
use
./CMakeLists.txt -
related
CMakevariable:TCORE_SHARED_LIBS=ON // Turbo core will output dynamic lib,if you want output static lib set to OFF (default is OFF)
cd ${Custome path}
git clone --recursive https://github.com/FuXiii/Turbo.git
cd ./Turbo
mkdir build
cd ./build
cmake ..
cmake --build . --config Release
Linux
- Config environment
sudo apt install libx11-dev //cmake
sudo apt install libxrandr-dev //glfw
sudo apt install libxinerama-dev //glfw
sudo apt install libxcursor-dev //glfw
sudo apt install libxi-dev //glfw
sudo apt install libwayland-dev //build
sudo apt install build-essential //build
sudo apt install freeglut3-dev //build -
use
./CMakeLists.txt -
related
CMakevariable:TCORE_SHARED_LIBS=ON // Turbo core will output dynamic lib,if you want output static lib set to OFF (default is OFF)
sudo apt install libx11-dev
sudo apt install libxrandr-dev
sudo apt install libxinerama-dev
sudo apt install libxcursor-dev
sudo apt install libxi-dev
sudo apt install libwayland-dev
sudo apt install build-essential
sudo apt install freeglut3-dev
cd ${Custome path}
git clone --recursive https://github.com/FuXiii/Turbo.git
cd ./Turbo
mkdir build
cd ./build
cmake ..
makeNote
If you meet some annoying question please check FAQ first, if it still can't fixed your problem please create an Issue.
在 samples 下有很多示例供开发者查阅。
In samples folder there has many demo for developer.
Among which
HelloTriangle(HelloTriangle.cpp)is the demo which recommend to beginner(major code about400lines)。By drawing a triangle to show the core usage, it is relatively simple and friendly to beginners.
| Core | Vulkan |
|---|---|
Turbo::Core::TLayerInfo |
Vulkan info about Layer |
Turbo::Core::TExtensionInfo |
Vulkan info about extension |
Turbo::Core::TVersion |
Common version |
Turbo::Core::TInstance |
VkInstance encapsulation |
Turbo::Core::TPhysicalDevice |
VkPhysicalDevice encapsulation |
Turbo::Core::TDevice |
VkDevice encapsulation |
Turbo::Core::TDeviceQueue |
VkQueue encapsulation |
Turbo::Core::TImage |
VkImage encapsulation |
Turbo::Core::TImageView |
VkImageView encapsulation |
Turbo::Core::TCommandBufferPool |
VkCommandPool encapsulation |
Turbo::Core::TCommandBuffer |
VkCommandBuffer encapsulation |
Turbo::Core::TBuffer |
VkBuffer encapsulation |
Turbo::Core::TShader |
VkShaderModule encapsulation |
Turbo::Core::TDescriptorPool |
VkDescriptorPool encapsulation |
Turbo::Core::TSampler |
VkSampler encapsulation |
Turbo::Core::TSubpass |
Subpass abstruct |
Turbo::Core::TAttachment |
Attachment abstruct |
Turbo::Core::TRenderPass |
VkRenderPass encapsulation |
Turbo::Core::TVertexBinding |
Vulkan vertex attribute abstruct |
Turbo::Core::TViewport |
Viewport abstruct |
Turbo::Core::TScissor |
Scissor abstruct |
Turbo::Core::TDescriptor |
Descriptor abstruct |
Turbo::Core::TDescriptorSetLayout |
VkDescriptorSetLayoutencapsulation |
Turbo::Core::TPipelineLayout |
VkPipelineLayoutencapsulation |
Turbo::Core::TPipeline |
TPipelineLayoutencapsulation,internal have VkPipeline vkPipeline member variable,but create in child class |
Turbo::Core::TGraphicsPipeline |
Inherited from Turbo::Core::TPipeline, graphic pipeline VkPipeline encapsulation,will create Turbo::Core::TPipeline::vkPipeline which in it's parent |
Turbo::Core::TDescriptorSet |
VkDescriptorSetencapsulation |
Turbo::Core::TPipelineDescriptorSet |
Manage all the Descriptor Set and abstruct,corresponding to multiple Turbo::Core::TDescriptorSet |
Turbo::Core::TFramebuffer |
VkFramebuffer encapsulation |
Turbo::Core::TSemaphore |
VkSemaphore encapsulation |
Turbo::Core::TFence |
VkFence encapsulation |
Turbo::Extension::TSurface |
VkSurfaceKHR encapsulation |
Turbo::Extension::TSwapchain |
VkSwapchainKHR encapsulation |
Note
Log file move to Daily updates
If you want sponsor, welcome use 爱发电.
Warning
Minors are prohibited for sponsor
