Coder Social home page Coder Social logo

nukually / littlevulkanengine Goto Github PK

View Code? Open in Web Editor NEW

This project forked from blurrypiano/littlevulkanengine

0.0 0.0 0.0 1.3 MB

Code repo for video tutorial series teaching Vulkan and computer graphics

License: MIT License

Shell 0.08% C++ 92.35% CMake 3.93% GLSL 3.54% Batchfile 0.10%

littlevulkanengine's Introduction

Little Vulkan Engine

(Prior version of repo has now been moved to the tut0-22 branch)

A video tutorial series introducing computer graphics for Vulkan®, the new generation graphics and compute API from Khronos. The focus of this tutorial is to be approachable to newcomers to computer graphics and graphics APIs, explaining not just the Vulkan API but also computer graphics theory, mathematics and engine architecture.

Table of Contents

Building

Unix Build Instructions

  • Install the dependencies: cmake, glm, vulkan and glfw

  • For example

      sudo apt install vulkan-tools
      sudo apt install libvulkan-dev
      sudo apt install vulkan-validationlayers-dev spirv-tools
      sudo apt install libglfw3-dev
      sudo apt install libglm-dev
      sudo apt install cmake
    
  • To Build

     cd LittleVulkanEngine
     ./unixBuild.sh
    

MacOS Build Instructions

Install Dependencies

Windows build instructions

Building for Visual Studio 2019

  • In windows powershell
 cd littleVulkanEngine
 mkdir build
 cmake -S . -B .\build\
  • If cmake finished successfully, it will create a LveEngine.sln file in the build directory that can be opened with visual studio. In visual studio right click the Shaders project -> build, to build the shaders. Right click the LveEngine project -> set as startup project. Change from debug to release, and then build and start without debugging.

Building for minGW

  • Download and install MinGW-w64, you probably want MingW-W64-builds/
  • Make sure MinGW has been added to your Path
  • Also set MINGW_PATH variable in the project's .env.cmake
  • In windows powershell
 cd littleVulkanEngine
 ./mingwBuild.bat
  • This will build the project to build/LveEngine.exe, double click in file explorer to open and run

Tutorials

This branch is a legacy branch that holds all the older tutorials in the series, starting from the beginning and going up until tutorial 22.

Point Lights

Find the Preliminary Completed Project Here

In this tutorial we add a point light object to the global UBO and update the vertex shader to make use of this new lighting technique. (Video)

In this tutorial we explore the differences in per-fragment versus per-vertex lighting (Video)

In this tutorial I change the project to use cmake rather than a simple makefile to make building on multiple platforms simpler and more straightforward. (Video)

In this tutorial we implement a second rendering system that uses the billboard technique to render a spherical point light. (Video)

In this tutorial we add support for multiple point light objects in the scene. Lights will still be stored in the GlobalUbo, however for rendering the light objects we will use push constants.

(Video)

In this tutorial we add specular lighting to our simple fragment shader.

(Video)

In this tutorial we add a limited blending capability to our point light system, allowing them to be rendered with a nicer appearance.

(Video)

Official Khronos Vulkan Samples

Khronos made an official Vulkan Samples repository available to the public (press release).

You can find this repository at https://github.com/KhronosGroup/Vulkan-Samples

Credits

Thanks to the authors of these libraries :

Thanks to LunarG

Thanks to the wonderful opensource examples by Sascha Willems

Thanks to ThinMatrix and his wonderful OpenGL game tutorial series which was a huge inspiration for this series and how I first started learning computer graphics

Thanks to Sean Plott and the #DK30 challenge, for providing the motivating kick to give this a shot

Attributions / Licenses

littlevulkanengine's People

Contributors

blurrypiano avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.