├── CONTRIBUTING.md ├── LICENSE └── README.md /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contribution Guidelines 2 | 3 | ## Adding a link to the list 4 | 5 | If you'd like to contribute a link or multiple links to this list, submit a pull request and it will be reviewed as soon as possible. 6 | 7 | Please try to keep with the style of the other list entries 8 | 9 | `[Site](URL) - Description` 10 | 11 | Feel free to leave an issue if you have any questions or concerns about the list you feel might warrant some discussion (removal of certain entries, new categories, etc). 12 | This includes the contribution guidelines themselves. 13 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Awesome WebXR Development [](https://awesome.re) 2 | 3 | 4 | ## Contents 5 | 6 | 7 | 8 | - [Engine / Framework](#engine--framework) 9 | - [General 3D Rendering Engine](#general-3d-rendering-engine) 10 | - [General 3D App Framework](#general-3d-app-framework) 11 | - [3D Game Engine](#3d-game-engine) 12 | - [Visual Editor](#visual-editor) 13 | - [State Management](#state-management) 14 | - [Utilities](#utilities) 15 | - [Interaction](#interaction) 16 | - [XR Interaction](#xr-interaction) 17 | - [Desktop Interaction](#desktop-interaction) 18 | - [Mobile Interaction](#mobile-interaction) 19 | - [2D GUI](#2d-gui) 20 | - [Layout](#layout) 21 | - [HTML Layout](#html-layout) 22 | - [Form](#form) 23 | - [Image & Text](#image--text) 24 | - [Animation](#animation) 25 | - [Skeleton Animation](#skeleton-animation) 26 | - [Visual Animation Editor](#visual-animation-editor) 27 | - [Particle System](#particle-system) 28 | - [Physics Engine](#physics-engine) 29 | - [Gameplay](#gameplay) 30 | - [Graphics](#graphics) 31 | - [Optimization](#optimization) 32 | - [Post Processing](#post-processing) 33 | - [Material / Shader](#material--shader) 34 | - [Visual Shader Editor](#visual-shader-editor) 35 | - [Assets](#assets) 36 | - [GLTF & KTX2](#gltf--ktx2) 37 | - [USD](#usd) 38 | - [Avatar](#avatar) 39 | - [Audio](#audio) 40 | - [Debug](#debug) 41 | - [Learning Resources](#learning-resources) 42 | - [WebXR](#webxr) 43 | - [Case Studies](#case-studies) 44 | - [Performance Optimization](#performance-optimization) 45 | - [3D Engine / Framework](#3d-engine--framework) 46 | - [Graphics API, Computer Graphics](#graphics-api-computer-graphics) 47 | - [Game](#game) 48 | 49 | 50 | 51 | ## Engine / Framework 52 | 53 | ### General 3D Rendering Engine 54 | 55 | - [Three.js](https://threejs.org/) ![][threejs-badge] - An easy to use, lightweight, cross-browser, general purpose 3D library. The current builds only include a WebGL renderer but WebGPU (experimental), SVG and CSS3D renderers are also available as addons 56 | - [React Three Fiber (R3F)](https://docs.pmnd.rs/react-three-fiber/) ![][threejs-badge] ![][r3f-badge] - A React renderer for three.js. Build your scene declaratively with re-usable, self-contained components that react to state, are readily interactive and can participate in React's ecosystem 57 | - [Use.GPU](https://usegpu.live/) ![][webgpu-badge] - A set of declarative, reactive WebGPU legos. A stand-alone Typescript+Rust/WASM library with its own React-like run-time 58 | - [Simple-GPU](https://github.com/stackgpu/Simple-GPU) ![][webgpu-badge] - Functional WebGPU. Replaces the WebGPU API with two fundamental abstractions, resources and commands 59 | 60 | Three.js Boilerplates: 61 | 62 | - [threejs-template-simple](https://github.com/brunosimon/threejs-template-simple) ![][threejs-badge] 63 | - [threejs-andy-boilerplate](https://github.com/ektogamat/threejs-andy-boilerplate) ![][threejs-badge] - Very simple threejs boilerplate in VanillaJS to start your projects. There is only a basic scene, a load model method and a simple webpack 64 | 65 | Three.js + Vite Boilerplates: 66 | 67 | - [threejs-template-complex](https://github.com/brunosimon/threejs-template-complex) ![][threejs-badge] 68 | 69 | ### General 3D App Framework 70 | 71 | - [React Three](https://docs.pmnd.rs/) ![][threejs-badge] ![][r3f-badge] - A vibrant and extensive eco system around three-fiber, full of libraries, helpers and abstractions 72 | - [Babylon.js](https://www.babylonjs.com/) ![][babylon-badge] ![][webgpu-badge] - A powerful, beautiful, simple, and open game and rendering engine packed into a friendly JavaScript framework 73 | - [A-Frame](https://aframe.io/) ![][threejs-badge] ![][aframe-badge] - A web framework for building 3D/AR/VR experiences. Make 3D worlds with HTML and Entity-Component On any headset, mobile and desktop 74 | - [ion Engine](https://ion-3d-engine.io/) ![][threejs-badge] - A Javascript library for building 3D websites and virtual reality experiences. Supports creating interactive user interfaces for WebGL and WebXR projects using HTML/CSS/JS 75 | - [Elixr](https://elixrjs.io/) ![][threejs-badge] - A lightweight and flexible framework for building WebXR experiences. Built on top of three.js, Rapier physics engine and [ECSY](https://ecsyjs.github.io/ecsy/) 76 | 77 | React Three + Next.js Boilerplates: 78 | 79 | - [React Three Next](https://github.com/pmndrs/react-three-next) ![][r3f-badge] - A minimalist starter for Next.js, React Three Fiber and Three.js (and Tailwind and Styled-components) 80 | 81 | React Three Boilerplates: 82 | 83 | - [create-r3f-app](https://github.com/utsuboco/create-r3f-app) ![][r3f-badge] 84 | - [r3f-project-boilerplate](https://github.com/Ctrlmonster/r3f-project-boilerplate) ![][r3f-badge] - a simple boilerplate project for react three fiber projects with Typescript, TailwindCSS and Vite 85 | 86 | A-Frame Boilerplates: 87 | 88 | - [xr-starter-kit](https://github.com/AdaRoseCannon/aframe-xr-boilerplate) ![][aframe-badge] 89 | 90 | ### 3D Game Engine 91 | 92 | - [PlayCanvas](https://playcanvas.com/) ![][webgpu-badge] - The web-first game engine. A visual development platform for interactive web content 93 | - [Wonderland Engine](https://wonderlandengine.com/) ![][wasm-badge] - Development Platform 94 | for VR & AR Web Apps 95 | - [Ethereal Engine](https://www.etherealengine.com/) ![][threejs-badge] - Metaverse infrastructure for everyone. Everything you need to build and deploy scalable realtime 3D social apps and more 96 | - [Phy](https://github.com/lo-th/phy) ![][threejs-badge] - Phy simplify creation of game, is like a bridge between three.js and physics. Phy support last version of Oimo and Ammo. Now full support of two best engine Physx and Havok 97 | - [Lattice](https://github.com/unavi-xyz/lattice) - A lightweight, modular, and extendable 3D game engine built for the web. The engine is also highly performant, with speed gains from the ECS architecture and multi-threading via WebWorkers that would be difficult to achieve when using these libraries individually 98 | 99 | ### Visual Editor 100 | 101 | - [Polygon.js](https://polygonjs.com/) ![][threejs-badge] ![][r3f-badge] - Node-Based Design & Animation Tool for the Web 102 | - [Rogue Engine](https://rogueengine.io/) ![][threejs-badge] - A Unity3D-like environment to create WebXR enabled apps and games for the browser with three.js 103 | - [Needle Engine](https://needle.tools/) ![][threejs-badge] ![][unity-badge] - Needle Engine is a web-based runtime for 3D apps. Needle Exporter for Unity bridges the Unity Editor and the web runtime. Together, they enable incredible iteration speeds and help you to bring your content to the web 104 | - [Triplex](https://triplex.dev/) ![][r3f-badge] - Visually edit React Three Fiber components where code is source of truth 105 | - [react-three-editor](https://github.com/pmndrs/react-three-editor) ![][r3f-badge] - A one of a kind scene editor that writes changes back into your code, and you don't need to change your code at all for it to to work! 106 | - [Babylon.js Editor](https://editor.babylonjs.com/) ![][babylon-badge] - Provide community-driven powerful and simple tools that help Babylon.JS users to create beautiful, awesome 3D games / applications 107 | - [Theatre.js](https://www.theatrejs.com/) ![][threejs-badge] ![][r3f-badge] - Most of its users are using it as a visual editor now, than an animation editor 108 | - [Threed Studio](https://threed.world/) ![][threejs-badge] - A 3D animation editor with a set of design, lighting and motion tools. It helps you create any 3D scene, from a simple product presentation to a complete game made with Three.js 109 | 110 | ## State Management 111 | 112 | - [bitECS](https://github.com/NateTheGreatt/bitECS) - Functional, minimal, data-oriented, ultra-high performance ECS library written using JavaScript TypedArrays 113 | - [Miniplex](https://github.com/hmans/miniplex) - A developer-friendly entity management system for games and similarly demanding applications, based on ECS architecture 114 | - [Becsy](https://lastolivegames.github.io/becsy/) - Multi-threaded ECS for TypeScript and JavaScript 115 | - [XState](https://xstate.js.org/) - JavaScript and TypeScript finite state machines and statecharts for the modern web 116 | - [Zustand](https://github.com/pmndrs/zustand) ![][r3f-badge] - A small, fast and scalable bearbones state-management solution using simplified flux principles. Has a comfy API based on hooks, isn't boilerplatey or opinionated 117 | - [Jotai](https://github.com/pmndrs/jotai) ![][r3f-badge] - Primitive and flexible state management for React. Scales from a simple useState replacement to an enterprise TypeScript application 118 | - [Valtio](https://github.com/pmndrs/valtio) ![][r3f-badge] - Makes proxy-state simple for React and Vanilla 119 | 120 | ## Utilities 121 | 122 | - [three-stdlib](https://github.com/pmndrs/three-stdlib) ![][r3f-badge] - Stand-alone version of threejs/examples/jsm written in Typescript & built for ESM & CJS. Designed to run without transpilation in node & browser 123 | - [Drei](https://github.com/pmndrs/drei) ![][r3f-badge] - A growing collection of useful helpers and fully functional, ready-made abstractions for @react-three/fiber 124 | 125 | ## Interaction 126 | 127 | ### XR Interaction 128 | 129 | - [@coconut-xr/natuerlich](https://github.com/coconut-xr/natuerlich) ![][r3f-badge] - WebXR Interaction library. Deliver composable and extensible interactions for immersive experiences 130 | - [@react-three/xr](https://github.com/pmndrs/react-xr) ![][r3f-badge] - React components and hooks for creating VR/AR applications with @react-three/fiber 131 | - [Reality Accelerator Toolkit (RATK)](https://github.com/meta-quest/reality-accelerator-toolkit) ![][threejs-badge] - A WebXR utilities library designed to simplify the integration of Mixed Reality features in WebXR apps. It is currently compatible with the three.js 3D library and aims to bridge the gap between low-level WebXR APIs and higher-level APIs provided by three.js 132 | - [XRKeys](https://github.com/felixtrz/xrkeys) ![][threejs-badge] - A highly performant and plug-and-play WebXR keyboard library for Three.js applications 133 | - [Handy.js](https://stewartsmith.io/handy/) - Makes defining and recognizing custom hand poses in WebXR a snap 134 | 135 | ### Desktop Interaction 136 | 137 | - [Drei](https://github.com/pmndrs/drei) - [KeyboardControls](https://github.com/pmndrs/drei#keyboardcontrols) ![][r3f-badge] - A rudimentary keyboard controller which distributes your defined data-model to the useKeyboard hook. It's a rather simple way to get started with keyboard input 138 | - [Drei](https://github.com/pmndrs/drei) - [PointerLockControls](https://github.com/pmndrs/drei#controls) ![][r3f-badge] 139 | - [Floating Capsule Character Controller](https://github.com/ErdongChen-Andrew/CharacterControl) ![][r3f-badge] - Rigibody control 140 | 141 | ### Mobile Interaction 142 | 143 | - [NippleJS](https://www.npmjs.com/package/nipplejs) - A vanilla virtual joystick for touch capable interfaces 144 | - [MeshWalk.js](https://github.com/yomotsu/meshwalk) ![][threejs-badge] - A JS library which helps your TPS game development with three.js 145 | 146 | ## 2D GUI 147 | 148 | ### Layout 149 | 150 | - [three-mesh-ui](https://felixmariotto.github.io/three-mesh-ui/) ![][threejs-badge] - A small library for building VR user interfaces. The objects it creates are three.object3Ds, usable directly in a three.js scene like any other Object3D. It is not a framework, but a minimalist library 151 | - [@coconut-xr/koestlich](https://coconut-xr.github.io/koestlich) ![][r3f-badge] - Builds on yoga (flexbox implementation), Three.js to deliver compatible and performant 3D UIs with out-of-the-box animations 152 | - [@react-three/flex](https://github.com/pmndrs/react-three-flex) ![][r3f-badge] - Brings the webs flexbox spec to react-three-fiber. It is based on Yoga, Facebook's open source layout engine for react-native 153 | 154 | ### HTML Layout 155 | - [@etherealengine/xrui](https://github.com/EtherealEngine/etherealengine/tree/dev/packages/xrui) ![][threejs-badge] - XRUI provides functionlity for using DOM elements to construct a user interface for XR applications 156 | - [Satori](https://github.com/vercel/satori) - Enlightened library to convert HTML and CSS to SVG 157 | - [html2canvas](https://html2canvas.hertzen.com/) - JavaScript HTML renderer. Allows you to take "screenshots" of webpages or parts of it, directly on the users browser 158 | - [HTMLMesh](https://github.com/mrdoob/three.js/blob/dev/examples/jsm/interactive/HTMLMesh.js) ![][threejs-badge] - [demo](https://threejs.org/examples/webxr_vr_sandbox.html) 159 | 160 | ### Form 161 | 162 | - [r3f-form](https://github.com/JMBeresford/r3f-form) ![][r3f-badge] - A webGL form component for use with React Three Fiber. Ultimately, the goal is to have fully functioning HTML `