All Projects → BVE-Reborn → rend3

BVE-Reborn / rend3

Licence: Apache-2.0 and 2 other licenses found Licenses found Apache-2.0 LICENSE.APACHE MIT LICENSE.MIT Zlib LICENSE.ZLIB
Easy to use, customizable, efficient 3D renderer library built on wgpu.

Programming Languages

rust
11053 projects
shell
77523 projects

Projects that are alternatives of or similar to rend3

Flycube
Graphics API wrapper is written in C++ on top of Directx 12 and Vulkan. Provides main features including ray tracing.
Stars: ✭ 78 (-85.71%)
Mutual labels:  rendering, vulkan, d3d12, 3d-graphics
Bgfx
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
Stars: ✭ 10,252 (+1777.66%)
Mutual labels:  metal, rendering, vulkan, d3d12
pygfx
Like ThreeJS but for Python and based on wgpu
Stars: ✭ 72 (-86.81%)
Mutual labels:  metal, vulkan, 3d-graphics, wgpu
Diligentsamples
Sample projects demonstrating the usage of Diligent Engine
Stars: ✭ 138 (-74.73%)
Mutual labels:  rendering, vulkan, d3d12
MoravaEngine
2D/3D graphics engine written in C++ language. It currently supports the following graphics APIs: OpenGL 3.3+, Vulkan 1.2, DirectX 11. Its current purpose is to experiment with various CG concepts and techniques.
Stars: ✭ 129 (-76.37%)
Mutual labels:  rendering, vulkan, 3d-graphics
Diligentengine
A modern cross-platform low-level graphics library and rendering framework
Stars: ✭ 2,142 (+292.31%)
Mutual labels:  rendering, vulkan, d3d12
Engine Native
Native engine for Cocos Creator
Stars: ✭ 488 (-10.62%)
Mutual labels:  metal, rendering, vulkan
Yave
Yet Another Vulkan Engine
Stars: ✭ 211 (-61.36%)
Mutual labels:  rendering, vulkan, 3d-graphics
wgpu-mc
Rust-based replacement for the default Minecraft renderer
Stars: ✭ 254 (-53.48%)
Mutual labels:  metal, vulkan, wgpu
Shaderconductor
ShaderConductor is a tool designed for cross-compiling HLSL to other shading languages
Stars: ✭ 1,146 (+109.89%)
Mutual labels:  metal, vulkan, d3d12
Filament
Filament is a real-time physically based rendering engine for Android, iOS, Windows, Linux, macOS, and WebGL2
Stars: ✭ 13,215 (+2320.33%)
Mutual labels:  metal, vulkan, 3d-graphics
Methanekit
🎲 Modern 3D graphics made simple with cross-platform C++17 meta-API on top of DirectX 12 & Metal (Vulkan is coming)
Stars: ✭ 197 (-63.92%)
Mutual labels:  metal, d3d12, 3d-graphics
Llgl
Low Level Graphics Library (LLGL) is a thin abstraction layer for the modern graphics APIs OpenGL, Direct3D, Vulkan, and Metal
Stars: ✭ 1,011 (+85.16%)
Mutual labels:  metal, vulkan, d3d12
Kaleido3d
Next Generation Renderer for Cross Platform Engine Development
Stars: ✭ 145 (-73.44%)
Mutual labels:  metal, vulkan, d3d12
wgpu-py
Next generation GPU API for Python
Stars: ✭ 210 (-61.54%)
Mutual labels:  metal, vulkan, wgpu
spirv cross
Safe Rust wrapper around SPIRV-Cross
Stars: ✭ 75 (-86.26%)
Mutual labels:  metal, vulkan
ign-rendering
C++ library designed to provide an abstraction for different rendering engines. It offers unified APIs for creating 3D graphics applications.
Stars: ✭ 34 (-93.77%)
Mutual labels:  rendering, 3d-graphics
RavEngine
A fast, easy to use C++20 3D game library for modern computers
Stars: ✭ 122 (-77.66%)
Mutual labels:  metal, vulkan
virtualGizmo3D
Virtual GIZMO - 3D object manipulator / orientator, via mouse, with pan and dolly/zoom features
Stars: ✭ 36 (-93.41%)
Mutual labels:  metal, vulkan
coin
Coin3D core library
Stars: ✭ 193 (-64.65%)
Mutual labels:  rendering, 3d-graphics

rend3

GitHub Workflow Status Crates.io Documentation License Matrix Matrix Discord

Easy to use, customizable, efficient 3D renderer library built on wgpu.

Library is under active development. While internals are might change in the future, the external api remains stable, with only minor changes occuring as features are added.

Examples

Take a look at the examples for getting started with the api. The examples will show how the core library and helper crates can be used.

Screenshots

These screenshots are from the scene-viewer example.

scifi-base example bistro emerald-square

Crates

The rend3 ecosystem is composed of a couple core crates which provide most of the functionality and exensibility to the library, extension crates, and integration crates

Core

  • rend3: The core crate. Performs all handling of world data, provides the Renderer and RenderGraph and defines vocabulary types.
  • rend3-routine: Implementation of various "Render Routines" on top of the RenderGraph. Also provides for re-usable graphics work. Provides PBR rendering, Skyboxes, Shadow Rendering, and Tonemapping.

Extensions

There are extension crates that are not required, but provide pre-made bits of useful code that I would recommend using.

  • rend3-anim: Skeletal animation playback utilities. Currently tied to rend3-gltf.
  • rend3-framework: Vastly simplifies correct handling of the window and surface across platforms.
  • rend3-gltf: Modular gltf file and scene loader.

Integration

Integration with other external libraries are also offered. Due to external dependencies, the versions of these may increase at a much higher rate than the rest of the ecosystem.

  • rend3-egui: Integration with the egui immediate mode gui.
  • rend3-imgui: Integration with the imgui immediate mode gui.

Features and Platform Support

rend3 supports two different rendering profiles one for speed and one for compatibility.

Profile Features

The modern profile not only offloads a lot more work to the gpu, it can do more aggressive performance optimizations including only drawing exactly the triangles that are needed

Profile Texture Access Object Culling Triangle Culling Draw Calls
GpuDriven Bindless On GPU On GPU Merged Indirect
CpuDriven Bound On CPU Instanced Direct

Profile Support

The following table shows support of various profiles on various apis/platforms. This will hopefully help you judge what your target demographic supports.

OS API GPU GpuDriven CpuDriven
Windows 7+ Vulkan AMD / NVIDIA
Vulkan Intel 6XXX+
Dx11 Intel 2XXX+ 🚧
Windows 10+ Dx12 Intel 6XXX+ / AMD GCN 2+ / NVIDIA 6XX+ 🚧
MacOS 10.13+ iOS 11+ Metal Intel / Apple A13+ / M1+
Apple A9+
Linux Vulkan Intel 6XXX+ / AMD GCN 2+ / NVIDIA 6XX+
Intel 4XXX+
Android Vulkan All

Footnotes:

  • Supported
  • 🚧 In Progress
  • Unsupported
  • — Modern Profile Used
  • Intel 6XXX = Skylake
  • Intel 4XXX = Haswell
  • Intel 2XXX = Sandy Bridge
  • AMD GCN 2 = Rx 200+, RX 5000+
  • Apple A9 = iPhone 6S, iPad 5th Gen
  • Apple A13 = iPhone 11, iPad 9th Gen

Purpose

rend3 tries to fulfill the following usecases:

  1. Games and visualizations that need a customizable, and efficient renderer.
  2. Projects that just want to put objects on screen, but want lighting and effects.
  3. A small cog in a big machine: a renderer that doesn't interfere with the rest of the program.

rend3 is not:

  1. A framework or engine. It does not include all the parts needed to make an advanced game or simulation nor care how you structure your program. If you want a very basic framework to deal with windowing and event loop management, rend3-framework can help you. This will always be optional and is just there to help with the limited set of cases it canhelp

Future Plans

I have grand plans for this library. An overview can be found in the issue tracker under the enhancement label.

Matrix Chatroom

We have a matrix chatroom that you can come and join if you want to chat about using rend3 or developing it:

Matrix Matrix

If discord is more your style, our meta project has a channel which mirrors the matrix rooms:

Discord

Helping Out

We welcome all contributions and ideas. If you want to participate or have ideas for this library, we'd love to hear them!

License: MIT OR Apache-2.0 OR Zlib

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