All Projects → hoverinc → Ray Tracing Renderer

hoverinc / Ray Tracing Renderer

Licence: mit
[UNMAINTAINED] Real-time path tracing on the web with three.js

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Ray Tracing Renderer

Sunset Cyberspace
🎮👾Retro-runner Game made in Expo, Three.js, OpenGL, WebGL, Tween. 🕹
Stars: ✭ 54 (-87.84%)
Mutual labels:  webgl, threejs, webgl2
Detect Gpu
Classifies GPUs based on their 3D rendering benchmark score allowing the developer to provide sensible default settings for graphically intensive applications.
Stars: ✭ 460 (+3.6%)
Mutual labels:  webgl, threejs, webgl2
webrays
WebRays - Ray Tracing on the Web
Stars: ✭ 38 (-91.44%)
Mutual labels:  webgl, webgl2, ray-tracing
Jeelizweboji
JavaScript/WebGL real-time face tracking and expression detection library. Build your own emoticons animated in real time in the browser! SVG and THREE.js integration demos are provided.
Stars: ✭ 835 (+88.06%)
Mutual labels:  webgl, threejs, real-time
Threejs Starter
Stars: ✭ 89 (-79.95%)
Mutual labels:  webgl, threejs, webgl2
Sketch
Explorations on cross-hatching, engraving, and similar non-photorealistic rendering.
Stars: ✭ 136 (-69.37%)
Mutual labels:  webgl, threejs, webgl2
3dio Js
JavaScript toolkit for interior apps
Stars: ✭ 255 (-42.57%)
Mutual labels:  webgl, threejs, real-time
Indoor3d
a js lib based on three.js to show 3D indoor map
Stars: ✭ 425 (-4.28%)
Mutual labels:  webgl, threejs
React Postprocessing
📬 postprocessing for react-three-fiber
Stars: ✭ 311 (-29.95%)
Mutual labels:  webgl, threejs
Spoke
Easily create custom 3D environments
Stars: ✭ 321 (-27.7%)
Mutual labels:  webgl, threejs
Three.phenomenon
⭐️ A tiny wrapper around three.js built for high-performance WebGL experiences.
Stars: ✭ 338 (-23.87%)
Mutual labels:  webgl, threejs
Cga.js
CGA 3D 计算几何算法库 | 3D Compute Geometry Algorithm Library webgl three.js babylon.js等任何库都可以使用
Stars: ✭ 313 (-29.5%)
Mutual labels:  webgl, threejs
Moonrider
🌕🏄🏿 Surf the musical road among the stars. Side project built by two people in a few months to demonstrate WebXR.
Stars: ✭ 292 (-34.23%)
Mutual labels:  webgl, threejs
Map33.js
A JavaScript library to make 3D maps with three.js.
Stars: ✭ 317 (-28.6%)
Mutual labels:  webgl, threejs
Glmaps
Data visualization examples and tutorials from scratch. 数据可视化示例代码集与新手学习教程。
Stars: ✭ 288 (-35.14%)
Mutual labels:  webgl, threejs
Three Elements
Web Components-powered custom HTML elements for building Three.js-powered games and interactive experiences. 🎉
Stars: ✭ 331 (-25.45%)
Mutual labels:  webgl, threejs
Glas
WebGL in WebAssembly with AssemblyScript
Stars: ✭ 278 (-37.39%)
Mutual labels:  webgl, threejs
Melonjs
a fresh & lightweight javascript game engine
Stars: ✭ 3,721 (+738.06%)
Mutual labels:  webgl, webgl2
Vue Gl
Vue.js components rendering 3D WebGL graphics reactively with three.js
Stars: ✭ 434 (-2.25%)
Mutual labels:  webgl, threejs
Infinitetubes
A tunnel experiment in WebGL inspired by the effect seen on http://www.fornasetti.com/](Fornasetti.
Stars: ✭ 348 (-21.62%)
Mutual labels:  webgl, threejs

Ray Tracing Renderer

A Three.js renderer which utilizes path tracing to render a scene with true photorealism. The renderer supports global illumination, reflections, soft shadows, and realistic environment lighting.

Demo | User Guide | API Reference | Contributing

Usage

RayTracingRenderer is the early alpha stage of development. Features are incomplete and subject to change, and the renderer is unstable on certain hardware.

Download

Or if you use npm, run npm install ray-tracing-renderer

Ray Tracing Renderer relies on WebGL2, and any browser supporting WebGL2 also supports ES6. Thus, you should only use the ES5 build if the renderer inside your appliaction is optional, and your application must support older browsers.

Installation

As an HTML script

Ray Tracing Renderer requires Three.js, so make sure it is included in your html first. Then include,

<script src="RayTracingRenderer.js"></script>

You can then use the renderer in your app.

const renderer = new THREE.RayTracingRenderer();

As a module

If you installed via npm, simply import the renderer as follows.

import { RayTracingRenderer } from 'ray-tracing-renderer'

Or if you downloaded the renderer as a file,

import { RayTracingRenderer } from './RayTracingRenderer.js'

The renderer can then be used in your app.

const renderer = new RayTracingRenderer();

Introduction

Ray Tracing Renderer serves as a drop-in replacement to Three.js's WebGLRenderer. By simply swapping renderers, you can get instant photorealistic lighting.

(Click to run example)

Ray Tracing Renderer runs on WebGL2, and does so by implementing a path tracing algorithm inside a shader. It supports arbitrary Three.js scenes, with some restrictions.

Features

  • Global illumination. Surfaces are illuminated with light reflected from every surface, not just manually placed light sources. This results in natural looking renders with realistic light bouncing and propagation.
  • Soft Shadows. Shadows are computed automatically without the need to configure shadow properties on Three.js's light sources. The resulting shadows are soft and true-to-life without any visual artifacts.
  • Reflections. Shiny and metallic surfaces reflect their surroundings, greatly attributing to realism.
  • Environment lighting. A new light type has been added which dynamically illuminates a scene entirely from an HDR environment map! Manually placed light sources are a thing of the past.

Limitations

  • Progressive rendering. Path tracing is a progressive method. This means that the more computation time that is spent on rendering, the better the resulting image looks. In order to render a high quality image, the camera must stay still for several seconds, as the render gradually improves. This is in stark contract to WebGLRenderer's method which is able to render a full quality image in one frame.
  • Static geometry. A BVH acceleration structure is computed for the scene to speed up ray intersections. This computation can take several seconds when first initializing the renderer, and it must be recomputed whenever scene geometry moves or changes. Therefore only camera movement is supported in real-time.

For a more detailed guide on how to use the renderer, please read the User Guide .

Contributing

We want to increase test coverage and maintanability of the repo. If you would like to contribute, take a look at the following and submit Pull Requests:

Take a look to this page with more details about submitting changes to the project.

Expectations

This repository started as a side-project and the time we invest on it is limited. It may take us a few days to get back to you but please bring your ideas forward. We'll do our best to respond promptly.

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