56,966 blogs · [ { "id": "01a0879b-5554-73e3-8790-e3f674f2b737", "title": "Can you find a vector not orthogonal to N others?", "url": "https://lisyarus.github.io/blog/posts/can-you-find-a-vector-not-orthogonal-to-n-others.html", "published_at": "2026-06-15T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f675b267c1", "title": "Quivers: a year of linear algebra by drawing arrows", "url": "https://lisyarus.github.io/blog/posts/quivers-a-year-of-linear-algebra-by-drawing-arrows.html", "published_at": "2026-06-09T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f6769de1d3", "title": "Making your own programming language is easier than you think (but also harder)", "url": "https://lisyarus.github.io/blog/posts/making-your-own-programming-language.html", "published_at": "2026-05-06T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f677104f5c", "title": "It's OK to compare floating-points for equality", "url": "https://lisyarus.github.io/blog/posts/its-ok-to-compare-floating-points-for-equality.html", "published_at": "2026-04-14T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f6778ae4ff", "title": "A silly diffuse shading model", "url": "https://lisyarus.github.io/blog/posts/a-silly-diffuse-shading-model.html", "published_at": "2025-12-31T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f6778d35ed", "title": "Particle Life simulation in browser using WebGPU", "url": "https://lisyarus.github.io/blog/posts/particle-life-simulation-in-browser-using-webgpu.html", "published_at": "2025-05-25T12:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f677a792c9", "title": "Estimating variance reduction in importance sampling", "url": "https://lisyarus.github.io/blog/posts/estimating-variance-reduction-in-importance-sampling.html", "published_at": "2025-03-16T12:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f678073322", "title": "Simulating water over terrain", "url": "https://lisyarus.github.io/blog/posts/simulating-water-over-terrain.html", "published_at": "2025-02-04T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f6789b7387", "title": "Exploring ways to mipmap alpha-tested textures", "url": "https://lisyarus.github.io/blog/posts/exploring-ways-to-mipmap-alpha-tested-textures.html", "published_at": "2025-01-05T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f6794af179", "title": "Implementing a tiny CPU rasterizer | Part 6: Adding some depth", "url": "https://lisyarus.github.io/blog/posts/implementing-a-tiny-cpu-rasterizer-part-6.html", "published_at": "2024-11-11T11:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f67a4097c1", "title": "Implementing a tiny CPU rasterizer | Part 5: Fixing issues with 3D", "url": "https://lisyarus.github.io/blog/posts/implementing-a-tiny-cpu-rasterizer-part-5.html", "published_at": "2024-11-08T11:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f67a44c859", "title": "Implementing a tiny CPU rasterizer | Part 4: Changing perspective", "url": "https://lisyarus.github.io/blog/posts/implementing-a-tiny-cpu-rasterizer-part-4.html", "published_at": "2024-11-08T11:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f67aa992b1", "title": "Implementing a tiny CPU rasterizer | Part 3: Interpolating colors", "url": "https://lisyarus.github.io/blog/posts/implementing-a-tiny-cpu-rasterizer-part-3.html", "published_at": "2024-11-01T11:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f67b597d15", "title": "Implementing a tiny CPU rasterizer | Part 2: Drawing a triangle", "url": "https://lisyarus.github.io/blog/posts/implementing-a-tiny-cpu-rasterizer-part-2.html", "published_at": "2024-10-31T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f67b80dd84", "title": "Implementing a tiny CPU rasterizer | Part 1: Clearing the screen", "url": "https://lisyarus.github.io/blog/posts/implementing-a-tiny-cpu-rasterizer-part-1.html", "published_at": "2024-10-30T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f67bd0fb33", "title": "(Yet another) Introduction to quaternions", "url": "https://lisyarus.github.io/blog/posts/introduction-to-quaternions.html", "published_at": "2024-10-26T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f67c1c20dd", "title": "Transforming colors with matrices", "url": "https://lisyarus.github.io/blog/posts/transforming-colors-with-matrices.html", "published_at": "2024-10-10T12:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f67c63d490", "title": "Demystifying multiple importance sampling", "url": "https://lisyarus.github.io/blog/posts/multiple-importance-sampling.html", "published_at": "2024-04-25T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f67d417ac4", "title": "3D shape matching with quaternions", "url": "https://lisyarus.github.io/blog/posts/3d-shape-matching-with-quaternions.html", "published_at": "2023-12-26T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f67e2d8e84", "title": "Computing forces in a system of beams, properly", "url": "https://lisyarus.github.io/blog/posts/structural-mechanics-2.html", "published_at": "2023-10-29T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f67f0bd511", "title": "Computing forces in a system of beams", "url": "https://lisyarus.github.io/blog/posts/structural-mechanics.html", "published_at": "2023-10-15T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f67fb84177", "title": "So, you want to make a game engine", "url": "https://lisyarus.github.io/blog/posts/so-you-want-to-make-a-game-engine.html", "published_at": "2023-09-15T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f68033f945", "title": "Quaternion derivatives", "url": "https://lisyarus.github.io/blog/posts/quaternion-derivatives.html", "published_at": "2023-09-13T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f6805199b7", "title": "Complex numbers, Wirtinger derivatives and 2D inverse kinematics", "url": "https://lisyarus.github.io/blog/posts/complex-derivatives.html", "published_at": "2023-08-03T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f680bbb808", "title": "Porting my C++ game engine to Android", "url": "https://lisyarus.github.io/blog/posts/porting-for-android.html", "published_at": "2023-07-19T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f681076fc2", "title": "Skeletal animation in glTF", "url": "https://lisyarus.github.io/blog/posts/gltf-animation.html", "published_at": "2023-07-03T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f6817077ce", "title": "Uniqueness of matrix inverses", "url": "https://lisyarus.github.io/blog/posts/matrix-inverses.html", "published_at": "2023-06-21T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f681ec972f", "title": "Making a 2D soft-body physics engine", "url": "https://lisyarus.github.io/blog/posts/soft-body-physics.html", "published_at": "2023-05-10T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f682d8a56b", "title": "How not to design a UI library", "url": "https://lisyarus.github.io/blog/posts/how-not-to-ui.html", "published_at": "2023-03-11T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f683287cc3", "title": "Two-pass Gaussian blur coeffifients generator", "url": "https://lisyarus.github.io/blog/posts/blur-coefficients-generator.html", "published_at": "2023-02-24T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f683d2faf2", "title": "My favourite animation trick: exponential smoothing", "url": "https://lisyarus.github.io/blog/posts/exponential-smoothing.html", "published_at": "2023-02-21T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f684690431", "title": "Super simple generic animation controller in C++", "url": "https://lisyarus.github.io/blog/posts/animation-controller.html", "published_at": "2023-02-17T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f6850359db", "title": "Building a quadtree in 22 lines of code", "url": "https://lisyarus.github.io/blog/posts/building-a-quadtree.html", "published_at": "2022-12-21T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f685e9d5fe", "title": "The quest for perfect collisions", "url": "https://lisyarus.github.io/blog/posts/perfect-collisions.html", "published_at": "2022-10-25T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f6864d74c1", "title": "C++ audio mixing library design", "url": "https://lisyarus.github.io/blog/posts/audio-mixing.html", "published_at": "2022-10-15T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f68746301a", "title": "C++ behavior trees library design", "url": "https://lisyarus.github.io/blog/posts/behavior-trees.html", "published_at": "2022-08-22T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f687db9846", "title": "A stupidly simple spatial data structure", "url": "https://lisyarus.github.io/blog/posts/expanding-nd-array.html", "published_at": "2022-08-16T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f68865d77e", "title": "A simple texture atlas packing algorithm", "url": "https://lisyarus.github.io/blog/posts/texture-packing.html", "published_at": "2022-08-06T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f6894d87c0", "title": "A better point light attenuation function", "url": "https://lisyarus.github.io/blog/posts/point-light-attenuation.html", "published_at": "2022-07-30T18:00:00+00:00" }, { "id": "01a0879b-5554-73e3-8790-e3f689eff589", "title": "Compute shaders in graphics: Gaussian blur", "url": "https://lisyarus.github.io/blog/posts/compute-blur.html", "published_at": "2022-04-21T18:00:00+00:00" } ] posts Claim your blog
Back to lisyarus.github.io
Blog · corpus.blog/blogs/lisyarus.github.io/posts

lisyarus.github.io

lisyarus.github.io

2026

2025

2024

2023

2022