Vulkan Levels Render

The primary goal of the project is to apply all that I learned in the Vulkan API course to create software designed to draw the visual aspects of a gamelevel. 

Software Used  

Languages Used  

Visual Studio

C++

Feel Free to Download the Source Code.
Source Code

Project Content

CORE FEATURES
One or More Blender Game Levels to export from
Exporting OBJ Names & Locations from your Levels
Run-time file I/O parsing of exported level information
Reading binary model data for all referenced models
Transfering model geometry, material and matrix data to GPU
One model imported from GameLevel.txt is drawing correctly
All models successfully drawn at proper location, orientation & scale
All models have correct OBJ material colors showing
Working 3D Fly-through Camera
Directional light with ambient term and specular highlights

KEY FEATURES
Support for Hot-Swapping multiple levels without a restart
Support for adding Point and/or Spotlight sources via Blender
Data Oriented Renderer with Unique Model Data and fully Instanced Drawcalls

BONUS FEATURES
Play Some Level Music
Add Some Sound Effects
Manage your project in a private GIT repo

Programming Code

Programming Explanation

Vulkan Levels Render

  • The primary goal of the project is to apply all that I learned in the VulkanAPI course to create software designed to draw the visual aspects of a gamelevel. 
  • In the project learn aboutimporting external graphics data(3D models) onto the graphics card by carefullyfollowing the rule of three. Normally one would read a 3D model format usingFile I/O or use an external API to accessthis type of data. In the interest of time, we will use a custom tool called obj2headerto covert an .obj model file to a header file containing our 3D model data.
  • In addition to importing ourvertex and index data, we will also import material data for use by our pixelshader. Materials are information representing how a surface is supposed tobehave/react when interacting with light. We will learn how to import this datain the form of a uniform buffer and then have it respond to a directional lightsource with a specular component.
image

Controls

  • WASD – move the camera
  • Mouse to pick up and drag entities
  • PGUP/PGDN – Change the Camera Mode
  • Keys R will toggle viewing Level Render