Computer graphics / 3D


This is for raw computer graphics stuff such as 3D rendering and all its associated algorithms.

REYES - Software rasterizer

Images produced by a toy REYES like 3D software renderer made in C for learning and small real-time experiments.

The toy renderer use micropolygons as basis. It support displacement, shaders, four objects type (plane, sphere, cylinder and degree 3 bezier patches), standard scene graph, SSAA, parallel rendering, wireframe modes with line clipping, standard optimizations such as culling, clipping, depth buffering.

REYES always fascinated me, it powered a good chunk of the early CGI stuff and has an elegant process which adapt well to parallelization / vectorization / pipelining. I also wanted to do a real-time software rasterizer but there is already a very high number of them so i decided to combine parts of both.

REYES part is crude (and it may be confusing): it does not have a split stage, it is mainly about uniform subdivision of primitives in UV space. There is also a clear separation / independence between rendering stages.

The first video show variable displacement and micropolygons grid size. The cube video is a first lowfi tentative.

Volumetric renderer

Volume renderer. Hollowed out cube and sphere with noise modulation. Last screenshot is a 2.5D variant.


Oldschool Wolfenstein like raycasting engine made on a phone while commuting. The renderer is capable of rendering 'advanced' geometry such as cylinders or curved walls due to a small grid. The maps are generated by drawing shapes into a buffer.

A second try at a raycasting engine with different algorithm, it iterate over all the display buffer instead of just horizontally and does not use a grid, it is slower but able to do more (curved / sloped walls, different height etc) easily although limited in degree of movements.

Voxel landscapes

Repurposed raycasting engine to render oldschool voxels landscape such as in Commanche games. 5 DOF mostly. Enhanced with fake scattering / fog.