The 3D model viewer I wrote in Vulkan for my Computer Science Capstone.
- PBR Material System
- Dynamic Direct Lighting
- Directional Shadowmapping
- Image-based Global Illumination
- Physically-Based Bloom
- Fast Approximate Antialiasing
- Orbital and Flycam Input Methods
- ACES, AgX, Khronos PBR Neutral, and Reinhard Tonemapping
- Asynchronous Asset Loading
- Full Scene Serialization to Custom File Format
- Efficient Bindless and GPU Driven Architecture
3D model files must be of the .glTF or .glb format and skyboxes must be equirectangular projections of the .hdr format. Full scenes must be of the custom .mvs format. .mvs files support Windows' Open With functionality.
- Orbital Mode:
- Hold
Left Clickwhen not hovering over a GUI element to pan the camera and useScroll Wheelto change distance to the model.
- Hold
- Flycam Mode:
- Hold
Left Clickwhen not hovering over a GUI element to look around. UseWSADto move forward/backward/left/right,Space/LCTRLto move up/down, and holdLSHIFTto increase speed.
- Hold
- User Interface:
- Most UI elements can be interacted with using only
Left Click. However,LCTRL + Left Clickcan be used on any slider to manually type in a value.
- Most UI elements can be interacted with using only
- Dear ImGui - UI elements
- fastgltf - 3D model loading
- GLFW - Window and input handling
- GLM - CPU-side linear algebra computations
- MikkTSpace - Calculate vertex tangent vectors
- STB - Image loading
- volk - Dynamically load Vulkan functions