<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>DocMe</title>
    <link>https://docme.dev/</link>
    <description>Short visual lessons on the math inside shaders: distance fields, smooth edges, noise, polar coordinates and light, each with live demos.</description>
    <language>en</language>
    <atom:link href="https://docme.dev/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Where a matrix sends the arrows</title>
      <link>https://docme.dev/articles/matrices/</link>
      <guid isPermaLink="true">https://docme.dev/articles/matrices/</guid>
      <description>A matrix is a small grid of numbers that turns, stretches and slants every point at once. Read it by its columns, multiply by hand and undo it.</description>
      <pubDate>Fri, 23 Oct 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>One 4x4 matrix moves the whole mesh</title>
      <link>https://docme.dev/articles/transforms/</link>
      <guid isPermaLink="true">https://docme.dev/articles/transforms/</guid>
      <description>In 3D, three columns of a matrix turn and stretch a mesh but can't move it. A fourth column holds the position, and that 4 by 4 matrix tells a shader where your mesh sits.</description>
      <pubDate>Fri, 23 Oct 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Where is this pixel?</title>
      <link>https://docme.dev/articles/coordinates/</link>
      <guid isPermaLink="true">https://docme.dev/articles/coordinates/</guid>
      <description>A shader colors one pixel at a time, and its first clue is where that pixel sits. Let's read UV, move the middle to (0, 0) and draw a graph.</description>
      <pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Sine and cosine go round in circles</title>
      <link>https://docme.dev/articles/sine-and-cosine/</link>
      <guid isPermaLink="true">https://docme.dev/articles/sine-and-cosine/</guid>
      <description>Two small functions turn an angle into a point on a circle and a circle into a wave. Shaders use them for waves, pulses, ripples and turning things.</description>
      <pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Vectors are little arrows made of numbers</title>
      <link>https://docme.dev/articles/vectors/</link>
      <guid isPermaLink="true">https://docme.dev/articles/vectors/</guid>
      <description>A vector is a few numbers that travel together, like a position, a direction or a color. Add them, measure them, then let the dot product light a sphere.</description>
      <pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>How lerp, inverse lerp and remap blend numbers</title>
      <link>https://docme.dev/articles/blending-numbers/</link>
      <guid isPermaLink="true">https://docme.dev/articles/blending-numbers/</guid>
      <description>Slide from one value to another with lerp, find where a value sits with inverse lerp, and move numbers from one range into another with remap.</description>
      <pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>What every line of a Unity shader file is for</title>
      <link>https://docme.dev/articles/unity-shader-file/</link>
      <guid isPermaLink="true">https://docme.dev/articles/unity-shader-file/</guid>
      <description>A small Unity shader file read line by line, from the material's settings to both eyes of a headset, plus the tags, render state and Blend lines other shaders use.</description>
      <pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>HLSL and GLSL say the same thing in different words</title>
      <link>https://docme.dev/articles/hlsl-vs-glsl/</link>
      <guid isPermaLink="true">https://docme.dev/articles/hlsl-vs-glsl/</guid>
      <description>Unity shaders are written in HLSL, but browsers run GLSL. Let's look at the names that differ, the few rules that bite, and how this site turns one into the other.</description>
      <pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Drawing shapes with distance</title>
      <link>https://docme.dev/articles/sdf-shapes/</link>
      <guid isPermaLink="true">https://docme.dev/articles/sdf-shapes/</guid>
      <description>Give every pixel one number, its distance to the nearest edge, and you can fill, outline, combine and morph crisp shapes at any size.</description>
      <pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Why a clean edge needs one pixel of blur</title>
      <link>https://docme.dev/articles/smoothstep-aa/</link>
      <guid isPermaLink="true">https://docme.dev/articles/smoothstep-aa/</guid>
      <description>A hard inside or outside test draws jagged stairs. Here's how I blur every edge over about one pixel with smoothstep and fwidth, so it stays clean at any size.</description>
      <pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Growing noise from one random number</title>
      <link>https://docme.dev/articles/noise/</link>
      <guid isPermaLink="true">https://docme.dev/articles/noise/</guid>
      <description>Smoke, ripples and sparkles without a single texture. Let's grow them all from one random number per grid cell.</description>
      <pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Rings, rays and spirals with polar coordinates</title>
      <link>https://docme.dev/articles/polar-coordinates/</link>
      <guid isPermaLink="true">https://docme.dev/articles/polar-coordinates/</guid>
      <description>Give every pixel an angle and a distance from a centre, and suddenly rings, rays, spirals, rings of copies and even a heart take a line or two of math.</description>
      <pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Linear color, HDR and taming light brighter than white</title>
      <link>https://docme.dev/articles/linear-hdr/</link>
      <guid isPermaLink="true">https://docme.dev/articles/linear-hdr/</guid>
      <description>Why shader math works on light instead of screen numbers, what happens to a glow brighter than white, and how I tame it without losing its color.</description>
      <pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Random numbers every GPU agrees on</title>
      <link>https://docme.dev/articles/gpu-hashes/</link>
      <guid isPermaLink="true">https://docme.dev/articles/gpu-hashes/</guid>
      <description>The famous one line sine hash can roll different numbers on different GPUs. Here's why, and an integer hash that gives the same numbers everywhere.</description>
      <pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Small shader tricks for VRChat avatars</title>
      <link>https://docme.dev/articles/vrchat-tricks/</link>
      <guid isPermaLink="true">https://docme.dev/articles/vrchat-tricks/</guid>
      <description>My little bag of shader tricks for VRChat, from spotting mirrors and cameras to hiding meshes cheaply and keeping outlines one size at any scale.</description>
      <pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Let your shader see other players with Material Contacts</title>
      <link>https://docme.dev/articles/material-contacts/</link>
      <guid isPermaLink="true">https://docme.dev/articles/material-contacts/</guid>
      <description>A VRChat contact receiver can now write the nearest hands and heads into your material every frame. Let's see how a shader reads them and keeps the effect steady.</description>
      <pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Giving a shader memory with Custom Render Textures</title>
      <link>https://docme.dev/articles/custom-render-textures/</link>
      <guid isPermaLink="true">https://docme.dev/articles/custom-render-textures/</guid>
      <description>A shader forgets everything each frame. A CustomRenderTexture reads its own last frame, so yours can leave trails, smooth a value over time and keep numbers between frames.</description>
      <pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate>
    </item>
  </channel>
</rss>
