<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>donw.io</title>
		<link>https://donw.io/</link>
		<description>Recent content on donw.io</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
		
			<lastBuildDate>Fri, 06 Nov 2026 16:08:00 +0000</lastBuildDate>
		
			<atom:link href="https://donw.io/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Compact C&#43;&#43; Maths APIs without copy-paste</title>
				<link>https://donw.io/post/compact-cpp-maths-api/</link>
				<pubDate>Fri, 06 Nov 2026 16:08:00 +0000</pubDate>
				<guid>https://donw.io/post/compact-cpp-maths-api/</guid>
				<description>Generating compact, efficient C++ vector maths APIs using friend functions, member-pointer packs and external type registration, without inheritance or repetitive implementations.</description>
			</item>
			<item>
				<title>The History of a Future Platform, Part 2: Stunt Island</title>
				<link>https://donw.io/post/future-platform-2/</link>
				<pubDate>Thu, 05 Oct 2023 19:35:05 +0100</pubDate>
				<guid>https://donw.io/post/future-platform-2/</guid>
				<description>I&#39;m a late 80s to late 90s gamer: some of my most imprinted memories come from that period. I remember vividly two incredible WOW! moments that changed my life.</description>
			</item>
			<item>
				<title>The History of a Future Platform, Part 1: Why</title>
				<link>https://donw.io/post/future-platform-1/</link>
				<pubDate>Thu, 28 Sep 2023 08:18:11 +0100</pubDate>
				<guid>https://donw.io/post/future-platform-1/</guid>
				<description>My attempt to rethink the way games are made. In 2012, after shipping Fable 3 on Xbox 360 and PC, supporting DLCs and helping the team transition to Unreal Engine 3, I was completely worn down and demoralised.</description>
			</item>
			<item>
				<title>Fast, Constant Time Sphere Indexing, Part 2</title>
				<link>https://donw.io/post/sphere-indexing-2/</link>
				<pubDate>Wed, 06 Feb 2019 13:13:00 +0100</pubDate>
				<guid>https://donw.io/post/sphere-indexing-2/</guid>
				<description>&lt;p&gt;To start, let&#39;s take the final solution from &lt;a href=&#34;https://donw.io/post/sphere-indexing/&#34;&gt;Part 1&lt;/a&gt;. The goal is to reduce this even further so that the technique can be used frequently in shaders.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Fast, Constant Time Sphere Indexing, Part 1</title>
				<link>https://donw.io/post/sphere-indexing/</link>
				<pubDate>Wed, 21 Nov 2018 14:27:21 +0100</pubDate>
				<guid>https://donw.io/post/sphere-indexing/</guid>
				<description>Map any 3D point on or above a triangle-subdivided sphere to a triangle index in constant time, without recursion, table lookups or complicated branching logic.</description>
			</item>
			<item>
				<title>20 Years since Terminal Pacity</title>
				<link>https://donw.io/post/terminal-pacity/</link>
				<pubDate>Fri, 19 May 2017 15:21:27 +0100</pubDate>
				<guid>https://donw.io/post/terminal-pacity/</guid>
				<description>Around the age of 15 I started to code after a family friend gave me a BBC Microcomputer Model B. It was a wonderful machine that showed me where my future lay.</description>
			</item>
			<item>
				<title>Replacing Disqus with Github Comments</title>
				<link>https://donw.io/post/github-comments/</link>
				<pubDate>Fri, 21 Apr 2017 20:30:00 +0100</pubDate>
				<guid>https://donw.io/post/github-comments/</guid>
				<description>&lt;p&gt;I&#39;ve been considering removing comments from this blog for a while; mainly because the site doesn&#39;t&#xA;trigger much discussion and I didn&#39;t like keeping the overhead of &lt;a href=&#34;https://disqus.com/&#34;&gt;Disqus&lt;/a&gt;&#xA;around. After looking into Disqus load-time behaviour I was pretty shocked what I was forcing&#xA;on people loading the site (although you really should be using the likes of &lt;a href=&#34;https://www.eff.org/privacybadger&#34;&gt;Privacy Badger&lt;/a&gt; and &lt;a href=&#34;https://github.com/gorhill/uBlock&#34;&gt;uBlock Origin&lt;/a&gt;).&lt;/p&gt;</description>
			</item>
			<item>
				<title>Three Methods to Extract Frustum Points</title>
				<link>https://donw.io/post/frustum-point-extraction/</link>
				<pubDate>Sun, 23 Oct 2016 19:14:32 +0100</pubDate>
				<guid>https://donw.io/post/frustum-point-extraction/</guid>
				<description>&lt;p&gt;Getting frustum points in world-space can be useful in a number of scenarios, such as debug visualisation or building a coarse volume around a partition in your frustum. Each method can be used depending what information you have available to you and what you want to avoid recalculating.&lt;/p&gt;</description>
			</item>
			<item>
				<title>A Convenient Expression for Packed Circle Radius</title>
				<link>https://donw.io/post/packed-circle-radius/</link>
				<pubDate>Sat, 15 Oct 2016 21:45:31 +0100</pubDate>
				<guid>https://donw.io/post/packed-circle-radius/</guid>
				<description>&lt;p&gt;When you develop a solver for the Tammes problem you&#39;re usually concerned with &lt;a href=&#34;http://paulbourke.net/geometry/circlesphere/#spherepoints&#34;&gt;distributing points evenly on the sphere&lt;/a&gt;, ensuring they are equidistant from each other. The radius of the circles you place at those points is generally not considered:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Mixed Precision GPU Noise with HLSL</title>
				<link>https://donw.io/post/high-prec-noise-hlsl/</link>
				<pubDate>Thu, 25 Aug 2016 22:05:56 +0100</pubDate>
				<guid>https://donw.io/post/high-prec-noise-hlsl/</guid>
				<description>&lt;p&gt;I posted an article a while back, entitled &lt;a href=&#34;https://donw.io/post/high-prec-gradient-noise/&#34;&gt;Very Fast, High-Precision SIMD/GPU Gradient Noise&lt;/a&gt;, where I outlined a technique for achieving double-resolution noise at speeds close to that when using float arithmetic. The key observation was that &lt;code&gt;floor&lt;/code&gt; could be used on cell boundaries to mask off the ranges that require double arithmetic, allowing the bulk of the work to use float arithmetic.&lt;/p&gt;</description>
			</item>
			<item>
				<title>A New Host, Server and Site Generator</title>
				<link>https://donw.io/post/a-new-host-server-site/</link>
				<pubDate>Sun, 19 Jun 2016 21:48:11 +0100</pubDate>
				<guid>https://donw.io/post/a-new-host-server-site/</guid>
				<description>A return to the site after its old domain went dark, with changes to hosting, domains and the generation workflow.</description>
			</item>
			<item>
				<title>Distant Spherical Area Light Sources</title>
				<link>https://donw.io/post/distant-sphere-lights/</link>
				<pubDate>Wed, 11 Feb 2015 12:58:23 +0100</pubDate>
				<guid>https://donw.io/post/distant-sphere-lights/</guid>
				<description>&lt;p&gt;This is a small test post exercising math notation with &lt;a href=&#34;http://www.mathjax.org/&#34;&gt;MathJax&lt;/a&gt; in &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Very Fast, High-Precision SIMD/GPU Gradient Noise</title>
				<link>https://donw.io/post/high-prec-gradient-noise/</link>
				<pubDate>Mon, 17 Dec 2012 11:38:22 +0100</pubDate>
				<guid>https://donw.io/post/high-prec-gradient-noise/</guid>
				<description>&lt;p&gt;A recently published article by Inigo Quilez on &lt;a href=&#34;http://www.iquilezles.org/www/articles/voronoilines/voronoilines.htm&#34;&gt;Voronoi Edges&lt;/a&gt; highlights the technique of shifting the co-ordinate frame of procedural algorithms to improve precision. This is a really important little trick that I felt was worth reviewing, as it provides huge benefits to world generation at a planetary scale.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Skeletal Animation Looping with Autocorrelation</title>
				<link>https://donw.io/post/animation-autocorrelation/</link>
				<pubDate>Mon, 20 Aug 2012 16:07:23 +0100</pubDate>
				<guid>https://donw.io/post/animation-autocorrelation/</guid>
				<description>Using autocorrelation to find convincing loops inside non-exact motion-capture animation, then cross-fading the seams.</description>
			</item>
			<item>
				<title>Quaternions and Dual Quaternion Skinning</title>
				<link>https://donw.io/post/dual-quaternion-skinning/</link>
				<pubDate>Thu, 19 Jul 2012 12:52:03 +0100</pubDate>
				<guid>https://donw.io/post/dual-quaternion-skinning/</guid>
				<description>Quaternions, their geometric intuition, and practical dual-quaternion skinning in a graphics pipeline.</description>
			</item>
			<item>
				<title>An RPC Debugging Framework with Visual Studio</title>
				<link>https://donw.io/post/rpc-debugging-vs/</link>
				<pubDate>Tue, 07 Feb 2012 00:27:21 +0100</pubDate>
				<guid>https://donw.io/post/rpc-debugging-vs/</guid>
				<description>A Visual Studio debugging workflow for a client/server game architecture, including process attachment and startup synchronisation.</description>
			</item>
			<item>
				<title>Reflection in C&#43;&#43;, Part2: The Simple Implementation of Splinter Cell</title>
				<link>https://donw.io/post/reflection-cpp-2/</link>
				<pubDate>Tue, 03 Jan 2012 07:21:58 +0100</pubDate>
				<guid>https://donw.io/post/reflection-cpp-2/</guid>
				<description>A detailed look at reflection used to build the Splinter Cell rendering engine, tooling, serialisation and runtime inspection.</description>
			</item>
			<item>
				<title>Reflection in C&#43;&#43;, Part 1: Introduction</title>
				<link>https://donw.io/post/reflection-cpp-1/</link>
				<pubDate>Sun, 25 Sep 2011 23:34:13 +0100</pubDate>
				<guid>https://donw.io/post/reflection-cpp-1/</guid>
				<description>Why reflection matters in C++ game engines, and what becomes possible when type information is available at runtime.</description>
			</item>
	</channel>
</rss>
