All Projects → szellmann → Visionaray

szellmann / Visionaray

Licence: mit
A C++-based, cross platform ray tracing library

Projects that are alternatives of or similar to Visionaray

Sleef
SIMD Library for Evaluating Elementary Functions, vectorized libm and DFT
Stars: ✭ 353 (+3.22%)
Mutual labels:  simd, cuda
Luxcore
LuxCore source repository
Stars: ✭ 601 (+75.73%)
Mutual labels:  ray-tracing, cuda
Nsimd
Agenium Scale vectorization library for CPUs and GPUs
Stars: ✭ 138 (-59.65%)
Mutual labels:  simd, cuda
Plotoptix
Data visualisation in Python based on OptiX 7.2 ray tracing framework.
Stars: ✭ 252 (-26.32%)
Mutual labels:  ray-tracing, cuda
Compactcnncascade
A binary library for very fast face detection using compact CNNs.
Stars: ✭ 152 (-55.56%)
Mutual labels:  simd, cuda
LuisaRender
High-Performance Multiple-Backend Renderer Based on LuisaCompute
Stars: ✭ 47 (-86.26%)
Mutual labels:  cuda, ray-tracing
Sse2neon
A translator from Intel SSE intrinsics to Arm/Aarch64 NEON implementation
Stars: ✭ 316 (-7.6%)
Mutual labels:  simd
Loopvectorization.jl
Macro(s) for vectorizing loops.
Stars: ✭ 325 (-4.97%)
Mutual labels:  simd
Knn Cuda
Fast k nearest neighbor search using GPU
Stars: ✭ 310 (-9.36%)
Mutual labels:  cuda
Fastbase64
SIMD-accelerated base64 codecs
Stars: ✭ 309 (-9.65%)
Mutual labels:  simd
Cudahandbook
Source code that accompanies The CUDA Handbook.
Stars: ✭ 345 (+0.88%)
Mutual labels:  cuda
Cudpp
CUDA Data Parallel Primitives Library
Stars: ✭ 333 (-2.63%)
Mutual labels:  cuda
3
GPU-accelerated micromagnetic simulator
Stars: ✭ 324 (-5.26%)
Mutual labels:  cuda
Thrust
The C++ parallel algorithms library.
Stars: ✭ 3,595 (+951.17%)
Mutual labels:  cuda
Raytracing.github.io
Main Web Site (Online Books)
Stars: ✭ 4,485 (+1211.4%)
Mutual labels:  ray-tracing
Fast gicp
A collection of GICP-based fast point cloud registration algorithms
Stars: ✭ 307 (-10.23%)
Mutual labels:  cuda
Bayadera
High-performance Bayesian Data Analysis on the GPU in Clojure
Stars: ✭ 342 (+0%)
Mutual labels:  cuda
Unsupervised Videos
Unsupervised Learning of Video Representations using LSTMs
Stars: ✭ 309 (-9.65%)
Mutual labels:  cuda
C Ray
C-Ray is a small, simple path tracer written in C
Stars: ✭ 323 (-5.56%)
Mutual labels:  ray-tracing
Simdcomp
A simple C library for compressing lists of integers using binary packing
Stars: ✭ 331 (-3.22%)
Mutual labels:  simd

Build Status Build Status Join the chat at https://gitter.im/visionaray/Lobby

Visionaray

A C++ based, cross platform ray tracing library

Getting Visionaray

The Visionaray git repository can be cloned using the following commands:

git clone --recursive https://github.com/szellmann/visionaray.git

An existing working copy can be updated using the following commands:

git submodule sync
git submodule update --init --recursive

Build requirements

  • C++11 compliant compiler (tested with g++-7.4.0 on Ubuntu 18.04 x86_64, tested with clang-900.0.39.2 on Mac OS X 10.13, tested with Microsoft Visual Studio 2015 VC14 for x64)

  • CMake version 3.1.3 or newer

  • OpenGL

  • GLEW

  • NVIDIA CUDA Toolkit version 7.0 or newer (optional)

  • All external dependencies but CMake should be installed as developer packages containing C/C++ header files

  • The OpenGL and GLEW dependency can optionally be relaxed by setting VSNRAY_GRAPHICS_API=None with CMake

  • When targeting NVIDIA CUDA, make sure you have a C++11 compliant version (v7.0 or newer)

  • Visionaray supports Fermi+ NVIDIA GPUs (e.g. >= GeForce 400 series or >= Quadro {4|5|6}000) (Visionaray does not support texturing on Fermi GPUs, bindless texture support is available with Kepler+ GPUs)

Additionally, in order to compile the viewer application and the examples, the following packages are needed or recommended:

Building the Visionaray library and viewer application

Linux and Mac OS X

It is strongly recommended to build Visionaray in release mode, as the source code relies heavily on function inlining by the compiler, and executables may be extremely slow without that optimization. It is also recommended to supply an architecture flag that corresponds to the CPU architecture you are targeting.

cd visionaray
mkdir build
cd build

cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-march=native"
make
make install

The headers, libraries and viewer application will then be located in the standard install path of your operating system (usually /usr/local).

See the Getting Started Guide and the Troubleshooting section in the Wiki for further information.

Visionaray Viewer

Visionaray comes with a viewer application that supports a number of different 3D file formats. The viewer application is primarily targeted at developers, as a tool for debugging and testing. After being installed, the viewer application executable can be called using the following command:

vsnray-viewer <file>

where file is either a path to a wavefront .obj file, a .ply file, or a .pbrt file.

Documentation

Documentation can be found in the Wiki.

Source Code Organization

Library

Visionaray is a template library, so that most algorithms are implemented in header files located under include/visionaray.

Visionaray can optionally interoperate with graphics and GPGPU APIs. Interoperability with the respective libraries is compiled into the Visionaray library. When GPU interoperability isn't requierd, chances are high that you don't need to link with Visionaray but can rather use it as a header only library.

Files in ./detail subfolders are not part of the public API. Code in namespace detail contains private implementation. Template class implementations go into files ending with .inl, which are included at the bottom of the public interface header file.

Applications

Visionaray comes with a rudimentary viewer (see above) and a set of example applications. Those are implemented in

Common library

The viewer application and the examples link with the Visionaray-common library that provides functionality such as windowing classes or mouse interaction. The Visionaray-common library is not part of the public API and interfaces may change between releases.

  • src/common: private library used by the viewer and example applications

Third-party libraries

The viewer application and the examples use the following third-party libraries (the Visionaray library can be built without these dependencies):

  • CmdLine library to handle command line arguments in the viewer and example applications.
  • dear imgui library for GUI elements in the viewer and example applications.
  • PBRT-Parser library to load 3D models in pbrt format.
  • RapidJSON library for parsing JSON scene descriptions.
  • tinyply library to load Stanford PLY models.

Revision History

See the file CHANGELOG.md for updates on feature addition and removals, bug fixes and general changes.

Citation

If you use Visionaray or some of its code for your scientific project, it would be nice if you cited this paper:

@inproceedings{zellmann:visionaray,
author = {Zellmann, Stefan and Wickeroth, Daniel and Lang, Ulrich},
title = {Visionaray: A Cross-Platform Ray Tracing Template Library},
booktitle = {2017 IEEE 10th Workshop on Software Engineering and Architectures for Realtime Interactive Systems (SEARIS)},
year = {2017},
publisher = {IEEE},
pages = {1-8},
}

License

Visionaray is licensed under the MIT License (MIT)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].