Deconstructing a Black Hole in a Fragment Shader
Live GLSL shader breakdown that actually runs in your browser while you read.
A TypeScript software rasterizer with programmable shaders
Programmable shaders in TypeScript let you learn rasterization without GPU APIs.
Students learning computer graphics and rendering pipelines
tinyrenderer · software-rasterizer · glfx.js
I've been building a software rasterizer in TypeScript over the past few months and thought I'd share it. My goal was to support custom vertex layouts, programmable vertex and fragment shaders, and enough flexibility to implement more complex rendering techniques, much like you would with a GPU graphics API.
This project is based on Nikolaus Rauch's excellent C++ software rasterizer (https://github.com/nikolausrauch/software-rasterizer) but adapted for the browser platform.
The project intended as an educational project, with an emphasis on readability and experimentation over maximum performance.
Live GLSL shader breakdown that actually runs in your browser while you read.
5.8kB shader player with face-tracking plugins beats loading a full 3D engine.
Hybrid WebGL2/WebGPU pipeline with dynamic Cook-Torrance PBR shader compilation.
WebGL fragment shader recreates the Escher print gallery conformal mapping effect.
CPU-side pixel streaming hack bypasses SDL shader instability for Lua game engines.
Visualizing rasterization rules is better than reading a textbook.