<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Math on Blaž Škufca</title><link>https://blazskufca.com/tags/math/</link><description>Recent content in Math on Blaž Škufca</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 22 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blazskufca.com/tags/math/index.xml" rel="self" type="application/rss+xml"/><item><title>3D Software Renderer in Go</title><link>https://blazskufca.com/projects/software_renderer/</link><pubDate>Mon, 22 Jun 2026 00:00:00 +0000</pubDate><guid>https://blazskufca.com/projects/software_renderer/</guid><description>&lt;style&gt;
 /*
 * The theme centers .content vertically (justify-content: center) so the
 * homepage intro sits in the middle of the viewport. On article pages that
 * are shorter than the viewport this pushes the title far down the page.
 * Top-align only single posts (main.post); the homepage keeps its centering.
 */
 .content:has(&gt; main.post) {
 justify-content: flex-start;
 }

 /* Embedded WebAssembly demo (e.g. the software renderer). */
 .wasm-demo {
 margin: 24px 0;
 }

 .wasm-demo__bar {
 display: flex;
 justify-content: flex-end;
 margin-bottom: 8px;
 }

 .wasm-demo__fs {
 display: inline-flex;
 align-items: center;
 gap: 0.4em;
 padding: 6px 12px;
 font-size: 0.9rem;
 line-height: 1;
 cursor: pointer;
 border: 1px solid #444;
 border-radius: 6px;
 background: #1a1a1a;
 color: #ddd;
 transition: background 0.15s ease;
 }

 .wasm-demo__fs:hover {
 background: #2a2a2a;
 }

 .wasm-demo__frame {
 width: 100%;
 aspect-ratio: 16 / 10;
 border: 1px solid #333;
 border-radius: 6px;
 background: #000;
 display: block;
 }

 /* When the frame is fullscreen, let it fill the whole screen. */
 .wasm-demo__frame:fullscreen {
 width: 100vw;
 height: 100vh;
 aspect-ratio: auto;
 border: 0;
 border-radius: 0;
 }
&lt;/style&gt;
&lt;p&gt;A 3D software renderer written in Go from scratch. Every pixel is computed on the
CPU into a flat color buffer; no GPU rasterization is used. &lt;a href="https://ebiten.org/"&gt;Ebiten&lt;/a&gt;
is used only to open a window, blit the finished color buffer to the screen, and
handle input, so the renderer itself stays a pure software pipeline that also
compiles to WebAssembly and runs in the browser.&lt;/p&gt;</description></item></channel></rss>