All Posts

Most Recent Posts:

2019-12-01 Calculating Information Entropy
2019-10-25 Bayes’ Theorem Intuition
2019-08-10 Measuring Debug STL Container Perf Cost in MSVC
2019-07-30 Dice, Distributions & Noise Colors
2019-06-25 Generating Blue Noise Textures With Void And Cluster

187 posts grouped by the following categories:

(Posts TODO – to help me remember things I’d like to write up at some point https://blog.demofox.org/2018/11/22/posts-todo/)

Graphics

2019-06-25 Generating Blue Noise Textures With Void And Cluster
2018-11-16 How To: Data Lookups Via Raytracing
2018-08-12 Not All Blue Noise is Created Equal
2018-08-07 Tiled Blue Noise
2018-07-13 Blending an HDR color into a U8 Buffer
2018-07-04 Pathtraced Depth of Field & Bokeh
2018-04-16 Prefix Sums and Summed Area Tables
2018-03-24 An Idea: Raytracing Lookup Tables
2018-03-19 A Very Quick DirectX Raytracing API Primer
2018-03-10 Don’t Convert sRGB U8 to Linear U8!
2018-01-30 What the Heck is Blue Noise?
2017-11-26 Dissecting “Tiny Clouds”
2017-11-03 Animating Noise For Integration Over Time 2: Uniform Over Time
2017-10-31 Animating Noise For Integration Over Time
2017-10-25 Transmuting White Noise To Blue, Red, Green, Purple
2017-10-20 Generating Blue Noise Sample Points With Mitchell’s Best Candidate Algorithm
2017-10-01 Calculating the Distance Between Points in “Wrap Around” (Toroidal) Space
2017-07-10 WebGL PBR Implementation
2017-07-01 Why Are Some Shadows Soft And Other Shadows Hard?
2017-01-09 Raytracing Reflection, Refraction, Fresnel, Total Internal Reflection, and Beer’s Law
2016-09-21 Path Tracing – Getting Started With Diffuse and Emissive
2016-07-28 Fourier Transform (And Inverse) Of Images
2016-03-14 Using Wang Tiles to Simulate Turing Machines
2016-03-05 Matrix Form of Bezier Curves
2016-03-02 Actually Making Signed Distance Field Textures With JFA
2016-02-29 Fast Voronoi Diagrams and Distance Field Textures on the GPU With the Jump Flooding Algorithm
2016-02-21 G-Buffer Upsizing
2016-02-03 Failed Shadertoy “Dust” Game – Browsers Need To Compile Shaders Off the Main Thread!
2016-01-16 Making a Ray Traced Snake Game in Shadertoy
2015-08-19 Gaussian Blur
2015-08-18 Box Blur
2015-08-15 Resizing Images With Bicubic Interpolation
2015-08-09 Cubic Hermite Rectangles
2015-06-19 What is Pre-multiplied Alpha and Why Does it Matter?
2015-04-30 Bilinear Filtering & Bilinear Interpolation
2015-04-23 FlipQuad & FlipTri Antialiasing
2015-04-23 4-Rook Antialiasing (RGSS)
2015-04-22 Quincunx Antialiasing
2015-01-17 Bresenham’s Drawing Algorithms
2014-08-13 Wang Tiling
2014-08-11 Temporal supersampling, flipquads and real time raytracing
2014-06-30 Distance Field Textures
2014-06-22 Analytic Fog Density
2014-02-07 Lots of Skyboxes!
2014-02-03 Converting RGB to Grayscale
2014-01-27 A trip through the Graphics Pipeline
2014-01-22 Shadertoy – WebGLSL pixel shaders
2012-09-25 How to Render the Mandelbrot Set
2012-05-03 MoriRT: Pixel and Geometry Caching to Aid Real Time Raytracing

Original Research / Inventions

2019-03-22 Linear Fit Search
2018-04-23 Taking a Stroll Between The Pixels
2017-05-07 Improved Storage Space Efficiency of GPU Texture Sampler Bezier Curve Evaluation
2016-12-16 Evaluating Points on Analytical Surfaces and in Analytical Volumes Using the GPU Texture Sampler
2016-12-10 Failed Experiment: The GPU Texture Sampler is Turing Complete But That Fact is Pretty Useless
2016-12-08 Evaluating Polynomials with the GPU Texture Sampler
2016-02-22 GPU Texture Sampler Bezier Curve Evaluation
2015-01-24 DAPSE Preview

Programming

2019-08-10 Measuring Debug STL Container Perf Cost in MSVC
2017-11-21 Demystifying Floating Point Precision
2017-06-20 SIMD / GPU Friendly Branchless Binary Search
2016-12-06 The Secret to Writing Fast Code / How Fast Code Gets Slow
2016-11-13 Minimizing Code Complexity by Programming Declaratively
2016-10-14 A Data Point for MSVC vs Clang Code Generation
2016-10-03 Is Code Faster Than Data? Examining Hash Tables
2016-09-26 Is Code Faster Than Data? Switch Statements vs. Arrays
2016-09-23 Exploring Compile Time Hashing
2016-05-18 Who Cares About Dynamic Array Growth Strategies?
2016-04-09 Turning a Truth Table Into A digital Circuit (ANF)
2016-02-09 How and Why Cleaning Up Code or Processes Gives Multiplicative Benefits
2015-12-20 Simplifying Boolean Expressions With Karnaugh Maps
2015-12-18 What Happens When you Mix Hash Tables and Binary Searching?
2015-12-14 O(1) Data Lookups With Minimal Perfect Hashing
2015-03-09 HyperLogLog: Estimate Unique Value Counts Like The Pros
2015-02-25 Avoiding The Performance Hazzards of std::function
2015-02-22 Count Min Sketch: A Probabilistic Histogram
2015-02-13 Writing a Basic Search Engine AKA Calculating Similarity of Histograms with Dot Product
2015-02-08 Estimating Set Membership With a Bloom Filter
2015-02-05 Getting Strongly Typed Typedefs Using Phantom Types
2015-02-03 Estimating Counts of Distinct Values with KMV
2013-09-13 External C++ Header Guards
2013-09-09 Alloca and Realloc – Useful Tools, Not Ancient Relics
2013-07-08 Is pre-increment really faster than post increment? Part 2
2013-07-07 A Super Tiny Random Number Generator
2013-07-06 Fast & Lightweight Random “Shuffle” Functionality – FIXED!
2013-07-06 The Incredible Time Traveling Random Number Generator
2013-06-18 Why do you hate me rand()?!
2013-06-08 Fast & Lightweight Random “Shuffle” Functionality
2013-06-08 Efficiently Generate Random Numbers Without Repeats
2013-06-05 Is pre-increment really faster than post increment? Part 1
2013-05-21 The Black Art of sizeof() aka Compile Time Type Deduction
2013-05-11 Lists of Macro Lists
2013-05-07 Macro Lists For The Win – Side B
2013-05-03 Macro Lists For The Win
2013-05-01 Permutation Programming Without Maintenance Nightmares
2012-11-28 Mechanical Computer Quest Part I

Game Dev

2017-09-30 Half Tile Offset Streaming World Grids
2016-04-01 Game Development Needs Data Pipeline Middleware
2014-01-11 Getting Ideal Disk Reads on the Cheap
2012-09-24 Bias And Gain Are Your Friend
2012-09-21 Anatomy of a Skeletal Animation System Part 3
2012-09-21 Anatomy of a Skeletal Animation System Part 2
2012-09-21 Anatomy of a Skeletal Animation System Part 1
2012-09-09 Recording lagless demo videos of a laggy game

Math

2019-12-01 Calculating Information Entropy
2019-10-25 Bayes’ Theorem Intuition
2019-07-30 Dice, Distributions & Noise Colors
2019-06-1 Taking the Max of Uniform Random Numbers
2019-05-25 Generating Random Numbers From a Specific Distribution With The Metropolis Algorithm (MCMC)
2018-06-12 Monte Carlo Integration Explanation in 1D
2017-08-08 Generating Random Numbers From a Specific Distribution With Rejection Sampling
2017-08-05 Generating Random Numbers From a Specific Distribution By Inverting the CDF
2017-07-25 Counting Bits & The Normal Distribution
2017-05-29 When Random Numbers Are Too Random: Low Discrepancy Sequences
2017-04-10 Solving N equations and N unknowns: The Fine Print (Gauss Jordan Elimination)
2017-03-31 Orthogonal Projection Matrix Plainly Explained
2017-03-13 Neural Network Gradients: Backpropagation, Dual Numbers, Finite Differences
2017-02-20 Multivariable Dual Numbers & Automatic Differentiation
2017-02-07 A Geometric Interpretation of Neural Networks
2017-01-02 Incremental Least Squares Surface and Hyper-Volume Fitting
2016-12-22 Incremental Least Squares Curve Fitting
2016-08-23 Incremental Averaging
2016-08-11 Understanding The Discrete Fourier Transform
2016-03-11 A Sixth Way To Calculate Sine Without Trig
2016-02-19 Normalized Vector Interpolation TL;DR
2015-11-13 Hiding a Lookup Table in a Modulus Operation
2015-09-15 Solving Nested Modulus Equations
2015-09-12 Solving Simultaneous Congruences (Chinese Remainder Theorem)
2015-09-10 Modular Multiplicative Inverse
2015-08-08 Cubic Hermite Interpolation
2015-08-05 Lagrange Rectangles
2015-08-02 Finite Differences
2015-07-28 Rectangular Bezier Patches
2015-07-08 Lagrange Interpolation
2015-07-05 The De Casteljau Algorithm for Evaluating Bezier Curves
2015-06-14 A Fifth Way to Calculate Sine Without Trig
2015-05-25 Easy Binomial Expansion & Bezier Curve Formulas
2015-01-24 Programmatically Calculating GCD and LCM
2014-12-30 Dual Numbers & Automatic Differentiation
2014-12-27 Using Imaginary Numbers To Rotate 2D Vectors
2014-11-04 Four Ways to Calculate Sine Without Trig
2014-08-28 One Dimensional Bezier Curves
2014-08-14 Counting in Binary is a Fractal
2014-08-10 What if My Equation DOESN’T Equal Zero??
2014-03-22 Bezier Curves Part 2 (and Bezier Surfaces)
2014-03-09 Implicit vs Parametric vs Explicit Surfaces
2014-03-04 Bezier Curves
2014-02-20 Soft Maximum vs Hard Maximum
2013-11-13 Transformation Matrix Basics
2013-10-12 Converting To and From Polar / Spherical Coordinates Made Easy
2013-09-17 How to Test Randomness of Numbers

Machine Learning

2019-05-11 Markov Chain Text Generation
2017-12-23 C++ Differentiable Programming: Searching For An Optimal Dither Pattern
2017-03-15 Neural Network Recipe: Recognize Handwritten Digits With 95% Accuracy
2017-03-09 How to Train Neural Networks With Backpropagation
2012-10-23 B.A.M. Neural Networks

Cryptography

2016-10-19 Low Tech Homomorphic Encryption
2016-04-30 Shamir’s Quest: Collect Any 3 Keys To Unlock The Secret!
2015-09-05 Improving the Security of the Super Simple Symmetric Leveled Homomorphic Encryption Implementation
2015-09-05 Super Simple Symmetric Leveled Homomorphic Encryption Implementation
2014-05-18 Feistel Networks – Do They Have to use XOR?
2012-09-17 Encryption 101: Realistic Security
2012-09-16 Cryptography 101: Encryption – Asymmetric Keys
2012-09-15 Cryptography 101: Encryption – Symmetric Keys
2012-09-15 Cryptography 101: Encryption – One Time Pad
2012-09-12 Cryptography 101: Hashing

Audio Synth / Audio Programming

2018-03-05 Granular Audio Synthesis
2016-07-01 Intro To Audio Synthesis For Music Presentation
2016-06-23 The Beating Effect
2016-06-16 Synthesizing a Plucked String Sound With the Karplus-Strong Algorithm
2015-04-19 Frequency Domain Audio Synthesis – With IFFT and Oscillators
2015-04-14 Decibels (dB) and Amplitude
2015-03-23 DIY Synth: Convolution Reverb & 1D Discrete Convolution of Audio Samples
2015-03-17 DIY Synth: Multitap Reverb
2015-03-17 DIY Synth: Delay Effect (Echo)
2015-03-16 DIY Synth: Flange Effect
2015-03-14 DIY Synth: Basic Drum
2012-06-18 DIY Synth 3: Sampling, Mixing, and Band Limited Wave Forms
2012-05-19 DIY Synth 2: Common Wave Forms
2012-05-14 DIY Synth 1: Sound Output

Quantum Programming

2015-11-06 Quantum Computing For Programmers Part 2: Multiple Qubits
2015-10-17 Quantum Computing For Programmers Part Ib: Bloch Sphere
2015-10-17 Quantum Computing For Programmers Part I: One Qubit
2015-10-12 Quantum Computing References

Network Programming

2018-6-04 A Neat Trick For Compressing Networked State Data

Soft Skills / Not Directly About Tech

2017-11-16 My Old Master: On Optimism
2017-07-03 A Tool To Debug Teams (Knoster)
2017-03-17 Plastic Bag Ban – Semi Reusable Bag Kiosks a Better Solution?
2017-01-24 My Old Master: How to Correct as a Mentor or a Teacher
2015-06-18 Adventures in Learning How to Publish a Research Paper Part 1
2015-05-24 No Bad Code, Creeping Normality and Social Structure Code Organization
2014-07-21 Situational Leadership

Bayes’ Theorem Intuition

Bayes’ theorem is a way to calculate the probability of something happening based on evidence that may affect that probability. It’s a formula for combining probabilities together when they might affect each other. It’s also good for updating probabilities when you get new data. The formula is: The formula reads: “The probability of A happening, … Continue reading

Generating Random Numbers From a Specific Distribution With The Metropolis Algorithm (MCMC)

There is ~400 lines of standalone C++ code that implements the main ideas in this post. You can find it at: https://github.com/Atrix256/MetropolisMCMC In previous posts I showed how to generate random numbers from a specific distributing by using two techniques: Rejection Sampling: https://blog.demofox.org/2017/08/08/generating-random-numbers-from-a-specific-distribution-with-rejection-sampling/ Inverting the CDF: https://blog.demofox.org/2017/08/05/generating-random-numbers-from-a-specific-distribution-by-inverting-the-cdf/ This post will show how to do it … Continue reading