# mrdoob/three.js

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/mrdoob-three-js).**

113,086 stars · 36,378 forks · JavaScript · MIT

## Links

- GitHub: https://github.com/mrdoob/three.js
- Homepage: https://threejs.org/
- awesome-repositories: https://awesome-repositories.com/repository/mrdoob-three-js.md

## Topics

`3d` `augmented-reality` `canvas` `html5` `javascript` `svg` `virtual-reality` `webaudio` `webgl` `webgl2` `webgpu` `webxr`

## Description

This project is a high-level 3D graphics engine designed to render complex, hardware-accelerated environments within web browsers. It provides a comprehensive abstraction layer that manages scene graphs, cameras, and lighting, mapping high-level scene definitions onto low-level graphics APIs. By decoupling these definitions from specific hardware targets, the engine ensures consistent performance across diverse browsers and devices.

The framework distinguishes itself through a robust architecture that includes a unified math library for high-frequency spatial calculations and a physically based material system that simulates real-world light interaction. It supports advanced visual fidelity through a multi-pass post-processing pipeline and a node-based shader composition system, allowing for complex surface appearances and full-screen effects. Developers can manage intricate object hierarchies and skeletal animations, including inverse kinematics, to create dynamic and lifelike interactive content.

Beyond core rendering, the engine provides extensive tools for geometry construction, procedural modeling, and immersive virtual reality development. It includes performance-oriented features such as GPU-accelerated geometry instancing and general-purpose GPU computation to handle large object counts and complex data processing. The system also facilitates asset portability through standard export formats and provides integrated handlers for user interaction and camera navigation.

## Tags

### Graphics & Multimedia

- [3D Rendering Engines](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/scene-management-systems/3d-rendering-engines.md) — Translates high-level scene definitions into low-level hardware instructions to enable real-time 3D graphical calculations and display.
- [Material Systems](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/systems/3d-graphics-pipelines/material-systems.md) — Defines surface appearance and physical characteristics by applying material properties to 3D meshes. ([source](https://threejs.org/docs/llms.txt#three-js))
- [Scene Renderers](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/systems/3d-graphics-pipelines/scene-renderers.md) — Leverages high-performance graphics backends to output complex three-dimensional scenes to a display. ([source](https://threejs.org/docs/llms.txt#three-js))
- [WebGPU Renderers](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/systems/3d-graphics-pipelines/webgpu-renderers.md) — Utilizes modern GPU-accelerated web APIs to deliver high-performance rendering for demanding 3D graphics. ([source](https://threejs.org/manual/))
- [Abstraction-Layer Rendering Backends](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/systems/abstraction-layer-rendering-backends.md) — Abstracts graphics API complexities to allow seamless switching between hardware backends like WebGL and WebGPU.
- [Browser-Based 3D Visualizations](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/scene-management-systems/3d-rendering-engines/browser-based-3d-visualizations.md) — Powers interactive, hardware-accelerated 3D visualizations that run efficiently across diverse web browser environments.
- [Interactive Scene Management Layers](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/scene-management-systems/interactive-scene-management-layers.md) — Coordinates object transformations, user input events, and animation states through a structured hierarchy for dynamic, interactive experiences.
- [Object Hierarchy Management](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/scene-management-systems/object-hierarchy-management.md) — Propagates spatial transformations through nested 3D objects to maintain organized and complex scene compositions. ([source](https://threejs.org/docs/llms.txt#three-js))
- [Scene Graphs](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/scene-management-systems/scene-graphs.md) — Structures 3D entities into hierarchical trees to manage spatial relationships and property inheritance.
- [Scene Initialization](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/scene-management-systems/scene-initialization.md) — Establishes rendering contexts, camera parameters, and hierarchical scene structures required to launch interactive 3D applications. ([source](https://threejs.org/manual/))
- [3D Math and Geometry Toolkits](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/3d-math-and-geometry-toolkits.md) — Includes a comprehensive suite of linear algebra utilities and geometric primitives for performing spatial calculations.
- [Physically Based Rendering Materials](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/materials-shading/physically-based-rendering-materials.md) — Simulates realistic light interaction and surface phenomena using physically based shading models.
- [Camera Interaction Controllers](https://awesome-repositories.com/f/graphics-multimedia/camera-systems/camera-interaction-controllers.md) — Maps mouse and touch input to orbit, fly, or drag behaviors for intuitive navigation through three-dimensional scenes. ([source](https://threejs.org/docs/))
- [Camera Perspective Configurations](https://awesome-repositories.com/f/graphics-multimedia/camera-systems/camera-perspective-configurations.md) — Configures orthographic and perspective projections to control how 3D scenes are mapped to a 2D view. ([source](https://threejs.org/docs/))
- [3D Lighting Models](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/lighting-systems/3d-lighting-models.md) — Simulates realistic lighting and shadows using ambient, directional, point, and spot light sources. ([source](https://threejs.org/docs/llms.txt#three-js))
- [Node-Based Shader Editors](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/materials-shading/node-based-shader-editors.md) — Constructs complex material behaviors and compute operations using a visual node-based graph system. ([source](https://threejs.org/docs/))
- [Spatial Transformation Handlers](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/coordinate-viewport-transformations/spatial-transformation-handlers.md) — Offers interactive gizmos and control schemes for precise positioning, rotation, and scaling of objects within a scene. ([source](https://threejs.org/docs/llms.txt#three-js))
- [Post-Processing Effects](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/post-processing-effects.md) — Applies full-screen visual filters like bloom, depth-of-field, and color grading to enhance the atmosphere of rendered frames. ([source](https://threejs.org/docs/))
- [Keyframe Animation Mixers](https://awesome-repositories.com/f/graphics-multimedia/media-production-suites/animation-tools/keyframe-skeletal-systems/keyframe-animation-mixers.md) — Interpolates property values over time to drive smooth skeletal motion and object transformations.
- [Keyframe Animations](https://awesome-repositories.com/f/graphics-multimedia/media-production-suites/animation-tools/keyframe-skeletal-systems/keyframe-animations.md) — Calculates smooth motion by interpolating property values across defined keyframe tracks for complex animation sequences. ([source](https://threejs.org/docs/))
- [Skeletal Animation Systems](https://awesome-repositories.com/f/graphics-multimedia/media-production-suites/animation-tools/keyframe-skeletal-systems/skeletal-animation-systems.md) — Enables complex skeletal movement through inverse kinematics solvers and procedural motion sequences. ([source](https://threejs.org/docs/))
- [Custom Material Definitions](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/materials-shading/custom-material-definitions.md) — Exposes flexible material properties and shader parameters to achieve specialized visual requirements like transparency, light interaction, and surface textures. ([source](https://threejs.org/docs/))
- [Custom Shader Programs](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/materials-shading/custom-shader-programs.md) — Compiles custom shading logic into optimized GPU-executable code for advanced visual effects and surface rendering. ([source](https://threejs.org/docs/llms.txt#three-js))
- [Geometry Instancing](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/systems/3d-graphics-pipelines/geometry-instancing.md) — Optimizes performance by rendering thousands of identical objects in a single draw call using unique transformation data.
- [WebXR Integrations](https://awesome-repositories.com/f/graphics-multimedia/immersive-interactive-systems/immersive-computing/webxr-integrations.md) — Integrates spatial tracking and controller input to power immersive virtual and augmented reality experiences directly in the browser.
- [Geometry Primitives](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/3d-math-and-geometry-toolkits/geometry-primitives.md) — Generates standard 3D shapes, extruded paths, and custom vertex data to populate scenes with foundational geometry. ([source](https://threejs.org/docs/))
- [Multi-Pass Rendering Pipelines](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/post-processing-pipelines/multi-pass-rendering-pipelines.md) — Chains sequential rendering operations to execute multi-pass visual effects and image processing before final frame composition.
- [Shader Transpilation Tools](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/graphics-apis-bindings/shader-transpilation-tools.md) — Converts shading code between different graphics languages to ensure consistent visual output across various hardware backends. ([source](https://threejs.org/docs/))

### Scientific & Mathematical Computing

- [Unified Math Libraries](https://awesome-repositories.com/f/scientific-mathematical-computing/numerical-mathematical-foundations/mathematical-libraries-and-utilities/mathematical-libraries/unified-math-libraries.md) — Supplies consistent geometric primitives and linear algebra operations optimized for high-frequency spatial computing.

### Artificial Intelligence & ML

- [Rendering](https://awesome-repositories.com/f/artificial-intelligence-ml/machine-learning/infrastructure/model-optimization-and-inference/performance-optimizations/rendering.md) — Improves rendering efficiency for large object counts through techniques like instancing and batching. ([source](https://threejs.org/manual/))

### Repository Format

- [Awesome List](https://awesome-repositories.com/f/repository-format/awesome-list.md) — A community-curated directory that catalogs and links out to other open-source projects, rather than a standalone tool you run yourself.

### Part of an Awesome List

- [Animation Libraries](https://awesome-repositories.com/f/awesome-lists/devtools/animation-libraries.md) — 3D graphics library for WebGL rendering.
- [Game Engines](https://awesome-repositories.com/f/awesome-lists/devtools/game-engines.md) — Comprehensive 3D graphics library for the web.
- [Game Engines and Frameworks](https://awesome-repositories.com/f/awesome-lists/devtools/game-engines-and-frameworks.md) — JavaScript library for 3D browser games.
- [Graphics and Rendering](https://awesome-repositories.com/f/awesome-lists/devtools/graphics-and-rendering.md) — General-purpose 3D library.
- [Web Graphics Libraries](https://awesome-repositories.com/f/awesome-lists/devtools/web-graphics-libraries.md) — Standard JavaScript library for 3D graphics.
- [Media and Graphics](https://awesome-repositories.com/f/awesome-lists/media/media-and-graphics.md) — JavaScript 3D library for WebGL.
- [Demos and Experiments](https://awesome-repositories.com/f/awesome-lists/more/demos-and-experiments.md) — Collection of WebGPU-powered examples for a popular 3D library.

### Game Development

- [Game Development Engines](https://awesome-repositories.com/f/game-development/game-engines-frameworks/game-engines/game-development-engines.md) — Bundles essential scene management, physics, and rendering tools required to build interactive, high-performance browser-based games.

### Web Development

- [Texture Loaders](https://awesome-repositories.com/f/web-development/web-infrastructure-deployment/asset-management-build-tools/asset-loading-resolution/texture-loaders.md) — Parses diverse image formats, video streams, and compressed data to map visual content onto 3D surfaces. ([source](https://threejs.org/docs/))
