<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>ShoggothOx Blog &amp; Guides</title>
    <link>https://shoggothox.com/blog/index.html</link>
    <description>Graphics programming, audio analysis, and Rust/WebAssembly engineering notes from the ShoggothOx visualizer.</description>
    <language>en-us</language>
    <atom:link href="https://shoggothox.com/blog/feed.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Proving Pixel Math with Verus in ShoggothOx</title>
      <link>https://shoggothox.com/blog/verus-verification.html</link>
      <guid isPermaLink="true">https://shoggothox.com/blog/verus-verification.html</guid>
      <pubDate>Sat, 25 Jul 2026 00:00:00 +0000</pubDate>
      <description>An introduction to specifications, proof code, and SMT solving in Verus, followed by the actual bounds proofs behind ShoggothOx&apos;s four-neighbor flame lookup table.</description>
      <category>verification</category>
      <category>rust</category>
      <category>math</category>
    </item>
    <item>
      <title>Fire Without Physics: How the Flame Effect Works</title>
      <link>https://shoggothox.com/blog/flame-effects.html</link>
      <guid isPermaLink="true">https://shoggothox.com/blog/flame-effects.html</guid>
      <pubDate>Fri, 24 Jul 2026 00:00:00 +0000</pubDate>
      <description>ShoggothOx makes fire by averaging four neighbouring pixels and subtracting one. This post takes the flame kernel apart: why sampling below makes brightness rise, why the subtraction is what guarantees darkness, and what separates the twelve modes.</description>
      <category>graphics</category>
      <category>math</category>
      <category>interactive</category>
    </item>
    <item>
      <title>Beyond Black: Building an Audio-Reactive 3D Scene</title>
      <link>https://shoggothox.com/blog/audio-reactive-3d-backgrounds.html</link>
      <guid isPermaLink="true">https://shoggothox.com/blog/audio-reactive-3d-backgrounds.html</guid>
      <pubDate>Thu, 23 Jul 2026 00:00:00 +0000</pubDate>
      <description>How ShoggothOx grew a palette-matched environment, particles, and echo aura around its 3D surfaces; why music drives continuous motion clocks instead of positions; and how a malformed fullscreen triangle made the whole environment disappear on a Pixel.</description>
      <category>graphics</category>
      <category>3d</category>
      <category>audio</category>
      <category>debugging</category>
    </item>
    <item>
      <title>Fourier Transforms &amp; Audio Analysis in ShoggothOx</title>
      <link>https://shoggothox.com/blog/fourier-transforms.html</link>
      <guid isPermaLink="true">https://shoggothox.com/blog/fourier-transforms.html</guid>
      <pubDate>Tue, 21 Jul 2026 00:00:00 +0000</pubDate>
      <description>Exploring real-time frequency spectrum analysis in ShoggothOx, Hann windowing to prevent spectral leakage, and our optimized fixed-point Q14 Cooley-Tukey radix-2 FFT implementation in Rust.</description>
      <category>audio</category>
      <category>dsp</category>
      <category>rust</category>
      <category>math</category>
    </item>
    <item>
      <title>Walking Preset Space One Parameter at a Time</title>
      <link>https://shoggothox.com/blog/smooth-transition-playlists.html</link>
      <guid isPermaLink="true">https://shoggothox.com/blog/smooth-transition-playlists.html</guid>
      <pubDate>Sun, 19 Jul 2026 00:00:00 +0000</pubDate>
      <description>How ShoggothOx turns categorical visualizer settings into a discrete configuration space, finds an exact-length route through curated anchors, and expands it into deterministic transitions that change only one parameter per state.</description>
      <category>playlists</category>
      <category>algorithms</category>
      <category>math</category>
    </item>
    <item>
      <title>When a Deterministic Playlist Wasn&apos;t</title>
      <link>https://shoggothox.com/blog/deterministic-playlist-authority.html</link>
      <guid isPermaLink="true">https://shoggothox.com/blog/deterministic-playlist-authority.html</guid>
      <pubDate>Fri, 17 Jul 2026 00:00:00 +0000</pubDate>
      <description>How a six-second dead patch survived several GPU fixes, why replaying the indexed buffer exposed two competing state schedulers, and how authoritative playlist playback restored audio dynamics without disabling the playlist&apos;s own mutations.</description>
      <category>playlists</category>
      <category>debugging</category>
      <category>video</category>
    </item>
    <item>
      <title>From White Paint to a Reactive 3D Material</title>
      <link>https://shoggothox.com/blog/reactive-surface-materials.html</link>
      <guid isPermaLink="true">https://shoggothox.com/blog/reactive-surface-materials.html</guid>
      <pubDate>Wed, 15 Jul 2026 00:00:00 +0000</pubDate>
      <description>Why an indexed palette that works as a 2D framebuffer can turn into featureless white paint on a curved surface, how geometry-derived lighting separates material from emitted audio activity, and why an eight-turn spiral needs eight texture cycles to stay visually active.</description>
      <category>graphics</category>
      <category>3d</category>
      <category>shaders</category>
      <category>textures</category>
    </item>
    <item>
      <title>One Texture, Two Kinds of Smoothing</title>
      <link>https://shoggothox.com/blog/indexed-color-sampler-separation.html</link>
      <guid isPermaLink="true">https://shoggothox.com/blog/indexed-color-sampler-separation.html</guid>
      <pubDate>Sun, 12 Jul 2026 00:00:00 +0000</pubDate>
      <description>Why a low-resolution simulation buffer benefits from linear filtering while its palette lookup table must remain nearest-neighbor, how one shared sampler coupled those policies, and why fixing a real shader bug did not fix an unrelated mesh.</description>
      <category>graphics</category>
      <category>shaders</category>
      <category>textures</category>
      <category>debugging</category>
    </item>
    <item>
      <title>Why the Torus Still Looked Broken: Mesh Density and Camera Framing</title>
      <link>https://shoggothox.com/blog/near-ring-density-framing.html</link>
      <guid isPermaLink="true">https://shoggothox.com/blog/near-ring-density-framing.html</guid>
      <pubDate>Thu, 09 Jul 2026 00:00:00 +0000</pubDate>
      <description>A deterministic video frame stayed rough after three rendering fixes. Tracing the active mode revealed an eight-turn NearRing with only 16 polygon edges per revolution and a camera sized for much smaller meshes. Here is how tessellation budgets and projection math fixed it.</description>
      <category>graphics</category>
      <category>3d</category>
      <category>geometry</category>
      <category>debugging</category>
    </item>
    <item>
      <title>The Pinwheel at the Pole: Fixing Texture Pinch with a 450-Year-Old Map Projection</title>
      <link>https://shoggothox.com/blog/pole-pinch-sinusoidal-projection.html</link>
      <guid isPermaLink="true">https://shoggothox.com/blog/pole-pinch-sinusoidal-projection.html</guid>
      <pubDate>Mon, 06 Jul 2026 00:00:00 +0000</pubDate>
      <description>Why latitude-longitude texture mapping crushes 160 texture columns into a shimmering pinwheel at a sphere&apos;s poles, and how scaling each ring&apos;s UV span by sin(φ) — the classic sinusoidal equal-area projection — removes the pinch in one line without reopening the texture seam.</description>
      <category>graphics</category>
      <category>geometry</category>
      <category>textures</category>
      <category>math</category>
    </item>
    <item>
      <title>The Seam at the Edge of the World: Wrapping a Non-Tileable Texture Around a Sphere</title>
      <link>https://shoggothox.com/blog/texture-seams-mirror-wrap.html</link>
      <guid isPermaLink="true">https://shoggothox.com/blog/texture-seams-mirror-wrap.html</guid>
      <pubDate>Fri, 03 Jul 2026 00:00:00 +0000</pubDate>
      <description>Why a live simulation buffer must show a seam when wrapped around a sphere or torus, the mathematics of mirrored wrapping (and why a reflection is always continuous), and before/after comparisons from ShoggothOx&apos;s deterministic render pipeline.</description>
      <category>graphics</category>
      <category>textures</category>
      <category>geometry</category>
      <category>3d</category>
    </item>
    <item>
      <title>Why Our Spheres Were Tearing Apart: A Depth-Buffer Detective Story</title>
      <link>https://shoggothox.com/blog/depth-buffer-discontinuities.html</link>
      <guid isPermaLink="true">https://shoggothox.com/blog/depth-buffer-discontinuities.html</guid>
      <pubDate>Tue, 30 Jun 2026 00:00:00 +0000</pubDate>
      <description>Tracking down the hard-edged tearing artifacts on ShoggothOx&apos;s 3D sphere and ring display modes: how a missing depth buffer turns visibility into “last triangle wins,” with frame-by-frame before/after comparisons from a deterministic re-render.</description>
      <category>graphics</category>
      <category>3d</category>
      <category>debugging</category>
    </item>
    <item>
      <title>Interactive Lissajous Curves: Math &amp; Oscilloscope Physics</title>
      <link>https://shoggothox.com/blog/lissajous.html</link>
      <guid isPermaLink="true">https://shoggothox.com/blog/lissajous.html</guid>
      <pubDate>Sat, 27 Jun 2026 00:00:00 +0000</pubDate>
      <description>An interactive math playground illustrating how overlapping orthogonal sine waves generate Lissajous patterns. Features dual phase-drift and electron beam sweep controls on a simulated analog CRT oscilloscope.</description>
      <category>math</category>
      <category>interactive</category>
      <category>audio</category>
    </item>
    <item>
      <title>Bilinear Interpolation: Smooth Coordinate Scaling</title>
      <link>https://shoggothox.com/blog/bilinear-interpolation.html</link>
      <guid isPermaLink="true">https://shoggothox.com/blog/bilinear-interpolation.html</guid>
      <pubDate>Wed, 24 Jun 2026 00:00:00 +0000</pubDate>
      <description>An example-driven guide to bilinear interpolation math, visualizing how values are scaled across 2D coordinate spaces, and detailing how ShoggothOx offloads this work to GPU hardware samplers.</description>
      <category>math</category>
      <category>graphics</category>
      <category>interactive</category>
    </item>
    <item>
      <title>Precomputed Warp Tables in ShoggothOx: O(N) Spatial Feedback</title>
      <link>https://shoggothox.com/blog/warp-tables.html</link>
      <guid isPermaLink="true">https://shoggothox.com/blog/warp-tables.html</guid>
      <pubDate>Sun, 21 Jun 2026 00:00:00 +0000</pubDate>
      <description>Exploring how precomputed translation tables convert complex trigonometric spatial warping functions into efficient single-pass array lookups, with an interactive visual feedback loop demo.</description>
      <category>performance</category>
      <category>graphics</category>
      <category>interactive</category>
    </item>
    <item>
      <title>Cellular Automata in ShoggothOx: From Conway to Continuous Shaders</title>
      <link>https://shoggothox.com/blog/cellular-automata.html</link>
      <guid isPermaLink="true">https://shoggothox.com/blog/cellular-automata.html</guid>
      <pubDate>Fri, 19 Jun 2026 00:00:00 +0000</pubDate>
      <description>An introduction to Cellular Automata, comparing Conway&apos;s discrete Game of Life with ShoggothOx&apos;s continuous, heat-diffusion CA model, and explaining how it is scaled to millions of cells using WebGPU shaders.</description>
      <category>cellular automata</category>
      <category>shaders</category>
      <category>webgpu</category>
      <category>interactive</category>
    </item>
    <item>
      <title>The History of Music Visualizers: From Cthugha to MilkDrop</title>
      <link>https://shoggothox.com/blog/history-of-visualizers.html</link>
      <guid isPermaLink="true">https://shoggothox.com/blog/history-of-visualizers.html</guid>
      <pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate>
      <description>Explore the history and evolution of real-time audio visualization, detailing feedback loop mechanics, retro PC demoscene roots, Winamp AVS, and classic visualizers of the 90s and 2000s.</description>
      <category>history</category>
      <category>audio</category>
      <category>demoscene</category>
    </item>
    <item>
      <title>Building High-Performance Web Graphics with Rust and WebAssembly</title>
      <link>https://shoggothox.com/blog/rust-wasm-graphics.html</link>
      <guid isPermaLink="true">https://shoggothox.com/blog/rust-wasm-graphics.html</guid>
      <pubDate>Sat, 13 Jun 2026 00:00:00 +0000</pubDate>
      <description>A deep dive into compiling Rust code to WebAssembly, using hardware-accelerated shaders for color palette lookup, and designing high-fps browser rendering pipelines.</description>
      <category>rust</category>
      <category>webassembly</category>
      <category>graphics</category>
      <category>performance</category>
    </item>
  </channel>
</rss>
