All Projects → mmha → Gltfpp

mmha / Gltfpp

Licence: bsl-1.0
glTF 2.0 loader for C++14

Programming Languages

cpp
1120 projects
cxx
24 projects

Projects that are alternatives of or similar to Gltfpp

Magnum
Lightweight and modular C++11 graphics middleware for games and data visualization
Stars: ✭ 3,728 (+16845.45%)
Mutual labels:  graphics, webgl, webassembly
Xeogl
A WebGL-based 3D engine for technical visualization. Not actively maintained.
Stars: ✭ 920 (+4081.82%)
Mutual labels:  graphics, webgl, gltf
Gltfast
glTF runtime loading library for Unity
Stars: ✭ 156 (+609.09%)
Mutual labels:  graphics, webgl, gltf
Spoke
Easily create custom 3D environments
Stars: ✭ 321 (+1359.09%)
Mutual labels:  webgl, gltf
Jessibuca
Jessibuca是一款开源的纯H5直播流播放器
Stars: ✭ 301 (+1268.18%)
Mutual labels:  webgl, webassembly
Cga.js
CGA 3D 计算几何算法库 | 3D Compute Geometry Algorithm Library webgl three.js babylon.js等任何库都可以使用
Stars: ✭ 313 (+1322.73%)
Mutual labels:  graphics, webgl
Sharpgltf
glTF reader and writer for .NET Standard
Stars: ✭ 159 (+622.73%)
Mutual labels:  graphics, gltf
Unrust
unrust - A pure rust based (webgl 2.0 / native) game engine
Stars: ✭ 341 (+1450%)
Mutual labels:  webgl, webassembly
3dtilesrendererjs
Renderer for 3D Tiles in Javascript using three.js
Stars: ✭ 333 (+1413.64%)
Mutual labels:  graphics, gltf
Beam
✨ Expressive WebGL
Stars: ✭ 383 (+1640.91%)
Mutual labels:  graphics, webgl
Icg Webgl
交互式计算机图形学——基于WebGL的自顶向下方法(第七版)的例子与练习题
Stars: ✭ 458 (+1981.82%)
Mutual labels:  graphics, webgl
Glas
WebGL in WebAssembly with AssemblyScript
Stars: ✭ 278 (+1163.64%)
Mutual labels:  webgl, webassembly
Ofelia
A real-time cross-platform creative coding tool for multimedia development
Stars: ✭ 269 (+1122.73%)
Mutual labels:  graphics, webgl
Xeokit Sdk
Open source JavaScript SDK for viewing high-detail, full-precision 3D BIM and AEC models in the Web browser.
Stars: ✭ 316 (+1336.36%)
Mutual labels:  webgl, gltf
Raindrop Fx
An optimised raindrop effect on glass with WebGL2
Stars: ✭ 218 (+890.91%)
Mutual labels:  graphics, webgl
Lume
Create CSS3D/WebGL applications declaratively with HTML. Give regular DOM elements shadow and lighting.
Stars: ✭ 445 (+1922.73%)
Mutual labels:  graphics, webgl
Clay Viewer
3D model viewer with high quality rendering and glTF2.0/GLB export
Stars: ✭ 558 (+2436.36%)
Mutual labels:  webgl, gltf
Raylib
A simple and easy-to-use library to enjoy videogames programming
Stars: ✭ 8,169 (+37031.82%)
Mutual labels:  graphics, webassembly
Mesh.js
A graphics system born for visualization 😘.
Stars: ✭ 156 (+609.09%)
Mutual labels:  graphics, webgl
Vue Gl
Vue.js components rendering 3D WebGL graphics reactively with three.js
Stars: ✭ 434 (+1872.73%)
Mutual labels:  graphics, webgl

gltfpp

Build Status

gltfpp is a glTF 2.0 loader written in C++14 targeting desktop platforms and WebAssembly with a focus on ease of use, type safety and extensibility.

WORK IN PROGRESS! This library is not finished yet.

Requirements

  • gcc >= 6 or clang >= 3.6
  • CMake >= 3.2
  • Boost >= 1.61

Boost.Outcome, GSL, nlohmann/json, better-enums and Catch are included via git submodules.

Building

gltfpp is header only and therefore does not require a build step. Make sure you have all dependencies set up correctly if you only copy the directory.

Clang Modules

When using clang, modules can by enabled by passing -DGLTFPP_ENABLE_MODULES=1 to CMake. This should speed up the compilation, however this is experimental and has only been tested with clang 5.0 snapshots so far.

Targeting the Web

Install emscripten, then invoke CMake via emconfigure:

emconfigure cmake .. [-GNinja] [-DGLTFPP_WEBASSEMBLY=1] # Default is wasm instead of asm.js

Compiling to WebAssembly requires binaryen. Note that this library does not export anything, so you can't use it in the browser yet. By passing the flag -DGLTFPP_AS_HTML=1, emscripten generates a html page with a terminal emulator for each executable (read: the unit test runner).

Running the tests

Run them in your browser (requires WebAssembly support)

mkdir build && cd build
cmake .. -DGLTFPP_BUILD_TESTS=1 [-GNinja]
make gltfpp_test # Or ninja
ctest .

Fuzzing

To run the fuzzer, build the fuzz target and execute it via test/fuzz. There is no meaningful dictionary for efficient fuzzing yet.

Finished tasks

  • Parsing infrastructure (trivial properties can be parsed simply by declaring their fields)
  • Finished properties: Asset, Buffer (only data uris), BufferView
  • Build system support for Emscripten

TODO

  • deserialization of external buffer data (GLB)
  • Networking (HTTP on desktop, XHR on WebAssembly), asynchronous loading
  • Proper documentation
  • out of tree extensions?
  • a small viewer based on the loader
  • Export functions to the web browser
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].