All Projects → ddiakopoulos → Polymer

ddiakopoulos / Polymer

Licence: other
🎨 graphics + interaction engine

Programming Languages

cpp11
221 projects
cpp14
131 projects

Projects that are alternatives of or similar to Polymer

Stereokit
An easy-to-use mixed reality library for building HoloLens and VR applications with C# and OpenXR!
Stars: ✭ 195 (-19.75%)
Mutual labels:  rendering, vr, augmented-reality, virtual-reality, ar
Vxr
General purpose engine written in C++ with emphasis on materials rendering (PBR, clear coat, anisotropy, iridescence)
Stars: ✭ 181 (-25.51%)
Mutual labels:  game-engine, opengl, graphics, rendering
lvr
👓 Augmented Reality for everyone - Out of the world experiences
Stars: ✭ 92 (-62.14%)
Mutual labels:  augmented-reality, vr, ar, virtual-reality
V2R
Code for our IJCAI 2020 paper: "Keep It Real: a Window to Real Reality in Virtual Reality".
Stars: ✭ 20 (-91.77%)
Mutual labels:  augmented-reality, vr, ar, virtual-reality
spark-ar-creators
List of 9500 (and counting) Spark AR Creators. Open an issue or contact me if you want to be added.❤️
Stars: ✭ 122 (-49.79%)
Mutual labels:  augmented-reality, vr, ar, virtual-reality
Viro
ViroReact: AR and VR using React Native
Stars: ✭ 1,735 (+613.99%)
Mutual labels:  vr, augmented-reality, virtual-reality
Klayge
KlayGE is a cross-platform open source game engine with plugin-based architecture.
Stars: ✭ 1,646 (+577.37%)
Mutual labels:  game-engine, opengl, graphics
Innocenceengine
Cross-platform modern game engine.
Stars: ✭ 149 (-38.68%)
Mutual labels:  game-engine, opengl, rendering
Dagon
3D game engine for D
Stars: ✭ 165 (-32.1%)
Mutual labels:  game-engine, opengl, rendering
Physics3d
A 3D physics engine
Stars: ✭ 101 (-58.44%)
Mutual labels:  opengl, graphics, rendering
Raz
Modern & multiplatform game engine in C++17
Stars: ✭ 161 (-33.74%)
Mutual labels:  game-engine, opengl, rendering
Safespaces
3D/VR Desktop built for Arcan
Stars: ✭ 225 (-7.41%)
Mutual labels:  graphics, vr, virtual-reality
Apertusvr
Virtual Reality Software Library
Stars: ✭ 112 (-53.91%)
Mutual labels:  game-engine, augmented-reality, virtual-reality
Vircadia
Vircadia open source metaverse platform, based on the former High Fidelity Virtual Reality Platform.
Stars: ✭ 110 (-54.73%)
Mutual labels:  vr, virtual-reality, ar
Tinyrenderer
A brief computer graphics / rendering course
Stars: ✭ 11,776 (+4746.09%)
Mutual labels:  opengl, graphics, rendering
Tinyraycaster
486 lines of C++: old-school FPS in a weekend
Stars: ✭ 1,383 (+469.14%)
Mutual labels:  opengl, graphics, rendering
Glitter
Dead Simple OpenGL
Stars: ✭ 2,040 (+739.51%)
Mutual labels:  opengl, graphics, rendering
Opentk
The Open Toolkit library is a fast, low-level C# wrapper for OpenGL, OpenAL & OpenCL. It also includes windowing, mouse, keyboard and joystick input and a robust and fast math library, giving you everything you need to write your own renderer or game engine. OpenTK can be used standalone or inside a GUI on Windows, Linux, Mac.
Stars: ✭ 2,284 (+839.92%)
Mutual labels:  game-engine, opengl, graphics
Aframe
🅰️ web framework for building virtual reality experiences.
Stars: ✭ 13,428 (+5425.93%)
Mutual labels:  game-engine, vr, virtual-reality
Bgfx
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
Stars: ✭ 10,252 (+4118.93%)
Mutual labels:  opengl, graphics, rendering

Polymer

License is BSD 3-Clause

Platform Build Status
MSVC 2017 x64 Build status

Polymer is a research framework for spatial interaction and real-time rendering, presently targeting C++14 and desktop-class OpenGL on Windows. It was built to explore AR/VR prototyping tools as a core concept in-engine. It is inspired by projects such as NVIDIA's Falcor, Google's Lullaby, and Microsoft's Mixed Reality Toolkit. While the primary focus of Polymer is immersive media, the engine contains features useful to graphics research and general tool and utility development as well.

Features

  • Physically-based, gamma-correct forward renderer with MSAA
  • Data-driven entity-component architecture with custom RTTI
  • Lightweight, object-oriented wrapper for modern OpenGL
  • Hot-reloadable assets including GLSL shaders
  • Asset import for common geometry and texture formats
  • Desktop scene editor application with json scene serialization
  • OpenVR integration

Architecture

Polymer is designed as a collection of static libraries. lib-polymer is a base library consisting of common data structures and algorithms familiar to game developers. lib-engine depends on lib-polymer and introduces an entity-component system alongside a physically-based rendering pipeline. lib-engine also offers a runtime asset management solution. Lastly, lib-model-io contains code to import, export, and optimize common geometry formats (presently obj, ply, and fbx).

In the future, rendering code will move to lib-graphics with an abstract render-hardware-interface capable of targeting multiple graphics backends such as Metal and Vulkan.

Building

Polymer requires a recent version of Windows 10 alongside a graphics driver capable of supporting an OpenGL 4.5 context. This repository hosts maintained project files for Visual Studio 2017. Most dependencies are included in source form without the use of submodules.

Prerequisites

Windows SDK is required to build the project. You may download it here

Use of the FBX 2017 SDK is gated by an environment variable (SYSTEM_HAS_FBX_SDK which should be set to evaluate to an identical token, SYSTEM_HAS_FBX_SDK); the extracted FBX SDK itself must be located in polymer\lib-model-io\third-party\fbxsdk. You may download the FBX SDK from here

Building the projects

Open the solution file in Microsoft Visual Studio 2017 and build it.

Note: If the build fails with the message Windows SDK version 10.0.16299.0 not found and you have installed the Windows SDK correctly, you might need to change the Windows SDK version in each project properties and select the one you've installed.

Samples & Documentation

The API of Polymer is in flux. A growing number of sample projects have been assembled in the samples/ directory to demonstrate a variety of Polymer's libraries and features. Most projects depend on both lib-polymer and lib-engine although many do not use features in lib-engine beyond GLFW window creation and event handling. A small number of tests projects verify the correctness of critical internal systems, but also act as an interim reference for functions or objects lacking formal documentation.

Contributing

Polymer is in early-stages of development and welcomes both experienced and inexperienced open-source contributors. The GitHub issue queue is a good place to start in understanding the scope and priority of upcoming features. For larger pull requests and feature implementations, it is good practice confirm with the project maintainer(s) before embarking on the work.

License

Polymer is released under the BSD 3-clause license. As a framework/engine, Polymer incorporates ideas, code, and third-party libraries from a wide variety of sources. Licenses and attributions are fully documented in the COPYING file.

Citing

If you use Polymer in a project that leads to publication or a public demo, we appreciate a citation. The BibTex entry is:

@Polymer{Diakopoulos19,
  author = {Dimitri Diakopoulos],
  title  = {Polymer: A Prototyping Framework for Spatial Computing},
  year   = {2019},
  month  = {01},
  url    = {https://github.com/ddiakopoulos/polymer/},
  note   = {\url{https://github.com/ddiakopoulos/polymer/}}
}
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].