A compilation of few rasterization and Hybrid Ray Tracing techniques using Vulkan API and C++
- tinygltf (fork, module)
- NiceMath
- tiny_obj_loader
- ImGui (fork, module)
- ImGuizmo (fork, module)
- Imimgui-filebrowser (fork, module)
- Array Of Textures, Non-Uniform Descriptor Indexing and Bindless
- Asset Loaders
- Asynchronous Asset Loading
- Forward and Deferred Rendering
- Screen Space Reflections
- Temporal Anti Aliasing
- Tone Mapping
- PBR and IBL
- Rasterized and Ray Traced Shadows
-
Object Picker
- Challanges Faced: -
- Algorithm Limitations: -
- Bugs:
- Object picking is not accurate in Forward Pass
- Object picking is not correctly implemented in Differed Pass
-
Normal Maps
- Challanges Faced:
- Did not use the correct texture format to store Normals and so computed wrong TBN matrix (used UNORM duh!)
- Algorithm Limitations:
- Bugs:
- Forward pass is also computing lighting in View Space however inverse-transposing the light vector (after multiplying with view materix) is giving incorrect results
- Challanges Faced:
-
SSAO
- Challanges Faced:
- Noise computation was bugy in my previous implementaiton. Now fixed
- Algorithm Limitations:
- Quality of SSAO is not great. Migh want to implement AMD SSAO for comparision
- Bugs:
- Challanges Faced:
-
Shader Compilation - GLSL to SPIRV
- Challanges Faced: -
- Algorithm Limitations:
- Currently inspired from Sascha Willems's offline python script using glslangValidator
- Will later move to a runtime glsl compilation process
- Bugs: -
-
Bounding Box Debug Display
- Challanges Faced: -
- Algorithm Limitations:
- Currently generating vertex and indices as 1 complete buffer and rending as single draw call (GPU effecient with some CPU overhead)
- Will later add support for Instanced support for displaying bounding boxes
- Will leter add support to display light type identifiers, cameras and other editor friendly visual tools depending on need
- Bugs: -
-
User Interface and Guizmo Control
- Challanges Faced: -
- Algorithm Limitations:
- Using ImGui and ImGuizmo for UI and transform editting
- Implemented simple participant architecture for willing classes to implement their UI display
- Will keep improving UI as I progress
- Bugs: -