Coder Social home page Coder Social logo

cvrtgi's Introduction

Clustered voxel real-time global illumination

This project contains a full implementation of clustered voxel real-time global illumination, including all the graphics framework written in C++ and Vulkan, and all the shaders needed for the technique.

Build for Windows

Note: Unfortunately CMakeListst.txt does not fully automate the build process, with assimp and spirv-cross libraries precompiled for Visual Studio 2017. The spirv-cross code has been modified to allow better shader reflection funtionality, differing from the code in the original repository. Automatizing the build of those libraries to fully automate and build for any Windows platform is pending work.

Note: All dependencies needed for this project are included in the external folder, included Vulkan libraries. Vulkan version used is 1.1.101.0.

  • Clone / download the repository.
  • Run CMakeListst.txt and select Visual Studio 2017 x64 bits as generator for the project.
  • Open and compile the solution in Debug / Release modes (Release recommended).
  • Copy external/assimp/dll/Debug/x64/assimpd.dll and external/assimp/dll/Release/x64/assimp.dll to build/Debug and build/Release respectively.

Controls

  • Arrows to move the camera.
  • S to transition between the different cameras in the scene.
  • L to enable lighting.
  • V to switch to voxel view.
  • R When in voxel view, to show reflectance.
  • N When in voxel view, to show normal direction.
  • M When in voxel view, to show mean normal direction.

How to run

  • Run the project from the Visual Studio Solution with Ctrl+F5.
  • Press S 3 times to reach the emitter camera (the scene has 4 cameras, being the first one the main camera, and the third one the emitter camera), orient and move it to lit the scene in the way you prefer.
  • Press L to enable lighting.
  • Press S again to cycle and go to the main camera (lighting is not updated for secondary cameras).

License

The project is licensed under the Apache 2.0 license.

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.