generated from FranciscoDiaz-dev/VulkanTutorial_Template
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.txt
148 lines (142 loc) · 6.52 KB
/
README.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# VulkanTutorial
## Description
This project is being done following the Vulkan Tutorial at https://vulkan-tutorial.com/ by Alexander Overvoorde Arpil 2023.
It has been generate from my Vulkan_Template project: https://github.com/FMGameDev/VulkanTutorial_Template where I have set up the xcode settings for VukanSDK in MacOS (Apple Silicone - Metal).
The latest commits are developed using Visual Studio Code.
## Vulkan Tutorial Indice (Track)
- Drawing a triangle
- Setup (DONE)
- Base Code (DONE)
- Instance (DONE)
- Validation layers (DONE)
- Physical devices and queue families (DONE)
- Logical deices and queues (DONE)
- Presentation (DONE)
- Window surface (DONE)
- Swap chain (DONE)
- Image views (DONE)
- Graphics pipeline
- Introduction (DONE)
- Shader modules (DONE)
- Fixed functions (DONE)
- Render passes (DONE)
- Conclusions (DONE)
- Drawing
- Framebuffers
- Command buffers
- Rendering and presentation
- Frames in flight
- Swap chain recreation
- ...
WARNING: Make sure you have installed the pre-requeriments in the same location than this set up and you are using the same versions, if not updated the project settings followin your set up.
## Project Structure:
It has been structured following best practise and industry standards to create a scalable project.
VulkanProject/
│
├── assets/ # Asset files such as shaders, textures, models, etc.
│ ├── audio/ # Audio files (e.g., .wav, .mp3)
│ ├── materials/ # Materials and related files
│ ├── models/ # 3D model files (e.g., .obj, .fbx)
│ ├── shaders/ # Shader files (e.g., vert,frag)
│ │ ├── vertex/
│ │ │ └── simple_shader.vert
│ │ ├── fragment/
│ │ │ └── simple_shader.frag
│ │ └── compute/
│ └── textures/ # Texture files (e.g., .png, .jpg)
│
├── build/ # Build output directory (ignored in version control). Where the shaders will be compiled
│
├── docs/ # Documentation
│
├── include/ # Project-wide headers
│ │
│ ├── app/ # Application-related headers
│ │ └── App.hpp # Application-level components
│ │
│ ├── core/ # Core engine components
│ │ ├── events/ # Event handling
│ │ ├── renderer/ # Vulkan-specific or low-level rendering pipeline
│ │ │ ├── VulkanDebugMessenger.hpp
│ │ │ ├── VulkanDevice.hpp
│ │ │ ├── VulkanFramebuffer.hpp
│ │ │ ├── VulkanGraphicsPipeline.hpp
│ │ │ ├── VulkanInstance.hpp
│ │ │ ├── VulkanRenderer.hpp
│ │ │ ├── VulkanRenderPass.hpp
│ │ │ ├── VulkanSurface.hpp
│ │ │ ├── VulkanSwapChain.hpp
│ │ │ └── VulkanValidationLayer.hpp
│ │ ├── system/ # System-level components (e.g., timers, managers)
│ │ │ └── window/
│ │ │ ├── MacOsWindowUtils.hpp
│ │ │ └── WindowHandler.hpp
│ │ └── Engine.hpp # Central engine management
│ │
│ ├── graphics/ # Higher-levelgraphics abstractions or data structures (e.g., Mesh, Texture)
│ │ └── Shader.hpp
│ │
│ ├── input/ # Input Handling
│ │
│ ├── scene/ # Scene Management
│ │
│ └── utilities/ # Utility implementations
│ ├── logging/ # Logging utilities
│ │ └── Logger.hpp
│ ├── math/ # Mathematical utilities
│ └── renderer/ # Renderer utilities
│ └── VulkanPipelineConfigFactory.hpp
│
├── src/ # Source files
│ │
│ ├── app/ # Application-related code
│ │ └── App.cpp # Application-level components
│ │
│ ├── core/ # Core engine components
│ │ ├── events/ # Event handling
│ │ ├── renderer/ # Vulkan-specific components
│ │ │ ├── VulkanDebugMessenger.cpp
│ │ │ ├── VulkanDevice.cpp
│ │ │ ├── VulkanFramebuffer.cpp
│ │ │ ├── VulkanGraphicsPipeline.cpp
│ │ │ ├── VulkanInstance.cpp
│ │ │ ├── VulkanRenderer.cpp
│ │ │ ├── VulkanRenderPass.cpp
│ │ │ ├── VulkanSurface.cpp
│ │ │ ├── VulkanSwapChain.cpp
│ │ │ └── VulkanValidationLayer.cpp
│ │ ├── system/ # System-level components (e.g., timers, managers)
│ │ │ └── window/
│ │ │ ├── MacOsWindowUtils.cpp
│ │ │ └── WindowHandler.cpp
│ │ └── Engine.cpp # Central engine management
│ │
│ ├── graphics/ # Higher-levelgraphics abstractions or data structures (e.g., Mesh, Texture)
│ │ └── Shader.cpp
│ │
│ ├── input/ # Input Handling
│ │
│ ├── scene/ # Scene Management
│ │
│ ├── utilities/ # Utility implementations
│ │ ├── logging/ # Logging utilities
│ │ │ └── Logger.cpp
│ │ ├── math/ # Mathematical utilities
│ │ └── renderer/ # Renderer utilities
│ │ └── VulkanPipelineConfigFactory.cpp
│ │
│ └── main.cpp # Entry point of the application
│
├── third_party/ # Third-party dependencies (Vulkan SDK, GLFW, etc.)
│ ├── VulkanSDK/ # Vulkan SDK
│ │ ├── include/ # Header files for Vulkan SDK
│ │ │ └── vulkan/ # Vulkan-specific headers
│ │ └── lib/ # Vulkan SDK libraries
│ │
│ └── GLFW/ # GLFW include and library files
│ ├── include/ # GLFW headers
│ └── lib/ # GLFW libraries
│
├── .gitignore
├── CMakeLists.txt # Top-level CMake configuration file
└── README.md # Project documentation