The ryg blog
When I grow up I'll be an inventor.
GraphicsPerformance / optimizationAlgorithms / data structuresCPU / microarchitectureDemoscene
- Posts
- 171 from 4 Oct 2009 to 25 Aug 2026
- Posting
- now and then (5 in the last year)
- Kind
- personal blog
- Feed
- https://fgiesen.wordpress.com/feed/
2026 5
2025 2
2024 9
2023 5
2022 5
2021 3
2019 4
2018 6
2017 8
2016 8
2015 8
2014 11
- From the archives: “Alias Huffman coding.”
- Binary alias coding
- Little-endian vs. big-endian
- Atomic operations and contention
- Cache coherency primer
- Bindless chain letter
- FSE/ANS history correction
- Networks all the way down, part 2.
- Networks all the way down.
- rANS with static probability distributions
- rANS notes
2013 36
- Index compression follow-up
- Simple lossless(*) index buffer compression
- Symmetry
- Bink 2.2 integer DCT design, part 2
- Bink 2.2 integer DCT design, part 1
- Bit scanning equivalencies
- Tales of Suspense, Adventure and Data Structure Manipulation!
- Native debugging on Android
- Texture uploads on Android
- SIMD transposes 2
- SIMD transposes 1
- “It’s just a game”
- Modified Gram-Schmidt orthogonalization
- Trig identities from complex exponentials
- 64-bit mode and 3-operand instructions
- On ePub/PDF versions of my posts and licensing
- Optimizing Software Occlusion Culling: The Reckoning
- Mopping up
- Speculatively speaking
- Reshaping dataflows
- The care and feeding of worker threads, part 2
- The care and feeding of worker threads, part 1
- Optimizing Software Occlusion Culling – index
- Depth buffers done quick, part 2
- Depth buffers done quick, part 1
- Optimizing the basic rasterizer
- Triangle rasterization in practice
- The barycentric conspiracy
- Frustum culling: turning the crank
- Fixing cache issues, the lazy way
- Cores don’t like to share
- A string processing rant
- Write combining is not your friend
- Order-preserving bijections
- Min, Max under negation and an AABB trick
- Small note on Quaternion distance metrics
2012 20
- Frustum planes from the projection matrix
- Z-transform done quick
- Quaternion differentiation
- Linear interpolation past, present and future
- Polynomials from repeated linear interpolation
- Fast blurs 2
- Fast blurs 1
- The Magic Ring Buffer
- Linear Algebra Toolbox 3
- Linear Algebra Toolbox 2
- (Linear) Algebra Toolbox 1
- GenThree Overview
- If in doubt, go to the source
- Metaprogramming for madmen
- Half-edges redux
- Half to float done quick
- Half-edge based mesh representations: practice
- Half-edge based mesh representations: theory
- Debris: Opening the box
- Row major vs. column major, row vectors vs. column vectors
2011 23
- Buffer-centric IO
- Checking for interval overlap
- A trip through the Graphics Pipeline 2011, part 13
- Migrating Thunderbird profiles: A story in three acts
- A trip through the Graphics Pipeline 2011, part 12
- A trip through the Graphics Pipeline 2011, part 11
- A trip through the Graphics Pipeline 2011, part 10
- A trip through the Graphics Pipeline 2011, part 9
- A trip through the Graphics Pipeline 2011, part 8
- A trip through the Graphics Pipeline 2011: Index
- A trip through the Graphics Pipeline 2011, part 7
- A trip through the Graphics Pipeline 2011, part 6
- A trip through the Graphics Pipeline 2011, part 5
- A trip through the Graphics Pipeline 2011, part 4
- A trip through the Graphics Pipeline 2011, part 3
- A trip through the Graphics Pipeline 2011, part 2
- A trip through the Graphics Pipeline 2011, part 1
- Row-major vs. column-major and GL ES
- Notes on caches and threads
- Loop control overhead on x86
- x86 code compression in kkrunchy
- A small note on the Elias gamma code
- Texture tiling and swizzling
2010 15
- Ring buffers and queues
- Negative space in programming
- More PPC compiler babysitting
- Planar rotations and the DCT
- sinc and Polynomial interpolation
- Finish your derivations, please
- Some more frustum culling notes
- View frustum culling
- 64-bit tidbits
- Cycle detection algorithms are handy to know
- We don’t need new multimedia formats
- Data structures and invariants
- Carry-save adders and averaging bit-packed values
- How to generate cellular textures 2
- How to generate cellular textures