Giter Site home page Giter Site logo

wobakj / vulkanframework Goto Github PK

View Code? Open in Web Editor NEW
0.0 7.0 0.0 13.45 MB

A framework and test applications for multithreaded and distributed vulkan applications

CMake 2.60% C++ 91.54% GLSL 5.87%
vulkan multithreading distributed level-of-detail bvh c mpi

vulkanframework's Introduction

VulkanFramework

Focused on multithreaded and distributed vulkan applications and LOD rendering. Development started as part of a semester project

  • Framework

    3 level framework

    • wrap: RAI wrappers for all important Vulkan objects
    • util: convenience classes to allocate memory, load textures, wrap geometry etc.
    • app: hierarchical application and launcher classes to run the same high-level application in different modes
  • Scenegraph

    simple scenegraph implementation supporting:

    • Transform Node: scale, translation, rotation, children
    • Shape Node: geometry
    • Light Node: color, intensity, location, radius
    • Camera Node: automatically created, not loaded from json

    the scene is described in a json file based on the JSON Scenegraph specification each model requires a name ($DEF)

Applications

  • Minimal: drawing a triangle
  • Simple: drawing sphere.obj and sponza.obj (external) with 1st person navigation
  • Compute: calculating an animated texture usinga computer shader
  • Clustered: drawing sponza.obj (external, PBR) using clustered shading
  • Scenegraph drawing a Scenegraph based on the JSON Scenegraph format
  • Scenegraph Clustered drawing a Scenegraph based on the JSON Scenegraph format with clustered PBR shading
  • LOD MPI draws an xyz_rgb file with bvh with 3 processes. 1 presenter and 2 workers
  • LOD draws an xyz_rgb file with bvh

Modes

each application can be run in different modes

  • level 1 specified in the main function, worker mode currently only used in LOD MPI app
    • Window: a window is created and the application renders to the window
    • Worker: the application renders tp an image and tranmits it via MPI to a presenter
  • level 2 can be chosen at runtime using the "-t 1 to 3" argument
    • Single: application runs in 1 thread
    • Threaded: application has a separate drawing thread in parallel to logic, recording and presenting
    • Threaded Transfer: application additionally has a thread for data transfer

Libraries

License

this framework is licensed under the GPL v3

  • SPIR-V Cross is licensed under Apache license 2.0
  • cmdline is licensed under 3 clause BSD revised
  • GLFW is licensed under the zlib/libpng license
  • GLM is licensed under the Happy Bunny License (Modified MIT)
  • GLI is licensed under the Happy Bunny License (Modified MIT)
  • stb_image is public domain
  • tinyobjloader is licensed under 2 clause BSD
  • lamure is licensed under 3 clause BSD
  • jsoncpp is public domain

vulkanframework's People

Contributors

joshuarrrrr avatar oanaucs avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  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.