All Projects → victorfisac → rPBR

victorfisac / rPBR

Licence: MIT license
Physically based rendering (PBR) for raylib

Programming Languages

c
50402 projects - #5 most used programming language
GLSL
2045 projects

Projects that are alternatives of or similar to rPBR

FNode
Tool based in nodes to build GLSL shaders without any programming knowledge written in C using OpenGL and GLFW.
Stars: ✭ 81 (+12.5%)
Mutual labels:  raylib, glsl, shading
radar
OpenGL 4 PBR engine
Stars: ✭ 25 (-65.28%)
Mutual labels:  glsl, pbr
limitless-engine
OpenGL C++ Graphics Engine
Stars: ✭ 95 (+31.94%)
Mutual labels:  glsl, pbr
redcube
JS renderer based on GLTF to WebGPU or WebGL backends.
Stars: ✭ 86 (+19.44%)
Mutual labels:  glsl, pbr
Nabla
OpenGL/OpenGL ES/Vulkan/CUDA/OptiX Modular Rendering Framework for PC/Linux/Android
Stars: ✭ 235 (+226.39%)
Mutual labels:  glsl, pbr
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 (+79.17%)
Mutual labels:  glsl, pbr
Daemon
The Dæmon game engine. With some bits of ioq3 and XreaL.
Stars: ✭ 136 (+88.89%)
Mutual labels:  glsl, pbr
React 3d Viewer
A 3D model viewer component based on react.js 一个基于react.js的组件化3d模型查看工具
Stars: ✭ 100 (+38.89%)
Mutual labels:  viewer, model
Lol Model Viewer
League of legends model and animation viewer based on WebGL. https://tengge1.github.io/lol-model-viewer
Stars: ✭ 211 (+193.06%)
Mutual labels:  viewer, model
clustered forward demo vk
Clustered forward rendering demo with Vulkan
Stars: ✭ 50 (-30.56%)
Mutual labels:  shading
procedural-tileable-shaders
Collection of tileable procedural textures such as: cellular noise, fbm, voronoi, perlin and other.
Stars: ✭ 175 (+143.06%)
Mutual labels:  glsl
sdkmesh-to-obj
sdkmesh decoder
Stars: ✭ 17 (-76.39%)
Mutual labels:  model
voxel-builder
Voxel-based 3D modeling application
Stars: ✭ 31 (-56.94%)
Mutual labels:  pbr
ruck
🧬 Modularised Evolutionary Algorithms For Python with Optional JIT and Multiprocessing (Ray) support. Inspired by PyTorch Lightning
Stars: ✭ 50 (-30.56%)
Mutual labels:  raylib
shady
A GTK+ shader editor, that aims for Shadertoy.com compatibility (and more…)
Stars: ✭ 22 (-69.44%)
Mutual labels:  glsl
viewer-javascript-extract.spreadsheet
Extract Revit Properties into Excel: This sample uses Model Derivative API endpoints to read a Revit project properties and create a XLSX Excel file with one sheet for each type/category with all objects on it
Stars: ✭ 35 (-51.39%)
Mutual labels:  viewer
MaskRCNN-Modanet-Fashion-Segmentation-and-Classification
Using modanet fashion dataset, the clothes images were classified under 5 season (summer,winter,spring,autumn,all).
Stars: ✭ 55 (-23.61%)
Mutual labels:  model
vim-webgl-viewer
An easy to use online 3D model viewer based on Three.JS.
Stars: ✭ 41 (-43.06%)
Mutual labels:  viewer
ZXDataHandle
简单易用的数据转换和存储框架,支持一行代码将模型、模型数组、Json字符串、字典互转;支持模型映射到sqlite3数据库,无需书写sql
Stars: ✭ 13 (-81.94%)
Mutual labels:  model
sym
A Mathematica package for generating symbolic models from data
Stars: ✭ 46 (-36.11%)
Mutual labels:  model

rPBR

Created by Víctor Fisac [www.victorfisac.com]

rPBR is a 3D model viewer with a physically based rendering (PBR) pipeline written in pure C. The PBR pipeline is written directly using OpenGL and the viewer uses raylib programming library for windows management, inputs and interface drawing.

The viewer uses a High Dynamic Range (HDR) file to load and create an environment: cubemap, prefilter reflection map, irradiance map (global illumination) and brdf map. By the other hand, physically based rendering materials are created to store model textures: albedo, tangent space normals, metallic, roughness, ambient occlusion, emission and parallax.

The header contains a few customizable define values. I set the values that gived me the best results.

#define         WINDOW_WIDTH                1440                // Default screen width during program initialization
#define         WINDOW_HEIGHT               810                 // Default screen height during program initialization
#define         WINDOW_MIN_WIDTH            960                 // Resizable window minimum width
#define         WINDOW_MIN_HEIGHT           540                 // Resizable window minimum height

#define         LIGHT_SPEED                 0.1f                // Light rotation input speed
#define         LIGHT_DISTANCE              3.5f                // Light distance from center of world
#define         LIGHT_HEIGHT                1.0f                // Light height from center of world
#define         LIGHT_RADIUS                0.05f               // Light gizmo drawing radius
#define         LIGHT_OFFSET                0.03f               // Light gizmo drawing radius when mouse is over

#define         CUBEMAP_SIZE                1024                // Cubemap texture size
#define         IRRADIANCE_SIZE             32                  // Irradiance map from cubemap texture size
#define         PREFILTERED_SIZE            256                 // Prefiltered HDR environment map texture size
#define         BRDF_SIZE                   512                 // BRDF LUT texture map size

Note: paths to environment and physically based rendering shaders are defined in pbrcore.h. Check the paths if your program doesn't load shaders properly.

Installation

rPBR requires raylib and raygui submodules. To add them to the repository we need to use the following commands using Git Shell:

* cd src/external/raylib
* git submodule update --init --recursive
* cd ../raygui
* git submodule update --init --recursive

It will install the raylib and raygui submodules. Ensure to be in master branch in each submodule to work with a stable version.

Dependencies

rPBR requires the following C libraries to work:

  • raylib.h - raylib framework for window management and inputs.
  • raygui.h - raylib user interface drawing functions.
  • math.h - Math operations functions [powf()].
  • stb_image.h - Image loading [Sean Barret].
  • glad.h - OpenGL API [3.3 Core profile].

Screenshots

Credits

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