 | Vulkan Essentials |  |
Learning Vulkan isn't easy! It can be scary and overwhelming for new programmers! 
(Available Amazon)
Learn the essentials of using Vulkan - from simple rendering using the rasterization pipeline, through to compute and hardware accelerated ray-tracing.
Aim of this text:
• Feed your curiosity and have fun learning about 'Vulkan'
• Mixing of practical examples (games and animated characters)
• Color code/explanations and diagrams
• Let about setting up/debugging/workign with Vulkan
• Stripped down code that shows the 'essence' of what's important
To help make the practical exercises accessable - they'll be hosted on VulkanLab - so you can view all of the code/setup files- including the output logs/debug information. Easy to download the entire code (including the Visual Studio project files) - that you can compile and run the examples on your own machine with little effort.
 | Vulkan Essential Examples - (Samples C/C++/Visual Studio/Windows) |  |
• Vulkan Errors/Warning
• Hello Vulkan Triangle (Minimal Working Rasterization)
 | Vulkan Pyramid Scene |  |
We build on the simple triangle example - but add more triangles - construct a simple scene from planes and pyramids. Also add a bit of directional lighting (dot product of the surface normal and the light direction).
 | Third Person Camera |  |
Implements a dynamic third-person camera system that follows an object for an interactive user perspective (put a pyramid as the 'target' - which the camera rotates around and always has as its target lookat).
 | First Person Camera |  |
Sets up a first-person perspective camera view, offering an immersive experience as if through the eyes of the character. You are the camera!
 | Loading Images |  |
Manages the process of importing, decoding, and rendering image assets seamlessly for graphical applications.
 | Procedural Patterns Wood |  |
Dynamically generates realistic wood textures through procedural algorithms, providing design flexibility.
 | Vertices And Indices |  |
Defines vertices and indices essential for constructing and rendering 3D objects in digital environments.
 | MD2 Parsing Data |  |
Processes MD2 model files to extract critical rendering data for efficient display of 3D assets.
 | MD2 First Frame Only |  |
Renders only the initial frame of an MD2 model, useful for static visualizations of 3D characters.
 | MD2 Single Animated Character |  |
Displays a fully animated 3D character sourced from MD2 model data in a dynamic scene.
 | MD2 Animation Interpolation |  |
Smoothly transitions between animation frames in MD2 models to create realistic character movements.
 | MD2 Thousands Of Instances |  |
Efficiently renders thousands of MD2 model instances, showcasing advanced graphical optimization techniques.
 | Game Single Cube |  |
Demonstrates a basic game setup featuring a single interactive cube as the central focus.
 | Game Instanced Cubes |  |
Renders multiple cube instances in a game environment to demonstrate object instancing and scalability.
 | Game Logic |  |
Oversees the execution of game mechanics and rules, ensuring seamless player interaction and progression.
 | Tessellation |  |
Applies techniques to dynamically refine mesh geometry for enhanced visual detail and surface smoothness.
 | Geometry Shader Passthrough |  |
Displays the functionality of a geometry shader by passing data through unaltered during rendering.
 | Geometry Shader Subdivide |  |
Utilizes geometry shaders to subdivide meshes into finer parts, improving overall detail and refinement.
 | Deferred Renderer Single Triangle |  |
Establishes a deferred rendering pipeline focused on displaying a single triangle in a scene.
 | Deferred Renderer Triangle Using Samplers |  |
Uses samplers in deferred rendering to apply textures and effects to triangles.
 | Deferred Renderer Lighting |  |
Incorporates sophisticated lighting effects within a deferred rendering pipeline for added realism.
 | Ray Tracing Single Triangle |  |
Implements ray tracing techniques to render a single triangle, demonstrating advanced physics-based rendering.
 | Ray Tracing Textures |  |
Adds textures and material properties to ray-traced surfaces for greater realism and visual complexity.
 | Fun Debugging Challenge |  |
I've included a small ray-tracing project (visual studio with code and shader) - the program runs but has a bug that you have to fix. After you've implemented a few ray-tracing shaders (see above examples) - and you've sort of got the ghist of what's happening - have a try at the challenge.
The bug is the 'miss' shader isn't getting called - and the result seems 'inverted'. The 'closest hit' shader is acting like the 'miss' shader. See if you can debug why (if it's in the shader code, c++ code or the build).
• Ray-Tracing - Challenge Bug Fix (Download Code)
 | Resources and Links |  |
• Other Examples with Code are Available on the Vulkan Lab [https://vulkan.xbdev.net/]
• Vulkan Tutorials/Information [https://xbdev.net/vulkan/]
• GLSL Information [https://xbdev.net/shaderx/glsl/]
 |
Other Related Texts You Might Find Interesting |
 |
|