Convolution (including via-FFT where it's mainly just complex-multiplication). Different neighborhoods and operations on them: Laplacian, curl/divergence, derivatives/slopes, completely-custom-weights/operations etc. Non-raster (ie analytical) convolution is something I find fascinating and haven't experimented with.
Noises both in the Perlin sense and the Blue-noise sense. Such a fundamentally useful building block!
Dealing with anisotropy both in shading, and texture filtering.
Color spaces. Hardly need to say more than that (apart from maybe 'HSV' should get a solid go). I think getting some solid clarity on what 'linear-to-light- color spaces are and how and when to work with them, is a critically important thing that is very often overlooked.
Acceleration structures - you often see stuff written about these for 3d (to speed up ray-intersection-tests for example) but I think there's probably lots of interesting acceleration stuff for 2d graphics too!
Feedback (ie 'solvers') in the 2D pixel realm - Game of Life (I have HashLife in mind) is just the tiniest-tip of the iceberg there, and Reaction Diffusion takes some solid steps but there's also repeated-warping (ie cheap 'advection') and repeated neighborhood-based pixel/cell operations that I think are an under-explored area.
Complex numbers and Orbits-based fractal-rendering. Mainly because I think it's fascinating, but also very useful for getting more comfortable with complex numbers and antialiasing these beasts that can indeed cause a LOT of aliasing!
Lots-of-points style fractal/etc rendering (eg Flame fractals, IFS, Buddhabrot, that kind of thing, or just HEAPS of particles!) Including how to cope with zooming-in when using that rendering scheme (I have not used it myself but I heard-about and saw great things that used 'Metropolis sampling' in order to make zooming practical.)
I think it would be great to include a section covering all the amazing work that originates in the demoscene and all the great techniques that have come from it. ShaderToy is one example of this, and there are many more.
That's enough for now! Best of luck with your book! Happy to talk further if u want! Email is on my profile.
Nice idea, but I'm also planning a book on advanced cuda programming, and I will cover convolutions there, I'll think if it is interesting to have some kind of cross chapter that is valid for both books.
> Noises I cover those in normal mapping
> anisotropy I have a full chapter on brdf that includes anysotropy for raster and raytracing, I use it also to derive anisotropic filtering
> Color spaces I have to make choices, and I don't think I'll cover in depth color spaces, it's a topic I know, but I find it very annoying to write about, in particular, making it fun to read is difficult
> acceleration structures I will have a short section on them as I use them for raytracing, at the moment I use only a basic octree, but I could expand to include other partitioning structures if that does not make the book too heavy to read
> diffusion processes and 2d/3d solvers Will be better in the cuda book
> complex numbers I derive complex, quaternions, and geometric algebra for rotations
> orbit based fractals I'm not familiar with this topic, apart from basic fractal rendering, I'll look into it You may find this paper fun to read https://arxiv.org/abs/2402.06184 even if it's not exactly about their rendering
> metropolis sampling I do not expect to write about mcmc and metropolis in this book, but I keep the idea
> Demoscene I need to ask a friend that worked in the Demoscene if he would be interested in write something, but I'm not the right person to write about it as I only have a summary knowledge of it, I'm afraid that will be out of scope
Thanks very much for all the ideas!
and something similar for performance profiling also!
I already have a full chapter on aliasing.
The exercices use renderdoc and nvidia tools ;)