Turbo 是基于 Vulkan 开发的跨平台渲染引擎
- 相关文档现在可以在Vulkan入门精要中查阅。比如Vulkan KHR 光线追踪标准。
- 详细设计文档请参考
docs/TurboDesign.drawio
(需要安装drawwio
) - 目前存在的问题待解决,请查看
docs/Issue.md
- 开发记录录像请浏览 Turbo引擎开发记录
项 说明 命名空间 Turbo::Core
文档 ./docs/TurboDesign.drawio:Core
和Core.md目录 ./engine/core
依赖 独立模块,无依赖。 说明 Core
作为核心模块直接与Vulkan
沟通,是上层与Vulkan
底层最直接的桥梁,Turbo
中所有的GPU
相关工作最终都会从上层回到Core
层。
项 说明 命名空间 Turbo::FrameGraph
文档 ./docs/TurboDesign.drawio:FrameGraph
和FrameGraph.md目录 ./engine/framegraph
依赖 独立模块,无依赖。 说明 FrameGraph
用于描述一帧中的资源、渲染配置和渲染指令
项 说明 命名空间 Turbo::Render
文档 FrameGraphAdvance.md 目录 ./engine/render
依赖 Core
和FrameGraph
。说明 由于直接使用 Core
层进行渲染相对来说还是会比较繁琐吃力一些,Render
模块的出现就是将Core
和FrameGraph
结合起来,提供更加方便的工作流,将开发者从繁杂的Core
层脱离出来,提供更加简单易用的设计架构
Note
目前主要使用和维护 Core
模块
git clone --recursive https://github.com/FuXiii/Turbo.git
Note
第三方库目前使用 git
的 submodule
进行维护,所以 克隆
时指定 --recursive
即可自动下载第三方库。
Note
-
Turbo
目前主要有两个分支:master
和dev
。其中master
是主分支,确保可以正常编译和使用,而dev
分支会经常开发新功能,想看开发推进的可以查看dev
分支,但不保证能够正常编译。 -
Turbo
引擎的核心位于./engine/core
,这是一个单独的模块,可以单独编译,您可以直接将他拷贝出来放到自己的工程中。将会输出名为TCore
的库文件。 -
Turbo
引擎会使用核心进行开发,有关如何使用该核心,目前可以参考./main.cpp
和./samples
文件夹下各个示例。该文件中有最新的核心实例代码,同时也是引擎的一部分。 -
Turbo
的核心
模块使用如下第三方库:库 说明 glslang 用于将 Shader
代码字符串编译成Spir-V
SPIRV-Cross 用于解析 Spir-V
,获取Shader
中相关声明。(可能考虑使用SPIRV-Reflect
,不再使用SPIRV-Cross
)SPIRV-Reflect 用于解析 Spir-V
,获取Shader
中相关声明VulkanMemoryAllocator 用于分配 Vulkan
资源内存 -
Turbo
的非核心
模块(也就是目前除了./engine/core
之外)使用如下第三方库:库 说明 glfw 窗口库 glm 用于向量矩阵等运算 imgui 用于绘制界面UI KTX-Software Khronos Texture
通用纹理标准tinygltf 读取 gltf
文件库
Important
Vulkan SDK 不是 Turbo
的必需品( Turbo
不依赖 Vulkan SDK)
Windows
-
首先请查看环境变量中是否已经加入了
git
的bin
目录(KTX-Sofware
编译依赖bash.exe
,正常该程序位于git
的bin
目录下) -
请安装
Python
(第三方库很多使用Python
脚本运行,安装完后请确保Python
的{Python的安装目录}/Python{版本号}/
目录和{Python的安装目录}/Python{版本号}/Scripts
目录加入到了环境变量中) -
之后使用
./CMakeLists.txt
即可 -
设置相关
CMake
参数如下:TCORE_SHARED_LIBS=ON // Turbo 的核心库输出为动态库,如果想输出为静态库请设置为 OFF (默认情况下为 OFF)
cd ${自定义目录}
git clone --recursive https://github.com/FuXiii/Turbo.git
cd ./Turbo
mkdir build
cd ./build
cmake ..
cmake --build . --config Release
Linux
- 安装如下环境
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
-
之后使用
./CMakeLists.txt
即可 -
设置相关
CMake
参数如下:TCORE_SHARED_LIBS=ON // Turbo 的核心库输出为动态库,如果想输出为静态库请设置为 OFF (默认情况下为 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 ${自定义目录}
git clone --recursive https://github.com/FuXiii/Turbo.git
cd ./Turbo
mkdir build
cd ./build
cmake ..
make
Note
如果编译有遇到问题请查看常见问题文档
如果还是没有解决方法请提Issue
*
Core | Vulkan |
---|---|
Turbo::Core::TLayerInfo |
Vulkan 相关验证层信息 |
Turbo::Core::TExtensionInfo |
Vulkan 相关扩展信息 |
Turbo::Core::TVersion |
通用版本 |
Turbo::Core::TInstance |
VkInstance 的相关封装 |
Turbo::Core::TPhysicalDevice |
VkPhysicalDevice 相关封装 |
Turbo::Core::TDevice |
VkDevice 相关封装 |
Turbo::Core::TDeviceQueue |
VkQueue 相关封装 |
Turbo::Core::TImage |
VkImage 相关封装 |
Turbo::Core::TImageView |
VkImageView 相关封装 |
Turbo::Core::TCommandBufferPool |
VkCommandPool 相关封装 |
Turbo::Core::TCommandBuffer |
VkCommandBuffer 相关封装 |
Turbo::Core::TBuffer |
VkBuffer 相关封装 |
Turbo::Core::TShader |
VkShaderModule 相关封装 |
Turbo::Core::TDescriptorPool |
VkDescriptorPool 相关封装 |
Turbo::Core::TSampler |
VkSampler 相关封装 |
Turbo::Core::TSubpass |
Vulkan 中Subpass 抽象 |
Turbo::Core::TAttachment |
Vulkan 中Attachment 抽象 |
Turbo::Core::TRenderPass |
VkRenderPass 相关封装 |
Turbo::Core::TVertexBinding |
Vulkan 中顶点属性抽象 |
Turbo::Core::TViewport |
Vulkan 中Viewport 抽象 |
Turbo::Core::TScissor |
Vulkan 中Scissor 抽象 |
Turbo::Core::TDescriptor |
Vulkan 中各种描述符抽象 |
Turbo::Core::TDescriptorSetLayout |
VkDescriptorSetLayout 的相关封装 |
Turbo::Core::TPipelineLayout |
VkPipelineLayout 的相关封装 |
Turbo::Core::TPipeline |
TPipelineLayout 的相关封装,内部有VkPipeline vkPipeline 成员变量,但创建是在其子类中创建 |
Turbo::Core::TGraphicsPipeline |
继承自Turbo::Core::TPipeline ,图形渲染管线VkPipeline 的相关封装,会去创建父类中的Turbo::Core::TPipeline::vkPipeline |
Turbo::Core::TDescriptorSet |
VkDescriptorSet 的相关封装 |
Turbo::Core::TPipelineDescriptorSet |
管线所有有关描述符集的总和抽象,对应多个Turbo::Core::TDescriptorSet |
Turbo::Core::TFramebuffer |
VkFramebuffer 相关封装 |
Turbo::Core::TSemaphore |
VkSemaphore 相关封装 |
Turbo::Core::TFence |
VkFence 相关封装 |
Turbo::Extension::TSurface |
VkSurfaceKHR 相关封装 |
Turbo::Extension::TSwapchain |
VkSwapchainKHR 相关封装 |
Note
日志文件转移到了 更新日志
想赞助的小伙伴,欢迎使用爱发电
赞助,请量力而为。
Warning
未成年人禁止投喂