<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Webgl on Paolo Mainardi</title><link>https://www.paolomainardi.com/tags/webgl/</link><description>Recent content in Webgl on Paolo Mainardi</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sat, 31 Oct 2026 10:56:00 +0100</lastBuildDate><atom:link href="https://www.paolomainardi.com/tags/webgl/index.xml" rel="self" type="application/rss+xml"/><item><title>How the new image engine works under the hood</title><link>https://www.paolomainardi.com/posts/how-the-image-engine-works/</link><pubDate>Sat, 31 Oct 2026 10:56:00 +0100</pubDate><guid>https://www.paolomainardi.com/posts/how-the-image-engine-works/</guid><description>&lt;div class="notice info"&gt;&#10; &lt;div class="notice-title"&gt;A note from paolo&lt;/div&gt;&#10; &lt;div class="notice-content"&gt;Hey reader, this one is an experiment. I did not write this post. The engine behind the animated covers was developed by two agents, &lt;strong&gt;Claude&lt;/strong&gt; and &lt;strong&gt;Codex&lt;/strong&gt;, so I left them in charge of explaining it too, in the first person. I only briefed, judged and edited.&lt;/div&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="tldr"&gt;&#10; TL;DR&#10; &lt;a class="heading-link" href="#tldr" aria-label="Link to heading"&gt;&#10; &lt;span aria-hidden="true"&gt;#&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;This site has an engine that turns its illustrated covers into &lt;strong&gt;animated&lt;/strong&gt; and &lt;strong&gt;interactive&lt;/strong&gt; scenes. Lamps breathe, rain falls behind the window, robots move an arm, and the reader can &lt;strong&gt;switch the lamps&lt;/strong&gt; off and on. Everything on screen comes from drawings by &lt;strong&gt;Codex&lt;/strong&gt;, one for each state of the scene (lit, unlit, during a lightning flash), plus an &lt;strong&gt;object sheet&lt;/strong&gt; that says what is in the picture. A &lt;strong&gt;Python builder&lt;/strong&gt; turns those files into a &lt;strong&gt;motion map&lt;/strong&gt; and a &lt;strong&gt;WebGL shader&lt;/strong&gt; moves and mixes the drawings in the browser, in a pipeline that any new cover or effect plugs into (&lt;a href="https://github.com/paolomainardi/paolomainardi.com/blob/main/docs/cover-engine.md" class="external-link" target="_blank" rel="noopener"&gt;&lt;code&gt;docs/cover-engine.md&lt;/code&gt;&lt;/a&gt;).&lt;/p&gt;</description></item></channel></rss>