簡要
Vulkan Samples
碼雲
碼雲地址
說明
按照序號的順序開始看,例如從2_Triangle 、 3_DemoBase一直到最後一個。 Demo一步一步的展示瞭如何對Vulkan進行簡單的封裝以使得更加易用,如果從較高的序號開始閱讀可能出現由於封裝過度從而導致閱讀理解困難。每一個Demo都會盡量配一個粗淺的文檔,文檔裡面會大致說明該Demo的意圖。
環境要求
Windows
- CMake 3.13.0:下載安裝最新版本即可。
- Visual Studio 2017 (64位):比它高的應該也沒問題。
- VulkanSDK:https://www.lunarg.com/vulkan-sdk/
MacOS
- CMake 3.13.0:下載安裝最新版本即可。
- XCode 10:比它高應該也沒什麼問題。
- macOS 10.11 or iOS 9:因為Vulkan在蘋果那邊沒有得到官方支持,是通過對Metal進行的封裝,因此需要10.11系統以上。
Linux
- CMake 3.13.0:下載安裝最新版本即可。
- Ubuntu 18.04:目前我使用的是Ubuntu 18.04系統,其它版本的沒有嘗試。
- VSCode:Ubuntu下我使用了VSCode作為開發環境,VSCode下Configure(Task),Build(Task),Debug我都配置好了,但是需要安裝VSCode C++插件,插件名稱:C/C++。
Window環境搭建
- 參考文檔:https://github.com/BobLChen/VulkanDemos/blob/master/document/BUILD_Windows.md
Ubuntu環境搭建
- 參考文檔:https://github.com/BobLChen/VulkanTutorials/blob/master/document/BUILD_Ubuntu.md
MacOS環境搭建
- 參考文檔:https://github.com/BobLChen/VulkanTutorials/blob/master/document/BUILD_MacOS.md
Android環境搭建
- 參考文檔:https://github.com/BobLChen/VulkanTutorials/blob/master/document/BUILD_Android.md
Introduction
Vulkan Examples
Requirements
Windows
- CMake 3.13.0
- virtual studio 2017
- VulkanSDK:https://www.lunarg.com/vulkan-sdk/
MacOS
- XCode 10
- CMake 3.13.0
- macOS 10.11 or iOS 9
Linux
Android
- Android Studio 3.2
- NDK r16b
Usage
Command line
- git clone https://github.com/BobLChen/VulkanDemos.git
- cd VulkanDemos
- mkdir build
- cd build
- cmake ..
CMake-GUI
- git clone https://github.com/BobLChen/VulkanDemos.git
- Open CMake-GUI
- Where is the source code : VulkanDemos
- Where to build the binaries : VulkanDemos/build
- Click Configure button
- Choose your generator
- Click Generate button
Example
2_Triangle
博客地址
3_DemoBase
博客地址
4_OptimizeBuffer
博客地址
5_OptimizeCommandBuffer
博客地址
6_ImageGUI
博客地址
7_UniformBuffer
博客地址
8_OptimizeVertexIndexBuffer
博客地址
9_LoadMesh
博客地址
10_Pipelines
博客地址
11_Texture
博客地址
12_PushConstants
博客地址
13_DynamicUniformBuffer
博客地址
14_TextureArray
博客地址
15_Texture3D
博客地址
16_OptimizeShaderAndLayout
博客地址
17_InputAttachments
18_SimpleDeferredShading
博客地址
- Albedo:VK_FORMAT_R8G8B8A8_UNORM
- Normal:VK_FORMAT_R16G16B16A16_SFLOAT
- Position:VK_FORMAT_R16G16B16A16_SFLOAT
19_OptimizeDeferredShading
博客地址
- Albedo: VK_FORMAT_R8G8B8A8_UNORM
- Normal: VK_FORMAT_R8G8B8A8_UNORM
- Position: Reconstructing world space position from depth buffer
20_Material
博客地址
21_Stencil
博客地址
22_RenderTarget(30 Filter)
博客地址
23_OptimizeRenderTarget
博客地址
24_EdgeDetect
博客地址
25_Bloom
博客地址
26_SkeletonMatrix4x4
博客地址
27_SkeletonPackIndexWeight
博客地址
- Pack 4 bone index(uint32) to 1 UInt32
- Pack 4 bone weight(float) to 2 UInt32 Reduce 5 float per vertex
28_SkeletonQuat
博客地址
- Dual quat animation, reduce 8 float per bone. From matrix4x4 to 2 vector.
29_VertexTextureSkin
博客地址
- Store skeleton datas in texture and used in vertex shader.
30_InstanceSkin
31_MSAA
32_FXAA
33_InstanceDraw
34_SimpleShadow
35_PCFShadow
36_OmniShadow(Multiview)
37_CascadedShadow
38_IndirectDraw
39_OcclusionQueries
40_QueryStatistics
41_ComputeShader
42_OptimizeComputeShader
43_ComputeParticles
44_ComputeRaytracing
45_ComputeFrustum
46_GeometryHouse
47_DebugNormal
48_GeometryOmniShadow
49_SimpleTessellation
50_PNTessellation
51_Pick
52_HDRPipeline
53_SSAO
54_ThreadedRendering
55_PBR_DirectLighting
56_PBR_IBL
57_GodRay
58_Imposter
59_MotionBlur
60_DepthPeeling
61_CPURayTracing
62_RTXRayTracingBasic
63_RTXRayTracingMesh
64_RTXRayTracingSimple
65_RTXRayTracingReflection
66_RTXRayTracingHitGroup
67_RTXRayTracingMonteCarlo
68_RTXPathTracing
69_TileBasedForwardRendering
70_SDFFont
71_ShuffleIntrinsics
72_MeshLOD