# gfx-rs/wgpu

**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/gfx-rs-wgpu).**

16,445 stars · 1,216 forks · Rust · apache-2.0

## Links

- GitHub: https://github.com/gfx-rs/wgpu
- Homepage: https://wgpu.rs
- awesome-repositories: https://awesome-repositories.com/repository/gfx-rs-wgpu.md

## Topics

`d3d12` `gpu` `hacktoberfest` `metal` `opengl` `rust` `vulkan` `webgpu`

## Description

This project is a cross-platform graphics and compute framework that provides a unified, hardware-agnostic abstraction layer for rendering and parallel processing. It enables developers to build high-performance applications that execute consistently across diverse operating systems and hardware backends, including Vulkan, Metal, and DirectX. By mapping high-level graphics commands to native APIs, it serves as a portable foundation for both real-time 3D rendering and general-purpose GPU computing.

The framework distinguishes itself through a robust architecture that supports both native desktop execution and web-based deployment. It utilizes a command-buffer-based execution model and a sophisticated shader translation pipeline to ensure consistent behavior across different graphics hardware. Furthermore, it includes a dedicated WebAssembly targeting layer, allowing the same graphics code to run within browser environments using standard web-based graphics APIs.

Beyond its core rendering capabilities, the project provides comprehensive tools for managing the entire graphics lifecycle. This includes advanced memory management, asynchronous resource synchronization, and flexible pipeline configuration. It also offers extensive support for complex visual techniques, such as mesh shading, high dynamic range rendering, and multi-view content generation, alongside diagnostic utilities for performance monitoring and shader compilation caching.

The project is implemented in Rust and provides a stable, well-documented interface for integrating hardware-accelerated graphics into external applications.

## Tags

### Graphics & Multimedia

- [Cross-Platform Rendering Engines](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/engines/multi-mode-rendering-strategies/cross-platform-rendering-engines.md) — A portable graphics foundation that enables developers to build high-performance 3D applications and compute tasks that run natively or within web environments.
- [Hardware-Accelerated Rendering](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/engines/graphics-pipeline-architectures/hardware-accelerated-rendering.md) — Executes complex rendering tasks on graphics hardware using a unified interface that abstracts over native APIs. ([source](https://sotrh.github.io/learn-wgpu/showcase/))
- [Graphics Rendering APIs](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/graphics-apis-bindings/graphics-rendering-apis.md) — Provides a unified, hardware-agnostic interface for rendering and compute across multiple native graphics backends. ([source](https://cdn.jsdelivr.net/gh/gfx-rs/wgpu@trunk/README.md))
- [Graphics API Translators](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/graphics-apis-bindings/graphics-rendering-apis/graphics-api-translators.md) — Provides a consistent interface that maps high-level rendering commands to native backends like Vulkan, Metal, and DirectX. ([source](https://github.com/gfx-rs/wgpu/wiki/Running-on-ANGLE))
- [WebGPU Renderers](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/systems/3d-graphics-pipelines/webgpu-renderers.md) — Executes hardware-accelerated graphics and compute tasks in web browsers by leveraging native WebGPU support. ([source](https://sotrh.github.io/learn-wgpu/news/0.16/))
- [Real-Time 3D Rendering Engines](https://awesome-repositories.com/f/graphics-multimedia/real-time-neural-renderers/real-time-3d-rendering-engines.md) — Implements interactive three-dimensional scenes with advanced lighting, geometry, and texture mapping for games, simulations, or visualization tools.
- [Graphics Device Requestors](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/engines/graphics-pipeline-architectures/hardware-accelerated-rendering/graphics-device-requestors.md) — Initializes a hardware-accelerated rendering context by specifying device requirements and tracing configurations. ([source](https://sotrh.github.io/learn-wgpu/news/25.0/))
- [Rendering Pipelines](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/engines/graphics-pipeline-architectures/rendering-pipelines.md) — Defines surface dimensions, presentation modes, and texture formats to manage rendering pipeline synchronization. ([source](https://sotrh.github.io/learn-wgpu/beginner/tutorial2-surface/))
- [Graphics Instance Initializers](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/graphics-apis-bindings/cross-platform-graphics-tooling/graphics-instance-initializers.md) — Initializes the rendering environment by specifying target hardware backends and platform-specific settings. ([source](https://sotrh.github.io/learn-wgpu/news/0.18%20and%20hdr/))
- [Compute Shader Dispatchers](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/shaders/compute-shader-dispatchers.md) — Runs parallelized general-purpose code in workgroups for data processing tasks on graphics hardware. ([source](https://sotrh.github.io/learn-wgpu/intermediate/tutorial13-hdr/))
- [Cross-Platform Shader Compilers](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/shaders/cross-platform-shader-compilers.md) — Translates shaders written in various languages into native formats required by underlying graphics backends. ([source](https://wgpu.rs/doc/wgpu/))
- [Custom Shader Programs](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/materials-shading/custom-shader-programs.md) — Executes vertex and fragment programs to perform custom operations on graphics data. ([source](https://sotrh.github.io/learn-wgpu/beginner/tutorial3-pipeline/))
- [Pipeline Resource Layouts](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/engines/graphics-pipeline-architectures/rendering-pipelines/pipeline-resource-layouts.md) — Organizes shader resources into consistent bind groups that remain stable across different shaders. ([source](https://sotrh.github.io/learn-wgpu/news/29.0/))
- [Shader Binding Managers](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/shaders/shader-binding-managers.md) — Organizes and registers buffer resources into logical groups to define data access during pipeline execution. ([source](https://sotrh.github.io/learn-wgpu/beginner/tutorial6-uniforms/))
- [Shader Cross-Compilation Pipelines](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/shaders/shader-cross-compilation-pipelines.md) — Compiles high-level shading code into platform-specific binary formats to ensure consistent behavior across diverse graphics hardware backends. ([source](https://sotrh.github.io/learn-wgpu/news/22.0/))
- [Depth Buffers](https://awesome-repositories.com/f/graphics-multimedia/depth-buffers.md) — Maintains z-coordinate buffers to automatically determine pixel visibility and draw order. ([source](https://sotrh.github.io/learn-wgpu/beginner/tutorial8-depth/))
- [External Resource Importers](https://awesome-repositories.com/f/graphics-multimedia/external-data-integrators/external-resource-importers.md) — Enables seamless cross-platform data access by importing native hardware resources and foreign API objects. ([source](https://github.com/gfx-rs/wgpu/blob/trunk/CHANGELOG.md))
- [Camera Projection Systems](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/coordinate-viewport-transformations/camera-projection-systems.md) — Generates perspective projection matrices to map 3D coordinates to 2D screen space. ([source](https://sotrh.github.io/learn-wgpu/intermediate/tutorial12-camera/))
- [Geometry Instancing](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/systems/3d-graphics-pipelines/geometry-instancing.md) — Draws multiple copies of geometry in a single command using instance buffers. ([source](https://sotrh.github.io/learn-wgpu/beginner/tutorial7-instancing/))
- [Mesh Shader Generators](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/systems/3d-graphics-pipelines/procedural-mesh-generators/mesh-shader-generators.md) — Executes mesh shaders to generate primitives directly for the rasterizer, enabling advanced culling and geometric relationships. ([source](https://github.com/gfx-rs/wgpu/blob/trunk/CHANGELOG.md))
- [High Dynamic Range Rendering](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/systems/3d-graphics-pipelines/scene-renderers/high-quality-scene-rendering/high-dynamic-range-rendering.md) — Processes high-precision color data and applies tonemapping for display on standard output surfaces. ([source](https://sotrh.github.io/learn-wgpu/intermediate/tutorial13-hdr/))
- [Shader Resource Binders](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/shaders/shader-resource-binders.md) — Associates graphics buffers and textures with compute shaders by defining layouts for data access. ([source](https://sotrh.github.io/learn-wgpu/beginner/tutorial5-textures/))
- [Pipeline Resource Layouts](https://awesome-repositories.com/f/graphics-multimedia/external-data-integrators/graphics-resource-integrators/pipeline-resource-layouts.md) — Specifies the expected structure and binding slots for resources to ensure compatibility with the rendering pipeline. ([source](https://sotrh.github.io/learn-wgpu/beginner/tutorial5-textures/))
- [Light Uniform Managers](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/lighting-systems/lighting-control-systems/light-uniform-managers.md) — Stores and updates light properties in graphics buffers to enable dynamic lighting effects. ([source](https://sotrh.github.io/learn-wgpu/intermediate/tutorial10-lighting/))
- [Rendering Backends](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/engines/graphics-pipeline-architectures/hardware-accelerated-rendering/rendering-backends.md) — Adjusts runtime execution by selecting specific hardware backends and graphics adapters. ([source](https://cdn.jsdelivr.net/gh/gfx-rs/wgpu@trunk/README.md))
- [Experimental Rendering Extensions](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/graphics-apis-bindings/graphics-rendering-apis/advanced-rendering-features/experimental-rendering-extensions.md) — Performs specialized rendering operations like ray tracing and mesh shading through experimental hardware extensions. ([source](https://wgpu.rs/doc/wgpu/))
- [Vertex Layout Definitions](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/graphics-pipeline-configurations/vertex-buffer-generators/vertex-layout-definitions.md) — Stores vertex attributes in graphics-accessible buffers and defines their memory layout for pipeline access. ([source](https://sotrh.github.io/learn-wgpu/beginner/tutorial4-buffer/))
- [Stencil Masking Effects](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/post-processing-effects/stencil-masking-effects.md) — Masks specific areas of the screen using stencil buffers to create visual overlays or selective rendering effects. ([source](https://sotrh.github.io/learn-wgpu/news/28.0/))
- [Render-to-Texture Buffers](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/systems/3d-graphics-pipelines/texture-mapping-pipelines/render-to-texture-buffers.md) — Draws graphical content into memory-resident textures to enable background rendering or file-based output. ([source](https://sotrh.github.io/learn-wgpu/showcase/windowless/))
- [Custom Shader Attributes](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/shaders/custom-shader-attributes.md) — Exposes structured data to shader invocations by binding buffers to the rendering pipeline for global access. ([source](https://sotrh.github.io/learn-wgpu/beginner/tutorial6-uniforms/))
- [Bindless Resource Managers](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/shaders/shader-resource-binders/bindless-resource-managers.md) — Accesses large arrays of textures or buffers directly within shaders to eliminate frequent descriptor updates and improve efficiency. ([source](https://github.com/gfx-rs/wgpu/blob/trunk/CHANGELOG.md))
- [Texture Management Systems](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/texture-management-systems.md) — Handles the lifecycle and state synchronization of textures retrieved from display surfaces. ([source](https://sotrh.github.io/learn-wgpu/news/29.0/))

### Hardware & IoT

- [GPU Computations](https://awesome-repositories.com/f/hardware-iot/integration-performance/gpu-performance/gpu-computations.md) — A parallel processing interface that allows developers to execute general-purpose code and complex mathematical calculations directly on graphics hardware.
- [Headless GPU Compute Engines](https://awesome-repositories.com/f/hardware-iot/integration-performance/gpu-performance/gpu-computations/headless-gpu-compute-engines.md) — Executes parallel numerical calculations on graphics hardware without requiring an active display or windowing system. ([source](https://sotrh.github.io/learn-wgpu/showcase/windowless/))
- [Command Execution Synchronizers](https://awesome-repositories.com/f/hardware-iot/integration-performance/gpu-performance/command-execution-synchronizers.md) — Pauses the main processing thread until specific graphics operations finish to ensure tasks complete correctly. ([source](https://sotrh.github.io/learn-wgpu/news/27.0/))

### Software Engineering & Architecture

- [Hardware Abstraction Layers](https://awesome-repositories.com/f/software-engineering-architecture/hardware-abstraction-layers.md) — A low-level rendering framework that maps high-level commands to native GPU backends to ensure consistent performance and behavior across different operating systems.
- [Cross-Platform Development](https://awesome-repositories.com/f/software-engineering-architecture/cross-platform-development.md) — Builds high-performance rendering applications that run consistently across Windows, macOS, Linux, and mobile platforms using a unified API.

### Operating Systems & Systems Programming

- [Graphics Backends](https://awesome-repositories.com/f/operating-systems-systems-programming/platform-development-integration/platform-integrations/graphics-backends.md) — Maps high-level graphics commands to native hardware backends like Vulkan, Metal, and DirectX. ([source](https://cdn.jsdelivr.net/gh/gfx-rs/wgpu@trunk/README.md))
- [Graphics Context Initializers](https://awesome-repositories.com/f/operating-systems-systems-programming/desktop-environment-frameworks/desktop-environment-components/window-management-systems/graphics-context-initializers.md) — Configures the hardware interface by defining display handle requirements for rendering surfaces. ([source](https://sotrh.github.io/learn-wgpu/news/29.0/))
- [GPU Memory Allocators](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/memory-management/allocation-strategies/dynamic-memory-allocation/gpu-memory-allocators.md) — Allocates and binds memory regions for direct read/write access during parallel execution cycles. ([source](https://sotrh.github.io/learn-wgpu/compute/sorting/))
- [Unified Memory Managers](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/memory-management/allocation-strategies/dynamic-memory-allocation/gpu-memory-allocators/unified-memory-managers.md) — Allocates and configures graphics-resident memory buffers to facilitate high-performance data transfer and storage between host and device.

### Web Development

- [WebAssembly Graphics Deployers](https://awesome-repositories.com/f/web-development/web-deployment-services/webassembly-graphics-deployers.md) — Compiles native code into web assembly modules to execute graphics applications directly within a browser. ([source](https://sotrh.github.io/learn-wgpu/showcase/pong/))
- [Rendering Surface Initializers](https://awesome-repositories.com/f/web-development/dom-to-canvas-renderers/rendering-surface-initializers.md) — Creates drawable targets linked to native window handles to enable direct rendering to the screen. ([source](https://sotrh.github.io/learn-wgpu/beginner/tutorial2-surface/))
- [Web Assembly Bindings](https://awesome-repositories.com/f/web-development/web-assembly-bindings.md) — Compiles native graphics code into web-compatible modules to enable hardware-accelerated rendering within browser environments.

### Scientific & Mathematical Computing

- [WebAssembly Graphics Targets](https://awesome-repositories.com/f/scientific-mathematical-computing/high-performance-execution-environments/high-performance-and-parallel-computing/high-performance-computing/high-performance-web-inference/webassembly-graphics-targets.md) — Compiles and packages code into binary formats compatible with web browsers to enable high-performance graphics execution. ([source](https://sotrh.github.io/learn-wgpu/beginner/tutorial1-window/))
- [Parallel Processing](https://awesome-repositories.com/f/scientific-mathematical-computing/high-performance-execution-environments/high-performance-and-parallel-computing/parallel-processing.md) — Runs custom shader programs on graphics hardware to perform parallel data processing tasks. ([source](https://sotrh.github.io/learn-wgpu/compute/introduction/))

### System Administration & Monitoring

- [Graphics Adapter Selectors](https://awesome-repositories.com/f/system-administration-monitoring/graphics-hardware-monitors/hardware-inspection/graphics-adapter-selectors.md) — Provides mechanisms to identify and request specific graphics hardware adapters based on power preferences or surface compatibility. ([source](https://sotrh.github.io/learn-wgpu/beginner/tutorial2-surface/))

### Data & Databases

- [GPU Operation Synchronizers](https://awesome-repositories.com/f/data-databases/data-synchronization/cross-device-synchronization-engines/cross-device-operation-execution/gpu-operation-synchronizers.md) — Manages the completion of pending graphics tasks by polling device state to ensure command processing. ([source](https://sotrh.github.io/learn-wgpu/news/25.0/))
- [Buffer Data Extractors](https://awesome-repositories.com/f/data-databases/data-buffering/gpu-buffer-allocators/buffer-data-extractors.md) — Copies processed data from graphics memory back to system memory by mapping buffers for reading after rendering or compute operations complete. ([source](https://sotrh.github.io/learn-wgpu/showcase/windowless/))

### Development Tools & Productivity

- [Render Command Dispatchers](https://awesome-repositories.com/f/development-tools-productivity/custom-command-execution/hardware-command-execution/render-command-dispatchers.md) — Records drawing instructions into command buffers and submits them to the graphics queue for hardware-accelerated execution. ([source](https://sotrh.github.io/learn-wgpu/beginner/tutorial2-surface/))

### Game Development

- [Command Buffers](https://awesome-repositories.com/f/game-development/engine-architecture/command-buffers.md) — Records rendering and compute instructions into buffers for asynchronous submission and batch processing by the graphics hardware.

### Testing & Quality Assurance

- [Graphics Resource Synchronizers](https://awesome-repositories.com/f/testing-quality-assurance/general-testing-utilities/test-utilities-assertions/assertion-extensions-modes/asynchronous-interaction-utilities/asynchronous-polling-mechanisms/graphics-resource-synchronizers.md) — Manages the lifecycle of graphics memory and command completion through non-blocking callbacks and polling mechanisms.

### User Interface & Experience

- [View Matrix Calculators](https://awesome-repositories.com/f/user-interface-experience/view-matrix-calculators.md) — Calculates view matrices based on position and orientation to simulate camera movement. ([source](https://sotrh.github.io/learn-wgpu/intermediate/tutorial12-camera/))
- [Surface Resize Managers](https://awesome-repositories.com/f/user-interface-experience/window-management/surface-resize-managers.md) — Updates surface configuration dynamically in response to window size changes to maintain correct rendering output. ([source](https://sotrh.github.io/learn-wgpu/beginner/tutorial2-surface/))
