Articles on Graphics

Last updated: 2023/01/11

Top deep-dives on Graphics

Transport-Oriented Growth and Procedural Trees

Trees are pretty cool. The tallest one is ~116 m, they turn CO2 into oxygen, for some their leaves change color seasonally, others don't change at all, and they can be found pretty much everywhere. And when you model them with math, you can come up with some cool graphics. Nicholas McDonald's article is all about using C++ and a binary tree to model tree branch growth, specifically focusing on the splitting process, leading to some very pretty graphics of trees growing.

Adventure game graphics with DALL-E 2

Hans Petter Jansson walks through abusing OpenAI's DALL-E 2 to generate images for a point-and-click adventure game.

Behind the Pretty Frames: Death Stranding

Muhammad A. Moniem explains the various stages of compute processing that are used to render the game Death Stranding.
Some highlights:

  • In the first stage, the game's world is divided into tiles and each tile is rendered separately
  • In the second stage, the game's characters are rendered using a process called "clustering"
  • "Digging Death Stranding was NOT very fun thing to do"

A challenger to the throne of vector graphics. SVG is dead, long live TinyVG!

File formats come into and fade from existence on a daily basis. Popular ones stick around for longer. Felix "xq" Queißner's article explains why SVG isn't a great format to work with, and then goes on to outline the spec for a new format "to have 95% of the features we actually need from SVG (so shapes, colors, gradients, scalability) but not have all the things we typically don't need (animations, scripting, external resources, hierarchical document structure, ...)".

Creating a 2D physics engine from scratch in Javascript

Ailef discusses how to write a toy 2d physics engine that supports basic forces, collisions and constraints (joints) for circle-shaped objects, as well as a renderer to make it all visible.
Some highlights:

  • Verlet integration is a method to compute an approximation for the motion of an object at discrete intervals of time
  • Constraints tell the physics engine where an object shouldn't be located and collisions are just constraints that tell the engine two objects can't overlap
  • Handling different shapes with constraints is difficult

Untangle: Solving problems with fuzzy constraints

Szymon Kaliski, Marcel Goethals, and Mike Kluev explore solving logic problems with fuzzy constraints
Some highlights:

  • Untangle is "a tool that can help us think through ill-defined problems, understand compromises, and learn about what kind of questions to ask"
  • Not super in-depth on the programming side of things, but an interesting study on how to approach a solving a problem
  • It's basically a look into how a theorem prover can be adapted for more "human" inputs

Adventures in Text Rendering: Kerning and Glyph Atlases

David Stern discusses what it takes to render text.

Much Ado About Sampling

BOOM! Bet you weren't expecting the first article to be completely (mostly) unrelated to web dev. HA, GOT EEM! That's how I roll though. Jeremy Ong goes back to the math fundamentals of sampling for graphics engineering.

Simulating Wind on Procedural Terrain using GPU Accelerated Lattice Boltzmann Method

Another visually pleasing article from Nick McDonald. Nick discusses the physics of particle interaction and how the Lattice Boltzmann Method can be used to simulate wind on terrain.
Some highlights:

  • Lots of math

Order independent transparency, part 1

In this first article of a series, Kostas Anagnostou describes correctly sorting transparent meshes for real-time rendering.

D3Wasm: a port of id Tech 4 / Doom 3 engine to WebAssembly

The article is about the Emscripten / WebAssembly and WebGL port of the C++ DOOM 3 game engine. The port is functional, with a reworked backend renderer using the WebGL subset of OpenGL ES 2.0 and GLSL shaders. The port is working on all major Desktop Browsers: Firefox, Chrome, Safari, Edge and Opera. Gabriel Cuvillier discusses some of the technical aspects of the project and difficulties faced. Skip to the Technical Details section if you want the deets.
Some highlights:

  • On average the WebAssembly/WebGL version of the engine is between 40% and 60% slower than the Native/GLES compiled version
  • Multithreading have been completely removed from the engine, because it is not yet well supported by browsers
  • Working with WASM can be difficult because you have to juggle the multithreaded aspect of something like C++ with the async/single thread nature of the browser

Raysterizer, a framework that transforms OpenGL programs to instead use raytracing

Henry Zhu introduces Raysterizer (Ray-ster-izer), a framework that transforms existing real-time graphical applications using rasterization to use ray tracing instead, and dives into how it works.
Some highlights:

  • Impres the graphics quality of existing programs with new methods for rendering
  • Modders could use Raysterizer to easily enhance how a game looks
  • Graphics programmers can use the tool to run and test their ray tracing shaders on a variety of existing games to see how well the shader performs and looks

Increasing wave coherence with ray binning

Kostas Anagnostou presents ray binning, a technique for improving ray tracing, with an implementation in Unity.


Want to see more in-depth content?

subscribe to my newsletter!

Other Articles