This description of indirect addressing is incorrect, or at least misleading. Indirect addressing is how arrays, or at least variable array indicies, are implemented. You can tell the GPU to add the value of a register to the index when loading or storing something; for example, instead of saying "load address 5," you can say "load address '5 + something I've just calculated'." It's like how dereferencing a pointer works in C, except a little more limited. It's also more commonly seen in compute shaders, since they often tend to do more complex things like loops where you need indirect addressing in order to do anything useful, although there are some cases where it's useful in graphics shaders too (such as bone skinning).Indirect addressing allows for a virtual address to be passed that then ends up mapping to the actual address, which is more important for compute scenarios.