Retour au classement

cadenji/foolrenderer

C

A tiny software renderer implemented from scratch without the use of graphics API, used to understand how GPUs work.

renderercomputer-graphicsrender-pipelinesoftrendererreal-time-rendering3d-graphicsgamedevgraphicsgraphics-programmingrendering
Croissance des étoiles
Étoiles
1.1k
Forks
74
Croissance hebdomadaire
Issues
1
5001k
juin 2022oct. 2023mars 2025juil. 2026
README

foolrenderer

teaser image

foolrenderer is a tiny software renderer implemented from scratch without the use of graphics API, used to understand how GPUs work. The primary goal for foolrenderer is to demonstrate some real-time rendering techniques for video games.

  • Small. Only a few thousand lines of code, no complex dependencies.
  • Simple. Focus on the fundamentals of rendering.
  • Readable. A quarter of the source code is comments, and every mathematical calculation has a formula explanation.

⛳ Prerequisites

To build foolrenderer, you must first install the following tools:

Windows

  • Visual Studio 2019 version 16.2 (or more recent)
  • CMake 3.21 (or more recent)

Make sure your Visual Studio has Clang compiler tools installed. If you don't already have the tools, you can install them by opening the Visual Studio Installer and choosing C++ Clang tools for Windows under Desktop development with C++ optional components.

macOS

  • Xcode 12.3 (or more recent)
  • CMake 3.21 (or more recent)

After installing Xcode you need to make sure the command line tools are set up by running:

$ xcode-select --install

🚀 Build and Run

The following shows how to build and run foolrenderer from the command line.

Some editors and IDEs (like VSCode, CLion, Visual Studio) support editing, building and debugging CMake projects. Please refer to related documents for usage.

Build

First, create a build folder in the project root directory. Then use CMake commands to build the project:

$ cd foolrenderer
$ mkdir build
$ cd build
$ cmake ..
$ cmake --build .

Run

If the build is successful, you can run the generated executable in the build directory. foolrenderer will store the rendering result in a TGA format image.

🏆 Features Showcase

rasterization

draw model

gamma correction

pbr materials

🤔 How to Learn Computer Graphics

Here are some useful tutorials for self-study computer graphics. You can also find links to the corresponding literature at each algorithm in the source code.

Getting Started

Advanced

Physically Based Rendering

❤️ License

Copyright (c) Caden Ji. All rights reserved.

Licensed under the MIT license.

Dépôts similaires
pixijs/pixijs

The HTML5 Creation Engine: Create beautiful digital content with the fastest, most flexible 2D WebGL renderer.

TypeScriptnpmMIT Licensecanvas2dpixijs
pixijs.com
47.8k5k
pmndrs/react-three-fiber

🇨🇭 A React renderer for Three.js

TypeScriptnpmMIT Licensereactthreejs
docs.pmnd.rs/react-three-fiber
31.5k1.9k
aidenybai/million

Optimizing compiler for React

TypeScriptnpmMIT Licensehacktoberfestmillion
old.million.dev
17.7k598
diegomura/react-pdf

📄 Create PDF files using React

TypeScriptnpmMIT Licensereactpdf
react-pdf.org
16.7k1.3k
jonobr1/two.js

A renderer agnostic two-dimensional drawing api for the web

JavaScriptnpmMIT Licensesvgwebgl
two.js.org
8.6k459
OGRECave/ogre

high-performance rendering backend (C++, Python, C#, Java)

C++MIT Licenseopengldirectx
ogrecave.github.io/ogre/
4.6k1k
Yomguithereal/react-blessed

A react renderer for blessed.

JavaScriptnpmMIT Licensereactrenderer
4.5k181
DiligentGraphics/DiligentEngine

A modern cross-platform low-level graphics library and rendering framework

BatchfileApache License 2.0gamedevopengl
diligentgraphics.com/diligent-engine/
4.4k385
layervault/psd.rb

Parse Photoshop files in Ruby with ease

RubyRubyGemsMIT Licenserubyphotoshop
3.1k197
pixijs/pixi-react

Write PIXI apps using React declarative style

TypeScriptnpmMIT Licensereactpixi
react.pixijs.io
2.9k205
commonmark/commonmark-java

Java library for parsing and rendering CommonMark (Markdown)

JavaMavenBSD 2-Clause "Simplified" Licensecommonmarkjava
2.7k331
LukasBanana/LLGL

Low Level Graphics Library (LLGL) is a thin abstraction layer for the modern graphics APIs OpenGL, Direct3D, Vulkan, and Metal

C++BSD 3-Clause "New" or "Revised" Licenserendererd3d11
2.6k156