Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Bigfoot71/r3d

Open more actions menu

Repository files navigation

R3D – 3D Extension Library for raylib


R3D is an extension library for raylib that expands its 3D capabilities, including rendering, lighting, kinematics, mesh utilities, and related helpers, without turning raylib into a full engine.

GitHub Releases Downloads GitHub Stars License CI

Warning

It is recommended to use the pre-release tags. While you can use the master branch, unexpected API breaking changes may occur until the first official release is published.


Key Features

  • Hybrid Renderer: Deferred pipeline with forward rendering for transparency.
  • Advanced Materials: Complete PBR material system (Burley/SchlickGGX)
  • Custom Shaders: Support for surface shaders (materials/decals) and screen shaders.
  • Dynamic Lighting: Directional, spot, and omni lights with soft shadows
  • Image-Based Lighting: Supports environment IBL and reflection probes.
  • Post-Processing: SSAO, SSR, DoF, bloom, fog, tonemapping, and more
  • Kinematics Support: Basic kinematic system with capsule and mesh-based colliders.
  • Mesh Utilities: Mesh generation, manipulation, and helper utilities.
  • Model Loading: Assimp integration with animations and mesh generation
  • Performance: Built-in frustum culling, instanced rendering, and more

Requirements

To build R3D, you must have:

  • raylib 5.5+ (optionally provided as a submodule)
  • Assimp 6.0.2+ (optionally provided as a submodule)
  • Python 3.6+ (used to process shaders during compilation)

To use R3D, the required specifications are:

  • OpenGL 3.3+ (with support for GL_ARB_texture_cube_map_array)

Bindings

Here is a list with all the ports available. Feel free to send a PR if you know of any binding/wrapper not in this list.

Name R3D Version Language License
r3d-odin 0.9.1 Odin Zlib
ray4laz_r3d 0.9.1 FreePascal MIT
r3d-cs 0.9 C# Zlib

Installation

If you don't know how to start and want to try it quickly:

git clone --depth 1 --recurse-submodules https://github.com/Bigfoot71/r3d
cd r3d
mkdir build && cd build
cmake .. -DR3D_RAYLIB_VENDORED=ON -DR3D_ASSIMP_VENDORED=ON
cmake --build .

Or you can use r3dStarter made by Jens Roth.

Quick Start

#include <r3d/r3d.h>
#include <raymath.h>

int main(void)
{
    InitWindow(800, 600, "R3D Example");
    SetTargetFPS(60);

    R3D_Init(800, 600);

    // Create scene objects
    R3D_Mesh mesh = R3D_GenMeshSphere(1.0f, 16, 32);
    R3D_Material material = R3D_GetDefaultMaterial();

    // Setup lighting
    R3D_Light light = R3D_CreateLight(R3D_LIGHT_DIR);
    R3D_SetLightDirection(light, (Vector3){-1, -1, -1});
    R3D_SetLightActive(light, true);

    // Camera setup
    Camera3D camera = {
        .position = {3, 3, 3},
        .target = {0, 0, 0},
        .up = {0, 1, 0},
        .fovy = 60.0f,
        .projection = CAMERA_PERSPECTIVE
    };

    // Main loop
    while (!WindowShouldClose()) {
        UpdateCamera(&camera, CAMERA_ORBITAL);
        BeginDrawing();
        R3D_Begin(camera);
        R3D_DrawMesh(mesh, material, Vector3Zero(), 1.0f);
        R3D_End();
        EndDrawing();
    }

    R3D_UnloadMesh(mesh);
    R3D_Close();
    CloseWindow();
    return 0;
}

License

Licensed under the Zlib License - see LICENSE for details.

Screenshots

About

3D Extension Library for raylib

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.