Projects
-
AlpenglowExperimental WebGPU RasterizerAlpenglow is an experimental rasterizer that takes a scene description and efficiently produces a corresponding high-quality image.
-
Play SlitherlinkTry out Slitherlink puzzles and challenge yourself with various techniques and strategies.
-
Optimal Wordle SolutionsExplore decision trees with optimal strategies for the game Wordle.
-
TesseraceWebGL Path TracingWebGL-based experiment with fairly realistic light transport (dielectrics, metals). Includes signed distance field (SDF) shapes and procedural textures.
-
SceneryHTML5 Engine for PhET Interactive SimulationsA 2D scene graph for HTML5 that can be used to display interactive graphics using Canvas, SVG & DOM, with partial WebGL support.
-
ShapingBi-Directional Text Shaping in the BrowserText shaping (and font parsing) in the browser, with bi-directional shaping support.
-
SudogSudoku Solving Assistant[2008, C++, Linux] Highlights common human-understandable patterns to eliminate candidates, using strategies up to swordfish/y-wing/coloring. Includes a command-line solver that outputs postscript or SVG step-by-step solution guides, and includes a GTK+/Cairo user interface for interactive solving.
Articles
-
How Slitherlink Should be SolvedAn opinionated guide on new techniques and strategies for solving Slitherlink puzzles, with a web app to play with the concepts and a library of patterns.
-
Exact Polygonal FilteringUsing Green's Theorem and Clipping for Precise Anti-AliasingEfficient filtering of polygonal shapes with closed-form solutions based on Green's theorem with piecewise-polynomial filters (e.g. box/bilinear/bicubic).
-
Flattening ConvolutionImagine a magical landscape where everywhere you go, the average elevation within 1km is always the same. Is there any way this landscape can have hills?
-
Additive Subset PickingHow can we choose a subset of $\{1,\ldots,n\}$ with as many elements as possible such that the sum of any two elements is distinct?
-
Browser-specific content using Canvas quirksUsing edge cases in Canvas implementations, it is possible to create images that are different on different browsers, without querying the browser. This can be used to create browser-specific content.
-
Canvas Browser-Specific QuirksCurrently, there are a number of HTML5 Canvas edge cases that display differently on different browsers. This is a list of all quirks that I've come across so far in Scenery development.