Skip to content

Vulkan 3D model viewer written for my computer science capstone project (warning: spaghetti ahead)

Notifications You must be signed in to change notification settings

Tabris05/capstone

Repository files navigation

The 3D model viewer I wrote in Vulkan for my Computer Science Capstone.

Features

  • 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

Supported Formats

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.

Controls

  • Orbital Mode:
    • Hold Left Click when not hovering over a GUI element to pan the camera and use Scroll Wheel to change distance to the model.
  • Flycam Mode:
    • Hold Left Click when not hovering over a GUI element to look around. UseWSAD to move forward/backward/left/right, Space/LCTRL to move up/down, and hold LSHIFT to increase speed.
  • User Interface:
    • Most UI elements can be interacted with using only Left Click. However, LCTRL + Left Click can be used on any slider to manually type in a value.

Dependencies:

  • 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

About

Vulkan 3D model viewer written for my computer science capstone project (warning: spaghetti ahead)

Resources

Stars

Watchers

Forks

Packages

No packages published