yocto-gl - Yocto/GL: Tiny C++ Libraries for Data-Driven Physically-based Graphics

  •        111

Yocto/GL is a collection of small C++17 libraries for building physically-based graphics algorithms released under the MIT license. Yocto/GL is written in a deliberatly data-oriented style for ease of development and use. Yocto/GL is split into two small libraries to make code navigation easier. See each header file for documentation. Here are some test images rendered with the path tracer. More images are included in the project site.




Related Projects

rpt - A physically-based path tracer

  •    Rust

This is a physically based, CPU-only rendering engine written in Rust. It uses path tracing to generate realistic images of 3D scenes. Here's a simple scene that demonstrates the basics of the API.

tinyrenderer - A brief computer graphics / rendering course

  •    C++

Check the wiki for the detailed lessons. My source code is irrelevant. Read the wiki and implement your own renderer. Only when you suffer through all the tiny details you will learn what is going on. I do want to get emails for feedback (dmitry.sokolov@univ-lorraine.fr); do not hesitate to contact me if you have any questions.

pyrender - Easy-to-use glTF 2.0-compliant OpenGL renderer for visualization of 3D scenes.

  •    Python

Pyrender is a pure Python (2.7, 3.4, 3.5, 3.6) library for physically-based rendering and visualization. It is designed to meet the glTF 2.0 specification from Khronos. Pyrender is lightweight, easy to install, and simple to use. It comes packaged with both an intuitive scene viewer and a headache-free offscreen renderer with support for GPU-accelerated rendering on headless servers, which makes it perfect for machine learning applications.

tray_rust - A toy ray tracer in Rust

  •    Rust

tray_rust is a toy physically based ray tracer built off of the techniques discussed in Physically Based Rendering. It began life as a port of tray to Rust to check out the language but has surpassed it in a few ways. The renderer is currently capable of path tracing, supports triangle meshes (MTL support coming soon), and various physically based material models (including measured data from the MERL BRDF Database). tray_rust also supports rigid body animation along B-spline paths and distributed rendering. Currently requires nightly Rust for placement new. Running and passing --help or -h will print out options you can pass to the renderer which are documented in the help. For the more complicated use cases I hope to do some write ups and guides on how to use them (e.g. distributed rendering, animation) but this may take a while. I strongly recommend running the release build as the debug version will be very slow.

lyon - 2D graphics rendering experiments in rust.

  •    Rust

A path tessellation library written in rust for GPU-based 2D graphics rendering. For now the goal is to provide efficient SVG-compliant path tessellation tools to help with rendering vector graphics on the GPU. For now think of this library as a way to turn complex paths into triangles for use in your own rendering engine.

Cesium - An open-source JavaScript library for world-class 3D globes and maps

  •    Javascript

CesiumJS is a JavaScript library for creating 3D globes and 2D maps in a web browser without a plugin. It uses WebGL for hardware-accelerated graphics, and is cross-platform, cross-browser, and tuned for dynamic-data visualization.

filament - Filament is a real-time physically based rendering engine for Android, Windows, Linux and macOS

  •    C++

Filament is a real-time physically based rendering engine for Android, Linux, macOS and Windows. This rendering engine was designed to be as small as possible and as efficient as possible on Android. Filament is currently used in the Sceneform library both at runtime on Android devices and as the renderer inside the Android Studio plugin.

vtk-js - Visualization Toolkit for the Web

  •    Javascript

VTK is an open-source software system for image processing, 3D graphics, volume rendering and visualization. VTK includes many advanced algorithms (e.g., surface reconstruction, implicit modelling, decimation) and rendering techniques (e.g., hardware-accelerated volume rendering, LOD control). The JavaScript implementation remain a subset of the actual C++ library but efforts will be made to easily port or compile native VTK code into WebAssembly to better blend both world. The origin of VTK is with the textbook "The Visualization Toolkit, an Object-Oriented Approach to 3D Graphics" originally published by Prentice Hall and now published by Kitware, Inc. (Third Edition ISBN 1-930934-07-6). VTK has grown (since its initial release in 1994) to a world-wide user base in the commercial, academic, and research communities.

glTF-WebGL-PBR - Physically-Based Rendering in glTF 2.0 using WebGL

  •    Javascript

This is a raw WebGL demo application for the introduction of physically-based materials to the core glTF 2.0 spec. This project is meant to be a barebones reference for developers looking to explore the widespread and robust capabilities of these materials within a WebGL project that isn't tied to any external graphics libraries. For a DirectX sample please head over to this repo instead. If you would like to see this in action, view the live demo.

datoviz - ⚡ High-performance GPU interactive scientific data visualization with Vulkan

  •    C

Datoviz is an open-source high-performance interactive scientific data visualization library leveraging the graphics processing unit (GPU) for speed, visual quality, and scalability. It supports both 2D and 3D rendering, as well as minimal graphical user interfaces (using the Dear ImGUI library). Written in C, Datoviz has been designed from the ground up for performance. It provides native Python bindings (based on Cython). Bindings to other languages could be developed thanks to community efforts (Julia, R, MATLAB, Rust, C#, and so on). Datoviz uses the Vulkan graphics API created by the Khronos consortium, successor of OpenGL. Supporting other modern graphics API, such as WebGPU, would constitute interesting developments.

herebedragons - A basic 3D scene implemented with various engines, frameworks or APIs.

  •    C

Hic sunt dracones. This repository contains multiple implementations of the same 3D scene, using different APIs and frameworks on various platforms. The goal is to provide a comparison between multiple rendering methods. This is inherently biased due to the variety of algorithms used and available CPU/GPU configurations, but can hopefully still provide interesting insights on 3D rendering.

DiligentEngine - Master repository for Diligent Engine project

  •    C++

Diligent Engine is a lightweight cross-platform abstraction layer between the application and the platform-specific graphics API designed to take advantages of next-generation APIs such as Direct3D12 and Vulkan, while providing support for older platforms via Direct3D11, OpenGL and OpenGLES. Diligent Engine exposes common front-end for all supported platforms and provides interoperability with underlying native API. Shader source code converter allows HLSL shaders to be used on all supported platforms and rendering backends. The engine is intended to be used as a graphics subsystem in a game engine or any other 3D application, and supports integration with Unity. Diligent Engine is distributed under Apache 2.0 license and is free to use. Alternatively, you can get master repository fisrt, and then individually clone all submodules into the engine's root folder.

Open3D - Open3D: A Modern Library for 3D Data Processing

  •    C++

Open3D is an open-source library that supports rapid development of software that deals with 3D data. The Open3D frontend exposes a set of carefully selected data structures and algorithms in both C++ and Python. The backend is highly optimized and is set up for parallelization. We welcome contributions from the open-source community. For more, please visit the Open3D documentation.

awesome-webgl - A curated list of awesome WebGL libraries, resources and much more


This is a curated list of awesome WebGL libraries, resources and much more. WebGL (Web Graphics Library) is a JavaScript API for rendering interactive 3D computer graphics and 2D graphics within any compatible web browser without the use of plug-ins. WebGL is integrated completely into all the web standards of the browser allowing GPU accelerated usage of physics and image processing and effects as part of the web page canvas.

graphics-workshop - Learn computer graphics by writing GPU shaders!

  •    GLSL

This repo contains a selection of projects designed to help you learn the basics of computer graphics. We'll be writing shaders to render interactive two-dimensional and three-dimensional scenes. This workshop covers fragment shaders (GLSL), procedural texture generation, rasterization, lighting calculations, and real-time ray tracing.

gg - Go Graphics - 2D rendering in Go with a simple API.

  •    Go

gg is a library for rendering 2D graphics in pure Go.There are lots of examples included. They're mostly for testing the code, but they're good for learning, too.

bgfx - Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library

  •    C++

Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library. http://airmech.com/ AirMech is a free-to-play futuristic action real-time strategy video game developed and published by Carbon Games.

tungsten - High performance physically based renderer in C++11

  •    C++

Tungsten is a physically based renderer originally written for the yearly renderer competition at ETH. It simulates full light transport through arbitrary geometry based on unbiased integration of the rendering equation. To do this, Tungsten supports various light transport algorithms such as bidirectional path tracing, progressive photon mapping, primary sample space metropolis light transport and more. Tungsten is written in C++11 and makes use of Intel's high-performance geometry intersection library embree. Tungsten takes full advantage of multicore systems and tries to offer good performance through frequent benchmarking and optimization. At least SSE3 support is required to run the renderer.

Easy3D - A lightweight, easy-to-use, and efficient C++ library for processing and rendering 3D data

  •    C++

Efficient data structures for representing and managing 3D models such as point clouds, polygonal surfaces (e.g., triangle meshes), polyhedral volumes (e.g., tetrahedral meshes), and graphs. Easy to add/access arbitrary types of per-element properties. Non-manifoldness is automatically resolved when loading models from files ... A set of widely used algorithms, e.g., point cloud normal estimation/re-orientation, Poisson surface reconstruction, RANSAC, mesh simplification, subdivision, smoothing, parameterization, remeshing, and more (the implementation of several surface mesh processing algorithms were taken from PMP).

We have large collection of open source products. Follow the tags from Tag Cloud >>

Open source products are scattered around the web. Please provide information about the open source projects you own / you use. Add Projects.