Procedural Island Generation (III)
Resulting terrain elevation with multi-scale noise layers and mountain peaks
This is a coding blog where I post about the various projects that I am currently working on, both at work, or as an independent researcher. Most content here revolves around computer graphics and physics simulation.
Resulting terrain elevation with multi-scale noise layers and mountain peaks
128x128 paint map defining the island's base elevation structure
Procedurally generated terrain mesh with organic triangulation This post marks the beginning of a series on procedural island generation. I recently fell in love with Amit Patel’s brilliant polygon map generation articles, and this series will be my own exploration and interpretation of those techniques. This series assumes familiarity with computational geometry and procedural generation concepts…
Note: This post was written nearly 2 years ago and never published. I’m posting it now as-is, with some sections incomplete but the core content intact. This post is a quick crash course on what Spherical Harmonics are and how they can be used to efficiently encode and decode incoming radiance (i.e., a spherical view of the scene) at a point. Motivation Radiance and irradiance In the context of…
This post is a direct continuation to the latest entry… Part III: Constrained Dynamics (III) - Force-based constraints. …and the rest of the series: Part II: Constrained Dynamics (II) - Don’t use springs to model rigid constraints. Part I: Constrained Dynamics (I) - Unconstrained dynamics. Let’s continue where we left off and find a more compact vector/matrix form for force-based constraints.…
This post is a continuation to the first two entries in this series: Part II: Constrained Dynamics (II) - Don’t use springs to model rigid constraints. Part I: Constrained Dynamics (I) - Unconstrained dynamics. Constrained dynamics (recap) In a system where masses (particles) are ruled by newtonian dynamics (forces/accelerations), “constrained dynamics” is the ability to enforce custom…
This post is a continuation to the first entry in this series: Part I: Constrained Dynamics (I) - Unconstrained dynamics. Constrained dynamics We left off with a single unconstrained particle in free-fall. In order to build more interesting setups we need to define rules that constrain the motion of the particle in a certain desired way. For example, a rigid-arm pendulum could be modeled with a…
I am starting a mini-series of posts that go through the mathematical derivation necessary to build a minimal physics engine with support for constrained dynamics. This first post is about unconstrained dynamics, using a free-falling particle as an example. Upcoming posts will describe constrained dynamics, then build a (single-constraint) pendulum, and finally a (multi-constraint)…
Recently I dived into the rabbit-hole of real-time anti-aliasing techniques and ended up implementing Reprojection-based Temporal Anti-Aliasing. Here’s my TAA prototype, in Shadertoy form: Shadertoy: Reprojection Temporal AA I am not embedding the shadertoy here to avoid web browser crashes. So here’s a recording instead: From Wikipedia: “Temporal anti-aliasing (TAA) … combines information from…
This is a tiny pixelshader-only 2D path tracing engine. In my (little) spare time I’ve been writing a small C++ videogame/real-time engine and am doing some little experiments from time to time. The fragment shader here does stochastic PT and NEE, and MIS to weigh both. The rays and scene obstacles are all in 2D (line segments and rectangles). The 2 moving cubes are controlled by a gamepad, and…