All Projects → a2flo → Floor

a2flo / Floor

Licence: gpl-2.0
A C++ Compute/Graphics Library and Toolchain enabling same-source CUDA/Host/Metal/OpenCL/Vulkan C++ programming and execution.

Projects that are alternatives of or similar to Floor

Shaderconductor
ShaderConductor is a tool designed for cross-compiling HLSL to other shading languages
Stars: ✭ 1,146 (+590.36%)
Mutual labels:  spir-v, graphics, vulkan, metal
Magnum
Lightweight and modular C++11 graphics middleware for games and data visualization
Stars: ✭ 3,728 (+2145.78%)
Mutual labels:  spir-v, graphics, vulkan
Veldrid
A low-level, portable graphics library for .NET.
Stars: ✭ 1,784 (+974.7%)
Mutual labels:  graphics, vulkan, metal
Filament
Filament is a real-time physically based rendering engine for Android, iOS, Windows, Linux, macOS, and WebGL2
Stars: ✭ 13,215 (+7860.84%)
Mutual labels:  graphics, vulkan, metal
Pmtech
Lightweight, multi-platform, data-oriented game engine.
Stars: ✭ 478 (+187.95%)
Mutual labels:  spir-v, vulkan, metal
spirv cross
Safe Rust wrapper around SPIRV-Cross
Stars: ✭ 75 (-54.82%)
Mutual labels:  metal, vulkan, spir-v
Nnvm
No description or website provided.
Stars: ✭ 1,639 (+887.35%)
Mutual labels:  metal, opencl, cuda
Occa
JIT Compilation for Multiple Architectures: C++, OpenMP, CUDA, HIP, OpenCL, Metal
Stars: ✭ 230 (+38.55%)
Mutual labels:  metal, opencl, cuda
Silk.net
The high-speed OpenAL, OpenGL, Vulkan, and GLFW bindings library your mother warned you about.
Stars: ✭ 534 (+221.69%)
Mutual labels:  graphics, vulkan, opencl
Tvm
Open deep learning compiler stack for cpu, gpu and specialized accelerators
Stars: ✭ 7,494 (+4414.46%)
Mutual labels:  vulkan, metal, opencl
Ktt
Kernel Tuning Toolkit
Stars: ✭ 33 (-80.12%)
Mutual labels:  vulkan, opencl, cuda
Gfx
[maintenance mode] A low-overhead Vulkan-like GPU API for Rust.
Stars: ✭ 5,045 (+2939.16%)
Mutual labels:  graphics, vulkan, metal
Soul Engine
Physically based renderer and simulation engine for real-time applications.
Stars: ✭ 37 (-77.71%)
Mutual labels:  vulkan, opencl, cuda
Bgfx
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
Stars: ✭ 10,252 (+6075.9%)
Mutual labels:  graphics, vulkan, metal
Primitiv
A Neural Network Toolkit.
Stars: ✭ 164 (-1.2%)
Mutual labels:  opencl, cuda
Babelstream
STREAM, for lots of devices written in many programming models
Stars: ✭ 121 (-27.11%)
Mutual labels:  opencl, cuda
Khiva
An open-source library of algorithms to analyse time series in GPU and CPU.
Stars: ✭ 161 (-3.01%)
Mutual labels:  opencl, cuda
Bsf
Modern C++14 library for the development of real-time graphical applications
Stars: ✭ 1,640 (+887.95%)
Mutual labels:  graphics, vulkan
Krafix
GLSL cross-compiler based on glslang and SPIRV-Cross
Stars: ✭ 124 (-25.3%)
Mutual labels:  spir-v, metal
Gpu Viewer
A front-end to glxinfo, vulkaninfo, clinfo and es2_info - Linux
Stars: ✭ 129 (-22.29%)
Mutual labels:  vulkan, opencl

Flo's Open libRary

Requirements:

Build Instructions:

  • run ./build.sh (use "./build.sh help" to get a list of all options)
  • configuration of optional parts: ** to disable OpenCL: define "FLOOR_NO_OPENCL" or "./build.sh no-opencl" ** to disable CUDA: define "FLOOR_NO_CUDA" or "./build.sh no-cuda" ** to disable Metal (only affects macOS/iOS builds): define "FLOOR_NO_METAL" or "./build.sh no-metal" ** to disable Host Compute: define "FLOOR_NO_HOST_COMPUTE" or "./build.sh no-host-compute" ** to disable Vulkan: define "FLOOR_NO_VULKAN" or "./build.sh no-vulkan" ** to disable network support (ssl/crypto/asio): define "FLOOR_NO_NET" or "./build.sh no-net" ** to disable OpenAL: define "FLOOR_NO_OPENAL" or "./build.sh no-openal" ** to disable VR: define "FLOOR_NO_VR" or "./build.sh no-vr" ** to disable C++ exceptions: define "FLOOR_NO_EXCEPTIONS" or "./build.sh no-exceptions" ** to build with libstdc++ instead of libc++: "./build.sh libstdc++" ** to build with C++20 support (requires Clang 9.0+): "./build.sh c++20"

Build Instructions (Xcode / macOS / iOS):

  • open floor.xcodeproj and build
  • some notes: ** almost all optional parts of floor are enabled here and you'll have to install all dependencies or disable them manually ** "homebrew":http://brew.sh is the recommended way to install additional dependencies: ==ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"== ** (opt) download "OpenVR":https://github.com/ValveSoftware/openvr/releases and manually install it: *** mkdir -p {/usr/local/include/openvr,/usr/local/lib} *** cp openvr/headers/* /usr/local/include/openvr/ *** cp openvr/bin/osx32/libopenvr_api.dylib /usr/local/lib/ ** command line tools might be necessary, install them with: ==xcode-select --install== ** on iOS, either copy dependencies into your iPhoneOS and iPhoneSimulator SDK, or floor/ios/deps/{include,lib} ** iOS linker flags for a depending project: -lSDL2 -lfloor -lcrypto -lssl

Build Instructions (Visual Studio 2019 / CMake / vcpkg / Windows):

  • install "VS2019 16.1+":https://visualstudio.microsoft.com/vs/preview
  • install "Clang / LLVM for Windows":http://llvm.org/builds
  • install "Vulkan SDK":https://vulkan.lunarg.com/sdk/home
  • install vcpkg (somewhere, not within libfloor): ** == git clone https://github.com/Microsoft/vcpkg.git == ** ==cd vcpkg== ** ==.\bootstrap-vcpkg.bat -disableMetrics== ** ==.\vcpkg integrate install==
  • install vcpkg packages: ** ==vcpkg --triplet x64-windows install sdl2 opengl opengl-registry OpenCL vulkan openssl-windows asio openal-soft openvr==
  • in Visual Studio 2019: open folder "floor" (wait a little until build files are generated)
  • select "Debug" or "Release" configuration and build ** NOTE: all dependencies (optional parts) are enabled here

Installation (Unix):

  • mkdir -p /opt/floor/include
  • sudo ln -sf /path/to/floor /opt/floor/include/floor
  • sudo ln -sf /path/to/floor/bin /opt/floor/lib
  • alternatively: copy these files/folders there

Installation (Windows):

  • create a "%%ProgramFiles%%/floor" folder (C:/Program Files/floor)
  • inside this folder: ** create a "lib" folder ** VS2019: *** copy everything from bin/ in there (dlls/lib/exp) ** MinGW/MSYS2: *** copy libfloor_static.a/libfloord_static.a there ** create an "include" folder and copy the original "floor" folder in there (containing all floor source code)

Misc Hints:

  • when using X11 forwarding, set these env variables: ** export LIBGL_ALWAYS_INDIRECT=yes ** export SDL_VIDEO_X11_NODIRECTCOLOR=yes
  • depending on how your Linux distribution handles OpenCL headers and library, you might need to manually install OpenCL 1.2+ compatible ones

Compute/Graphics Toolchain:

  • automated builds for Linux, macOS and Windows can be found at: https://libfloor.org/builds/toolchain
  • NOTE: this requires a Unix environment with all LLVM build dependencies installed - use MSYS2 on Windows
  • NOTE: the absolute build path must not contain spaces
  • NOTE: when building with GNU Make 4.2, use -j1 (jobserver changes in 4.2 broke something)
  • compile the toolchain: ** 8.0 toolchain: cd floor/etc/llvm80/ && ./build.sh ** if successful, package it (in addition to a .zip file, this also creates a folder with all necessary binaries and include files): ./pkg.sh
  • install the toolchain: ** Unix: *** automatic: **** development: run ./deploy_dev.sh from the floor/etc/llvm80/ folder (this will create symlinks to everything in floor and floor/etc/llvm80) **** release: run ./deploy_pkg.sh from inside the toolchain package folder (floor/etc/llvm80/toolchain_80000_*; this will copy everything) *** manual: **** copy the toolchain folder as "toolchain" to /opt/floor/ (should then be /opt/floor/toolchain/{bin,clang,libcxx}) **** inside /opt/floor/toolchain, add a symlink to the floor include folder: sudo ln -sf ../include floor ** Windows: *** copy the toolchain folder as "toolchain" to "%%ProgramFiles%%/floor" (should then be "%%ProgramFiles%%/floor/toolchain/{bin,clang,libcxx}") *** inside "%%ProgramFiles%%/floor/toolchain", copy the "floor" folder from the "include" folder above it into this folder
  • NOTE: this is the expected default setup - paths can be changed inside config.json (toolchain.generic.paths)

Projects and Examples using floor:

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