Giter VIP home page Giter VIP logo

vulkanscenegraph's Introduction

VulkanSceneGraph

VulkanSceneGraph (VSG), is a modern, cross platform, high performance scene graph library built upon Vulkan graphics/compute API. The software is written in C++17, and follows the CppCoreGuidelines and FOSS Best Practices. The source code is published under the MIT License, with the exception of vulkan.h, used for Vulkan extensions, which is under Apache License 2.0.

This repository contains C++ headers and source and CMake build scripts to build the libvsg library. Additional support libraries and examples are provided in separate repositories, links to these are provided below. The software currently builds under Linux (desktops variants through to Jetson & Raspberry Pi), Windows (VisualStudio, MinGW & Cygwin), Android, and macOS & iOS (using MoltenVk).

Links to further information

The vulkanscenegraph.org website provides a detailed list of features, tutorials and reference documentation, while this repository provides the source code and build support for creating the VulkanSceneGraph library. Quick links to resources hosted on the website:

  • Features - tour of features you'll find in the VulkanSceneGraph and companion projects.
  • Screenshots - screenshots from VulkanSceneGraph examples and 3rd party libraries and applications
  • Tutorials - mulit-part tutorial that takes you from introduction to scene graphs to multi-threading and optimization.
  • Documentation - doxygen generated reference documentation and links to 3rd party learning materials
  • Discussion - Discussion forum hosted on github.
  • Services - List of companies connected to the VulkanSceneGraph project that can provide professional services

Links to companion projects that offer additional features

Hosted as part of the vsg-dev:

  • vsgXchange reading and writing of 3rd party images and 3d models and HTTP support.
  • vsgExamples tests & examples.
  • osg2vsg OpenSceneGraph integration library that enables converting of OSG to VSG scene graph and use of OpenSceneGraph loaders.
  • vsgImGui ImGui integration enabling UI in graphics window.
  • vsgQt Qt integration with VulkanSceneGraph.
  • vsgPoints 3d point cloud loading and rendering for VulkanSceneGraph with database paging support and scalability up to billions of points.
  • vsgUnity plugin for Unity that provides export to native VulkanSceneGraph binary/ascii format.
  • MyFirstVsgApplication simple standalone VSG application that can be used as a template for your own applications.
  • vsgFramework template project that uses CMake FetchContent to pull in all the main libraries associated with VulkanSceneGraph and dependencies and builds them together.

Community projects:

  • vsgSDL SDL integration with VulkanSceneGraph.
  • vsgvr OpenVR integration with VulkanSceneGraph.
  • vsgCs 3D Tiles and Cesium ion integration
  • vsgEarth osgEarth integration
  • rocky 3D Geospatial Application Engine (Vulkan / C++17 / VSG). Pelican Mapping's successor to osgEerth.

Quick Guide to building the VSG

Prerequisites:

  • C++17 compliant compiler i.e. g++ 7.3 or later, Clang 6.0 or later, Visual Studio S2017 or later.
  • Vulkan 1.1 or later.
  • CMake 3.7 or later.

The above dependency versions are known to work so they've been set as the current minimum, it may be possible to build against older versions. If you find success with older versions let us know and we can update the version info.

Download VulkanSDK from LunarG, unpack into local directory and set VULKAN_SDK environment variable to the include/lib directory within it. For Linux it would typically be along the lines of:

export VULKAN_SDK_VERSION=1.2.162.1
export VULKAN_SDK=${PWD}/VulkanSDK/${VULKAN_SDK_VERSION}/x86_64

mkdir VulkanSDK
wget https://sdk.lunarg.com/sdk/download/${VULKAN_SDK_VERSION}/linux/vulkansdk-linux-x86_64-${VULKAN_SDK_VERSION}.tar.gz -O VulkanSDK/vulkansdk-linux-x86_64-${VULKAN_SDK_VERSION}.tar.gz
tar zxf VulkanSDK/vulkansdk-linux-x86_64-${VULKAN_SDK_VERSION}.tar.gz -C VulkanSDK/

Once you've downloaded and unpacked the VulkanSDK you'll want to put VULKAN_SDK into your user environment variable setup so that CMake's find_package(Vulkan) can find the VulkanSDK's location.

Command line build instructions:

To build and install the static libvsg library (.a/.lib) in source:

git clone https://github.com/vsg-dev/VulkanSceneGraph.git
cd VulkanSceneGraph
cmake .
make -j 8
sudo make install

Full details on how to build the VSG (Unix/Windows/Android/macOS) can be found in the INSTALL.md file.

vulkanscenegraph's People

Contributors

anormann1974 avatar anyoldname3 avatar appcodegen avatar artemkulyk avatar asafran avatar cbenghi avatar geefr avatar gupascal avatar iconiqlabs avatar jamierobertson1 avatar kannode avatar laurensvoerman avatar liliolett avatar mikalai avatar olegded avatar psi29a avatar rainergericke avatar remoe avatar rhabacker avatar robertosfield avatar rolandhill avatar sbrkopac avatar teamcity-aevex avatar theodoregoetz avatar timoore avatar tomhog avatar uhertlein avatar vsg-dev avatar wangii avatar xenonofarcticus 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.